XmlDataDocumentTest.cs 45 KB

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