XmlDataDocumentTest.cs 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814
  1. //
  2. // XmlDataDocumentTestTest.cs - NUnit Test Cases for XmlDataDocument
  3. //
  4. // Ville Palo ([email protected])
  5. //
  6. // (C) Ville Palo 2002
  7. //
  8. using NUnit.Framework;
  9. using System;
  10. using System.Data;
  11. using System.Xml;
  12. using System.Xml.XPath;
  13. using System.IO;
  14. using System.Threading;
  15. using System.Globalization;
  16. namespace MonoTests.System.Data.Xml
  17. {
  18. public class XmlDataDocumentTest : TestCase {
  19. public XmlDataDocumentTest() : base ("System.Xml.XmlDataDocument") {}
  20. public XmlDataDocumentTest(string name) : base(name) {}
  21. protected override void TearDown() {}
  22. protected override void SetUp()
  23. {
  24. Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-US");
  25. }
  26. public static ITest Suite {
  27. get {
  28. return new TestSuite(typeof(XmlDataDocumentTest));
  29. }
  30. }
  31. public void TestCloneNode ()
  32. {
  33. XmlDataDocument doc = new XmlDataDocument ();
  34. doc.DataSet.ReadXmlSchema ("System.Xml/region.xsd");
  35. doc.Load ("System.Xml/region.xml");
  36. XmlDataDocument doc2 = (XmlDataDocument)doc.CloneNode (false);
  37. AssertEquals ("#I01", 0, doc2.ChildNodes.Count);
  38. AssertEquals ("#I02", "<?xml version=\"1.0\" encoding=\"utf-16\"?>", doc2.DataSet.GetXmlSchema ().Substring (0, 39));
  39. doc2 = (XmlDataDocument)doc.CloneNode (true);
  40. AssertEquals ("#I03", 2, doc2.ChildNodes.Count);
  41. AssertEquals ("#I04", "<?xml version=\"1.0\" encoding=\"utf-16\"?>", doc2.DataSet.GetXmlSchema ().Substring (0, 39));
  42. doc.DataSet.Tables [0].Rows [0][0] = "64";
  43. AssertEquals ("#I05", "1", doc2.DataSet.Tables [0].Rows [0][0].ToString ());
  44. }
  45. public void TestEditingXmlTree ()
  46. {
  47. XmlDataDocument doc = new XmlDataDocument ();
  48. doc.DataSet.ReadXmlSchema ("System.Xml/region.xsd");
  49. doc.Load ("System.Xml/region.xml");
  50. XmlElement Element = doc.GetElementFromRow (doc.DataSet.Tables [0].Rows [1]);
  51. Element.FirstChild.InnerText = "64";
  52. AssertEquals ("test#01", "64", doc.DataSet.Tables [0].Rows [1] [0]);
  53. DataSet Set = new DataSet ();
  54. Set.ReadXml ("System.Xml/region.xml");
  55. doc = new XmlDataDocument (Set);
  56. Element = doc.GetElementFromRow (doc.DataSet.Tables [0].Rows [1]);
  57. try {
  58. Element.FirstChild.InnerText = "64";
  59. Fail ("test#02");
  60. } catch (Exception e) {
  61. AssertEquals ("test#03", typeof (InvalidOperationException), e.GetType ());
  62. AssertEquals ("test#04", "Please set DataSet.EnforceConstraints == false before trying to edit XmlDataDocument using XML operations.", e.Message);
  63. }
  64. AssertEquals ("test#05", "2", doc.DataSet.Tables [0].Rows [1] [0]);
  65. Set.EnforceConstraints = false;
  66. Element.FirstChild.InnerText = "64";
  67. AssertEquals ("test#06", "64", doc.DataSet.Tables [0].Rows [1] [0]);
  68. }
  69. public void TestEditingDataSet ()
  70. {
  71. XmlReader Reader = new XmlTextReader ("System.Xml/region.xml");
  72. XmlDataDocument Doc = new XmlDataDocument ();
  73. Doc.DataSet.ReadXml (Reader);
  74. AssertEquals ("test#01", "Interactive", Reader.ReadState.ToString ());
  75. DataSet Set = Doc.DataSet;
  76. Set.Tables [0].Rows [1] [0] = "64";
  77. AssertEquals ("test#02", "64", Doc.FirstChild.FirstChild.NextSibling.FirstChild.InnerText);
  78. }
  79. public void TestCreateElement1 ()
  80. {
  81. XmlDataDocument doc = new XmlDataDocument ();
  82. doc.DataSet.ReadXmlSchema ("System.Xml/region.xsd");
  83. doc.Load ("System.Xml/region.xml");
  84. XmlElement Element = doc.CreateElement ("prefix", "localname", "namespaceURI");
  85. AssertEquals ("test#01", "prefix", Element.Prefix);
  86. AssertEquals ("test#02", "localname", Element.LocalName);
  87. AssertEquals ("test#03", "namespaceURI", Element.NamespaceURI);
  88. doc.ImportNode (Element, false);
  89. TextWriter text = new StringWriter ();
  90. doc.Save(text);
  91. string substring = "";
  92. string TextString = text.ToString ();
  93. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  94. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  95. //AssertEquals ("test#04", "<?xml version=\"1.0\" encoding=\"utf-16\" standalone=\"yes\"?>", substring);
  96. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  97. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  98. AssertEquals ("test#05", "<Root>", substring);
  99. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  100. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  101. AssertEquals ("test#06", " <Region>", substring);
  102. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  103. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  104. AssertEquals ("test#07", " <RegionID>1</RegionID>", substring);
  105. for (int i = 0; i < 26; i++) {
  106. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  107. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  108. }
  109. substring = TextString.Substring (0, TextString.Length);
  110. AssertEquals ("test#07", "</Root>", substring);
  111. }
  112. public void TestCreateElement2 ()
  113. {
  114. XmlDataDocument doc = new XmlDataDocument ();
  115. doc.DataSet.ReadXmlSchema ("System.Xml/region.xsd");
  116. doc.Load ("System.Xml/region.xml");
  117. XmlElement Element = doc.CreateElement ("ElementName");
  118. AssertEquals ("test#01", "", Element.Prefix);
  119. AssertEquals ("test#02", "ElementName", Element.LocalName);
  120. AssertEquals ("test#03", "", Element.NamespaceURI);
  121. Element = doc.CreateElement ("prefix:ElementName");
  122. AssertEquals ("test#04", "prefix", Element.Prefix);
  123. AssertEquals ("test#05", "ElementName", Element.LocalName);
  124. AssertEquals ("test#06", "", Element.NamespaceURI);
  125. }
  126. public void TestCreateElement3 ()
  127. {
  128. XmlDataDocument doc = new XmlDataDocument ();
  129. doc.DataSet.ReadXmlSchema ("System.Xml/region.xsd");
  130. doc.Load ("System.Xml/region.xml");
  131. XmlElement Element = doc.CreateElement ("ElementName", "namespace");
  132. AssertEquals ("test#01", "", Element.Prefix);
  133. AssertEquals ("test#02", "ElementName", Element.LocalName);
  134. AssertEquals ("test#03", "namespace", Element.NamespaceURI);
  135. Element = doc.CreateElement ("prefix:ElementName", "namespace");
  136. AssertEquals ("test#04", "prefix", Element.Prefix);
  137. AssertEquals ("test#05", "ElementName", Element.LocalName);
  138. AssertEquals ("test#06", "namespace", Element.NamespaceURI);
  139. }
  140. public void TestNavigator ()
  141. {
  142. XmlDataDocument doc = new XmlDataDocument ();
  143. doc.DataSet.ReadXmlSchema ("System.Xml/region.xsd");
  144. doc.Load ("System.Xml/region.xml");
  145. XPathNavigator Nav = doc.CreateNavigator ();
  146. Nav.MoveToRoot ();
  147. Nav.MoveToFirstChild ();
  148. AssertEquals ("test#01", "Root", Nav.Name.ToString ());
  149. AssertEquals ("test#02", "", Nav.NamespaceURI.ToString ());
  150. AssertEquals ("test#03", "False", Nav.IsEmptyElement.ToString ());
  151. AssertEquals ("test#04", "Element", Nav.NodeType.ToString ());
  152. AssertEquals ("test#05", "", Nav.Prefix);
  153. Nav.MoveToFirstChild ();
  154. Nav.MoveToNext ();
  155. AssertEquals ("test#06", "Region", Nav.Name.ToString ());
  156. AssertEquals ("test#07", "2Western", Nav.Value.Substring(0, Nav.Value.IndexOf ("\n") - 1));
  157. Nav.MoveToFirstChild ();
  158. AssertEquals ("test#08", "2", Nav.Value);
  159. Nav.MoveToRoot ();
  160. AssertEquals ("test#09", "Root", Nav.NodeType.ToString ());
  161. }
  162. // Test constructor
  163. public void Test1()
  164. {
  165. //Create an XmlDataDocument.
  166. XmlDataDocument doc = new XmlDataDocument();
  167. //Load the schema file.
  168. doc.DataSet.ReadXmlSchema("System.Xml/store.xsd");
  169. Console.WriteLine ("books: " + doc.DataSet.Tables.Count);
  170. //Load the XML data.
  171. doc.Load("System.Xml/2books.xml");
  172. //Update the price on the first book using the DataSet methods.
  173. DataTable books = doc.DataSet.Tables["book"];
  174. Console.WriteLine ("books: " + doc.DataSet.Tables [0].TableName);
  175. books.Rows[0]["price"] = "12,95";
  176. //string outstring = "";
  177. TextWriter text = new StringWriter ();
  178. doc.Save(text);
  179. //str.Read (bytes, 0, (int)str.Length);
  180. //String OutString = new String (bytes);
  181. string TextString = text.ToString ();
  182. string substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  183. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  184. AssertEquals ("#A01", "<?xml version=\"1.0\" encoding=\"utf-16\"?>", substring);
  185. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  186. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  187. AssertEquals ("#A02", "<!--sample XML fragment-->", substring);
  188. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  189. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  190. AssertEquals ("#A03", "<bookstore>", substring);
  191. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  192. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  193. AssertEquals ("#A04", " <book genre=\"novel\" ISBN=\"10-861003-324\">", substring);
  194. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  195. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  196. AssertEquals ("#A05", " <title>The Handmaid's Tale</title>", substring);
  197. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  198. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  199. AssertEquals ("#A06", " <price>12.95</price>", substring);
  200. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  201. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  202. AssertEquals ("#A07", " </book>", substring);
  203. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  204. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  205. AssertEquals ("#A08", " <book genre=\"novel\" ISBN=\"1-861001-57-5\">", substring);
  206. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  207. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  208. AssertEquals ("#A09", " <title>Pride And Prejudice</title>", substring);
  209. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  210. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  211. AssertEquals ("#A10", " <price>24.95</price>", substring);
  212. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  213. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  214. AssertEquals ("#A11", " </book>", substring);
  215. substring = TextString;
  216. AssertEquals ("#A12", "</bookstore>", substring);
  217. }
  218. // Test public fields
  219. public void Test2()
  220. {
  221. DataSet RegionDS = new DataSet ();
  222. DataRow RegionRow;
  223. RegionDS.ReadXmlSchema ("System.Xml/region.xsd");
  224. XmlDataDocument DataDoc = new XmlDataDocument (RegionDS);
  225. DataDoc.Load("System.Xml/region.xml" );
  226. RegionRow = RegionDS.Tables[0].Rows[0];
  227. RegionDS.AcceptChanges ();
  228. Console.WriteLine ("***");
  229. RegionRow["RegionDescription"] = "Reeeeeaalllly Far East!";
  230. RegionDS.AcceptChanges ();
  231. TextWriter text = new StringWriter ();
  232. DataDoc.Save (text);
  233. string TextString = text.ToString ();
  234. string substring = TextString.Substring (0, TextString.IndexOf("\n"));
  235. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  236. //AssertEquals ("#B01", "<?xml version=\"1.0\" encoding=\"utf-16\" standalone=\"yes\"?>", substring);
  237. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  238. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  239. AssertEquals ("#B02", "<Root>", substring);
  240. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  241. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  242. AssertEquals ("#B03", " <Region>", substring);
  243. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  244. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  245. AssertEquals ("#B04", " <RegionID>1</RegionID>", substring);
  246. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  247. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  248. AssertEquals ("#B05", " <RegionDescription>Reeeeeaalllly Far East!</RegionDescription>", substring);
  249. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  250. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  251. AssertEquals ("#B06", " </Region>", substring);
  252. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  253. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  254. AssertEquals ("#B07", " <Region>", substring);
  255. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  256. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  257. AssertEquals ("#B08", " <RegionID>2</RegionID>", substring);
  258. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  259. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  260. AssertEquals ("#B09", " <RegionDescription>Western", substring);
  261. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  262. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  263. AssertEquals ("#B10", " </RegionDescription>", substring);
  264. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  265. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  266. AssertEquals ("#B11", " </Region>", substring);
  267. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  268. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  269. AssertEquals ("#B12", " <Region>", substring);
  270. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  271. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  272. AssertEquals ("#B13", " <RegionID>3</RegionID>", substring);
  273. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  274. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  275. AssertEquals ("#B14", " <RegionDescription>Northern", substring);
  276. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  277. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  278. AssertEquals ("#B15", " </RegionDescription>", substring);
  279. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  280. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  281. AssertEquals ("#B16", " </Region>", substring);
  282. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  283. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  284. AssertEquals ("#B17", " <Region>", substring);
  285. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  286. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  287. AssertEquals ("#B18", " <RegionID>4</RegionID>", substring);
  288. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  289. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  290. AssertEquals ("#B19", " <RegionDescription>Southern", substring);
  291. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  292. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  293. AssertEquals ("#B20", " </RegionDescription>", substring);
  294. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  295. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  296. AssertEquals ("#B21", " </Region>", substring);
  297. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  298. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  299. AssertEquals ("#B22", " <MoreData>", substring);
  300. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  301. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  302. AssertEquals ("#B23", " <Column1>12</Column1>", substring);
  303. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  304. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  305. AssertEquals ("#B24", " <Column2>Hi There</Column2>", substring);
  306. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  307. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  308. AssertEquals ("#B25", " </MoreData>", substring);
  309. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  310. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  311. AssertEquals ("#B26", " <MoreData>", substring);
  312. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  313. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  314. AssertEquals ("#B27", " <Column1>12</Column1>", substring);
  315. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  316. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  317. AssertEquals ("#B28", " <Column2>Hi There</Column2>", substring);
  318. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  319. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  320. AssertEquals ("#B29", " </MoreData>", substring);
  321. }
  322. public void Test3()
  323. {
  324. XmlDataDocument DataDoc = new XmlDataDocument ();
  325. DataSet dataset = DataDoc.DataSet;
  326. dataset.ReadXmlSchema ("System.Xml/region.xsd");
  327. DataDoc.Load("System.Xml/region.xml" );
  328. DataDoc.GetElementsByTagName ("Region") [0].RemoveAll ();
  329. TextWriter text = new StringWriter ();
  330. dataset.WriteXml (text);
  331. //DataDoc.Save (text);
  332. string TextString = text.ToString ();
  333. string substring = TextString.Substring (0, TextString.IndexOf("\n"));
  334. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  335. AssertEquals ("#C01", "<Root>", substring);
  336. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  337. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  338. AssertEquals ("#C02", " <Region />", substring);
  339. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  340. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  341. AssertEquals ("#C03", " <Region>", substring);
  342. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  343. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  344. AssertEquals ("#C04", " <RegionID>2</RegionID>", substring);
  345. substring = TextString.Substring (0, TextString.IndexOf("\n")- 1);
  346. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  347. AssertEquals ("#C05", " <RegionDescription>Western", substring);
  348. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  349. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  350. AssertEquals ("#C06", " </RegionDescription>", substring);
  351. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  352. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  353. AssertEquals ("#C07", " </Region>", substring);
  354. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  355. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  356. AssertEquals ("#C08", " <Region>", substring);
  357. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  358. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  359. AssertEquals ("#C09", " <RegionID>3</RegionID>", substring);
  360. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  361. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  362. AssertEquals ("#C10", " <RegionDescription>Northern", substring);
  363. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  364. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  365. AssertEquals ("#C11", " </RegionDescription>", substring);
  366. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  367. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  368. AssertEquals ("#C12", " </Region>", substring);
  369. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  370. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  371. AssertEquals ("#C13", " <Region>", substring);
  372. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  373. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  374. AssertEquals ("#C14", " <RegionID>4</RegionID>", substring);
  375. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  376. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  377. AssertEquals ("#C15", " <RegionDescription>Southern", substring);
  378. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  379. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  380. AssertEquals ("#C16", " </RegionDescription>", substring);
  381. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  382. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  383. AssertEquals ("#C17", " </Region>", substring);
  384. substring = TextString.Substring (0, TextString.Length);
  385. AssertEquals ("#C18", "</Root>", substring);
  386. }
  387. public void Test4 ()
  388. {
  389. DataSet RegionDS = new DataSet ();
  390. RegionDS.ReadXmlSchema ("System.Xml/region.xsd");
  391. XmlDataDocument DataDoc = new XmlDataDocument (RegionDS);
  392. DataDoc.Load("System.Xml/region.xml" );
  393. DataTable table = DataDoc.DataSet.Tables ["Region"];
  394. DataRow newRow = table.NewRow ();
  395. newRow [0] = "new row";
  396. newRow [1] = "new description";
  397. table.Rows.Add (newRow);
  398. TextWriter text = new StringWriter ();
  399. DataDoc.Save (text);
  400. string TextString = text.ToString ();
  401. string substring = TextString.Substring (0, TextString.IndexOf("\n"));
  402. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  403. //AssertEquals ("#F01", "<?xml version=\"1.0\" encoding=\"utf-16\" standalone=\"yes\"?>", substring);
  404. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  405. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  406. AssertEquals ("#F02", "<Root>", substring);
  407. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  408. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  409. AssertEquals ("#F03", " <Region>", substring);
  410. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  411. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  412. AssertEquals ("#F04", " <RegionID>1</RegionID>", substring);
  413. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  414. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  415. AssertEquals ("#F05", " <RegionDescription>Eastern", substring);
  416. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  417. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  418. AssertEquals ("#F06", " </RegionDescription>", substring);
  419. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  420. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  421. AssertEquals ("#F07", " </Region>", substring);
  422. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  423. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  424. AssertEquals ("#F08", " <Region>", substring);
  425. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  426. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  427. AssertEquals ("#F09", " <RegionID>2</RegionID>", substring);
  428. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  429. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  430. AssertEquals ("#F10", " <RegionDescription>Western", substring);
  431. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  432. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  433. AssertEquals ("#F11", " </RegionDescription>", substring);
  434. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  435. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  436. AssertEquals ("#F12", " </Region>", substring);
  437. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  438. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  439. AssertEquals ("#F13", " <Region>", substring);
  440. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  441. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  442. AssertEquals ("#F14", " <RegionID>3</RegionID>", substring);
  443. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  444. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  445. AssertEquals ("#F15", " <RegionDescription>Northern", substring);
  446. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  447. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  448. AssertEquals ("#F16", " </RegionDescription>", substring);
  449. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  450. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  451. AssertEquals ("#F17", " </Region>", substring);
  452. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  453. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  454. AssertEquals ("#F18", " <Region>", substring);
  455. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  456. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  457. AssertEquals ("#F19", " <RegionID>4</RegionID>", substring);
  458. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  459. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  460. AssertEquals ("#F20", " <RegionDescription>Southern", substring);
  461. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  462. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  463. AssertEquals ("#F21", " </RegionDescription>", substring);
  464. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  465. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  466. AssertEquals ("#F22", " </Region>", substring);
  467. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  468. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  469. AssertEquals ("#F23", " <MoreData>", substring);
  470. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  471. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  472. AssertEquals ("#F24", " <Column1>12</Column1>", substring);
  473. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  474. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  475. AssertEquals ("#F25", " <Column2>Hi There</Column2>", substring);
  476. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  477. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  478. AssertEquals ("#F26", " </MoreData>", substring);
  479. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  480. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  481. AssertEquals ("#F27", " <MoreData>", substring);
  482. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  483. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  484. AssertEquals ("#F28", " <Column1>12</Column1>", substring);
  485. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  486. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  487. AssertEquals ("#F29", " <Column2>Hi There</Column2>", substring);
  488. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  489. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  490. AssertEquals ("#F30", " </MoreData>", substring);
  491. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  492. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  493. AssertEquals ("#F31", " <Region>", substring);
  494. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  495. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  496. AssertEquals ("#F32", " <RegionID>new row</RegionID>", substring);
  497. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  498. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  499. AssertEquals ("#F33", " <RegionDescription>new description</RegionDescription>", substring);
  500. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  501. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  502. AssertEquals ("#F34", " </Region>", substring);
  503. substring = TextString.Substring (0, TextString.Length);
  504. AssertEquals ("#F35", "</Root>", substring);
  505. }
  506. public void Test5 ()
  507. {
  508. DataSet RegionDS = new DataSet ();
  509. RegionDS.ReadXmlSchema ("System.Xml/region.xsd");
  510. XmlDataDocument DataDoc = new XmlDataDocument (RegionDS);
  511. DataDoc.Load("System.Xml/region.xml" );
  512. try {
  513. DataDoc.DocumentElement.AppendChild (DataDoc.DocumentElement.FirstChild);
  514. Fail ("#G01");
  515. } catch (Exception e) {
  516. AssertEquals ("#G02", typeof (InvalidOperationException), e.GetType ());
  517. AssertEquals ("#G03", "Please set DataSet.EnforceConstraints == false before trying to edit " +
  518. "XmlDataDocument using XML operations.", e.Message);
  519. DataDoc.DataSet.EnforceConstraints = false;
  520. }
  521. XmlElement newNode = DataDoc.CreateElement ("Region");
  522. XmlElement newChildNode = DataDoc.CreateElement ("RegionID");
  523. newChildNode.InnerText = "64";
  524. XmlElement newChildNode2 = DataDoc.CreateElement ("RegionDescription");
  525. newChildNode2.InnerText = "test node";
  526. newNode.AppendChild (newChildNode);
  527. newNode.AppendChild (newChildNode2);
  528. DataDoc.DocumentElement.AppendChild (newNode);
  529. TextWriter text = new StringWriter ();
  530. //DataDoc.Save (text);
  531. DataDoc.DataSet.WriteXml(text);
  532. string TextString = text.ToString ();
  533. string substring = TextString.Substring (0, TextString.IndexOf("\n"));
  534. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  535. for (int i = 0; i < 21; i++) {
  536. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  537. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  538. }
  539. AssertEquals ("#G04", " <Region>", substring);
  540. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  541. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  542. AssertEquals ("#G05", " <RegionID>64</RegionID>", substring);
  543. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  544. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  545. AssertEquals ("#G06", " <RegionDescription>test node</RegionDescription>", substring);
  546. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  547. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  548. AssertEquals ("#G07", " </Region>", substring);
  549. substring = TextString.Substring (0, TextString.Length);
  550. AssertEquals ("#G08", "</Root>", substring);
  551. }
  552. public void Test6 ()
  553. {
  554. DataSet RegionDS = new DataSet ();
  555. RegionDS.ReadXmlSchema ("System.Xml/region.xsd");
  556. XmlDataDocument DataDoc = new XmlDataDocument (RegionDS);
  557. DataDoc.Load("System.Xml/region.xml" );
  558. DataDoc.DataSet.EnforceConstraints = false;
  559. XmlElement newNode = DataDoc.CreateElement ("Region");
  560. XmlElement newChildNode = DataDoc.CreateElement ("RegionID");
  561. newChildNode.InnerText = "64";
  562. XmlElement newChildNode2 = null;
  563. try {
  564. newChildNode2 = DataDoc.CreateElement ("something else");
  565. Fail ("#H01");
  566. } catch (Exception e) {
  567. AssertEquals ("#H02", typeof (XmlException), e.GetType ());
  568. newChildNode2 = DataDoc.CreateElement ("something_else");
  569. }
  570. newChildNode2.InnerText = "test node";
  571. newNode.AppendChild (newChildNode);
  572. newNode.AppendChild (newChildNode2);
  573. DataDoc.DocumentElement.AppendChild (newNode);
  574. TextWriter text = new StringWriter ();
  575. //DataDoc.Save (text);
  576. DataDoc.DataSet.WriteXml(text);
  577. string TextString = text.ToString ();
  578. string substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  579. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  580. for (int i = 0; i < 21; i++) {
  581. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  582. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  583. }
  584. AssertEquals ("#H03", " <Region>", substring);
  585. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  586. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  587. AssertEquals ("#H04", " <RegionID>64</RegionID>", substring);
  588. substring = TextString.Substring (0, TextString.IndexOf("\n") );
  589. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  590. AssertEquals ("#H05", " </Region>", substring);
  591. substring = TextString.Substring (0, TextString.Length);
  592. AssertEquals ("#H06", "</Root>", substring);
  593. }
  594. public void TestGetElementFromRow ()
  595. {
  596. XmlDataDocument doc = new XmlDataDocument ();
  597. doc.DataSet.ReadXmlSchema ("System.Xml/region.xsd");
  598. doc.Load ("System.Xml/region.xml");
  599. DataTable table = doc.DataSet.Tables ["Region"];
  600. XmlElement element = doc.GetElementFromRow (table.Rows [2]);
  601. AssertEquals ("#D01", "Region", element.Name);
  602. AssertEquals ("#D02", "3", element ["RegionID"].InnerText);
  603. try {
  604. element = doc.GetElementFromRow (table.Rows [4]);
  605. Fail ("#D03");
  606. } catch (Exception e) {
  607. AssertEquals ("#D04", typeof (IndexOutOfRangeException), e.GetType ());
  608. AssertEquals ("#D05", "There is no row at position 4.", e.Message);
  609. }
  610. }
  611. public void TestGetRowFromElement ()
  612. {
  613. XmlDataDocument doc = new XmlDataDocument ();
  614. doc.DataSet.ReadXmlSchema ("System.Xml/region.xsd");
  615. doc.Load ("System.Xml/region.xml");
  616. XmlElement root = doc.DocumentElement;
  617. DataRow row = doc.GetRowFromElement((XmlElement)root.FirstChild);
  618. AssertEquals ("#E01", "1", row [0]);
  619. row = doc.GetRowFromElement((XmlElement)root.ChildNodes [2]);
  620. AssertEquals ("#E02", "3", row [0]);
  621. }
  622. }
  623. }