2 // DataSetReadXmlTest.cs
\r
5 // Atsushi Enomoto <atsushi@ximian.com>
\r
9 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
11 // Permission is hereby granted, free of charge, to any person obtaining
12 // a copy of this software and associated documentation files (the
13 // "Software"), to deal in the Software without restriction, including
14 // without limitation the rights to use, copy, modify, merge, publish,
15 // distribute, sublicense, and/or sell copies of the Software, and to
16 // permit persons to whom the Software is furnished to do so, subject to
17 // the following conditions:
19 // The above copyright notice and this permission notice shall be
20 // included in all copies or substantial portions of the Software.
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
37 using NUnit.Framework;
\r
39 namespace MonoTests.System.Data
\r
42 public class DataSetReadXmlTest : DataSetAssertion
\r
45 const string xml1 = "";
\r
46 const string xml2 = "<root/>";
\r
47 const string xml3 = "<root></root>";
\r
48 const string xml4 = "<root> </root>";
\r
49 const string xml5 = "<root>test</root>";
\r
50 const string xml6 = "<root><test>1</test></root>";
\r
51 const string xml7 = "<root><test>1</test><test2>a</test2></root>";
\r
52 const string xml8 = "<dataset><table><col1>foo</col1><col2>bar</col2></table></dataset>";
\r
53 const string xml29 = @"<PersonalSite><License Name='Sum Wang' Email='sumwang@somewhere.net' Mode='Trial' StartDate='01/01/2004' Serial='aaa' /></PersonalSite>";
\r
55 const string diff1 = @"<diffgr:diffgram xmlns:msdata='urn:schemas-microsoft-com:xml-msdata' xmlns:diffgr='urn:schemas-microsoft-com:xml-diffgram-v1'>
\r
57 <Table1 diffgr:id='Table11' msdata:rowOrder='0' diffgr:hasChanges='inserted'>
\r
58 <Column1_1>ppp</Column1_1>
\r
59 <Column1_2>www</Column1_2>
\r
60 <Column1_3>xxx</Column1_3>
\r
63 </diffgr:diffgram>";
\r
64 const string diff2 = diff1 + xml8;
\r
66 const string schema1 = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
\r
67 <xs:element name='Root'>
\r
70 <xs:element name='Child' type='xs:string' />
\r
75 const string schema2 = schema1 + xml8;
\r
78 public void ReadSimpleAuto ()
\r
83 ds = new DataSet ();
\r
84 AssertReadXml (ds, "EmptyString", xml1,
\r
85 XmlReadMode.Auto, XmlReadMode.Auto,
\r
89 ds = new DataSet ();
\r
90 AssertReadXml (ds, "EmptyElement", xml2,
\r
91 XmlReadMode.Auto, XmlReadMode.InferSchema,
\r
95 ds = new DataSet ();
\r
96 AssertReadXml (ds, "StartEndTag", xml3,
\r
97 XmlReadMode.Auto, XmlReadMode.InferSchema,
\r
100 // whitespace in simple element
\r
101 ds = new DataSet ();
\r
102 AssertReadXml (ds, "Whitespace", xml4,
\r
103 XmlReadMode.Auto, XmlReadMode.InferSchema,
\r
106 // text in simple element
\r
107 ds = new DataSet ();
\r
108 AssertReadXml (ds, "SingleText", xml5,
\r
109 XmlReadMode.Auto, XmlReadMode.InferSchema,
\r
112 // simple table pattern:
\r
113 // root becomes a table and test becomes a column.
\r
114 ds = new DataSet ();
\r
115 AssertReadXml (ds, "SimpleTable", xml6,
\r
116 XmlReadMode.Auto, XmlReadMode.InferSchema,
\r
118 AssertDataTable ("xml6", ds.Tables [0], "root", 1, 1, 0, 0, 0, 0);
\r
120 // simple table with 2 columns:
\r
121 ds = new DataSet ();
\r
122 AssertReadXml (ds, "SimpleTable2", xml7,
\r
123 XmlReadMode.Auto, XmlReadMode.InferSchema,
\r
125 AssertDataTable ("xml7", ds.Tables [0], "root", 2, 1, 0, 0, 0, 0);
\r
127 // simple dataset with 1 table:
\r
128 ds = new DataSet ();
\r
129 AssertReadXml (ds, "SimpleDataSet", xml8,
\r
130 XmlReadMode.Auto, XmlReadMode.InferSchema,
\r
132 AssertDataTable ("xml8", ds.Tables [0], "table", 2, 1, 0, 0, 0, 0);
\r
136 public void ReadSimpleDiffgram ()
\r
141 ds = new DataSet ();
\r
142 AssertReadXml (ds, "EmptyString", xml1,
\r
143 XmlReadMode.DiffGram, XmlReadMode.DiffGram,
\r
147 ds = new DataSet ();
\r
148 AssertReadXml (ds, "EmptyElement", xml2,
\r
149 XmlReadMode.DiffGram, XmlReadMode.DiffGram,
\r
153 ds = new DataSet ();
\r
154 AssertReadXml (ds, "StartEndTag", xml3,
\r
155 XmlReadMode.DiffGram, XmlReadMode.DiffGram,
\r
158 // whitespace in simple element
\r
159 ds = new DataSet ();
\r
160 AssertReadXml (ds, "Whitespace", xml4,
\r
161 XmlReadMode.DiffGram, XmlReadMode.DiffGram,
\r
164 // text in simple element
\r
165 ds = new DataSet ();
\r
166 AssertReadXml (ds, "SingleText", xml5,
\r
167 XmlReadMode.DiffGram, XmlReadMode.DiffGram,
\r
170 // simple table pattern:
\r
171 ds = new DataSet ();
\r
172 AssertReadXml (ds, "SimpleTable", xml6,
\r
173 XmlReadMode.DiffGram, XmlReadMode.DiffGram,
\r
176 // simple table with 2 columns:
\r
177 ds = new DataSet ();
\r
178 AssertReadXml (ds, "SimpleTable2", xml7,
\r
179 XmlReadMode.DiffGram, XmlReadMode.DiffGram,
\r
182 // simple dataset with 1 table:
\r
183 ds = new DataSet ();
\r
184 AssertReadXml (ds, "SimpleDataSet", xml8,
\r
185 XmlReadMode.DiffGram, XmlReadMode.DiffGram,
\r
190 public void ReadSimpleFragment ()
\r
195 ds = new DataSet ();
\r
196 AssertReadXml (ds, "EmptyString", xml1,
\r
197 XmlReadMode.Fragment, XmlReadMode.Fragment,
\r
201 ds = new DataSet ();
\r
202 AssertReadXml (ds, "EmptyElement", xml2,
\r
203 XmlReadMode.Fragment, XmlReadMode.Fragment,
\r
207 ds = new DataSet ();
\r
208 AssertReadXml (ds, "StartEndTag", xml3,
\r
209 XmlReadMode.Fragment, XmlReadMode.Fragment,
\r
212 // whitespace in simple element
\r
213 ds = new DataSet ();
\r
214 AssertReadXml (ds, "Whitespace", xml4,
\r
215 XmlReadMode.Fragment, XmlReadMode.Fragment,
\r
218 // text in simple element
\r
219 ds = new DataSet ();
\r
220 AssertReadXml (ds, "SingleText", xml5,
\r
221 XmlReadMode.Fragment, XmlReadMode.Fragment,
\r
224 // simple table pattern:
\r
225 ds = new DataSet ();
\r
226 AssertReadXml (ds, "SimpleTable", xml6,
\r
227 XmlReadMode.Fragment, XmlReadMode.Fragment,
\r
230 // simple table with 2 columns:
\r
231 ds = new DataSet ();
\r
232 AssertReadXml (ds, "SimpleTable2", xml7,
\r
233 XmlReadMode.Fragment, XmlReadMode.Fragment,
\r
236 // simple dataset with 1 table:
\r
237 ds = new DataSet ();
\r
238 AssertReadXml (ds, "SimpleDataSet", xml8,
\r
239 XmlReadMode.Fragment, XmlReadMode.Fragment,
\r
244 public void ReadSimpleIgnoreSchema ()
\r
249 ds = new DataSet ();
\r
250 AssertReadXml (ds, "EmptyString", xml1,
\r
251 XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
\r
255 ds = new DataSet ();
\r
256 AssertReadXml (ds, "EmptyElement", xml2,
\r
257 XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
\r
261 ds = new DataSet ();
\r
262 AssertReadXml (ds, "StartEndTag", xml3,
\r
263 XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
\r
266 // whitespace in simple element
\r
267 ds = new DataSet ();
\r
268 AssertReadXml (ds, "Whitespace", xml4,
\r
269 XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
\r
272 // text in simple element
\r
273 ds = new DataSet ();
\r
274 AssertReadXml (ds, "SingleText", xml5,
\r
275 XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
\r
278 // simple table pattern:
\r
279 ds = new DataSet ();
\r
280 AssertReadXml (ds, "SimpleTable", xml6,
\r
281 XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
\r
284 // simple table with 2 columns:
\r
285 ds = new DataSet ();
\r
286 AssertReadXml (ds, "SimpleTable2", xml7,
\r
287 XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
\r
290 // simple dataset with 1 table:
\r
291 ds = new DataSet ();
\r
292 AssertReadXml (ds, "SimpleDataSet", xml8,
\r
293 XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
\r
298 public void ReadSimpleInferSchema ()
\r
303 ds = new DataSet ();
\r
304 AssertReadXml (ds, "EmptyString", xml1,
\r
305 XmlReadMode.InferSchema, XmlReadMode.InferSchema,
\r
309 ds = new DataSet ();
\r
310 AssertReadXml (ds, "EmptyElement", xml2,
\r
311 XmlReadMode.InferSchema, XmlReadMode.InferSchema,
\r
315 ds = new DataSet ();
\r
316 AssertReadXml (ds, "StartEndTag", xml3,
\r
317 XmlReadMode.InferSchema, XmlReadMode.InferSchema,
\r
320 // whitespace in simple element
\r
321 ds = new DataSet ();
\r
322 AssertReadXml (ds, "Whitespace", xml4,
\r
323 XmlReadMode.InferSchema, XmlReadMode.InferSchema,
\r
326 // text in simple element
\r
327 ds = new DataSet ();
\r
328 AssertReadXml (ds, "SingleText", xml5,
\r
329 XmlReadMode.InferSchema, XmlReadMode.InferSchema,
\r
332 // simple table pattern:
\r
333 // root becomes a table and test becomes a column.
\r
334 ds = new DataSet ();
\r
335 AssertReadXml (ds, "SimpleTable", xml6,
\r
336 XmlReadMode.InferSchema, XmlReadMode.InferSchema,
\r
338 AssertDataTable ("xml6", ds.Tables [0], "root", 1, 1, 0, 0, 0, 0);
\r
340 // simple table with 2 columns:
\r
341 ds = new DataSet ();
\r
342 AssertReadXml (ds, "SimpleTable2", xml7,
\r
343 XmlReadMode.InferSchema, XmlReadMode.InferSchema,
\r
345 AssertDataTable ("xml7", ds.Tables [0], "root", 2, 1, 0, 0, 0, 0);
\r
347 // simple dataset with 1 table:
\r
348 ds = new DataSet ();
\r
349 AssertReadXml (ds, "SimpleDataSet", xml8,
\r
350 XmlReadMode.InferSchema, XmlReadMode.InferSchema,
\r
352 AssertDataTable ("xml8", ds.Tables [0], "table", 2, 1, 0, 0, 0, 0);
\r
356 public void ReadSimpleReadSchema ()
\r
361 ds = new DataSet ();
\r
362 AssertReadXml (ds, "EmptyString", xml1,
\r
363 XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
\r
367 ds = new DataSet ();
\r
368 AssertReadXml (ds, "EmptyElement", xml2,
\r
369 XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
\r
373 ds = new DataSet ();
\r
374 AssertReadXml (ds, "StartEndTag", xml3,
\r
375 XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
\r
378 // whitespace in simple element
\r
379 ds = new DataSet ();
\r
380 AssertReadXml (ds, "Whitespace", xml4,
\r
381 XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
\r
384 // text in simple element
\r
385 ds = new DataSet ();
\r
386 AssertReadXml (ds, "SingleText", xml5,
\r
387 XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
\r
390 // simple table pattern:
\r
391 ds = new DataSet ();
\r
392 AssertReadXml (ds, "SimpleTable", xml6,
\r
393 XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
\r
396 // simple table with 2 columns:
\r
397 ds = new DataSet ();
\r
398 AssertReadXml (ds, "SimpleTable2", xml7,
\r
399 XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
\r
402 // simple dataset with 1 table:
\r
403 ds = new DataSet ();
\r
404 AssertReadXml (ds, "SimpleDataSet", xml8,
\r
405 XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
\r
410 public void TestSimpleDiffXmlAll ()
\r
415 ds = new DataSet ();
\r
416 AssertReadXml (ds, "Fragment", diff1,
\r
417 XmlReadMode.Fragment, XmlReadMode.Fragment,
\r
420 ds = new DataSet ();
\r
421 AssertReadXml (ds, "IgnoreSchema", diff1,
\r
422 XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
\r
425 ds = new DataSet ();
\r
426 AssertReadXml (ds, "InferSchema", diff1,
\r
427 XmlReadMode.InferSchema, XmlReadMode.InferSchema,
\r
430 ds = new DataSet ();
\r
431 AssertReadXml (ds, "ReadSchema", diff1,
\r
432 XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
\r
435 // Auto, DiffGram ... treated as DiffGram
\r
436 ds = new DataSet ();
\r
437 AssertReadXml (ds, "Auto", diff1,
\r
438 XmlReadMode.Auto, XmlReadMode.DiffGram,
\r
441 ds = new DataSet ();
\r
442 AssertReadXml (ds, "DiffGram", diff1,
\r
443 XmlReadMode.DiffGram, XmlReadMode.DiffGram,
\r
448 public void TestSimpleDiffPlusContentAll ()
\r
452 // Fragment ... skipped
\r
453 ds = new DataSet ();
\r
454 AssertReadXml (ds, "Fragment", diff2,
\r
455 XmlReadMode.Fragment, XmlReadMode.Fragment,
\r
458 // others ... kept
\r
459 ds = new DataSet ();
\r
460 AssertReadXml (ds, "IgnoreSchema", diff2,
\r
461 XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
\r
462 "NewDataSet", 0, ReadState.Interactive);
\r
464 ds = new DataSet ();
\r
465 AssertReadXml (ds, "InferSchema", diff2,
\r
466 XmlReadMode.InferSchema, XmlReadMode.InferSchema,
\r
467 "NewDataSet", 0, ReadState.Interactive);
\r
469 ds = new DataSet ();
\r
470 AssertReadXml (ds, "ReadSchema", diff2,
\r
471 XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
\r
472 "NewDataSet", 0, ReadState.Interactive);
\r
474 // Auto, DiffGram ... treated as DiffGram
\r
475 ds = new DataSet ();
\r
476 AssertReadXml (ds, "Auto", diff2,
\r
477 XmlReadMode.Auto, XmlReadMode.DiffGram,
\r
478 "NewDataSet", 0, ReadState.Interactive);
\r
480 ds = new DataSet ();
\r
481 AssertReadXml (ds, "DiffGram", diff2,
\r
482 XmlReadMode.DiffGram, XmlReadMode.DiffGram,
\r
483 "NewDataSet", 0, ReadState.Interactive);
\r
487 public void TestSimpleSchemaXmlAll ()
\r
492 ds = new DataSet ();
\r
493 AssertReadXml (ds, "IgnoreSchema", schema1,
\r
494 XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
\r
497 ds = new DataSet ();
\r
498 AssertReadXml (ds, "InferSchema", schema1,
\r
499 XmlReadMode.InferSchema, XmlReadMode.InferSchema,
\r
502 // misc ... consume schema
\r
503 ds = new DataSet ();
\r
504 AssertReadXml (ds, "Fragment", schema1,
\r
505 XmlReadMode.Fragment, XmlReadMode.Fragment,
\r
507 AssertDataTable ("fragment", ds.Tables [0], "Root", 1, 0, 0, 0, 0, 0);
\r
509 ds = new DataSet ();
\r
510 AssertReadXml (ds, "ReadSchema", schema1,
\r
511 XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
\r
513 AssertDataTable ("readschema", ds.Tables [0], "Root", 1, 0, 0, 0, 0, 0);
\r
515 ds = new DataSet ();
\r
516 AssertReadXml (ds, "Auto", schema1,
\r
517 XmlReadMode.Auto, XmlReadMode.ReadSchema,
\r
519 AssertDataTable ("auto", ds.Tables [0], "Root", 1, 0, 0, 0, 0, 0);
\r
521 ds = new DataSet ();
\r
522 AssertReadXml (ds, "DiffGram", schema1,
\r
523 XmlReadMode.DiffGram, XmlReadMode.DiffGram,
\r
528 public void TestSimpleSchemaPlusContentAll ()
\r
533 ds = new DataSet ();
\r
534 AssertReadXml (ds, "IgnoreSchema", schema2,
\r
535 XmlReadMode.IgnoreSchema, XmlReadMode.IgnoreSchema,
\r
536 "NewDataSet", 0, ReadState.Interactive);
\r
538 ds = new DataSet ();
\r
539 AssertReadXml (ds, "InferSchema", schema2,
\r
540 XmlReadMode.InferSchema, XmlReadMode.InferSchema,
\r
541 "NewDataSet", 0, ReadState.Interactive);
\r
543 // Fragment ... consumed both
\r
544 ds = new DataSet ();
\r
545 AssertReadXml (ds, "Fragment", schema2,
\r
546 XmlReadMode.Fragment, XmlReadMode.Fragment,
\r
548 AssertDataTable ("fragment", ds.Tables [0], "Root", 1, 0, 0, 0, 0, 0);
\r
550 // rest ... treated as schema
\r
551 ds = new DataSet ();
\r
552 AssertReadXml (ds, "Auto", schema2,
\r
553 XmlReadMode.Auto, XmlReadMode.ReadSchema,
\r
554 "NewDataSet", 1, ReadState.Interactive);
\r
555 AssertDataTable ("auto", ds.Tables [0], "Root", 1, 0, 0, 0, 0, 0);
\r
557 ds = new DataSet ();
\r
558 AssertReadXml (ds, "DiffGram", schema2,
\r
559 XmlReadMode.DiffGram, XmlReadMode.DiffGram,
\r
560 "NewDataSet", 1, ReadState.Interactive);
\r
561 AssertDataTable ("diffgram", ds.Tables [0], "Root", 1, 0, 0, 0, 0, 0);
\r
563 ds = new DataSet ();
\r
564 AssertReadXml (ds, "ReadSchema", schema2,
\r
565 XmlReadMode.ReadSchema, XmlReadMode.ReadSchema,
\r
566 "NewDataSet", 1, ReadState.Interactive);
\r
570 public void SequentialRead1 ()
\r
572 // simple element -> simple table
\r
573 DataSet ds = new DataSet ();
\r
575 AssertReadXml (ds, "SingleText", xml5,
\r
576 XmlReadMode.Auto, XmlReadMode.InferSchema,
\r
579 AssertReadXml (ds, "SimpleTable", xml6,
\r
580 XmlReadMode.Auto, XmlReadMode.InferSchema,
\r
581 "root", 1); // not NewDataSet unlike standalone load
\r
582 AssertDataTable ("seq1", ds.Tables [0], "root", 1, 1, 0, 0, 0, 0);
\r
586 public void SequentialRead2 ()
\r
588 // simple element -> simple dataset
\r
589 DataSet ds = new DataSet ();
\r
591 AssertReadXml (ds, "SingleText", xml5,
\r
592 XmlReadMode.Auto, XmlReadMode.InferSchema,
\r
595 AssertReadXml (ds, "SimpleTable2", xml7,
\r
596 XmlReadMode.Auto, XmlReadMode.InferSchema,
\r
597 "root", 1); // dataset name will not be overwritten
\r
598 AssertDataTable ("#1", ds.Tables [0], "root", 2, 1, 0, 0, 0, 0);
\r
600 // simple table -> simple dataset
\r
601 ds = new DataSet ();
\r
603 AssertReadXml (ds, "SimpleTable", xml6,
\r
604 XmlReadMode.Auto, XmlReadMode.InferSchema,
\r
606 AssertDataTable ("#2", ds.Tables [0], "root", 1, 1, 0, 0, 0, 0);
\r
608 // Return value became IgnoreSchema, since there is
\r
609 // already schema information in the dataset.
\r
610 // Columns are kept 1 as old table holds.
\r
611 // Rows are up to 2 because of accumulative read.
\r
612 AssertReadXml (ds, "SimpleTable2", xml7,
\r
613 XmlReadMode.Auto, XmlReadMode.IgnoreSchema,
\r
615 AssertDataTable ("#3", ds.Tables [0], "root", 1, 2, 0, 0, 0, 0);
\r
619 [Test] // based on bug case
\r
620 public void ReadComplexElementDocument ()
\r
622 DataSet ds = new DataSet ();
\r
623 ds.ReadXml (new StringReader (xml29));
\r
627 public void IgnoreSchemaShouldFillData ()
\r
630 string xml1 = "<set><tab><col>test</col></tab></set>";
\r
631 // no wrapper element
\r
632 string xml2 = "<tab><col>test</col></tab>";
\r
634 string xml3 = "<tar><col>test</col></tar>";
\r
635 DataSet ds = new DataSet ();
\r
636 DataTable dt = new DataTable ("tab");
\r
637 ds.Tables.Add (dt);
\r
638 dt.Columns.Add ("col");
\r
639 ds.ReadXml (new StringReader (xml1), XmlReadMode.IgnoreSchema);
\r
640 AssertDataSet ("ds", ds, "NewDataSet", 1, 0);
\r
641 AssertEquals ("wrapper element", 1, dt.Rows.Count);
\r
644 ds.ReadXml (new StringReader (xml2), XmlReadMode.IgnoreSchema);
\r
645 AssertEquals ("no wrapper element", 1, dt.Rows.Count);
\r
648 ds.ReadXml (new StringReader (xml3), XmlReadMode.IgnoreSchema);
\r
649 AssertEquals ("no such table", 0, dt.Rows.Count);
\r
654 public void SaveDiffLoadAutoSaveSchema ()
\r
656 DataSet ds = new DataSet ();
\r
657 ds.Tables.Add ("Table1");
\r
658 ds.Tables.Add ("Table2");
\r
659 ds.Tables [0].Columns.Add ("Column1_1");
\r
660 ds.Tables [0].Columns.Add ("Column1_2");
\r
661 ds.Tables [0].Columns.Add ("Column1_3");
\r
662 ds.Tables [1].Columns.Add ("Column2_1");
\r
663 ds.Tables [1].Columns.Add ("Column2_2");
\r
664 ds.Tables [1].Columns.Add ("Column2_3");
\r
665 ds.Tables [0].Rows.Add (new object [] {"ppp", "www", "xxx"});
\r
667 // save as diffgram
\r
668 StringWriter sw = new StringWriter ();
\r
669 ds.WriteXml (sw, XmlWriteMode.DiffGram);
\r
670 string xml = sw.ToString ();
\r
671 string result = new StreamReader ("Test/System.Data/DataSetReadXmlTest1.xml", Encoding.ASCII).ReadToEnd ();
\r
672 AssertEquals ("#01", result, xml);
\r
674 // load diffgram above
\r
675 ds.ReadXml (new StringReader (sw.ToString ()));
\r
676 sw = new StringWriter ();
\r
677 ds.WriteXml (sw, XmlWriteMode.WriteSchema);
\r
678 xml = sw.ToString ();
\r
679 result = new StreamReader ("Test/System.Data/DataSetReadXmlTest2.xml", Encoding.ASCII).ReadToEnd ();
\r
680 AssertEquals ("#02", result, xml);
\r