XmlDataDocumentTest.cs 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825
  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 ("System.Xml/region.xsd");
  33. doc.Load ("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 ("System.Xml/region.xsd");
  48. doc.Load ("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 ("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 ("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 ("System.Xml/region.xsd");
  84. doc.Load ("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 ("System.Xml/region.xsd");
  117. doc.Load ("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 ("System.Xml/region.xsd");
  132. doc.Load ("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 ("System.Xml/region.xsd");
  147. doc.Load ("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("System.Xml/store.xsd");
  173. Console.WriteLine ("books: " + doc.DataSet.Tables.Count);
  174. //Load the XML data.
  175. doc.Load("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 ("System.Xml/region.xsd");
  229. XmlDataDocument DataDoc = new XmlDataDocument (RegionDS);
  230. DataDoc.Load("System.Xml/region.xml" );
  231. RegionRow = RegionDS.Tables[0].Rows[0];
  232. RegionDS.AcceptChanges ();
  233. RegionRow["RegionDescription"] = "Reeeeeaalllly Far East!";
  234. RegionDS.AcceptChanges ();
  235. TextWriter text = new StringWriter ();
  236. DataDoc.Save (text);
  237. string TextString = text.ToString ();
  238. string substring = TextString.Substring (0, TextString.IndexOf("\n"));
  239. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  240. //AssertEquals ("#B01", "<?xml version=\"1.0\" encoding=\"utf-16\" standalone=\"yes\"?>", substring);
  241. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  242. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  243. Assert ("#B02", substring.IndexOf ("<Root>") != -1);
  244. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  245. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  246. Assert ("#B03", substring.IndexOf (" <Region>") != -1);
  247. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  248. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  249. Assert ("#B04", substring.IndexOf (" <RegionID>1</RegionID>") != -1);
  250. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  251. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  252. Assert ("#B05", substring.IndexOf (" <RegionDescription>Reeeeeaalllly Far East!</RegionDescription>") != -1);
  253. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  254. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  255. Assert ("#B06", substring.IndexOf (" </Region>") != -1);
  256. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  257. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  258. Assert ("#B07", substring.IndexOf (" <Region>") != -1);
  259. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  260. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  261. Assert ("#B08", substring.IndexOf (" <RegionID>2</RegionID>") != -1);
  262. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  263. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  264. Assert ("#B09", substring.IndexOf (" <RegionDescription>Western") != -1);
  265. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  266. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  267. Assert ("#B10", substring.IndexOf (" </RegionDescription>") != -1);
  268. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  269. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  270. Assert ("#B11", substring.IndexOf (" </Region>") != -1);
  271. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  272. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  273. Assert ("#B12", substring.IndexOf (" <Region>") != -1);
  274. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  275. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  276. Assert ("#B13", substring.IndexOf (" <RegionID>3</RegionID>") != -1);
  277. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  278. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  279. Assert ("#B14", substring.IndexOf (" <RegionDescription>Northern") != -1);
  280. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  281. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  282. Assert ("#B15", substring.IndexOf (" </RegionDescription>") != -1);
  283. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  284. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  285. Assert ("#B16", substring.IndexOf (" </Region>") != -1);
  286. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  287. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  288. Assert ("#B17", substring.IndexOf (" <Region>") != -1);
  289. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  290. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  291. Assert ("#B18", substring.IndexOf (" <RegionID>4</RegionID>") != -1);
  292. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  293. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  294. Assert ("#B19", substring.IndexOf (" <RegionDescription>Southern") != -1);
  295. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  296. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  297. Assert ("#B20", substring.IndexOf (" </RegionDescription>") != -1);
  298. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  299. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  300. Assert ("#B21", substring.IndexOf (" </Region>") != -1);
  301. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  302. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  303. Assert ("#B22", substring.IndexOf (" <MoreData>") != -1);
  304. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  305. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  306. Assert ("#B23", substring.IndexOf (" <Column1>12</Column1>") != -1);
  307. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  308. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  309. Assert ("#B24", substring.IndexOf (" <Column2>Hi There</Column2>") != -1);
  310. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  311. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  312. Assert ("#B25", substring.IndexOf (" </MoreData>") != -1);
  313. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  314. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  315. Assert ("#B26", substring.IndexOf (" <MoreData>") != -1);
  316. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  317. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  318. Assert ("#B27", substring.IndexOf (" <Column1>12</Column1>") != -1);
  319. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  320. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  321. Assert ("#B28", substring.IndexOf (" <Column2>Hi There</Column2>") != -1);
  322. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  323. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  324. Assert ("#B29", substring.IndexOf (" </MoreData>") != -1);
  325. }
  326. [Test]
  327. public void Test3()
  328. {
  329. XmlDataDocument DataDoc = new XmlDataDocument ();
  330. DataSet dataset = DataDoc.DataSet;
  331. dataset.ReadXmlSchema ("System.Xml/region.xsd");
  332. DataDoc.Load("System.Xml/region.xml" );
  333. DataDoc.GetElementsByTagName ("Region") [0].RemoveAll ();
  334. TextWriter text = new StringWriter ();
  335. dataset.WriteXml (text);
  336. //DataDoc.Save (text);
  337. string TextString = text.ToString ();
  338. string substring = TextString.Substring (0, TextString.IndexOf("\n"));
  339. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  340. Assert ("#C01", substring.IndexOf ("<Root>") != -1);
  341. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  342. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  343. Assert ("#C02", substring.IndexOf (" <Region />") != -1);
  344. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  345. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  346. Assert ("#C03", substring.IndexOf (" <Region>") != -1);
  347. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  348. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  349. Assert ("#C04", substring.IndexOf (" <RegionID>2</RegionID>") != -1);
  350. substring = TextString.Substring (0, TextString.IndexOf("\n")- 1);
  351. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  352. Assert ("#C05", substring.IndexOf (" <RegionDescription>Western") != -1);
  353. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  354. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  355. Assert ("#C06", substring.IndexOf (" </RegionDescription>") != -1);
  356. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  357. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  358. Assert ("#C07", substring.IndexOf (" </Region>") != -1);
  359. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  360. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  361. Assert ("#C08", substring.IndexOf (" <Region>") != -1);
  362. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  363. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  364. Assert ("#C09", substring.IndexOf (" <RegionID>3</RegionID>") != -1);
  365. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  366. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  367. Assert ("#C10", substring.IndexOf (" <RegionDescription>Northern") != -1);
  368. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  369. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  370. Assert ("#C11", substring.IndexOf (" </RegionDescription>") != -1);
  371. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  372. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  373. Assert ("#C12", substring.IndexOf (" </Region>") != -1);
  374. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  375. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  376. Assert ("#C13", substring.IndexOf (" <Region>") != -1);
  377. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  378. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  379. Assert ("#C14", substring.IndexOf (" <RegionID>4</RegionID>") != -1);
  380. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  381. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  382. Assert ("#C15", substring.IndexOf (" <RegionDescription>Southern") != -1);
  383. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  384. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  385. Assert ("#C16", substring.IndexOf (" </RegionDescription>") != -1);
  386. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  387. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  388. Assert ("#C17", substring.IndexOf (" </Region>") != -1);
  389. substring = TextString.Substring (0, TextString.Length);
  390. Assert ("#C18", substring.IndexOf ("</Root>") != -1);
  391. }
  392. [Test]
  393. public void Test4 ()
  394. {
  395. DataSet RegionDS = new DataSet ();
  396. RegionDS.ReadXmlSchema ("System.Xml/region.xsd");
  397. XmlDataDocument DataDoc = new XmlDataDocument (RegionDS);
  398. DataDoc.Load("System.Xml/region.xml" );
  399. DataTable table = DataDoc.DataSet.Tables ["Region"];
  400. DataRow newRow = table.NewRow ();
  401. newRow [0] = "new row";
  402. newRow [1] = "new description";
  403. table.Rows.Add (newRow);
  404. TextWriter text = new StringWriter ();
  405. DataDoc.Save (text);
  406. string TextString = text.ToString ();
  407. string substring = TextString.Substring (0, TextString.IndexOf("\n"));
  408. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  409. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  410. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  411. Assert ("#F02", substring.IndexOf ("<Root>") != -1);
  412. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  413. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  414. Assert ("#F03", substring.IndexOf (" <Region>") != -1);
  415. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  416. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  417. Assert ("#F04", substring.IndexOf (" <RegionID>1</RegionID>") != -1);
  418. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  419. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  420. Assert ("#F05", substring.IndexOf (" <RegionDescription>Eastern") != -1);
  421. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  422. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  423. Assert ("#F06", substring.IndexOf (" </RegionDescription>") != -1);
  424. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  425. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  426. Assert ("#F07", substring.IndexOf (" </Region>") != -1);
  427. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  428. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  429. Assert ("#F08", substring.IndexOf (" <Region>") != -1);
  430. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  431. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  432. Assert ("#F09", substring.IndexOf (" <RegionID>2</RegionID>") != -1);
  433. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  434. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  435. Assert ("#F10", substring.IndexOf (" <RegionDescription>Western") != -1);
  436. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  437. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  438. Assert ("#F11", substring.IndexOf (" </RegionDescription>") != -1);
  439. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  440. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  441. Assert ("#F12", substring.IndexOf (" </Region>") != -1);
  442. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  443. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  444. Assert ("#F13", substring.IndexOf (" <Region>") != -1);
  445. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  446. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  447. Assert ("#F14", substring.IndexOf (" <RegionID>3</RegionID>") != -1);
  448. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  449. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  450. Assert ("#F15", substring.IndexOf (" <RegionDescription>Northern") != -1);
  451. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  452. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  453. Assert ("#F16", substring.IndexOf (" </RegionDescription>") != -1);
  454. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  455. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  456. Assert ("#F17", substring.IndexOf (" </Region>") != -1);
  457. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  458. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  459. Assert ("#F18", substring.IndexOf (" <Region>") != -1);
  460. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  461. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  462. Assert ("#F19", substring.IndexOf (" <RegionID>4</RegionID>") != -1);
  463. substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  464. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  465. Assert ("#F20", substring.IndexOf (" <RegionDescription>Southern") != -1);
  466. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  467. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  468. Assert ("#F21", substring.IndexOf (" </RegionDescription>") != -1);
  469. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  470. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  471. Assert ("#F22", substring.IndexOf (" </Region>") != -1);
  472. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  473. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  474. Assert ("#F23", substring.IndexOf (" <MoreData>") != -1);
  475. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  476. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  477. Assert ("#F24", substring.IndexOf (" <Column1>12</Column1>") != -1);
  478. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  479. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  480. Assert ("#F25", substring.IndexOf (" <Column2>Hi There</Column2>") != -1);
  481. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  482. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  483. Assert ("#F26", substring.IndexOf (" </MoreData>") != -1);
  484. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  485. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  486. Assert ("#F27", substring.IndexOf (" <MoreData>") != -1);
  487. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  488. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  489. Assert ("#F28", substring.IndexOf (" <Column1>12</Column1>") != -1);
  490. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  491. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  492. Assert ("#F29", substring.IndexOf (" <Column2>Hi There</Column2>") != -1);
  493. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  494. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  495. Assert ("#F30", substring.IndexOf (" </MoreData>") != -1);
  496. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  497. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  498. Assert ("#F31", substring.IndexOf (" <Region>") != -1);
  499. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  500. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  501. Assert ("#F32", substring.IndexOf (" <RegionID>new row</RegionID>") != -1);
  502. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  503. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  504. Assert ("#F33", substring.IndexOf (" <RegionDescription>new description</RegionDescription>") != -1);
  505. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  506. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  507. Assert ("#F34", substring.IndexOf (" </Region>") != -1);
  508. substring = TextString.Substring (0, TextString.Length);
  509. Assert ("#F35", substring.IndexOf ("</Root>") != -1);
  510. }
  511. [Test]
  512. public void Test5 ()
  513. {
  514. DataSet RegionDS = new DataSet ();
  515. RegionDS.ReadXmlSchema ("System.Xml/region.xsd");
  516. XmlDataDocument DataDoc = new XmlDataDocument (RegionDS);
  517. DataDoc.Load("System.Xml/region.xml" );
  518. try {
  519. DataDoc.DocumentElement.AppendChild (DataDoc.DocumentElement.FirstChild);
  520. Fail ("#G01");
  521. } catch (Exception e) {
  522. AssertEquals ("#G02", typeof (InvalidOperationException), e.GetType ());
  523. AssertEquals ("#G03", "Please set DataSet.EnforceConstraints == false before trying to edit " +
  524. "XmlDataDocument using XML operations.", e.Message);
  525. DataDoc.DataSet.EnforceConstraints = false;
  526. }
  527. XmlElement newNode = DataDoc.CreateElement ("Region");
  528. XmlElement newChildNode = DataDoc.CreateElement ("RegionID");
  529. newChildNode.InnerText = "64";
  530. XmlElement newChildNode2 = DataDoc.CreateElement ("RegionDescription");
  531. newChildNode2.InnerText = "test node";
  532. newNode.AppendChild (newChildNode);
  533. newNode.AppendChild (newChildNode2);
  534. DataDoc.DocumentElement.AppendChild (newNode);
  535. TextWriter text = new StringWriter ();
  536. //DataDoc.Save (text);
  537. DataDoc.DataSet.WriteXml(text);
  538. string TextString = text.ToString ();
  539. string substring = TextString.Substring (0, TextString.IndexOf("\n"));
  540. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  541. for (int i = 0; i < 21; i++) {
  542. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  543. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  544. }
  545. Assert ("#G04", substring.IndexOf (" <Region>") != -1);
  546. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  547. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  548. Assert ("#G05", substring.IndexOf (" <RegionID>64</RegionID>") != -1);
  549. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  550. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  551. Assert ("#G06", substring.IndexOf (" <RegionDescription>test node</RegionDescription>") != -1);
  552. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  553. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  554. Assert ("#G07", substring.IndexOf (" </Region>") != -1);
  555. substring = TextString.Substring (0, TextString.Length);
  556. Assert ("#G08", substring.IndexOf ("</Root>") != -1);
  557. }
  558. [Test]
  559. public void Test6 ()
  560. {
  561. DataSet RegionDS = new DataSet ();
  562. RegionDS.ReadXmlSchema ("System.Xml/region.xsd");
  563. XmlDataDocument DataDoc = new XmlDataDocument (RegionDS);
  564. DataDoc.Load("System.Xml/region.xml" );
  565. DataDoc.DataSet.EnforceConstraints = false;
  566. XmlElement newNode = DataDoc.CreateElement ("Region");
  567. XmlElement newChildNode = DataDoc.CreateElement ("RegionID");
  568. newChildNode.InnerText = "64";
  569. XmlElement newChildNode2 = null;
  570. try {
  571. newChildNode2 = DataDoc.CreateElement ("something else");
  572. Fail ("#H01");
  573. } catch (Exception e) {
  574. AssertEquals ("#H02", typeof (XmlException), e.GetType ());
  575. newChildNode2 = DataDoc.CreateElement ("something_else");
  576. }
  577. newChildNode2.InnerText = "test node";
  578. newNode.AppendChild (newChildNode);
  579. newNode.AppendChild (newChildNode2);
  580. DataDoc.DocumentElement.AppendChild (newNode);
  581. TextWriter text = new StringWriter ();
  582. //DataDoc.Save (text);
  583. DataDoc.DataSet.WriteXml(text);
  584. string TextString = text.ToString ();
  585. string substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  586. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  587. for (int i = 0; i < 21; i++) {
  588. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  589. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  590. }
  591. Assert ("#H03", substring.IndexOf (" <Region>") != -1);
  592. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  593. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  594. Assert ("#H04", substring.IndexOf (" <RegionID>64</RegionID>") != -1);
  595. substring = TextString.Substring (0, TextString.IndexOf("\n") );
  596. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  597. Assert ("#H05", substring.IndexOf (" </Region>") != -1);
  598. substring = TextString.Substring (0, TextString.Length);
  599. Assert ("#H06", substring.IndexOf ("</Root>") != -1);
  600. }
  601. [Test]
  602. public void GetElementFromRow ()
  603. {
  604. XmlDataDocument doc = new XmlDataDocument ();
  605. doc.DataSet.ReadXmlSchema ("System.Xml/region.xsd");
  606. doc.Load ("System.Xml/region.xml");
  607. DataTable table = doc.DataSet.Tables ["Region"];
  608. XmlElement element = doc.GetElementFromRow (table.Rows [2]);
  609. AssertEquals ("#D01", "Region", element.Name);
  610. AssertEquals ("#D02", "3", element ["RegionID"].InnerText);
  611. try {
  612. element = doc.GetElementFromRow (table.Rows [4]);
  613. Fail ("#D03");
  614. } catch (Exception e) {
  615. AssertEquals ("#D04", typeof (IndexOutOfRangeException), e.GetType ());
  616. AssertEquals ("#D05", "There is no row at position 4.", e.Message);
  617. }
  618. }
  619. [Test]
  620. public void GetRowFromElement ()
  621. {
  622. XmlDataDocument doc = new XmlDataDocument ();
  623. doc.DataSet.ReadXmlSchema ("System.Xml/region.xsd");
  624. doc.Load ("System.Xml/region.xml");
  625. XmlElement root = doc.DocumentElement;
  626. DataRow row = doc.GetRowFromElement((XmlElement)root.FirstChild);
  627. AssertEquals ("#E01", "1", row [0]);
  628. row = doc.GetRowFromElement((XmlElement)root.ChildNodes [2]);
  629. AssertEquals ("#E02", "3", row [0]);
  630. }
  631. }
  632. }