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. AssertEquals (false, doc.DataSet.EnforceConstraints);
  57. XmlElement el = doc.CreateElement ("TEST");
  58. AssertDataSet ("#2", doc.DataSet, "NewDataSet", 0, 0);
  59. AssertNull (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. AssertEquals (true, 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. AssertEquals ("#I01", 0, doc2.ChildNodes.Count);
  98. AssertEquals ("#I02", "<?xml version=\"1.0\" encoding=\"utf-16\"?>", doc2.DataSet.GetXmlSchema ().Substring (0, 39));
  99. doc2 = (XmlDataDocument)doc.CloneNode (true);
  100. AssertEquals ("#I03", 2, doc2.ChildNodes.Count);
  101. AssertEquals ("#I04", "<?xml version=\"1.0\" encoding=\"utf-16\"?>", doc2.DataSet.GetXmlSchema ().Substring (0, 39));
  102. doc.DataSet.Tables [0].Rows [0][0] = "64";
  103. AssertEquals ("#I05", "1", doc2.DataSet.Tables [0].Rows [0][0].ToString ());
  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. AssertEquals ("test#01", "64", doc.DataSet.Tables [0].Rows [1] [0]);
  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. AssertNotNull (Element);
  119. try {
  120. Element.FirstChild.InnerText = "64";
  121. Fail ("test#02");
  122. } catch (InvalidOperationException) {
  123. }
  124. AssertEquals ("test#05", "2", doc.DataSet.Tables [0].Rows [1] [0]);
  125. Set.EnforceConstraints = false;
  126. Element.FirstChild.InnerText = "64";
  127. AssertEquals ("test#06", "64", doc.DataSet.Tables [0].Rows [1] [0]);
  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. AssertEquals ("#1", xml, s);
  141. AssertEquals ("#2", xml, Doc.InnerXml);
  142. AssertEquals ("test#01", "EndOfFile", Reader.ReadState.ToString ());
  143. DataSet Set = Doc.DataSet;
  144. AssertEquals ("test#01.5", "2", Set.Tables [0].Rows [1] [0]);
  145. Set.Tables [0].Rows [1] [0] = "64";
  146. AssertEquals ("test#02", "64", Doc.FirstChild.FirstChild.NextSibling.FirstChild.InnerText);
  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. AssertEquals ("test#01", "prefix", Element.Prefix);
  156. AssertEquals ("test#02", "localname", Element.LocalName);
  157. AssertEquals ("test#03", "namespaceURI", Element.NamespaceURI);
  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 ("test#05", substring.IndexOf ("<Root>") != -1);
  168. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  169. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  170. Assert ("test#06", substring.IndexOf (" <Region>") != -1);
  171. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  172. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  173. Assert ("test#07", substring.IndexOf (" <RegionID>1</RegionID>") != -1);
  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 ("test#07", substring.IndexOf ("</Root>") != -1);
  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. AssertEquals ("test#01", "", Element.Prefix);
  189. AssertEquals ("test#02", "ElementName", Element.LocalName);
  190. AssertEquals ("test#03", "", Element.NamespaceURI);
  191. Element = doc.CreateElement ("prefix:ElementName");
  192. AssertEquals ("test#04", "prefix", Element.Prefix);
  193. AssertEquals ("test#05", "ElementName", Element.LocalName);
  194. AssertEquals ("test#06", "", Element.NamespaceURI);
  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. AssertEquals ("test#01", "", Element.Prefix);
  204. AssertEquals ("test#02", "ElementName", Element.LocalName);
  205. AssertEquals ("test#03", "namespace", Element.NamespaceURI);
  206. Element = doc.CreateElement ("prefix:ElementName", "namespace");
  207. AssertEquals ("test#04", "prefix", Element.Prefix);
  208. AssertEquals ("test#05", "ElementName", Element.LocalName);
  209. AssertEquals ("test#06", "namespace", Element.NamespaceURI);
  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. AssertEquals ("test#01", "Root", Nav.Name.ToString ());
  221. AssertEquals ("test#02", "", Nav.NamespaceURI.ToString ());
  222. AssertEquals ("test#03", "False", Nav.IsEmptyElement.ToString ());
  223. AssertEquals ("test#04", "Element", Nav.NodeType.ToString ());
  224. AssertEquals ("test#05", "", Nav.Prefix);
  225. Nav.MoveToFirstChild ();
  226. Nav.MoveToNext ();
  227. AssertEquals ("test#06", "Region", Nav.Name.ToString ());
  228. AssertEquals ("test#07", "2Western", Nav.Value.Substring(0, Nav.Value.IndexOf ("\n") - 1));
  229. Nav.MoveToFirstChild ();
  230. AssertEquals ("test#08", "2", Nav.Value);
  231. Nav.MoveToRoot ();
  232. AssertEquals ("test#09", "Root", Nav.NodeType.ToString ());
  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 ("#A01", substring.IndexOf ("<?xml version=\"1.0\" encoding=\"utf-16\"?>") == 0);
  259. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  260. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  261. Assert ("#A02", substring.IndexOf ("<!--sample XML fragment-->") != -1);
  262. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  263. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  264. Assert ("#A03", substring.IndexOf ("<bookstore>") != -1);
  265. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  266. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  267. Assert ("#A04", substring.IndexOf (" <book genre=\"novel\" ISBN=\"10-861003-324\">") != -1);
  268. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  269. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  270. Assert ("#A05", substring.IndexOf (" <title>The Handmaid's Tale</title>") != -1);
  271. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  272. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  273. AssertEquals ("#A06", " <price>12.95</price>", substring);
  274. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  275. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  276. Assert ("#A07", substring.IndexOf (" </book>") != -1);
  277. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  278. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  279. Assert ("#A08", substring.IndexOf (" <book genre=\"novel\" ISBN=\"1-861001-57-5\">") != -1);
  280. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  281. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  282. Assert ("#A09", substring.IndexOf (" <title>Pride And Prejudice</title>") != -1);
  283. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  284. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  285. Assert ("#A10", substring.IndexOf (" <price>24.95</price>") != -1);
  286. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  287. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  288. Assert ("#A11", substring.IndexOf (" </book>") != -1);
  289. substring = TextString;
  290. Assert ("#A12", substring.IndexOf ("</bookstore>") != -1);
  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. AssertEquals ("Was read correct?", 1, RegionDS.Tables.Count);
  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. //AssertEquals ("#B01", "<?xml version=\"1.0\" encoding=\"utf-16\" standalone=\"yes\"?>", substring);
  313. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  314. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  315. AssertEquals ("#B02", "<Root>", substring);
  316. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  317. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  318. Assert ("#B03", substring.IndexOf (" <Region>") != -1);
  319. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  320. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  321. Assert ("#B04", substring.IndexOf (" <RegionID>1</RegionID>") != -1);
  322. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  323. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  324. AssertEquals ("#B05", " <RegionDescription>Reeeeeaalllly Far East!</RegionDescription>", substring);
  325. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  326. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  327. Assert ("#B06", substring.IndexOf (" </Region>") != -1);
  328. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  329. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  330. Assert ("#B07", substring.IndexOf (" <Region>") != -1);
  331. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  332. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  333. Assert ("#B08", substring.IndexOf (" <RegionID>2</RegionID>") != -1);
  334. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  335. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  336. Assert ("#B09", substring.IndexOf (" <RegionDescription>Western") != -1);
  337. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  338. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  339. Assert ("#B10", substring.IndexOf (" </RegionDescription>") != -1);
  340. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  341. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  342. Assert ("#B11", substring.IndexOf (" </Region>") != -1);
  343. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  344. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  345. Assert ("#B12", substring.IndexOf (" <Region>") != -1);
  346. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  347. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  348. Assert ("#B13", substring.IndexOf (" <RegionID>3</RegionID>") != -1);
  349. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  350. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  351. Assert ("#B14", substring.IndexOf (" <RegionDescription>Northern") != -1);
  352. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  353. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  354. Assert ("#B15", substring.IndexOf (" </RegionDescription>") != -1);
  355. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  356. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  357. Assert ("#B16", substring.IndexOf (" </Region>") != -1);
  358. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  359. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  360. Assert ("#B17", substring.IndexOf (" <Region>") != -1);
  361. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  362. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  363. Assert ("#B18", substring.IndexOf (" <RegionID>4</RegionID>") != -1);
  364. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  365. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  366. Assert ("#B19", substring.IndexOf (" <RegionDescription>Southern") != -1);
  367. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  368. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  369. Assert ("#B20", substring.IndexOf (" </RegionDescription>") != -1);
  370. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  371. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  372. Assert ("#B21", substring.IndexOf (" </Region>") != -1);
  373. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  374. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  375. Assert ("#B22", substring.IndexOf (" <MoreData>") != -1);
  376. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  377. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  378. Assert ("#B23", substring.IndexOf (" <Column1>12</Column1>") != -1);
  379. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  380. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  381. Assert ("#B24", substring.IndexOf (" <Column2>Hi There</Column2>") != -1);
  382. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  383. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  384. Assert ("#B25", substring.IndexOf (" </MoreData>") != -1);
  385. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  386. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  387. Assert ("#B26", substring.IndexOf (" <MoreData>") != -1);
  388. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  389. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  390. Assert ("#B27", substring.IndexOf (" <Column1>12</Column1>") != -1);
  391. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  392. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  393. Assert ("#B28", substring.IndexOf (" <Column2>Hi There</Column2>") != -1);
  394. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  395. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  396. Assert ("#B29", substring.IndexOf (" </MoreData>") != -1);
  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 ("#C01", substring.IndexOf ("<Root>") != -1);
  414. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  415. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  416. AssertEquals ("#C02", " <Region />", substring);
  417. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  418. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  419. AssertEquals ("#C03", " <Region>", substring);
  420. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  421. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  422. AssertEquals ("#C04", " <RegionID>2</RegionID>", substring);
  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. AssertEquals ("#C05", " <RegionDescription>Western\r", substring);
  428. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  429. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  430. Assert ("#C06", substring.IndexOf (" </RegionDescription>") != -1);
  431. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  432. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  433. AssertEquals ("#C07", " </Region>", substring);
  434. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  435. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  436. Assert ("#C08", substring.IndexOf (" <Region>") != -1);
  437. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  438. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  439. Assert ("#C09", substring.IndexOf (" <RegionID>3</RegionID>") != -1);
  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. AssertEquals ("#C10", " <RegionDescription>Northern\r", substring);
  445. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  446. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  447. Assert ("#C11", substring.IndexOf (" </RegionDescription>") != -1);
  448. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  449. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  450. Assert ("#C12", substring.IndexOf (" </Region>") != -1);
  451. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  452. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  453. Assert ("#C13", substring.IndexOf (" <Region>") != -1);
  454. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  455. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  456. Assert ("#C14", substring.IndexOf (" <RegionID>4</RegionID>") != -1);
  457. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  458. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  459. Assert ("#C15", substring.IndexOf (" <RegionDescription>Southern") != -1);
  460. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  461. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  462. Assert ("#C16", substring.IndexOf (" </RegionDescription>") != -1);
  463. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  464. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  465. Assert ("#C17", substring.IndexOf (" </Region>") != -1);
  466. substring = TextString.Substring (0, TextString.Length);
  467. Assert ("#C18", substring.IndexOf ("</Root>") != -1);
  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. AssertEquals (true, 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 ("#F02", substring.IndexOf ("<Root>") != -1);
  491. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  492. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  493. Assert ("#F03", substring.IndexOf (" <Region>") != -1);
  494. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  495. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  496. Assert ("#F04", substring.IndexOf (" <RegionID>1</RegionID>") != -1);
  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. AssertEquals ("#F05", " <RegionDescription>Eastern\r", substring);
  502. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  503. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  504. AssertEquals ("#F06", " </RegionDescription>", substring);
  505. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  506. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  507. Assert ("#F07", substring.IndexOf (" </Region>") != -1);
  508. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  509. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  510. Assert ("#F08", substring.IndexOf (" <Region>") != -1);
  511. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  512. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  513. Assert ("#F09", substring.IndexOf (" <RegionID>2</RegionID>") != -1);
  514. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  515. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  516. Assert ("#F10", substring.IndexOf (" <RegionDescription>Western") != -1);
  517. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  518. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  519. Assert ("#F11", substring.IndexOf (" </RegionDescription>") != -1);
  520. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  521. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  522. Assert ("#F12", substring.IndexOf (" </Region>") != -1);
  523. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  524. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  525. Assert ("#F13", substring.IndexOf (" <Region>") != -1);
  526. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  527. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  528. Assert ("#F14", substring.IndexOf (" <RegionID>3</RegionID>") != -1);
  529. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  530. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  531. Assert ("#F15", substring.IndexOf (" <RegionDescription>Northern") != -1);
  532. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  533. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  534. Assert ("#F16", substring.IndexOf (" </RegionDescription>") != -1);
  535. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  536. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  537. Assert ("#F17", substring.IndexOf (" </Region>") != -1);
  538. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  539. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  540. Assert ("#F18", substring.IndexOf (" <Region>") != -1);
  541. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  542. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  543. Assert ("#F19", substring.IndexOf (" <RegionID>4</RegionID>") != -1);
  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. AssertEquals ("#F20", " <RegionDescription>Southern\r", substring);
  549. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  550. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  551. Assert ("#F21", substring.IndexOf (" </RegionDescription>") != -1);
  552. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  553. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  554. Assert ("#F22", substring.IndexOf (" </Region>") != -1);
  555. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  556. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  557. Assert ("#F23", substring.IndexOf (" <MoreData>") != -1);
  558. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  559. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  560. Assert ("#F24", substring.IndexOf (" <Column1>12</Column1>") != -1);
  561. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  562. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  563. Assert ("#F25", substring.IndexOf (" <Column2>Hi There</Column2>") != -1);
  564. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  565. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  566. Assert ("#F26", substring.IndexOf (" </MoreData>") != -1);
  567. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  568. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  569. Assert ("#F27", substring.IndexOf (" <MoreData>") != -1);
  570. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  571. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  572. Assert ("#F28", substring.IndexOf (" <Column1>12</Column1>") != -1);
  573. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  574. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  575. Assert ("#F29", substring.IndexOf (" <Column2>Hi There</Column2>") != -1);
  576. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  577. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  578. Assert ("#F30", substring.IndexOf (" </MoreData>") != -1);
  579. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  580. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  581. Assert ("#F31", substring.IndexOf (" <Region>") != -1);
  582. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  583. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  584. Assert ("#F32", substring.IndexOf (" <RegionID>new row</RegionID>") != -1);
  585. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  586. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  587. Assert ("#F33", substring.IndexOf (" <RegionDescription>new description</RegionDescription>") != -1);
  588. substring = TextString.Substring (0, TextString.IndexOf(EOL));
  589. TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
  590. Assert ("#F34", substring.IndexOf (" </Region>") != -1);
  591. substring = TextString.Substring (0, TextString.Length);
  592. Assert ("#F35", substring.IndexOf ("</Root>") != -1);
  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. Fail ("#G01");
  604. } catch (Exception e) {
  605. AssertEquals ("#G02", typeof (InvalidOperationException), e.GetType ());
  606. AssertEquals ("#G03", "Please set DataSet.EnforceConstraints == false before trying to edit " +
  607. "XmlDataDocument using XML operations.", e.Message);
  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 ("#G04", substring.IndexOf (" <Region>") != -1);
  629. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  630. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  631. Assert ("#G05", substring.IndexOf (" <RegionID>64</RegionID>") != -1);
  632. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  633. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  634. Assert ("#G06", substring.IndexOf (" <RegionDescription>test node</RegionDescription>") != -1);
  635. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  636. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  637. Assert ("#G07", substring.IndexOf (" </Region>") != -1);
  638. substring = TextString.Substring (0, TextString.Length);
  639. Assert ("#G08", substring.IndexOf ("</Root>") != -1);
  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. 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 ("#H03", substring.IndexOf (" <Region>") != -1);
  674. substring = TextString.Substring (0, TextString.IndexOf("\n"));
  675. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  676. Assert ("#H04", substring.IndexOf (" <RegionID>64</RegionID>") != -1);
  677. substring = TextString.Substring (0, TextString.IndexOf("\n") );
  678. TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
  679. Assert ("#H05", substring.IndexOf (" </Region>") != -1);
  680. substring = TextString.Substring (0, TextString.Length);
  681. Assert ("#H06", substring.IndexOf ("</Root>") != -1);
  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. AssertEquals ("#D01", "Region", element.Name);
  692. AssertEquals ("#D02", "3", element ["RegionID"].InnerText);
  693. try {
  694. element = doc.GetElementFromRow (table.Rows [4]);
  695. Fail ("#D03");
  696. } catch (Exception e) {
  697. AssertEquals ("#D04", typeof (IndexOutOfRangeException), e.GetType ());
  698. AssertEquals ("#D05", "There is no row at position 4.", e.Message);
  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. AssertEquals ("#E01", "1", row [0]);
  710. row = doc.GetRowFromElement((XmlElement)root.ChildNodes [2]);
  711. AssertEquals ("#E02", "3", row [0]);
  712. }
  713. }
  714. }