XmlDataDocumentTest.cs 42 KB

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