XmlDataDocumentTest.cs 41 KB

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