XmlDataDocumentTest.cs 47 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913
  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. //
  12. // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
  13. //
  14. // Permission is hereby granted, free of charge, to any person obtaining
  15. // a copy of this software and associated documentation files (the
  16. // "Software"), to deal in the Software without restriction, including
  17. // without limitation the rights to use, copy, modify, merge, publish,
  18. // distribute, sublicense, and/or sell copies of the Software, and to
  19. // permit persons to whom the Software is furnished to do so, subject to
  20. // the following conditions:
  21. //
  22. // The above copyright notice and this permission notice shall be
  23. // included in all copies or substantial portions of the Software.
  24. //
  25. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  26. // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  27. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  28. // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
  29. // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  30. // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  31. // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  32. //
  33. using NUnit.Framework;
  34. using System;
  35. using System.Data;
  36. using System.Xml;
  37. using System.Xml.XPath;
  38. using System.IO;
  39. using System.Threading;
  40. using System.Globalization;
  41. namespace MonoTests.System.Data.Xml
  42. {
  43. [TestFixture]
  44. public class XmlDataDocumentTest : DataSetAssertion {
  45. static string EOL = "\n";
  46. [SetUp]
  47. public void GetReady()
  48. {
  49. Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-US");
  50. }
  51. [Test]
  52. public void NewInstance ()
  53. {
  54. XmlDataDocument doc = new XmlDataDocument ();
  55. AssertDataSet ("#1", doc.DataSet, "NewDataSet", 0, 0);
  56. Assert.IsFalse (doc.DataSet.EnforceConstraints);
  57. XmlElement el = doc.CreateElement ("TEST");
  58. AssertDataSet ("#2", doc.DataSet, "NewDataSet", 0, 0);
  59. Assert.IsNull (doc.GetRowFromElement (el));
  60. doc.AppendChild (el);
  61. AssertDataSet ("#3", doc.DataSet, "NewDataSet", 0, 0);
  62. DataSet ds = new DataSet ();
  63. doc = new XmlDataDocument (ds);
  64. Assert.IsTrue (doc.DataSet.EnforceConstraints);
  65. }
  66. [Test]
  67. public void SimpleLoad ()
  68. {
  69. string xml001 = "<root/>";
  70. XmlDataDocument doc = new XmlDataDocument ();
  71. DataSet ds = new DataSet ();
  72. ds.InferXmlSchema (new StringReader (xml001), null);
  73. doc.LoadXml (xml001);
  74. string xml002 = "<root><child/></root>";
  75. doc = new XmlDataDocument ();
  76. ds = new DataSet ();
  77. ds.InferXmlSchema (new StringReader (xml002), null);
  78. doc.LoadXml (xml002);
  79. string xml003 = "<root><col1>test</col1><col1></col1></root>";
  80. doc = new XmlDataDocument ();
  81. ds = new DataSet ();
  82. ds.InferXmlSchema (new StringReader (xml003), null);
  83. doc.LoadXml (xml003);
  84. string xml004 = "<set><tab1><col1>test</col1><col1>test2</col1></tab1><tab2><col2>test3</col2><col2>test4</col2></tab2></set>";
  85. doc = new XmlDataDocument ();
  86. ds = new DataSet ();
  87. ds.InferXmlSchema (new StringReader (xml004), null);
  88. doc.LoadXml (xml004);
  89. }
  90. [Test]
  91. public void CloneNode ()
  92. {
  93. XmlDataDocument doc = new XmlDataDocument ();
  94. doc.DataSet.ReadXmlSchema ("Test/System.Xml/region.xsd");
  95. doc.Load ("Test/System.Xml/region.xml");
  96. XmlDataDocument doc2 = (XmlDataDocument)doc.CloneNode (false);
  97. Assert.AreEqual (0, doc2.ChildNodes.Count, "#I01");
  98. Assert.AreEqual ("<?xml version=\"1.0\" encoding=\"utf-16\"?>", doc2.DataSet.GetXmlSchema ().Substring (0, 39), "#I02");
  99. doc2 = (XmlDataDocument)doc.CloneNode (true);
  100. Assert.AreEqual (2, doc2.ChildNodes.Count, "#I03");
  101. Assert.AreEqual ("<?xml version=\"1.0\" encoding=\"utf-16\"?>", doc2.DataSet.GetXmlSchema ().Substring (0, 39), "#I04");
  102. doc.DataSet.Tables [0].Rows [0][0] = "64";
  103. Assert.AreEqual ("1", doc2.DataSet.Tables [0].Rows [0][0].ToString (), "#I05");
  104. }
  105. [Test]
  106. public void EditingXmlTree ()
  107. {
  108. XmlDataDocument doc = new XmlDataDocument ();
  109. doc.DataSet.ReadXmlSchema ("Test/System.Xml/region.xsd");
  110. doc.Load ("Test/System.Xml/region.xml");
  111. XmlElement Element = doc.GetElementFromRow (doc.DataSet.Tables [0].Rows [1]);
  112. Element.FirstChild.InnerText = "64";
  113. Assert.AreEqual ("64", doc.DataSet.Tables [0].Rows [1] [0], "test#01");
  114. DataSet Set = new DataSet ();
  115. Set.ReadXml ("Test/System.Xml/region.xml");
  116. doc = new XmlDataDocument (Set);
  117. Element = doc.GetElementFromRow (doc.DataSet.Tables [0].Rows [1]);
  118. Assert.IsNotNull (Element);
  119. try {
  120. Element.FirstChild.InnerText = "64";
  121. Assert.Fail ("test#02");
  122. } catch (InvalidOperationException) {
  123. }
  124. Assert.AreEqual ("2", doc.DataSet.Tables [0].Rows [1] [0], "test#05");
  125. Set.EnforceConstraints = false;
  126. Element.FirstChild.InnerText = "64";
  127. Assert.AreEqual ("64", doc.DataSet.Tables [0].Rows [1] [0], "test#06");
  128. }
  129. [Test]
  130. public void EditingDataSet ()
  131. {
  132. string xml = "<Root><Region><RegionID>1</RegionID><RegionDescription>Eastern\r\n </RegionDescription></Region><Region><RegionID>2</RegionID><RegionDescription>Western\r\n </RegionDescription></Region><Region><RegionID>3</RegionID><RegionDescription>Northern\r\n </RegionDescription></Region><Region><RegionID>4</RegionID><RegionDescription>Southern\r\n </RegionDescription></Region><MoreData><Column1>12</Column1><Column2>Hi There</Column2></MoreData><MoreData><Column1>12</Column1><Column2>Hi There</Column2></MoreData></Root>";
  133. XmlReader Reader = new XmlTextReader ("Test/System.Xml/region.xml");
  134. XmlDataDocument Doc = new XmlDataDocument ();
  135. Doc.DataSet.ReadXml (Reader);
  136. StringWriter sw = new StringWriter ();
  137. XmlTextWriter xw = new XmlTextWriter (sw);
  138. Doc.DataSet.WriteXml (xw);
  139. string s = sw.ToString ();
  140. Assert.AreEqual (xml, s, "#1");
  141. Assert.AreEqual (xml, Doc.InnerXml, "#2");
  142. Assert.AreEqual ("EndOfFile", Reader.ReadState.ToString (), "test#01");
  143. DataSet Set = Doc.DataSet;
  144. Assert.AreEqual ("2", Set.Tables [0].Rows [1] [0], "test#01.5");
  145. Set.Tables [0].Rows [1] [0] = "64";
  146. Assert.AreEqual ("64", Doc.FirstChild.FirstChild.NextSibling.FirstChild.InnerText, "test#02");
  147. }
  148. [Test]
  149. public void CreateElement1 ()
  150. {
  151. XmlDataDocument doc = new XmlDataDocument ();
  152. doc.DataSet.ReadXmlSchema ("Test/System.Xml/region.xsd");
  153. doc.Load ("Test/System.Xml/region.xml");
  154. XmlElement Element = doc.CreateElement ("prefix", "localname", "namespaceURI");
  155. Assert.AreEqual ("prefix", Element.Prefix, "test#01");
  156. Assert.AreEqual ("localname", Element.LocalName, "test#02");
  157. Assert.AreEqual ("namespaceURI", Element.NamespaceURI, "test#03");
  158. doc.ImportNode (Element, false);
  159. TextWriter text = new StringWriter ();
  160. doc.Save(text);
  161. string substring = "";
  162. string TextString = text.ToString ();
  163. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  164. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  165. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  166. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  167. Assert.IsTrue (substring.IndexOf ("<Root>") != -1, "test#05");
  168. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  169. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  170. Assert.IsTrue (substring.IndexOf (" <Region>") != -1, "test#06");
  171. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  172. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  173. Assert.IsTrue (substring.IndexOf (" <RegionID>1</RegionID>") != -1, "test#07");
  174. for (int i = 0; i < 26; i++) {
  175. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  176. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  177. }
  178. substring = TextString.Substring (0, TextString.Length);
  179. Assert.IsTrue (substring.IndexOf ("</Root>") != -1, "test#08");
  180. }
  181. [Test]
  182. public void CreateElement2 ()
  183. {
  184. XmlDataDocument doc = new XmlDataDocument ();
  185. doc.DataSet.ReadXmlSchema ("Test/System.Xml/region.xsd");
  186. doc.Load ("Test/System.Xml/region.xml");
  187. XmlElement Element = doc.CreateElement ("ElementName");
  188. Assert.AreEqual ("", Element.Prefix, "test#01");
  189. Assert.AreEqual ("ElementName", Element.LocalName, "test#02");
  190. Assert.AreEqual ("", Element.NamespaceURI, "test#03");
  191. Element = doc.CreateElement ("prefix:ElementName");
  192. Assert.AreEqual ("prefix", Element.Prefix, "test#04");
  193. Assert.AreEqual ("ElementName", Element.LocalName, "test#05");
  194. Assert.AreEqual ("", Element.NamespaceURI, "test#06");
  195. }
  196. [Test]
  197. public void CreateElement3 ()
  198. {
  199. XmlDataDocument doc = new XmlDataDocument ();
  200. doc.DataSet.ReadXmlSchema ("Test/System.Xml/region.xsd");
  201. doc.Load ("Test/System.Xml/region.xml");
  202. XmlElement Element = doc.CreateElement ("ElementName", "namespace");
  203. Assert.AreEqual ("", Element.Prefix, "test#01");
  204. Assert.AreEqual ("ElementName", Element.LocalName, "test#02");
  205. Assert.AreEqual ("namespace", Element.NamespaceURI, "test#03");
  206. Element = doc.CreateElement ("prefix:ElementName", "namespace");
  207. Assert.AreEqual ("prefix", Element.Prefix, "test#04");
  208. Assert.AreEqual ("ElementName", Element.LocalName, "test#05");
  209. Assert.AreEqual ("namespace", Element.NamespaceURI, "test#06");
  210. }
  211. [Test]
  212. public void Navigator ()
  213. {
  214. XmlDataDocument doc = new XmlDataDocument ();
  215. doc.DataSet.ReadXmlSchema ("Test/System.Xml/region.xsd");
  216. doc.Load ("Test/System.Xml/region.xml");
  217. XPathNavigator Nav = doc.CreateNavigator ();
  218. Nav.MoveToRoot ();
  219. Nav.MoveToFirstChild ();
  220. Assert.AreEqual ("Root", Nav.Name.ToString (), "test#01");
  221. Assert.AreEqual ("", Nav.NamespaceURI.ToString (), "test#02");
  222. Assert.AreEqual ("False", Nav.IsEmptyElement.ToString (), "test#03");
  223. Assert.AreEqual ("Element", Nav.NodeType.ToString (), "test#04");
  224. Assert.AreEqual ("", Nav.Prefix, "test#05");
  225. Nav.MoveToFirstChild ();
  226. Nav.MoveToNext ();
  227. Assert.AreEqual ("Region", Nav.Name.ToString (), "test#06");
  228. Assert.AreEqual ("2Western", Nav.Value.Substring(0, Nav.Value.IndexOf ("\n") - 1), "test#07");
  229. Nav.MoveToFirstChild ();
  230. Assert.AreEqual ("2", Nav.Value, "test#08");
  231. Nav.MoveToRoot ();
  232. Assert.AreEqual ("Root", Nav.NodeType.ToString (), "test#09");
  233. }
  234. // Test constructor
  235. [Test]
  236. public void Test1()
  237. {
  238. //Create an XmlDataDocument.
  239. XmlDataDocument doc = new XmlDataDocument();
  240. //Load the schema file.
  241. doc.DataSet.ReadXmlSchema("Test/System.Xml/store.xsd");
  242. Console.WriteLine ("books: " + doc.DataSet.Tables.Count);
  243. //Load the XML data.
  244. doc.Load("Test/System.Xml/2books.xml");
  245. //Update the price on the first book using the DataSet methods.
  246. DataTable books = doc.DataSet.Tables["book"];
  247. Console.WriteLine ("books: " + doc.DataSet.Tables [0].TableName);
  248. books.Rows[0]["price"] = "12.95";
  249. //string outstring = "";
  250. TextWriter text = new StringWriter ();
  251. text.NewLine = "\n";
  252. doc.Save(text);
  253. //str.Read (bytes, 0, (int)str.Length);
  254. //String OutString = new String (bytes);
  255. string TextString = text.ToString ();
  256. string substring = TextString.Substring (0, TextString.IndexOf(EOL));
  257. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  258. Assert.IsTrue (substring.IndexOf ("<?xml version=\"1.0\" encoding=\"utf-16\"?>") == 0, "#A01");
  259. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  260. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  261. Assert.IsTrue (substring.IndexOf ("<!--sample XML fragment-->") != -1, "#A02");
  262. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  263. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  264. Assert.IsTrue (substring.IndexOf ("<bookstore>") != -1, "#A03");
  265. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  266. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  267. Assert.IsTrue (substring.IndexOf (" <book genre=\"novel\" ISBN=\"10-861003-324\">") != -1, "#A04");
  268. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  269. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  270. Assert.IsTrue (substring.IndexOf (" <title>The Handmaid's Tale</title>") != -1, "#A05");
  271. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  272. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  273. Assert.AreEqual (" <price>12.95</price>", substring, "#A06");
  274. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  275. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  276. Assert.IsTrue (substring.IndexOf (" </book>") != -1, "#A07");
  277. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  278. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  279. Assert.IsTrue (substring.IndexOf (" <book genre=\"novel\" ISBN=\"1-861001-57-5\">") != -1, "#A08");
  280. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  281. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  282. Assert.IsTrue (substring.IndexOf (" <title>Pride And Prejudice</title>") != -1, "#A09");
  283. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  284. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  285. Assert.IsTrue (substring.IndexOf (" <price>24.95</price>") != -1, "#A10");
  286. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  287. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  288. Assert.IsTrue (substring.IndexOf (" </book>") != -1, "#A11");
  289. substring = TextString;
  290. Assert.IsTrue (substring.IndexOf ("</bookstore>") != -1, "#A12");
  291. }
  292. // Test public fields
  293. [Test]
  294. public void Test2()
  295. {
  296. DataSet RegionDS = new DataSet ();
  297. DataRow RegionRow;
  298. RegionDS.ReadXmlSchema ("Test/System.Xml/region.xsd");
  299. Assert.AreEqual (1, RegionDS.Tables.Count, "Was read correct?");
  300. XmlDataDocument DataDoc = new XmlDataDocument (RegionDS);
  301. DataDoc.Load("Test/System.Xml/region.xml" );
  302. RegionRow = RegionDS.Tables[0].Rows[0];
  303. RegionDS.AcceptChanges ();
  304. RegionRow["RegionDescription"] = "Reeeeeaalllly Far East!";
  305. RegionDS.AcceptChanges ();
  306. TextWriter text = new StringWriter ();
  307. text.NewLine = "\n";
  308. DataDoc.Save (text);
  309. string TextString = text.ToString ();
  310. string substring = TextString.Substring (0, TextString.IndexOf(EOL));
  311. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  312. //Assert.AreEqual ("<?xml version=\"1.0\" encoding=\"utf-16\" standalone=\"yes\"?>", substring, "#B01");
  313. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  314. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  315. Assert.AreEqual ("<Root>", substring, "#B02");
  316. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  317. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  318. Assert.IsTrue (substring.IndexOf (" <Region>") != -1, "#B03");
  319. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  320. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  321. Assert.IsTrue (substring.IndexOf (" <RegionID>1</RegionID>") != -1, "#B04");
  322. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  323. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  324. Assert.AreEqual (" <RegionDescription>Reeeeeaalllly Far East!</RegionDescription>", substring, "#B05");
  325. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  326. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  327. Assert.IsTrue (substring.IndexOf (" </Region>") != -1, "#B06");
  328. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  329. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  330. Assert.IsTrue (substring.IndexOf (" <Region>") != -1, "#B07");
  331. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  332. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  333. Assert.IsTrue (substring.IndexOf (" <RegionID>2</RegionID>") != -1, "#B08");
  334. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  335. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  336. Assert.IsTrue (substring.IndexOf (" <RegionDescription>Western") != -1, "#B09");
  337. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  338. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  339. Assert.IsTrue (substring.IndexOf (" </RegionDescription>") != -1, "#B10");
  340. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  341. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  342. Assert.IsTrue (substring.IndexOf (" </Region>") != -1, "#B11");
  343. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  344. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  345. Assert.IsTrue (substring.IndexOf (" <Region>") != -1, "#B12");
  346. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  347. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  348. Assert.IsTrue (substring.IndexOf (" <RegionID>3</RegionID>") != -1, "#B13");
  349. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  350. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  351. Assert.IsTrue (substring.IndexOf (" <RegionDescription>Northern") != -1, "#B14");
  352. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  353. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  354. Assert.IsTrue (substring.IndexOf (" </RegionDescription>") != -1, "#B15");
  355. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  356. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  357. Assert.IsTrue (substring.IndexOf (" </Region>") != -1, "#B16");
  358. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  359. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  360. Assert.IsTrue (substring.IndexOf (" <Region>") != -1, "#B17");
  361. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  362. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  363. Assert.IsTrue (substring.IndexOf (" <RegionID>4</RegionID>") != -1, "#B18");
  364. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  365. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  366. Assert.IsTrue (substring.IndexOf (" <RegionDescription>Southern") != -1, "#B19");
  367. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  368. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  369. Assert.IsTrue (substring.IndexOf (" </RegionDescription>") != -1, "#B20");
  370. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  371. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  372. Assert.IsTrue (substring.IndexOf (" </Region>") != -1, "#B21");
  373. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  374. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  375. Assert.IsTrue (substring.IndexOf (" <MoreData>") != -1, "#B22");
  376. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  377. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  378. Assert.IsTrue (substring.IndexOf (" <Column1>12</Column1>") != -1, "#B23");
  379. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  380. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  381. Assert.IsTrue (substring.IndexOf (" <Column2>Hi There</Column2>") != -1, "#B24");
  382. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  383. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  384. Assert.IsTrue (substring.IndexOf (" </MoreData>") != -1, "#B25");
  385. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  386. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  387. Assert.IsTrue (substring.IndexOf (" <MoreData>") != -1, "#B26");
  388. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  389. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  390. Assert.IsTrue (substring.IndexOf (" <Column1>12</Column1>") != -1, "#B27");
  391. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  392. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  393. Assert.IsTrue (substring.IndexOf (" <Column2>Hi There</Column2>") != -1, "#B28");
  394. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  395. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  396. Assert.IsTrue (substring.IndexOf (" </MoreData>") != -1, "#B29");
  397. }
  398. [Test]
  399. public void Test3()
  400. {
  401. XmlDataDocument DataDoc = new XmlDataDocument ();
  402. DataSet dataset = DataDoc.DataSet;
  403. dataset.ReadXmlSchema ("Test/System.Xml/region.xsd");
  404. DataDoc.Load("Test/System.Xml/region.xml" );
  405. DataDoc.GetElementsByTagName ("Region") [0].RemoveAll ();
  406. TextWriter text = new StringWriter ();
  407. text.NewLine = "\n";
  408. dataset.WriteXml (text);
  409. //DataDoc.Save (text);
  410. string TextString = text.ToString ();
  411. string substring = TextString.Substring (0, TextString.IndexOf(EOL));
  412. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  413. Assert.IsTrue (substring.IndexOf ("<Root>") != -1, "#C01");
  414. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  415. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  416. Assert.AreEqual (" <Region />", substring, "#C02");
  417. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  418. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  419. Assert.AreEqual (" <Region>", substring, "#C03");
  420. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  421. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  422. Assert.AreEqual (" <RegionID>2</RegionID>", substring, "#C04");
  423. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  424. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  425. // Regardless of NewLine value, original xml contains CR
  426. // (but in the context of XML spec, it should be normalized)
  427. Assert.AreEqual (" <RegionDescription>Western\r", substring, "#C05");
  428. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  429. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  430. Assert.IsTrue (substring.IndexOf (" </RegionDescription>") != -1, "#C06");
  431. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  432. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  433. Assert.AreEqual (" </Region>", substring, "#C07");
  434. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  435. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  436. Assert.IsTrue (substring.IndexOf (" <Region>") != -1, "#C08");
  437. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  438. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  439. Assert.IsTrue (substring.IndexOf (" <RegionID>3</RegionID>") != -1, "#C09");
  440. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  441. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  442. // Regardless of NewLine value, original xml contains CR
  443. // (but in the context of XML spec, it should be normalized)
  444. Assert.AreEqual (" <RegionDescription>Northern\r", substring, "#C10");
  445. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  446. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  447. Assert.IsTrue (substring.IndexOf (" </RegionDescription>") != -1, "#C11");
  448. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  449. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  450. Assert.IsTrue (substring.IndexOf (" </Region>") != -1, "#C12");
  451. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  452. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  453. Assert.IsTrue (substring.IndexOf (" <Region>") != -1, "#C13");
  454. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  455. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  456. Assert.IsTrue (substring.IndexOf (" <RegionID>4</RegionID>") != -1, "#C14");
  457. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  458. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  459. Assert.IsTrue (substring.IndexOf (" <RegionDescription>Southern") != -1, "#C15");
  460. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  461. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  462. Assert.IsTrue (substring.IndexOf (" </RegionDescription>") != -1, "#C16");
  463. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  464. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  465. Assert.IsTrue (substring.IndexOf (" </Region>") != -1, "#C17");
  466. substring = TextString.Substring (0, TextString.Length);
  467. Assert.IsTrue (substring.IndexOf ("</Root>") != -1, "#C18");
  468. }
  469. [Test]
  470. public void Test4 ()
  471. {
  472. DataSet RegionDS = new DataSet ();
  473. RegionDS.ReadXmlSchema ("Test/System.Xml/region.xsd");
  474. XmlDataDocument DataDoc = new XmlDataDocument (RegionDS);
  475. DataDoc.Load ("Test/System.Xml/region.xml");
  476. Assert.IsTrue (RegionDS.EnforceConstraints);
  477. DataTable table = DataDoc.DataSet.Tables ["Region"];
  478. DataRow newRow = table.NewRow ();
  479. newRow [0] = "new row";
  480. newRow [1] = "new description";
  481. table.Rows.Add (newRow);
  482. TextWriter text = new StringWriter ();
  483. text.NewLine = "\n";
  484. DataDoc.Save (text);
  485. string TextString = text.ToString ();
  486. string substring = TextString.Substring (0, TextString.IndexOf(EOL));
  487. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  488. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  489. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  490. Assert.IsTrue (substring.IndexOf ("<Root>") != -1, "#F02");
  491. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  492. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  493. Assert.IsTrue (substring.IndexOf (" <Region>") != -1, "#F03");
  494. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  495. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  496. Assert.IsTrue (substring.IndexOf (" <RegionID>1</RegionID>") != -1, "#F04");
  497. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  498. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  499. // Regardless of NewLine value, original xml contains CR
  500. // (but in the context of XML spec, it should be normalized)
  501. Assert.AreEqual (" <RegionDescription>Eastern\r", substring, "#F05");
  502. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  503. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  504. Assert.AreEqual (" </RegionDescription>", substring, "#F06");
  505. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  506. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  507. Assert.IsTrue (substring.IndexOf (" </Region>") != -1, "#F07");
  508. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  509. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  510. Assert.IsTrue (substring.IndexOf (" <Region>") != -1, "#F08");
  511. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  512. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  513. Assert.IsTrue (substring.IndexOf (" <RegionID>2</RegionID>") != -1, "#F09");
  514. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  515. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  516. Assert.IsTrue (substring.IndexOf (" <RegionDescription>Western") != -1, "#F10");
  517. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  518. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  519. Assert.IsTrue (substring.IndexOf (" </RegionDescription>") != -1, "#F11");
  520. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  521. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  522. Assert.IsTrue (substring.IndexOf (" </Region>") != -1, "#F12");
  523. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  524. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  525. Assert.IsTrue (substring.IndexOf (" <Region>") != -1, "#F13");
  526. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  527. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  528. Assert.IsTrue (substring.IndexOf (" <RegionID>3</RegionID>") != -1, "#F14");
  529. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  530. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  531. Assert.IsTrue (substring.IndexOf (" <RegionDescription>Northern") != -1, "#F15");
  532. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  533. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  534. Assert.IsTrue (substring.IndexOf (" </RegionDescription>") != -1, "#F16");
  535. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  536. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  537. Assert.IsTrue (substring.IndexOf (" </Region>") != -1, "#F17");
  538. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  539. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  540. Assert.IsTrue (substring.IndexOf (" <Region>") != -1, "#F18");
  541. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  542. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  543. Assert.IsTrue (substring.IndexOf (" <RegionID>4</RegionID>") != -1, "#F19");
  544. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  545. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  546. // Regardless of NewLine value, original xml contains CR
  547. // (but in the context of XML spec, it should be normalized)
  548. Assert.AreEqual (" <RegionDescription>Southern\r", substring, "#F20");
  549. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  550. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  551. Assert.IsTrue (substring.IndexOf (" </RegionDescription>") != -1, "#F21");
  552. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  553. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  554. Assert.IsTrue (substring.IndexOf (" </Region>") != -1, "#F22");
  555. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  556. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  557. Assert.IsTrue (substring.IndexOf (" <MoreData>") != -1, "#F23");
  558. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  559. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  560. Assert.IsTrue (substring.IndexOf (" <Column1>12</Column1>") != -1, "#F24");
  561. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  562. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  563. Assert.IsTrue (substring.IndexOf (" <Column2>Hi There</Column2>") != -1, "#F25");
  564. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  565. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  566. Assert.IsTrue (substring.IndexOf (" </MoreData>") != -1, "#F26");
  567. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  568. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  569. Assert.IsTrue (substring.IndexOf (" <MoreData>") != -1, "#F27");
  570. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  571. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  572. Assert.IsTrue (substring.IndexOf (" <Column1>12</Column1>") != -1, "#F28");
  573. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  574. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  575. Assert.IsTrue (substring.IndexOf (" <Column2>Hi There</Column2>") != -1, "#F29");
  576. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  577. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  578. Assert.IsTrue (substring.IndexOf (" </MoreData>") != -1, "#F30");
  579. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  580. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  581. Assert.IsTrue (substring.IndexOf (" <Region>") != -1, "#F31");
  582. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  583. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  584. Assert.IsTrue (substring.IndexOf (" <RegionID>new row</RegionID>") != -1, "#F32");
  585. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  586. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  587. Assert.IsTrue (substring.IndexOf (" <RegionDescription>new description</RegionDescription>") != -1, "#F33");
  588. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  589. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  590. Assert.IsTrue (substring.IndexOf (" </Region>") != -1, "#F34");
  591. substring = TextString.Substring (0, TextString.Length);
  592. Assert.IsTrue (substring.IndexOf ("</Root>") != -1, "#F35");
  593. }
  594. [Test]
  595. public void Test5 ()
  596. {
  597. DataSet RegionDS = new DataSet ();
  598. RegionDS.ReadXmlSchema ("Test/System.Xml/region.xsd");
  599. XmlDataDocument DataDoc = new XmlDataDocument (RegionDS);
  600. DataDoc.Load("Test/System.Xml/region.xml" );
  601. try {
  602. DataDoc.DocumentElement.AppendChild (DataDoc.DocumentElement.FirstChild);
  603. Assert.Fail ("#G01");
  604. } catch (Exception e) {
  605. Assert.AreEqual (typeof (InvalidOperationException), e.GetType (), "#G02");
  606. Assert.AreEqual ("Please set DataSet.EnforceConstraints == false before trying to edit " +
  607. "XmlDataDocument using XML operations.", e.Message, "#G03");
  608. DataDoc.DataSet.EnforceConstraints = false;
  609. }
  610. XmlElement newNode = DataDoc.CreateElement ("Region");
  611. XmlElement newChildNode = DataDoc.CreateElement ("RegionID");
  612. newChildNode.InnerText = "64";
  613. XmlElement newChildNode2 = DataDoc.CreateElement ("RegionDescription");
  614. newChildNode2.InnerText = "test node";
  615. newNode.AppendChild (newChildNode);
  616. newNode.AppendChild (newChildNode2);
  617. DataDoc.DocumentElement.AppendChild (newNode);
  618. TextWriter text = new StringWriter ();
  619. //DataDoc.Save (text);
  620. DataDoc.DataSet.WriteXml(text);
  621. string TextString = text.ToString ();
  622. string substring = TextString.Substring (0, TextString.IndexOf("\n"));
  623. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  624. for (int i = 0; i < 21; i++) {
  625. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  626. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  627. }
  628. Assert.IsTrue (substring.IndexOf (" <Region>") != -1, "#G04");
  629. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  630. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  631. Assert.IsTrue (substring.IndexOf (" <RegionID>64</RegionID>") != -1, "#G05");
  632. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  633. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  634. Assert.IsTrue (substring.IndexOf (" <RegionDescription>test node</RegionDescription>") != -1, "#G06");
  635. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  636. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  637. Assert.IsTrue (substring.IndexOf (" </Region>") != -1, "#G07");
  638. substring = TextString.Substring (0, TextString.Length);
  639. Assert.IsTrue (substring.IndexOf ("</Root>") != -1, "#G08");
  640. }
  641. [Test]
  642. public void Test6 ()
  643. {
  644. DataSet RegionDS = new DataSet ();
  645. RegionDS.ReadXmlSchema ("Test/System.Xml/region.xsd");
  646. XmlDataDocument DataDoc = new XmlDataDocument (RegionDS);
  647. DataDoc.Load("Test/System.Xml/region.xml" );
  648. DataDoc.DataSet.EnforceConstraints = false;
  649. XmlElement newNode = DataDoc.CreateElement ("Region");
  650. XmlElement newChildNode = DataDoc.CreateElement ("RegionID");
  651. newChildNode.InnerText = "64";
  652. XmlElement newChildNode2 = null;
  653. try {
  654. newChildNode2 = DataDoc.CreateElement ("something else");
  655. Assert.Fail ("#H01");
  656. } catch (XmlException) {
  657. }
  658. newChildNode2 = DataDoc.CreateElement ("something_else");
  659. newChildNode2.InnerText = "test node";
  660. newNode.AppendChild (newChildNode);
  661. newNode.AppendChild (newChildNode2);
  662. DataDoc.DocumentElement.AppendChild (newNode);
  663. TextWriter text = new StringWriter ();
  664. //DataDoc.Save (text);
  665. DataDoc.DataSet.WriteXml(text);
  666. string TextString = text.ToString ();
  667. string substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
  668. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  669. for (int i = 0; i < 21; i++) {
  670. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  671. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  672. }
  673. Assert.IsTrue (substring.IndexOf (" <Region>") != -1, "#H03");
  674. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  675. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  676. Assert.IsTrue (substring.IndexOf (" <RegionID>64</RegionID>") != -1, "#H04");
  677. substring = TextString.Substring (0, TextString.IndexOf("\n") );
  678. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  679. Assert.IsTrue (substring.IndexOf (" </Region>") != -1, "#H05");
  680. substring = TextString.Substring (0, TextString.Length);
  681. Assert.IsTrue (substring.IndexOf ("</Root>") != -1, "#H06");
  682. }
  683. [Test]
  684. public void GetElementFromRow ()
  685. {
  686. XmlDataDocument doc = new XmlDataDocument ();
  687. doc.DataSet.ReadXmlSchema ("Test/System.Xml/region.xsd");
  688. doc.Load ("Test/System.Xml/region.xml");
  689. DataTable table = doc.DataSet.Tables ["Region"];
  690. XmlElement element = doc.GetElementFromRow (table.Rows [2]);
  691. Assert.AreEqual ("Region", element.Name, "#D01");
  692. Assert.AreEqual ("3", element ["RegionID"].InnerText, "#D02");
  693. try {
  694. element = doc.GetElementFromRow (table.Rows [4]);
  695. Assert.Fail ("#D03");
  696. } catch (Exception e) {
  697. Assert.AreEqual (typeof (IndexOutOfRangeException), e.GetType (), "#D04");
  698. Assert.AreEqual ("There is no row at position 4.", e.Message, "#D05");
  699. }
  700. }
  701. [Test]
  702. public void GetRowFromElement ()
  703. {
  704. XmlDataDocument doc = new XmlDataDocument ();
  705. doc.DataSet.ReadXmlSchema ("Test/System.Xml/region.xsd");
  706. doc.Load ("Test/System.Xml/region.xml");
  707. XmlElement root = doc.DocumentElement;
  708. DataRow row = doc.GetRowFromElement((XmlElement)root.FirstChild);
  709. Assert.AreEqual ("1", row [0], "#E01");
  710. row = doc.GetRowFromElement((XmlElement)root.ChildNodes [2]);
  711. Assert.AreEqual ("3", row [0], "#E02");
  712. }
  713. }
  714. }