2 // Nagappan A <anagappan@novell.com>
4 // Copyright (c) 2007 Novell, Inc
6 // Permission is hereby granted, free of charge, to any person obtaining
7 // a copy of this software and associated documentation files (the
8 // "Software"), to deal in the Software without restriction, including
9 // without limitation the rights to use, copy, modify, merge, publish,
10 // distribute, sublicense, and/or sell copies of the Software, and to
11 // permit persons to whom the Software is furnished to do so, subject to
12 // the following conditions:
14 // The above copyright notice and this permission notice shall be
15 // included in all copies or substantial portions of the Software.
17 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
21 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 using System.Collections;
30 using System.Data.Odbc;
33 using NUnit.Framework;
35 namespace Monotests_System.Data
38 public class DataTableTest4
40 string fileName1 = "Test/System.Data/TestFile5.xml";
42 DataSet dataSet = null;
43 DataTable dummyTable = null;
44 DataTable parentTable1 = null;
45 DataTable childTable = null;
46 DataTable secondChildTable = null;
48 private void MakeParentTable1 ()
51 parentTable1 = new DataTable ("ParentTable");
52 dataSet = new DataSet ("XmlDataSet");
56 // Create new DataColumn, set DataType,
57 // ColumnName and add to Table.
58 column = new DataColumn ();
59 column.DataType = System.Type.GetType ("System.Int32");
60 column.ColumnName = "id";
62 // Add the Column to the DataColumnCollection.
63 parentTable1.Columns.Add (column);
65 // Create second column
66 column = new DataColumn ();
67 column.DataType = System.Type.GetType ("System.String");
68 column.ColumnName = "ParentItem";
69 column.AutoIncrement = false;
70 column.Caption = "ParentItem";
71 column.Unique = false;
72 // Add the column to the table
73 parentTable1.Columns.Add (column);
75 // Create third column.
76 column = new DataColumn ();
77 column.DataType = System.Type.GetType ("System.Int32");
78 column.ColumnName = "DepartmentID";
79 column.Caption = "DepartmentID";
80 // Add the column to the table.
81 parentTable1.Columns.Add (column);
84 // Make the ID column the primary key column.
85 DataColumn [] PrimaryKeyColumns = new DataColumn [2];
86 PrimaryKeyColumns [0] = parentTable1.Columns ["id"];
87 PrimaryKeyColumns [1] = parentTable1.Columns ["DepartmentID"];
88 parentTable1.PrimaryKey = PrimaryKeyColumns;
90 dataSet.Tables.Add (parentTable1);
92 // Create three new DataRow objects and add
93 // them to the DataTable
94 for (int i = 0; i <= 2; i++)
96 row = parentTable1.NewRow ();
98 row ["ParentItem"] = "ParentItem " + (i + 1);
99 row ["DepartmentID"] = i + 1;
100 parentTable1.Rows.Add (row);
104 private void MakeDummyTable ()
106 // Create a new Table
107 dataSet = new DataSet ();
108 dummyTable = new DataTable ("DummyTable");
112 // Create new DataColumn, set DataType,
113 // ColumnName and add to Table.
114 column = new DataColumn ();
115 column.DataType = System.Type.GetType ("System.Int32");
116 column.ColumnName = "id";
117 column.Unique = true;
118 // Add the Column to the DataColumnCollection.
119 dummyTable.Columns.Add (column);
121 // Create second column
122 column = new DataColumn ();
123 column.DataType = System.Type.GetType ("System.String");
124 column.ColumnName = "DummyItem";
125 column.AutoIncrement = false;
126 column.Caption = "DummyItem";
127 column.Unique = false;
128 // Add the column to the table
129 dummyTable.Columns.Add (column);
131 dataSet.Tables.Add (dummyTable);
133 // Create three new DataRow objects and add
134 // them to the DataTable
135 for (int i=0; i<=2; i++)
137 row = dummyTable.NewRow ();
139 row ["DummyItem"] = "DummyItem " + (i + 1);
140 dummyTable.Rows.Add (row);
143 DataRow row1 = dummyTable.Rows [1];
144 dummyTable.AcceptChanges ();
146 row1 [1] = "Changed_DummyItem " + 2;
150 private void MakeChildTable ()
152 // Create a new Table
153 childTable = new DataTable ("ChildTable");
157 // Create first column and add to the DataTable.
158 column = new DataColumn ();
159 column.DataType= System.Type.GetType ("System.Int32");
160 column.ColumnName = "ChildID";
161 column.AutoIncrement = true;
162 column.Caption = "ID";
163 column.Unique = true;
165 // Add the column to the DataColumnCollection
166 childTable.Columns.Add (column);
168 // Create second column
169 column = new DataColumn ();
170 column.DataType= System.Type.GetType ("System.String");
171 column.ColumnName = "ChildItem";
172 column.AutoIncrement = false;
173 column.Caption = "ChildItem";
174 column.Unique = false;
175 childTable.Columns.Add (column);
177 //Create third column
178 column = new DataColumn ();
179 column.DataType= System.Type.GetType ("System.Int32");
180 column.ColumnName = "ParentID";
181 column.AutoIncrement = false;
182 column.Caption = "ParentID";
183 column.Unique = false;
184 childTable.Columns.Add (column);
186 dataSet.Tables.Add (childTable);
188 // Create three sets of DataRow objects,
189 // five rows each, and add to DataTable.
190 for(int i = 0; i <= 1; i ++)
192 row = childTable.NewRow ();
193 row ["childID"] = i + 1;
194 row ["ChildItem"] = "ChildItem " + (i + 1);
195 row ["ParentID"] = 1 ;
196 childTable.Rows.Add (row);
198 for(int i=0; i<=1; i ++)
200 row = childTable.NewRow ();
201 row ["childID"] = i + 5;
202 row ["ChildItem"] = "ChildItem " + (i + 1);
203 row ["ParentID"] = 2 ;
204 childTable.Rows.Add (row);
206 for(int i = 0; i <= 1; i ++)
208 row = childTable.NewRow ();
209 row ["childID"] = i + 10;
210 row ["ChildItem"] = "ChildItem " + (i + 1);
211 row ["ParentID"] = 3 ;
212 childTable.Rows.Add (row);
216 private void MakeSecondChildTable ()
218 // Create a new Table
219 secondChildTable = new DataTable ("SecondChildTable");
223 // Create first column and add to the DataTable.
224 column = new DataColumn ();
225 column.DataType= System.Type.GetType ("System.Int32");
226 column.ColumnName = "ChildID";
227 column.AutoIncrement = true;
228 column.Caption = "ID";
229 column.ReadOnly = true;
230 column.Unique = true;
232 // Add the column to the DataColumnCollection.
233 secondChildTable.Columns.Add (column);
235 // Create second column.
236 column = new DataColumn ();
237 column.DataType= System.Type.GetType ("System.String");
238 column.ColumnName = "ChildItem";
239 column.AutoIncrement = false;
240 column.Caption = "ChildItem";
241 column.ReadOnly = false;
242 column.Unique = false;
243 secondChildTable.Columns.Add (column);
245 //Create third column.
246 column = new DataColumn ();
247 column.DataType= System.Type.GetType ("System.Int32");
248 column.ColumnName = "ParentID";
249 column.AutoIncrement = false;
250 column.Caption = "ParentID";
251 column.ReadOnly = false;
252 column.Unique = false;
253 secondChildTable.Columns.Add (column);
255 //Create fourth column.
256 column = new DataColumn ();
257 column.DataType= System.Type.GetType ("System.Int32");
258 column.ColumnName = "DepartmentID";
259 column.Caption = "DepartmentID";
260 column.Unique = false;
261 secondChildTable.Columns.Add (column);
263 dataSet.Tables.Add (secondChildTable);
264 // Create three sets of DataRow objects,
265 // five rows each, and add to DataTable.
266 for(int i = 0; i <= 1; i ++)
268 row = secondChildTable.NewRow ();
269 row ["childID"] = i + 1;
270 row ["ChildItem"] = "SecondChildItem " + (i + 1);
271 row ["ParentID"] = 1 ;
272 row ["DepartmentID"] = 1;
273 secondChildTable.Rows.Add (row);
275 for(int i = 0; i <= 1; i++)
277 row = secondChildTable.NewRow ();
278 row ["childID"] = i + 5;
279 row ["ChildItem"] = "SecondChildItem " + (i + 1);
280 row ["ParentID"] = 2;
281 row ["DepartmentID"] = 2;
282 secondChildTable.Rows.Add (row);
284 for(int i = 0; i <= 1; i++)
286 row = secondChildTable.NewRow ();
287 row ["childID"] = i + 10;
288 row ["ChildItem"] = "SecondChildItem " + (i + 1);
289 row ["ParentID"] = 3 ;
290 row ["DepartmentID"] = 3;
291 secondChildTable.Rows.Add (row);
295 private void MakeDataRelation ()
297 DataColumn parentColumn = dataSet.Tables ["ParentTable"].Columns ["id"];
298 DataColumn childColumn = dataSet.Tables ["ChildTable"].Columns ["ParentID"];
299 DataRelation relation = new DataRelation ("ParentChild_Relation1", parentColumn, childColumn);
300 dataSet.Tables ["ChildTable"].ParentRelations.Add (relation);
302 DataColumn [] parentColumn1 = new DataColumn [2];
303 DataColumn [] childColumn1 = new DataColumn [2];
305 parentColumn1 [0] = dataSet.Tables ["ParentTable"].Columns ["id"];
306 parentColumn1 [1] = dataSet.Tables ["ParentTable"].Columns ["DepartmentID"];
308 childColumn1 [0] = dataSet.Tables ["SecondChildTable"].Columns ["ParentID"];
309 childColumn1 [1] = dataSet.Tables ["SecondChildTable"].Columns ["DepartmentID"];
311 DataRelation secondRelation = new DataRelation("ParentChild_Relation2", parentColumn1, childColumn1);
312 dataSet.Tables ["SecondChildTable"].ParentRelations.Add (secondRelation);
315 //Test properties of a table which does not belongs to a DataSet
316 private void VerifyTableSchema (DataTable table, string tableName, DataSet ds)
319 //Check Properties of Table
320 Assert.AreEqual ("", table.Namespace, "#1");
321 Assert.AreEqual (ds, table.DataSet, "#2");
322 Assert.AreEqual (3, table.Columns.Count, "#3");
323 Assert.AreEqual (false, table.CaseSensitive, "#5");
324 Assert.AreEqual (tableName, table.TableName, "#6");
325 Assert.AreEqual (2, table.Constraints.Count, "#7");
326 Assert.AreEqual ("", table.Prefix, "#8");
327 Assert.AreEqual ("Constraint1", table.Constraints [0].ToString (), "#9");
328 Assert.AreEqual ("Constraint2", table.Constraints [1].ToString (), "#10");
329 Assert.AreEqual ("System.Data.UniqueConstraint", table.Constraints [0].GetType ().ToString (), "#11");
330 Assert.AreEqual ("System.Data.UniqueConstraint", table.Constraints [1].GetType ().ToString (), "#12");
331 Assert.AreEqual (2, table.PrimaryKey.Length, "#13");
332 Assert.AreEqual ("id", table.PrimaryKey [0].ToString (), "#14");
333 Assert.AreEqual ("DepartmentID", table.PrimaryKey [1].ToString (), "#15");
334 Assert.AreEqual (0, table.ParentRelations.Count, "#16");
335 Assert.AreEqual (0, table.ChildRelations.Count, "#17");
337 //Check properties of each column
339 DataColumn col = table.Columns [0];
340 Assert.AreEqual (false, col.AllowDBNull, "#18");
341 Assert.AreEqual (false, col.AutoIncrement, "#19");
342 Assert.AreEqual (0, col.AutoIncrementSeed, "#20");
343 Assert.AreEqual (1, col.AutoIncrementStep, "#21");
344 Assert.AreEqual ("Element", col.ColumnMapping.ToString (), "#22");
345 Assert.AreEqual ("id", col.Caption, "#23");
346 Assert.AreEqual ("id", col.ColumnName, "#24");
347 Assert.AreEqual ("System.Int32", col.DataType.ToString (), "#25");
348 Assert.AreEqual ("", col.DefaultValue.ToString (), "#26");
349 Assert.AreEqual (false, col.DesignMode, "#27");
350 Assert.AreEqual ("System.Data.PropertyCollection", col.ExtendedProperties.ToString (), "#28");
351 Assert.AreEqual (-1, col.MaxLength, "#29");
352 Assert.AreEqual (0, col.Ordinal, "#30");
353 Assert.AreEqual ("", col.Prefix, "#31");
354 Assert.AreEqual ("ParentTable", col.Table.ToString (), "#32");
355 Assert.AreEqual (true, col.Unique, "#33");
358 col = table.Columns [1];
359 Assert.AreEqual (true, col.AllowDBNull, "#34");
360 Assert.AreEqual (false, col.AutoIncrement, "#35");
361 Assert.AreEqual (0, col.AutoIncrementSeed, "#36");
362 Assert.AreEqual (1, col.AutoIncrementStep, "#37");
363 Assert.AreEqual ("Element", col.ColumnMapping.ToString (), "#38");
364 Assert.AreEqual ("ParentItem", col.Caption, "#39");
365 Assert.AreEqual ("ParentItem", col.ColumnName, "#40");
366 Assert.AreEqual ("System.String", col.DataType.ToString (), "#41");
367 Assert.AreEqual ("", col.DefaultValue.ToString (), "#42");
368 Assert.AreEqual (false, col.DesignMode, "#43");
369 Assert.AreEqual ("System.Data.PropertyCollection", col.ExtendedProperties.ToString (), "#44");
370 Assert.AreEqual (-1, col.MaxLength, "#45");
371 Assert.AreEqual (1, col.Ordinal, "#46");
372 Assert.AreEqual ("", col.Prefix, "#47");
373 Assert.AreEqual ("ParentTable", col.Table.ToString (), "#48");
374 Assert.AreEqual (false, col.Unique, "#49");
377 col = table.Columns [2];
378 Assert.AreEqual (false, col.AllowDBNull, "#50");
379 Assert.AreEqual (false, col.AutoIncrement, "#51");
380 Assert.AreEqual (0, col.AutoIncrementSeed, "#52");
381 Assert.AreEqual (1, col.AutoIncrementStep, "#53");
382 Assert.AreEqual ("Element", col.ColumnMapping.ToString (), "#54");
383 Assert.AreEqual ("DepartmentID", col.Caption, "#55");
384 Assert.AreEqual ("DepartmentID", col.ColumnName, "#56");
385 Assert.AreEqual ("System.Int32", col.DataType.ToString (), "#57");
386 Assert.AreEqual ("", col.DefaultValue.ToString (), "#58");
387 Assert.AreEqual (false, col.DesignMode, "#59");
388 Assert.AreEqual ("System.Data.PropertyCollection", col.ExtendedProperties.ToString (), "#60");
389 Assert.AreEqual (-1, col.MaxLength, "#61");
390 Assert.AreEqual (2, col.Ordinal, "#62");
391 Assert.AreEqual ("", col.Prefix, "#63");
392 Assert.AreEqual ("ParentTable", col.Table.ToString (), "#64");
393 Assert.AreEqual (false, col.Unique, "#65");
396 Assert.AreEqual (3, table.Rows.Count, "#66");
397 //Test values of each row
398 DataRow row = table.Rows [0];
399 Assert.AreEqual (1, row ["id"], "#67");
400 Assert.AreEqual ("ParentItem 1", row ["ParentItem"], "#68");
401 Assert.AreEqual (1, row ["DepartmentID"], "#69");
403 row = table.Rows [1];
404 Assert.AreEqual (2, row ["id"], "#70");
405 Assert.AreEqual ("ParentItem 2", row ["ParentItem"], "#71");
406 Assert.AreEqual (2, row ["DepartmentID"], "#72");
408 row = table.Rows [2];
409 Assert.AreEqual (3, row ["id"], "#73");
410 Assert.AreEqual ("ParentItem 3", row ["ParentItem"], "#74");
411 Assert.AreEqual (3, row ["DepartmentID"], "#75");
414 private void VerifyTable_WithChildren (DataTable table, string tableName, DataSet ds)
417 //Check Properties of Table
418 Assert.AreEqual ("", table.Namespace, "#1");
419 Assert.AreEqual (ds.DataSetName, table.DataSet.DataSetName, "#2");
420 Assert.AreEqual (3, table.Columns.Count, "#3");
421 Assert.AreEqual (false, table.CaseSensitive, "#5");
422 Assert.AreEqual (tableName, table.TableName, "#6");
423 Assert.AreEqual (2, table.Constraints.Count, "#7");
424 Assert.AreEqual ("", table.Prefix, "#8");
425 Assert.AreEqual ("Constraint1", table.Constraints [0].ToString (), "#9");
426 Assert.AreEqual ("Constraint2", table.Constraints [1].ToString (), "#10");
427 Assert.AreEqual ("System.Data.UniqueConstraint", table.Constraints [0].GetType ().ToString (), "#11");
428 Assert.AreEqual ("System.Data.UniqueConstraint", table.Constraints [1].GetType ().ToString (), "#12");
429 Assert.AreEqual (2, table.PrimaryKey.Length, "#13");
430 Assert.AreEqual ("id", table.PrimaryKey [0].ToString (), "#14");
431 Assert.AreEqual ("DepartmentID", table.PrimaryKey [1].ToString (), "#15");
432 Assert.AreEqual (0, table.ParentRelations.Count, "#16");
433 Assert.AreEqual (2, table.ChildRelations.Count, "#17");
435 //Check properties of each column
437 DataColumn col = table.Columns [0];
438 Assert.AreEqual (false, col.AllowDBNull, "#18");
439 Assert.AreEqual (false, col.AutoIncrement, "#19");
440 Assert.AreEqual (0, col.AutoIncrementSeed, "#20");
441 Assert.AreEqual (1, col.AutoIncrementStep, "#21");
442 Assert.AreEqual ("Element", col.ColumnMapping.ToString (), "#22");
443 Assert.AreEqual ("id", col.Caption, "#23");
444 Assert.AreEqual ("id", col.ColumnName, "#24");
445 Assert.AreEqual ("System.Int32", col.DataType.ToString (), "#25");
446 Assert.AreEqual ("", col.DefaultValue.ToString (), "#26");
447 Assert.AreEqual (false, col.DesignMode, "#27");
448 Assert.AreEqual ("System.Data.PropertyCollection", col.ExtendedProperties.ToString (), "#28");
449 Assert.AreEqual (-1, col.MaxLength, "#29");
450 Assert.AreEqual (0, col.Ordinal, "#30");
451 Assert.AreEqual ("", col.Prefix, "#31");
452 Assert.AreEqual ("ParentTable", col.Table.ToString (), "#32");
453 Assert.AreEqual (true, col.Unique, "#33");
456 col = table.Columns [1];
457 Assert.AreEqual (true, col.AllowDBNull, "#34");
458 Assert.AreEqual (false, col.AutoIncrement, "#35");
459 Assert.AreEqual (0, col.AutoIncrementSeed, "#36");
460 Assert.AreEqual (1, col.AutoIncrementStep, "#37");
461 Assert.AreEqual ("Element", col.ColumnMapping.ToString (), "#38");
462 Assert.AreEqual ("ParentItem", col.Caption, "#39");
463 Assert.AreEqual ("ParentItem", col.ColumnName, "#40");
464 Assert.AreEqual ("System.String", col.DataType.ToString (), "#41");
465 Assert.AreEqual ("", col.DefaultValue.ToString (), "#42");
466 Assert.AreEqual (false, col.DesignMode, "#43");
467 Assert.AreEqual ("System.Data.PropertyCollection", col.ExtendedProperties.ToString (), "#44");
468 Assert.AreEqual (-1, col.MaxLength, "#45");
469 Assert.AreEqual (1, col.Ordinal, "#46");
470 Assert.AreEqual ("", col.Prefix, "#47");
471 Assert.AreEqual ("ParentTable", col.Table.ToString (), "#48");
472 Assert.AreEqual (false, col.Unique, "#49");
475 col = table.Columns [2];
476 Assert.AreEqual (false, col.AllowDBNull, "#50");
477 Assert.AreEqual (false, col.AutoIncrement, "#51");
478 Assert.AreEqual (0, col.AutoIncrementSeed, "#52");
479 Assert.AreEqual (1, col.AutoIncrementStep, "#53");
480 Assert.AreEqual ("Element", col.ColumnMapping.ToString (), "#54");
481 Assert.AreEqual ("DepartmentID", col.Caption, "#55");
482 Assert.AreEqual ("DepartmentID", col.ColumnName, "#56");
483 Assert.AreEqual ("System.Int32", col.DataType.ToString (), "#57");
484 Assert.AreEqual ("", col.DefaultValue.ToString (), "#58");
485 Assert.AreEqual (false, col.DesignMode, "#59");
486 Assert.AreEqual ("System.Data.PropertyCollection", col.ExtendedProperties.ToString (), "#60");
487 Assert.AreEqual (-1, col.MaxLength, "#61");
488 Assert.AreEqual (2, col.Ordinal, "#62");
489 Assert.AreEqual ("", col.Prefix, "#63");
490 Assert.AreEqual ("ParentTable", col.Table.ToString (), "#64");
491 Assert.AreEqual (false, col.Unique, "#65");
494 Assert.AreEqual (3, table.Rows.Count, "#66");
495 //Test values of each row
496 DataRow row = table.Rows [0];
497 Assert.AreEqual (1, row ["id"], "#67");
498 Assert.AreEqual ("ParentItem 1", row ["ParentItem"], "#68");
499 Assert.AreEqual (1, row ["DepartmentID"], "#69");
501 row = table.Rows [1];
502 Assert.AreEqual (2, row ["id"], "#70");
503 Assert.AreEqual ("ParentItem 2", row ["ParentItem"], "#71");
504 Assert.AreEqual (2, row ["DepartmentID"], "#72");
506 row = table.Rows [2];
507 Assert.AreEqual (3, row ["id"], "#73");
508 Assert.AreEqual ("ParentItem 3", row ["ParentItem"], "#74");
509 Assert.AreEqual (3, row ["DepartmentID"], "#75");
513 private void VerifyDiffGramElement1 (XmlReader reader)
515 //This method checks the properties of the <id> element
516 Assert.AreEqual (true, reader.IsStartElement (), "#1");
517 Assert.AreEqual (3, reader.Depth, "#2");
518 Assert.AreEqual (false, reader.HasAttributes, "#3");
519 Assert.AreEqual (false, reader.HasValue, "#4");
520 Assert.AreEqual (false, reader.IsDefault, "#5");
521 Assert.AreEqual (false, reader.IsEmptyElement, "#6");
522 Assert.AreEqual ("id", reader.Name, "#7");
523 Assert.AreEqual ("id", reader.LocalName, "#8");
524 Assert.AreEqual (XmlNodeType.Element, reader.NodeType, "#9");
527 private void VerifyDiffGramElement3 (XmlReader reader)
529 //This method checks the property of </id> end elem
530 Assert.AreEqual (false, reader.IsStartElement (), "#1");
531 Assert.AreEqual ("id", reader.Name, "#2");
532 Assert.AreEqual ("id", reader.LocalName, "#3");
533 Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType, "#4");
536 private void VerifyDiffGramElement2 (XmlReader reader)
538 //This method tests the properties of the <DummyItem> elemnent
539 Assert.AreEqual (true, reader.IsStartElement (), "#1");
540 Assert.AreEqual (3, reader.Depth, "#2");
541 Assert.AreEqual (false, reader.HasAttributes, "#3");
542 Assert.AreEqual (false, reader.HasValue, "#4");
543 Assert.AreEqual (false, reader.IsDefault, "#5");
544 Assert.AreEqual (false, reader.IsEmptyElement, "#6");
545 Assert.AreEqual ("DummyItem", reader.Name, "#7");
546 Assert.AreEqual ("DummyItem", reader.LocalName, "#8");
547 Assert.AreEqual (XmlNodeType.Element, reader.NodeType, "#9");
550 private void VerifyDiffGramElement4 (XmlReader reader)
552 //This method checks the properties of </DummyItem> end element
553 Assert.AreEqual (false, reader.IsStartElement (), "#1");
554 Assert.AreEqual ("DummyItem", reader.Name, "#2");
555 Assert.AreEqual ("DummyItem", reader.LocalName, "#3");
556 Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType, "#4");
559 private void VerifyDiffGramElement5 (XmlReader reader)
561 //This method check the properties of </DummyTable> end element
562 Assert.AreEqual (false, reader.IsStartElement (), "#1");
563 Assert.AreEqual ("DummyTable", reader.Name, "#2");
564 Assert.AreEqual ("DummyTable", reader.LocalName, "#3");
565 Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType, "#4");
569 public void XmlTest1 ()
572 dataSet.Tables.Remove (parentTable1);
574 FileStream stream = new FileStream (fileName1, FileMode.Create);
575 //Write the XML without any Schema information
576 parentTable1.WriteXml (stream);
579 DataTable table = new DataTable ();
581 stream = new FileStream (fileName1, FileMode.Open);
582 table.ReadXml (stream);
583 //Should throw an exception if the Xml File has no schema and target table too
584 //does not define any schema
585 Assert.Fail ("#1 Exception was Expected");
586 } catch (Exception e) {
587 Assert.AreEqual ("System.InvalidOperationException", e.GetType ().ToString (), "#1 Exception Type Not Correct");
594 public void XmlTest2 ()
596 //Make a table without any relations
598 dataSet.Tables.Remove (parentTable1);
600 FileStream stream = new FileStream (fileName1, FileMode.Create);
601 //Write Xml along with the Schema
602 parentTable1.WriteXml (stream, XmlWriteMode.WriteSchema);
605 DataTable table = new DataTable ();
606 //Read the Xml and the Schema into a table which does not belongs to any DataSet
607 table.ReadXml (fileName1);
608 VerifyTableSchema (table, parentTable1.TableName, parentTable1.DataSet);
612 public void XmlTest3 ()
614 //Make a table without any Relations
616 dataSet.Tables.Remove (parentTable1);
617 FileStream stream = new FileStream (fileName1, FileMode.Create);
618 //Write the Xml and the Schema
619 parentTable1.WriteXml (stream, XmlWriteMode.WriteSchema);
622 DataTable table = new DataTable ();
623 dataSet.Tables.Add (table);
625 //Read the Xml and the Schema into a table which already belongs to a DataSet
626 //and the table name does not match with the table ion the source XML
628 table.ReadXml (fileName1);
629 Assert.Fail ("#1 Exception was expected as table names dont match");
630 } catch (Exception e) {
631 Assert.AreEqual ("System.ArgumentException", e.GetType ().ToString(), "#2");
636 public void XmlTest4 ()
639 FileStream stream = new FileStream (fileName1, FileMode.Create);
640 //Here the table belong to a dataset
641 //Write the Xml and the Schema
642 parentTable1.WriteXml (stream, XmlWriteMode.WriteSchema);
645 DataTable table = new DataTable ("ParentTable");
646 //Read the Xml and the Schema into a table which already belongs to a DataSet
647 //and the table name matches with the table in the source XML
648 table.ReadXml (fileName1);
649 VerifyTableSchema (table, parentTable1.TableName, null);
653 public void XmlTest5 ()
655 //Create a parent table and create child tables
658 MakeSecondChildTable ();
659 //Relate the parent and the children
662 FileStream stream = new FileStream (fileName1, FileMode.Create);
663 parentTable1.WriteXml (stream, XmlWriteMode.WriteSchema, false);
666 DataTable table = new DataTable ();
667 table.ReadXml (fileName1);
668 VerifyTableSchema (table, parentTable1.TableName, null);
672 public void XmlTest6 ()
674 //Create a parent table and create child tables
677 MakeSecondChildTable ();
678 //Relate the parent and the children
681 FileStream stream = new FileStream (fileName1, FileMode.Create);
682 parentTable1.WriteXml (stream, XmlWriteMode.WriteSchema, true);
685 DataTable table = new DataTable ();
686 table.ReadXml (fileName1);
688 VerifyTable_WithChildren (table, parentTable1.TableName, parentTable1.DataSet);
691 //Check Properties of First Child Table
692 DataTable firstChildTable = table.ChildRelations [0].ChildTable;
693 Assert.AreEqual ("", firstChildTable.Namespace, "#1");
694 Assert.AreEqual ("XmlDataSet", firstChildTable.DataSet.DataSetName, "#2");
695 Assert.AreEqual (3, firstChildTable.Columns.Count, "#3");
696 Assert.AreEqual ("System.Int32", firstChildTable.Columns [0].DataType.ToString (), "#4");
697 Assert.AreEqual ("System.String", firstChildTable.Columns [1].DataType.ToString (), "#5");
698 Assert.AreEqual ("System.Int32", firstChildTable.Columns [2].DataType.ToString (), "#6");
699 Assert.AreEqual (6, firstChildTable.Rows.Count, "#7");
700 Assert.AreEqual (false, firstChildTable.CaseSensitive, "#8");
701 Assert.AreEqual ("ChildTable", firstChildTable.TableName, "#9");
702 Assert.AreEqual ("", firstChildTable.Prefix, "#10");
703 Assert.AreEqual (2, firstChildTable.Constraints.Count, "#11");
704 Assert.AreEqual ("Constraint1", firstChildTable.Constraints [0].ToString (), "#12");
705 Assert.AreEqual ("ParentChild_Relation1", firstChildTable.Constraints [1].ToString (), "#13");
706 Assert.AreEqual (1, firstChildTable.ParentRelations.Count, "#14");
707 Assert.AreEqual ("ParentTable", firstChildTable.ParentRelations [0].ParentTable.TableName, "#15");
708 Assert.AreEqual (0, firstChildTable.ChildRelations.Count, "#16");
709 Assert.AreEqual (0, firstChildTable.PrimaryKey.Length, "#17");
712 //Check Properties of Second Child Table
713 DataTable secondChildTable = table.ChildRelations [1].ChildTable;
714 Assert.AreEqual ("", secondChildTable.Namespace, "#18");
715 Assert.AreEqual ("XmlDataSet", secondChildTable.DataSet.DataSetName, "#19");
716 Assert.AreEqual (4, secondChildTable.Columns.Count, "#20");
717 Assert.AreEqual ("System.Int32", secondChildTable.Columns [0].DataType.ToString (), "#21");
718 Assert.AreEqual ("System.String", secondChildTable.Columns [1].DataType.ToString (), "#22");
719 Assert.AreEqual ("System.Int32", secondChildTable.Columns [2].DataType.ToString (), "#23");
720 Assert.AreEqual ("System.Int32", secondChildTable.Columns [3].DataType.ToString (), "#24");
721 Assert.AreEqual (6, secondChildTable.Rows.Count, "#25");
722 Assert.AreEqual (false, secondChildTable.CaseSensitive, "#26");
723 Assert.AreEqual ("SecondChildTable", secondChildTable.TableName, "#27");
724 Assert.AreEqual ("", secondChildTable.Prefix, "#28");
725 Assert.AreEqual (2, secondChildTable.Constraints.Count, "#29");
726 Assert.AreEqual ("Constraint1", secondChildTable.Constraints [0].ToString (), "#30");
727 Assert.AreEqual ("ParentChild_Relation2", secondChildTable.Constraints [1].ToString (), "#31");
728 Assert.AreEqual (1, secondChildTable.ParentRelations.Count, "#32");;
729 Assert.AreEqual ("ParentTable", secondChildTable.ParentRelations [0].ParentTable.TableName, "#33");
730 Assert.AreEqual (0, secondChildTable.ChildRelations.Count, "#34");
731 Assert.AreEqual (0, secondChildTable.PrimaryKey.Length, "#35");
736 public void XmlTest7 ()
738 //Create a parent table and create child tables
741 MakeSecondChildTable ();
742 //Relate the parent and the children
745 FileStream stream = new FileStream (fileName1, FileMode.Create);
746 //WriteXml on any of the children
747 childTable.WriteXml (stream, XmlWriteMode.WriteSchema, false);
751 DataTable table = new DataTable ();
752 table.ReadXml (fileName1);
755 //Check Properties of Table
756 Assert.AreEqual ("", table.Namespace, "#1");
757 Assert.AreEqual (null, table.DataSet, "#2");
758 Assert.AreEqual (3, table.Columns.Count, "#3");
759 Assert.AreEqual (false, table.CaseSensitive, "#5");
760 Assert.AreEqual ("ChildTable", table.TableName, "#6");
761 Assert.AreEqual ("", table.Prefix, "#7");
762 Assert.AreEqual (1, table.Constraints.Count, "#8");
763 Assert.AreEqual ("Constraint1", table.Constraints [0].ToString (), "#9");
764 Assert.AreEqual ("System.Data.UniqueConstraint", table.Constraints [0].GetType ().ToString (), "#10");
765 Assert.AreEqual (0, table.PrimaryKey.Length, "#11");
766 Assert.AreEqual (0, table.ParentRelations.Count, "#12");
767 Assert.AreEqual (0, table.ChildRelations.Count, "#13");
770 //Check properties of each column
772 DataColumn col = table.Columns [0];
773 Assert.AreEqual (true, col.AllowDBNull, "#14");
774 Assert.AreEqual (0, col.AutoIncrementSeed, "#15");
775 Assert.AreEqual (1, col.AutoIncrementStep, "#16");
776 Assert.AreEqual ("Element", col.ColumnMapping.ToString (), "#17");
777 Assert.AreEqual ("ChildID", col.Caption, "#18");
778 Assert.AreEqual ("ChildID", col.ColumnName, "#19");
779 Assert.AreEqual ("System.Int32", col.DataType.ToString (), "#20");
780 Assert.AreEqual ("", col.DefaultValue.ToString (), "#21");
781 Assert.AreEqual (false, col.DesignMode, "#22");
782 Assert.AreEqual ("System.Data.PropertyCollection", col.ExtendedProperties.ToString (), "#23");
783 Assert.AreEqual (-1, col.MaxLength, "#24");
784 Assert.AreEqual (0, col.Ordinal, "#25");
785 Assert.AreEqual ("", col.Prefix, "#26");
786 Assert.AreEqual ("ChildTable", col.Table.ToString (), "#27");
787 Assert.AreEqual (true, col.Unique, "#28");
791 col = table.Columns [1];
792 Assert.AreEqual (true, col.AllowDBNull, "#29");
793 Assert.AreEqual (0, col.AutoIncrementSeed, "#30");
794 Assert.AreEqual (1, col.AutoIncrementStep, "#31");
795 Assert.AreEqual ("Element", col.ColumnMapping.ToString (), "#32");
796 Assert.AreEqual ("ChildItem", col.Caption, "#33");
797 Assert.AreEqual ("ChildItem", col.ColumnName, "#34");
798 Assert.AreEqual ("System.String", col.DataType.ToString (), "#35");
799 Assert.AreEqual ("", col.DefaultValue.ToString (), "#36");
800 Assert.AreEqual (false, col.DesignMode, "#37");
801 Assert.AreEqual ("System.Data.PropertyCollection", col.ExtendedProperties.ToString (), "#38");
802 Assert.AreEqual (-1, col.MaxLength, "#39");
803 Assert.AreEqual (1, col.Ordinal, "#40");
804 Assert.AreEqual ("", col.Prefix, "#41");
805 Assert.AreEqual ("ChildTable", col.Table.ToString (), "#42");
806 Assert.AreEqual (false, col.Unique, "#43");
809 col = table.Columns [2];
810 Assert.AreEqual (true, col.AllowDBNull, "#44");
811 Assert.AreEqual (false, col.AutoIncrement, "#45");
812 Assert.AreEqual (0, col.AutoIncrementSeed, "#46");
813 Assert.AreEqual (1, col.AutoIncrementStep, "#47");
814 Assert.AreEqual ("Element", col.ColumnMapping.ToString (), "#48");
815 Assert.AreEqual ("ParentID", col.Caption, "#49");
816 Assert.AreEqual ("ParentID", col.ColumnName, "#50");
817 Assert.AreEqual ("System.Int32", col.DataType.ToString (), "#51");
818 Assert.AreEqual ("", col.DefaultValue.ToString (), "#52");
819 Assert.AreEqual (false, col.DesignMode, "#53");
820 Assert.AreEqual ("System.Data.PropertyCollection", col.ExtendedProperties.ToString (), "#54");
821 Assert.AreEqual (-1, col.MaxLength, "#55");
822 Assert.AreEqual (2, col.Ordinal, "#56");
823 Assert.AreEqual ("", col.Prefix, "#57");
824 Assert.AreEqual ("ChildTable", col.Table.ToString (), "#58");
825 Assert.AreEqual (false, col.Unique, "#59");
829 Assert.AreEqual (6, table.Rows.Count, "#60");
831 //Test values of each row
832 DataRow row = table.Rows [0];
833 Assert.AreEqual (1, row ["ChildID"], "#61");
834 Assert.AreEqual ("ChildItem 1", row ["ChildItem"], "#62");
835 Assert.AreEqual (1, row ["ParentID"], "#63");
837 row = table.Rows [1];
838 Assert.AreEqual (2, row ["ChildID"], "#64");
839 Assert.AreEqual ("ChildItem 2", row ["ChildItem"], "#65");
840 Assert.AreEqual (1, row ["ParentID"], "#66");
842 row = table.Rows [2];
843 Assert.AreEqual (5, row ["ChildID"], "#67");
844 Assert.AreEqual ("ChildItem 1", row ["ChildItem"], "#68");
845 Assert.AreEqual (2, row ["ParentID"], "#69");
847 row = table.Rows [3];
848 Assert.AreEqual (6, row ["ChildID"], "#70");
849 Assert.AreEqual ("ChildItem 2", row ["ChildItem"], "#71");
850 Assert.AreEqual (2, row ["ParentID"], "#72");
852 row = table.Rows [4];
853 Assert.AreEqual (10, row ["ChildID"], "#73");
854 Assert.AreEqual ("ChildItem 1", row ["ChildItem"], "#74");
855 Assert.AreEqual (3, row ["ParentID"], "#75");
857 row = table.Rows [5];
858 Assert.AreEqual (11, row ["ChildID"], "#75");
859 Assert.AreEqual ("ChildItem 2", row ["ChildItem"], "#76");
860 Assert.AreEqual (3, row ["ParentID"], "#77");
865 public void XmlTest8 ()
869 MakeSecondChildTable ();
870 //Relate the parent and the children
873 FileStream stream = new FileStream (fileName1, FileMode.Create);
875 parentTable1.WriteXml (stream, XmlWriteMode.IgnoreSchema, false);
878 DataSet ds = new DataSet ();
879 ds.ReadXml (fileName1);
881 Assert.AreEqual (1, ds.Tables.Count, "#1");
882 Assert.AreEqual ("ParentTable", ds.Tables [0].TableName, "#2");
883 DataTable table = ds.Tables [0];
886 Assert.AreEqual (3, table.Rows.Count, "#3");
887 //Test values of each row
888 DataRow row = table.Rows [0];
889 Assert.AreEqual ("1", row ["id"], "#4");
890 Assert.AreEqual ("ParentItem 1", row ["ParentItem"], "#5");
891 Assert.AreEqual ("1", row ["DepartmentID"], "#6");
893 row = table.Rows [1];
894 Assert.AreEqual ("2", row ["id"], "#7");
895 Assert.AreEqual ("ParentItem 2", row ["ParentItem"], "#8");
896 Assert.AreEqual ("2", row ["DepartmentID"], "#9");
898 row = table.Rows [2];
899 Assert.AreEqual ("3", row ["id"], "#10");
900 Assert.AreEqual ("ParentItem 3", row ["ParentItem"], "#11");
901 Assert.AreEqual ("3", row ["DepartmentID"], "#12");
906 public void XmlTest9 ()
910 MakeSecondChildTable ();
911 //Relate the parent and the children
914 FileStream stream = new FileStream (fileName1, FileMode.Create);
916 parentTable1.WriteXml (stream, XmlWriteMode.IgnoreSchema, true);
919 DataSet ds = new DataSet ();
920 ds.ReadXml (fileName1);
922 Assert.AreEqual (3, ds.Tables.Count, "#1");
923 Assert.AreEqual ("ParentTable", ds.Tables [0].TableName, "#2");
924 Assert.AreEqual ("ChildTable", ds.Tables [1].TableName, "#3");
925 Assert.AreEqual ("SecondChildTable", ds.Tables [2].TableName, "#4");
927 //get the first table
928 DataTable table = ds.Tables [0];
929 Assert.AreEqual (3, table.Rows.Count, "#5");
931 DataRow row = table.Rows [0];
932 Assert.AreEqual ("1", row ["id"], "#6");
933 Assert.AreEqual ("ParentItem 1", row ["ParentItem"], "#7");
934 Assert.AreEqual ("1", row ["DepartmentID"], "#8");
936 row = table.Rows [1];
937 Assert.AreEqual ("2", row ["id"], "#9");
938 Assert.AreEqual ("ParentItem 2", row ["ParentItem"], "#10");
939 Assert.AreEqual ("2", row ["DepartmentID"], "#11");
941 row = table.Rows [2];
942 Assert.AreEqual ("3", row ["id"], "#12");
943 Assert.AreEqual ("ParentItem 3", row ["ParentItem"], "#13");
944 Assert.AreEqual ("3", row ["DepartmentID"], "#14");
947 //get the second table
948 table = ds.Tables [1];
949 Assert.AreEqual (6, table.Rows.Count);
951 row = table.Rows [0];
952 Assert.AreEqual ("1", row ["ChildID"], "#15");
953 Assert.AreEqual ("ChildItem 1", row ["ChildItem"], "#16");
954 Assert.AreEqual ("1", row ["ParentID"], "#17");
956 row = table.Rows [1];
957 Assert.AreEqual ("2", row ["ChildID"], "#18");
958 Assert.AreEqual ("ChildItem 2", row ["ChildItem"], "#19");
959 Assert.AreEqual ("1", row ["ParentID"], "#20");
961 row = table.Rows [2];
962 Assert.AreEqual ("5", row ["ChildID"], "#21");
963 Assert.AreEqual ("ChildItem 1", row ["ChildItem"], "#22");
964 Assert.AreEqual ("2", row ["ParentID"], "#23");
966 row = table.Rows [3];
967 Assert.AreEqual ("6", row ["ChildID"], "#24");
968 Assert.AreEqual ("ChildItem 2", row ["ChildItem"], "#25");
969 Assert.AreEqual ("2", row ["ParentID"], "#26");
971 row = table.Rows [4];
972 Assert.AreEqual ("10", row ["ChildID"], "#27");
973 Assert.AreEqual ("ChildItem 1", row ["ChildItem"], "#28");
974 Assert.AreEqual ("3", row ["ParentID"], "#29");
976 row = table.Rows [5];
977 Assert.AreEqual ("11", row ["ChildID"], "#30");
978 Assert.AreEqual ("ChildItem 2", row ["ChildItem"], "#31");
979 Assert.AreEqual ("3", row ["ParentID"], "#32");
981 //get the third table
982 table = ds.Tables [2];
983 Assert.AreEqual (6, table.Rows.Count);
985 row = table.Rows [0];
986 Assert.AreEqual ("1", row ["ChildID"], "#33");
987 Assert.AreEqual ("SecondChildItem 1", row ["ChildItem"], "#34");
988 Assert.AreEqual ("1", row ["ParentID"], "#35");
989 Assert.AreEqual ("1", row ["DepartmentID"], "#36");
991 row = table.Rows [1];
992 Assert.AreEqual ("2", row ["ChildID"], "#37");
993 Assert.AreEqual ("SecondChildItem 2", row ["ChildItem"], "#38");
994 Assert.AreEqual ("1", row ["ParentID"], "#39");
995 Assert.AreEqual ("1", row ["DepartmentID"], "#40");
997 row = table.Rows [2];
998 Assert.AreEqual ("5", row ["ChildID"], "#41");
999 Assert.AreEqual ("SecondChildItem 1", row ["ChildItem"], "#42");
1000 Assert.AreEqual ("2", row ["ParentID"], "#43");
1001 Assert.AreEqual ("2", row ["DepartmentID"], "#44");
1003 row = table.Rows [3];
1004 Assert.AreEqual ("6", row ["ChildID"], "#45");
1005 Assert.AreEqual ("SecondChildItem 2", row ["ChildItem"], "#46");
1006 Assert.AreEqual ("2", row ["ParentID"], "#47");
1007 Assert.AreEqual ("2", row ["DepartmentID"], "#48");
1009 row = table.Rows [4];
1010 Assert.AreEqual ("10", row ["ChildID"], "#49");
1011 Assert.AreEqual ("SecondChildItem 1", row ["ChildItem"], "#50");
1012 Assert.AreEqual ("3", row ["ParentID"], "#51");
1013 Assert.AreEqual ("3", row ["DepartmentID"], "#52");
1015 row = table.Rows [5];
1016 Assert.AreEqual ("11", row ["ChildID"], "#53");
1017 Assert.AreEqual ("SecondChildItem 2", row ["ChildItem"], "#54");
1018 Assert.AreEqual ("3", row ["ParentID"], "#55");
1019 Assert.AreEqual ("3", row ["DepartmentID"], "#56");
1024 public void XmlTest10 ()
1028 FileStream stream = new FileStream (fileName1, FileMode.Create);
1029 dummyTable.WriteXml (stream, XmlWriteMode.DiffGram);
1032 stream = new FileStream (fileName1, FileMode.Open);
1033 XmlReaderSettings settings = new XmlReaderSettings ();
1034 settings.IgnoreWhitespace = true;
1035 XmlReader reader = XmlReader.Create (stream, settings);
1038 Assert.AreEqual (true, reader.IsStartElement (), "#1");
1039 Assert.AreEqual (0, reader.Depth, "#2");
1040 Assert.AreEqual (true, reader.HasAttributes, "#3");
1041 Assert.AreEqual (false, reader.HasValue, "#4");
1042 Assert.AreEqual (false, reader.IsDefault, "#5");
1043 Assert.AreEqual (false, reader.IsEmptyElement, "#6");
1044 Assert.AreEqual ("diffgr:diffgram", reader.Name, "#7");
1045 Assert.AreEqual ("diffgram", reader.LocalName, "#8");
1046 Assert.AreEqual (2, reader.AttributeCount, "#9");
1047 Assert.AreEqual ("urn:schemas-microsoft-com:xml-msdata", reader [0], "#10");
1048 Assert.AreEqual ("urn:schemas-microsoft-com:xml-diffgram-v1", reader [1], "#11");
1049 Assert.AreEqual ("urn:schemas-microsoft-com:xml-diffgram-v1", reader.NamespaceURI, "#12");
1050 Assert.AreEqual (XmlNodeType.Element, reader.NodeType, "#13");
1053 Assert.AreEqual (true, reader.IsStartElement (), "#14");
1054 Assert.AreEqual (1, reader.Depth, "#15");
1055 Assert.AreEqual (false, reader.HasAttributes, "#16");
1056 Assert.AreEqual (false, reader.HasValue, "#17");
1057 Assert.AreEqual (false, reader.IsDefault, "#18");
1058 Assert.AreEqual (false, reader.IsEmptyElement, "#19");
1059 Assert.AreEqual ("NewDataSet", reader.Name, "#20");
1060 Assert.AreEqual ("NewDataSet", reader.LocalName, "#21");
1061 Assert.AreEqual (XmlNodeType.Element, reader.NodeType, "#22");
1064 Assert.AreEqual (true, reader.IsStartElement (), "#23");
1065 Assert.AreEqual (2, reader.Depth, "#24");
1066 Assert.AreEqual (true, reader.HasAttributes, "#25");
1067 Assert.AreEqual (false, reader.HasValue, "#26");
1068 Assert.AreEqual (false, reader.IsDefault, "#27");
1069 Assert.AreEqual (false, reader.IsEmptyElement, "#28");
1070 Assert.AreEqual ("DummyTable", reader.Name, "#29");
1071 Assert.AreEqual ("DummyTable", reader.LocalName, "#30");
1072 Assert.AreEqual (2, reader.AttributeCount, "#31");
1073 Assert.AreEqual ("DummyTable1", reader [0], "#32");
1074 Assert.AreEqual ("0", reader [1], "#33");
1075 Assert.AreEqual (XmlNodeType.Element, reader.NodeType, "#34");
1078 VerifyDiffGramElement1 (reader);
1081 Assert.AreEqual (XmlNodeType.Text, reader.NodeType, "#35");
1082 Assert.AreEqual (true, reader.HasValue, "#36");
1083 Assert.AreEqual ("1", reader.Value, "#37");
1086 VerifyDiffGramElement3 (reader);
1089 VerifyDiffGramElement2 (reader);
1092 Assert.AreEqual (XmlNodeType.Text, reader.NodeType, "#38");
1093 Assert.AreEqual (true, reader.HasValue, "#39");
1094 Assert.AreEqual ("DummyItem 1", reader.Value, "#40");
1097 Assert.AreEqual (false, reader.IsStartElement (), "#41");
1098 Assert.AreEqual ("DummyItem", reader.Name, "#42");
1099 Assert.AreEqual ("DummyItem", reader.LocalName, "#43");
1100 Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType, "#44");
1103 Assert.AreEqual (false, reader.IsStartElement (), "#45");
1104 Assert.AreEqual ("DummyTable", reader.Name, "#46");
1105 Assert.AreEqual ("DummyTable", reader.LocalName, "#47");
1106 Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType, "#48");
1109 Assert.AreEqual (true, reader.IsStartElement (), "#49");
1110 Assert.AreEqual (2, reader.Depth, "#50");
1111 Assert.AreEqual (true, reader.HasAttributes, "#51");
1112 Assert.AreEqual (false, reader.HasValue, "#52");
1113 Assert.AreEqual (false, reader.IsDefault, "#53");
1114 Assert.AreEqual (false, reader.IsEmptyElement, "#54");
1115 Assert.AreEqual ("DummyTable", reader.Name, "#55");
1116 Assert.AreEqual ("DummyTable", reader.LocalName, "#56");
1117 Assert.AreEqual (3, reader.AttributeCount, "#57");
1118 Assert.AreEqual ("DummyTable2", reader [0], "#58");
1119 Assert.AreEqual ("1", reader [1], "#59");
1120 Assert.AreEqual ("modified", reader [2], "#60");
1121 Assert.AreEqual (XmlNodeType.Element, reader.NodeType, "#61");
1124 VerifyDiffGramElement1 (reader);
1127 Assert.AreEqual (XmlNodeType.Text, reader.NodeType, "#62");
1128 Assert.AreEqual (true, reader.HasValue, "#63");
1129 Assert.AreEqual ("2", reader.Value, "#64");
1132 VerifyDiffGramElement3 (reader);
1135 VerifyDiffGramElement2 (reader);
1138 Assert.AreEqual (XmlNodeType.Text, reader.NodeType, "#65");
1139 Assert.AreEqual (true, reader.HasValue, "#66");
1140 Assert.AreEqual ("Changed_DummyItem 2", reader.Value, "#67");
1143 VerifyDiffGramElement4 (reader);
1146 VerifyDiffGramElement5 (reader);
1149 Assert.AreEqual (true, reader.IsStartElement (), "#68");
1150 Assert.AreEqual (2, reader.Depth, "#69");
1151 Assert.AreEqual (true, reader.HasAttributes, "#70");
1152 Assert.AreEqual (false, reader.HasValue, "#71");
1153 Assert.AreEqual (false, reader.IsDefault, "#72");
1154 Assert.AreEqual (false, reader.IsEmptyElement, "#73");
1155 Assert.AreEqual ("DummyTable", reader.Name, "#74");
1156 Assert.AreEqual ("DummyTable", reader.LocalName, "#75");
1157 Assert.AreEqual (2, reader.AttributeCount, "#76");
1158 Assert.AreEqual ("DummyTable3", reader [0], "#77");
1159 Assert.AreEqual ("2", reader [1], "#78");
1160 Assert.AreEqual (XmlNodeType.Element, reader.NodeType, "#79");
1163 VerifyDiffGramElement1 (reader);
1166 Assert.AreEqual (XmlNodeType.Text, reader.NodeType, "#80");
1167 Assert.AreEqual (true, reader.HasValue, "#81");
1168 Assert.AreEqual ("3", reader.Value, "#82");
1171 VerifyDiffGramElement3 (reader);
1174 VerifyDiffGramElement2 (reader);
1178 Assert.AreEqual (XmlNodeType.Text, reader.NodeType, "#83");
1179 Assert.AreEqual (true, reader.HasValue, "#84");
1180 Assert.AreEqual ("DummyItem 3", reader.Value, "#85");
1183 VerifyDiffGramElement4 (reader);
1186 VerifyDiffGramElement5 (reader);
1189 Assert.AreEqual (false, reader.IsStartElement (), "#86");
1190 Assert.AreEqual ("NewDataSet", reader.Name, "#87");
1191 Assert.AreEqual ("NewDataSet", reader.LocalName, "#88");
1192 Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType, "#89");
1195 Assert.AreEqual (true, reader.IsStartElement (), "#90");
1196 Assert.AreEqual (1, reader.Depth, "#91");
1197 Assert.AreEqual (false, reader.HasAttributes, "#92");
1198 Assert.AreEqual (false, reader.HasValue, "#93");
1199 Assert.AreEqual (false, reader.IsDefault, "#94");
1200 Assert.AreEqual (false, reader.IsEmptyElement, "#95");
1201 Assert.AreEqual ("diffgr:before", reader.Name, "#96");
1202 Assert.AreEqual ("before", reader.LocalName, "#97");
1203 Assert.AreEqual (XmlNodeType.Element, reader.NodeType, "#98");
1206 Assert.AreEqual (true, reader.IsStartElement (), "#99");
1207 Assert.AreEqual (2, reader.Depth, "#100");
1208 Assert.AreEqual (true, reader.HasAttributes, "#101");
1209 Assert.AreEqual (false, reader.HasValue, "#102");
1210 Assert.AreEqual (false, reader.IsDefault, "#103");
1211 Assert.AreEqual (false, reader.IsEmptyElement, "#104");
1212 Assert.AreEqual ("DummyTable", reader.Name, "#105");
1213 Assert.AreEqual ("DummyTable", reader.LocalName, "#106");
1214 Assert.AreEqual (2, reader.AttributeCount, "#107");
1215 Assert.AreEqual ("DummyTable2", reader [0], "#108");
1216 Assert.AreEqual ("1", reader [1], "#109");
1217 Assert.AreEqual (XmlNodeType.Element, reader.NodeType, "#110");
1220 VerifyDiffGramElement1 (reader);
1223 Assert.AreEqual (XmlNodeType.Text, reader.NodeType, "#111");
1224 Assert.AreEqual (true, reader.HasValue, "#112");
1225 Assert.AreEqual ("2", reader.Value, "#113");
1228 VerifyDiffGramElement3 (reader);
1231 VerifyDiffGramElement2 (reader);
1234 Assert.AreEqual (XmlNodeType.Text, reader.NodeType, "#114");
1235 Assert.AreEqual (true, reader.HasValue, "#115");
1236 Assert.AreEqual ("DummyItem 2", reader.Value, "#116");
1239 VerifyDiffGramElement4 (reader);
1242 VerifyDiffGramElement5 (reader);
1245 Assert.AreEqual (false, reader.IsStartElement (), "#117");
1246 Assert.AreEqual ("diffgr:before", reader.Name, "#118");
1247 Assert.AreEqual ("before", reader.LocalName, "#119");
1248 Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType, "#120");
1251 Assert.AreEqual (false, reader.IsStartElement (), "#121");
1252 Assert.AreEqual ("diffgr:diffgram", reader.Name, "#122");
1253 Assert.AreEqual ("diffgram", reader.LocalName, "#123");
1254 Assert.AreEqual (XmlNodeType.EndElement, reader.NodeType, "#124");
1260 public void XmlTest11 ()
1262 MakeParentTable1 ();
1263 FileStream stream = new FileStream (fileName1, FileMode.Create);
1264 parentTable1.WriteXml (stream, XmlWriteMode.IgnoreSchema);
1267 stream = new FileStream (fileName1, FileMode.Open);
1268 XmlReadMode mode = XmlReadMode.Auto ;
1269 DataTable table = new DataTable ();
1270 table.Columns.Add (new DataColumn ("id", System.Type.GetType ("System.Int32")));
1271 //This should not read anything as table name is not set
1272 mode = table.ReadXml (stream);
1275 Assert.AreEqual (XmlReadMode.IgnoreSchema, mode, "#1");
1276 Assert.AreEqual (String.Empty, table.TableName, "#2");
1277 Assert.AreEqual (0, table.Rows.Count, "#3");
1278 Assert.AreEqual (1, table.Columns.Count, "#4");
1279 Assert.AreEqual ("System.Int32", table.Columns [0].DataType.ToString (), "#5");
1280 Assert.AreEqual (null, table.DataSet, "#6");
1285 public void XmlTest12 ()
1287 MakeParentTable1 ();
1288 FileStream stream = new FileStream (fileName1, FileMode.Create);
1289 parentTable1.WriteXml (stream, XmlWriteMode.IgnoreSchema);
1292 stream = new FileStream (fileName1, FileMode.Open);
1293 DataTable table = new DataTable ("Table1");
1294 XmlReadMode mode = XmlReadMode.Auto;
1295 table.Columns.Add (new DataColumn ("id", System.Type.GetType ("System.Int32")));
1296 //Same as last test. ReadXml does not read anything as table names dont match
1297 mode = table.ReadXml (stream);
1300 Assert.AreEqual (XmlReadMode.IgnoreSchema, mode, "#1");
1301 Assert.AreEqual ("Table1", table.TableName, "#2");
1302 Assert.AreEqual (0, table.Rows.Count, "#3");
1303 Assert.AreEqual (1, table.Columns.Count, "#4");
1304 Assert.AreEqual ("System.Int32", table.Columns [0].DataType.ToString (), "#5");
1305 Assert.AreEqual (null, table.DataSet, "#6");
1310 public void XmlTest13 ()
1312 MakeParentTable1 ();
1313 FileStream stream = new FileStream (fileName1, FileMode.Create);
1314 parentTable1.WriteXml (stream, XmlWriteMode.IgnoreSchema);
1317 stream = new FileStream (fileName1, FileMode.Open);
1318 DataTable table = new DataTable ("ParentTable");
1319 XmlReadMode mode = XmlReadMode.Auto;
1320 table.Columns.Add (new DataColumn ("id", System.Type.GetType ("System.String")));
1321 mode = table.ReadXml (stream);
1324 Assert.AreEqual (XmlReadMode.IgnoreSchema, mode, "#1");
1325 Assert.AreEqual ("ParentTable", table.TableName, "#2");
1326 Assert.AreEqual (3, table.Rows.Count, "#3");
1327 Assert.AreEqual (1, table.Columns.Count, "#4");
1328 Assert.AreEqual ("System.String", table.Columns [0].DataType.ToString (), "#5");
1329 Assert.AreEqual (null, table.DataSet, "#6");
1332 DataRow row = table.Rows [0];
1333 Assert.AreEqual ("1", row [0], "#7");
1335 row = table.Rows [1];
1336 Assert.AreEqual ("2", row [0], "#8");
1338 row = table.Rows [2];
1339 Assert.AreEqual ("3", row [0], "#9");
1343 public void XmlTest14 ()
1346 MakeParentTable1 ();
1347 FileStream stream = new FileStream (fileName1, FileMode.Create);
1348 parentTable1.WriteXml (stream, XmlWriteMode.IgnoreSchema);
1351 stream = new FileStream (fileName1, FileMode.Open);
1352 //Create a target table which has nomatching column(s) names
1353 DataTable table = new DataTable ("ParentTable");
1354 XmlReadMode mode = XmlReadMode.Auto;
1355 table.Columns.Add (new DataColumn ("sid", System.Type.GetType ("System.String")));
1356 //ReadXml does not read anything as the column names are not matching
1357 mode = table.ReadXml (stream);
1360 Assert.AreEqual (XmlReadMode.IgnoreSchema, mode, "#1");
1361 Assert.AreEqual ("ParentTable", table.TableName, "#2");
1362 Assert.AreEqual (3, table.Rows.Count, "#3");
1363 Assert.AreEqual (1, table.Columns.Count, "#4");
1364 Assert.AreEqual ("sid", table.Columns [0].ColumnName, "#5");
1365 Assert.AreEqual ("System.String", table.Columns [0].DataType.ToString (), "#6");
1366 Assert.AreEqual (null, table.DataSet, "#7");
1369 foreach (DataRow row in table.Rows)
1370 Assert.AreEqual (null, row [0], "#8");
1374 public void XmlTest15 ()
1377 MakeParentTable1 ();
1378 FileStream stream = new FileStream (fileName1, FileMode.Create);
1379 parentTable1.WriteXml (stream, XmlWriteMode.IgnoreSchema);
1382 stream = new FileStream (fileName1, FileMode.Open);
1383 //Create a target table which has matching column(s) name and an extra column
1384 DataTable table = new DataTable ("ParentTable");
1385 XmlReadMode mode = XmlReadMode.Auto;
1386 table.Columns.Add (new DataColumn ("id", System.Type.GetType ("System.Int32")));
1387 table.Columns.Add (new DataColumn ("ParentItem", System.Type.GetType ("System.String")));
1388 table.Columns.Add (new DataColumn ("DepartmentID", System.Type.GetType ("System.Int32")));
1389 table.Columns.Add (new DataColumn ("DummyColumn", System.Type.GetType ("System.String")));
1391 mode = table.ReadXml (stream);
1394 Assert.AreEqual (XmlReadMode.IgnoreSchema, mode, "#1");
1395 Assert.AreEqual ("ParentTable", table.TableName, "#2");
1396 Assert.AreEqual (3, table.Rows.Count, "#3");
1397 Assert.AreEqual (4, table.Columns.Count, "#4");
1398 Assert.AreEqual (null, table.DataSet, "#5");
1401 Assert.AreEqual ("id", table.Columns [0].ColumnName, "#6");
1402 Assert.AreEqual ("System.Int32", table.Columns [0].DataType.ToString (), "#7");
1404 Assert.AreEqual ("ParentItem", table.Columns [1].ColumnName, "#8");
1405 Assert.AreEqual ("System.String", table.Columns [1].DataType.ToString (), "#9");
1407 Assert.AreEqual ("DepartmentID", table.Columns [2].ColumnName, "#10");
1408 Assert.AreEqual ("System.Int32", table.Columns [2].DataType.ToString (), "#11");
1410 Assert.AreEqual ("DummyColumn", table.Columns [3].ColumnName, "#12");
1411 Assert.AreEqual ("System.String", table.Columns [3].DataType.ToString (), "#13");
1414 DataRow row = table.Rows [0];
1415 Assert.AreEqual (1, row ["id"], "#14");
1416 Assert.AreEqual ("ParentItem 1", row ["ParentItem"], "#15");
1417 Assert.AreEqual (1, row ["DepartmentID"], "#16");
1418 Assert.AreEqual (null, row ["DummyColumn"], "#17");
1420 row = table.Rows [1];
1421 Assert.AreEqual (2, row ["id"], "#18");
1422 Assert.AreEqual ("ParentItem 2", row ["ParentItem"], "#19");
1423 Assert.AreEqual (2, row ["DepartmentID"], "#20");
1424 Assert.AreEqual (null, row ["DummyColumn"], "#21");
1427 row = table.Rows [2];
1428 Assert.AreEqual (3, row ["id"], "#22");
1429 Assert.AreEqual ("ParentItem 3", row ["ParentItem"], "#23");
1430 Assert.AreEqual (3, row ["DepartmentID"], "#24");
1431 Assert.AreEqual (null, row ["DummyColumn"], "#25");
1435 public void XmlTest16 ()
1437 MakeParentTable1 ();
1438 FileStream stream = new FileStream (fileName1, FileMode.Create);
1439 //Write the Xml with schema information
1440 parentTable1.WriteXml (stream, XmlWriteMode.WriteSchema);
1443 stream = new FileStream (fileName1, FileMode.Open);
1444 XmlReadMode mode = XmlReadMode.Auto ;
1445 DataTable table = new DataTable ();
1446 table.Columns.Add (new DataColumn ("id", System.Type.GetType ("System.Int32")));
1448 mode = table.ReadXml (stream);
1451 Assert.AreEqual (XmlReadMode.ReadSchema, mode, "#1");
1452 Assert.AreEqual (String.Empty, table.TableName, "#2");
1453 Assert.AreEqual (0, table.Rows.Count, "#3");
1454 Assert.AreEqual (1, table.Columns.Count, "#4");
1455 Assert.AreEqual ("System.Int32", table.Columns [0].DataType.ToString (), "#5");
1456 Assert.AreEqual (null, table.DataSet, "#6");
1460 public void XmlTest17 ()
1462 MakeParentTable1 ();
1463 FileStream stream = new FileStream (fileName1, FileMode.Create);
1464 parentTable1.WriteXml (stream, XmlWriteMode.WriteSchema);
1467 stream = new FileStream (fileName1, FileMode.Open);
1468 DataTable table = new DataTable ("Table1");
1469 table.Columns.Add (new DataColumn ("id", System.Type.GetType ("System.Int32")));
1471 table.ReadXml (stream);
1472 Assert.Fail ("#1 Exception was expected as table names dont match");
1473 } catch (Exception e) {
1474 Assert.AreEqual ("System.ArgumentException", e.GetType ().ToString (), "#1");
1482 public void XmlTest18 ()
1484 MakeParentTable1 ();
1485 FileStream stream = new FileStream (fileName1, FileMode.Create);
1486 parentTable1.WriteXml (stream, XmlWriteMode.WriteSchema);
1489 stream = new FileStream (fileName1, FileMode.Open);
1490 DataTable table = new DataTable ("ParentTable");
1491 XmlReadMode mode = XmlReadMode.Auto;
1492 table.Columns.Add (new DataColumn ("id", System.Type.GetType ("System.Int32")));
1493 table.Columns.Add (new DataColumn ("DepartmentID", System.Type.GetType ("System.Int32")));
1495 mode = table.ReadXml (stream);
1498 Assert.AreEqual (XmlReadMode.ReadSchema, mode, "#1");
1499 Assert.AreEqual ("ParentTable", table.TableName, "#2");
1500 Assert.AreEqual (3, table.Rows.Count, "#3");
1501 Assert.AreEqual (2, table.Columns.Count, "#4");
1502 Assert.AreEqual ("System.Int32", table.Columns [0].DataType.ToString (), "#5");
1503 Assert.AreEqual ("System.Int32", table.Columns [1].DataType.ToString (), "#6");
1504 Assert.AreEqual (null, table.DataSet, "#6");
1507 DataRow row = table.Rows [0];
1508 Assert.AreEqual (1, row [0], "#7");
1509 Assert.AreEqual (1, row [1], "#8");
1511 row = table.Rows [1];
1512 Assert.AreEqual (2, row [0], "#9");
1513 Assert.AreEqual (2, row [1], "#10");
1515 row = table.Rows [2];
1516 Assert.AreEqual (3, row [0], "#11");
1517 Assert.AreEqual (3, row [1], "#12");
1521 public void XmlTest19 ()
1523 MakeParentTable1 ();
1524 FileStream stream = new FileStream (fileName1, FileMode.Create);
1525 parentTable1.WriteXml (stream, XmlWriteMode.IgnoreSchema);
1528 stream = new FileStream (fileName1, FileMode.Open);
1529 DataSet ds = new DataSet ();
1530 DataTable table = new DataTable ();
1531 XmlReadMode mode = XmlReadMode.Auto;
1532 table.Columns.Add (new DataColumn ("id", System.Type.GetType ("System.Int32")));
1533 ds.Tables.Add (table);
1534 //ReadXml wont read anything as TableNames dont match
1535 mode = table.ReadXml (stream);
1538 Assert.AreEqual (XmlReadMode.IgnoreSchema, mode, "#1");
1539 Assert.AreEqual ("Table1", table.TableName, "#2");
1540 Assert.AreEqual (0, table.Rows.Count, "#3");
1541 Assert.AreEqual (1, table.Columns.Count, "#4");
1542 Assert.AreEqual ("System.Int32", table.Columns [0].DataType.ToString (), "#5");
1543 Assert.AreEqual ("System.Data.DataSet", table.DataSet.ToString (), "#6");
1544 Assert.AreEqual ("NewDataSet", table.DataSet.DataSetName, "#7");
1548 public void XmlTest20 ()
1550 MakeParentTable1 ();
1551 FileStream stream = new FileStream (fileName1, FileMode.Create);
1552 parentTable1.WriteXml (stream, XmlWriteMode.IgnoreSchema);
1555 stream = new FileStream (fileName1, FileMode.Open);
1556 DataSet ds = new DataSet ();
1557 DataTable table = new DataTable ("HelloWorldTable");
1558 XmlReadMode mode = XmlReadMode.Auto;
1559 table.Columns.Add (new DataColumn ("id", System.Type.GetType ("System.Int32")));
1560 ds.Tables.Add (table);
1561 //ReadXml wont read anything as TableNames dont match
1562 mode = table.ReadXml (stream);
1565 Assert.AreEqual (XmlReadMode.IgnoreSchema, mode, "#1");
1566 Assert.AreEqual ("HelloWorldTable", table.TableName, "#2");
1567 Assert.AreEqual (0, table.Rows.Count, "#3");
1568 Assert.AreEqual (1, table.Columns.Count, "#4");
1569 Assert.AreEqual ("System.Int32", table.Columns [0].DataType.ToString (), "#5");
1570 Assert.AreEqual ("System.Data.DataSet", table.DataSet.ToString (), "#6");
1571 Assert.AreEqual ("NewDataSet", table.DataSet.DataSetName, "#7");
1575 public void XmlTest21 ()
1577 MakeParentTable1 ();
1578 FileStream stream = new FileStream (fileName1, FileMode.Create);
1579 parentTable1.WriteXml (stream, XmlWriteMode.IgnoreSchema);
1582 stream = new FileStream (fileName1, FileMode.Open);
1583 DataSet ds = new DataSet ();
1584 DataTable table = new DataTable ("ParentTable");
1585 XmlReadMode mode = XmlReadMode.Auto;
1586 table.Columns.Add (new DataColumn ("id", System.Type.GetType ("System.Int32")));
1587 ds.Tables.Add (table);
1588 mode = table.ReadXml (stream);
1591 Assert.AreEqual (XmlReadMode.IgnoreSchema, mode, "#1");
1592 Assert.AreEqual ("ParentTable", table.TableName, "#2");
1593 Assert.AreEqual (3, table.Rows.Count, "#3");
1594 Assert.AreEqual (1, table.Columns.Count, "#4");
1595 Assert.AreEqual ("System.Int32", table.Columns [0].DataType.ToString (), "#5");
1596 Assert.AreEqual ("System.Data.DataSet", table.DataSet.ToString (), "#6");
1597 Assert.AreEqual ("NewDataSet", table.DataSet.DataSetName, "#7");
1600 DataRow row = table.Rows [0];
1601 Assert.AreEqual (1, row [0], "#8");
1603 row = table.Rows [1];
1604 Assert.AreEqual (2, row [0], "#9");
1606 row = table.Rows [2];
1607 Assert.AreEqual (3, row [0], "#10");
1611 public void XmlTest22 ()
1613 MakeParentTable1 ();
1614 FileStream stream = new FileStream (fileName1, FileMode.Create);
1615 parentTable1.WriteXml (stream, XmlWriteMode.WriteSchema);
1618 stream = new FileStream (fileName1, FileMode.Open);
1619 DataSet ds = new DataSet ();
1620 DataTable table = new DataTable ("Table1");
1621 table.Columns.Add (new DataColumn ("id", System.Type.GetType ("System.Int32")));
1622 ds.Tables.Add (table);
1625 table.ReadXml (stream);
1626 Assert.Fail ("#1 Exception was expected");
1627 } catch (Exception e) {
1628 Assert.AreEqual ("System.ArgumentException", e.GetType ().ToString (), "#1 Incorrect Exception Type");
1635 public void XmlTest23 ()
1637 MakeParentTable1 ();
1638 FileStream stream = new FileStream (fileName1, FileMode.Create);
1639 parentTable1.WriteXml (stream, XmlWriteMode.WriteSchema);
1642 stream = new FileStream (fileName1, FileMode.Open);
1643 DataSet ds = new DataSet ();
1644 DataTable table = new DataTable ("ParentTable");
1645 XmlReadMode mode = XmlReadMode.Auto;
1646 table.Columns.Add (new DataColumn ("id", System.Type.GetType ("System.Int32")));
1647 table.Columns.Add (new DataColumn ("DepartmentID", System.Type.GetType ("System.String")));
1649 ds.Tables.Add (table);
1650 mode = table.ReadXml (stream);
1653 Assert.AreEqual (XmlReadMode.ReadSchema, mode, "#1");
1654 Assert.AreEqual ("ParentTable", table.TableName, "#2");
1655 Assert.AreEqual ("NewDataSet", table.DataSet.DataSetName, "#3");
1656 Assert.AreEqual (3, table.Rows.Count, "#4");
1657 Assert.AreEqual (2, table.Columns.Count, "#5");
1658 Assert.AreEqual ("System.Int32", table.Columns [0].DataType.ToString (), "#6");
1659 Assert.AreEqual ("System.String", table.Columns [1].DataType.ToString (), "#7");
1662 DataRow row = table.Rows [0];
1663 Assert.AreEqual (1, row [0], "#8");
1664 Assert.AreEqual ("1", row [1], "#9");
1666 row = table.Rows [1];
1667 Assert.AreEqual (2, row [0], "#10");
1668 Assert.AreEqual ("2", row [1], "#11");
1670 row = table.Rows [2];
1671 Assert.AreEqual (3, row [0], "#12");
1672 Assert.AreEqual ("3", row [1], "#13");
1676 public void XmlTest24 ()
1679 FileStream stream = new FileStream (fileName1, FileMode.Create);
1680 dummyTable.WriteXml (stream, XmlWriteMode.DiffGram);
1683 //This test is the same for case when the table name is set but no schema is defined
1684 DataTable table = new DataTable ();
1685 stream = new FileStream (fileName1, FileMode.Open);
1688 table.ReadXml (stream);
1689 Assert.Fail ("#1 Exception expected as schema is not defined in the target table");
1690 } catch (Exception e) {
1691 Assert.AreEqual ("System.InvalidOperationException", e.GetType ().ToString (), "#1");
1699 public void XmlTest25 ()
1703 FileStream stream = new FileStream (fileName1, FileMode.Create);
1704 dummyTable.WriteXml (stream, XmlWriteMode.DiffGram);
1707 XmlReadMode mode = XmlReadMode.Auto;
1708 //Create a table but dont set the table name
1709 DataTable table = new DataTable ();
1710 //define the table schame partially
1711 table.Columns.Add ("id", typeof (int));
1712 stream = new FileStream (fileName1, FileMode.Open);
1713 mode = table.ReadXml (stream);
1716 Assert.AreEqual (String.Empty, table.TableName, "#1");
1717 Assert.AreEqual (1, table.Columns.Count, "#2");
1718 Assert.AreEqual (0, table.Rows.Count, "#3");
1719 Assert.AreEqual (XmlReadMode.DiffGram, mode, "#4");
1723 public void XmlTest26 ()
1726 FileStream stream = new FileStream (fileName1, FileMode.Create);
1727 dummyTable.WriteXml (stream, XmlWriteMode.DiffGram);
1730 //Create a table and set the table name
1731 DataTable table = new DataTable ("DummyTable");
1732 //define the table schame partially
1733 table.Columns.Add (new DataColumn ("DummyItem", System.Type.GetType ("System.String")));
1734 stream = new FileStream (fileName1, FileMode.Open);
1735 XmlReadMode mode = table.ReadXml (stream);
1738 Assert.AreEqual (XmlReadMode.DiffGram, mode, "#1");
1739 Assert.AreEqual (null, table.DataSet, "#2");
1740 Assert.AreEqual (1, table.Columns.Count, "#3");
1741 Assert.AreEqual ("System.String", table.Columns [0].DataType.ToString (), "#4");
1742 Assert.AreEqual (3, table.Rows.Count, "#5");
1745 DataRow row = table.Rows [0];
1746 Assert.AreEqual ("DummyItem 1", row [0], "#1");
1747 Assert.AreEqual (DataRowState.Unchanged, row.RowState, "#2");
1749 row = table.Rows [1];
1750 Assert.AreEqual ("Changed_DummyItem 2", row [0], "#3");
1751 Assert.AreEqual (DataRowState.Modified, row.RowState, "#4");
1753 row = table.Rows [2];
1754 Assert.AreEqual ("DummyItem 3", row [0], "#5");
1755 Assert.AreEqual (DataRowState.Unchanged, row.RowState, "#6");
1760 public void XmlTest27 ()
1763 FileStream stream = new FileStream (fileName1, FileMode.Create);
1764 dummyTable.WriteXml (stream, XmlWriteMode.DiffGram);
1767 //Create a table and set the table name
1768 DataTable table = new DataTable ("DummyTable");
1769 //define the table and add an extra column in the table
1770 table.Columns.Add (new DataColumn ("id", System.Type.GetType ("System.Int32")));
1771 table.Columns.Add (new DataColumn ("DummyItem", System.Type.GetType ("System.String")));
1772 //Add an extra column which does not match any column in the source diffram
1773 table.Columns.Add (new DataColumn ("ExtraColumn", System.Type.GetType ("System.Double")));
1775 stream = new FileStream (fileName1, FileMode.Open);
1776 XmlReadMode mode = table.ReadXml (stream);
1779 Assert.AreEqual (XmlReadMode.DiffGram, mode, "#1");
1780 Assert.AreEqual (null, table.DataSet, "#2");
1781 Assert.AreEqual (3, table.Columns.Count, "#3");
1782 Assert.AreEqual ("System.Int32", table.Columns [0].DataType.ToString (), "#4");
1783 Assert.AreEqual ("System.String", table.Columns [1].DataType.ToString (), "#5");
1784 Assert.AreEqual ("System.Double", table.Columns [2].DataType.ToString (), "#6");
1785 Assert.AreEqual (3, table.Rows.Count, "#7");
1788 DataRow row = table.Rows [0];
1789 Assert.AreEqual (1, row [0], "#8");
1790 Assert.AreEqual ("DummyItem 1", row [1], "#9");
1791 Assert.AreEqual ("System.DBNull", row [2].GetType ().ToString (), "#10");
1792 Assert.AreEqual (DataRowState.Unchanged, row.RowState, "#11");
1794 row = table.Rows [1];
1795 Assert.AreEqual (2, row [0], "#12");
1796 Assert.AreEqual ("Changed_DummyItem 2", row [1], "#13");
1797 Assert.AreEqual ("System.DBNull", row [2].GetType ().ToString (), "#14");
1798 Assert.AreEqual (DataRowState.Modified, row.RowState, "#15");
1800 row = table.Rows [2];
1801 Assert.AreEqual (3, row [0], "#16");
1802 Assert.AreEqual ("DummyItem 3", row [1], "#17");
1803 Assert.AreEqual ("System.DBNull", row [2].GetType ().ToString (), "#18");
1804 Assert.AreEqual (DataRowState.Unchanged, row.RowState, "#19");
1808 public void XmlTest28 ()
1811 FileStream stream = new FileStream (fileName1, FileMode.Create);
1812 dummyTable.WriteXml (stream, XmlWriteMode.DiffGram);
1815 //Create a table and set the table name
1816 DataTable table = new DataTable ("DummyTable");
1817 //define the table schame partially with a column name which does not match with any
1818 //table columns in the diffgram
1819 table.Columns.Add (new DataColumn ("WrongColumnName", System.Type.GetType ("System.String")));
1820 stream = new FileStream (fileName1, FileMode.Open);
1821 XmlReadMode mode = table.ReadXml (stream);
1824 Assert.AreEqual (XmlReadMode.DiffGram, mode, "#1");
1825 Assert.AreEqual (null, table.DataSet, "#2");
1826 Assert.AreEqual ("DummyTable", table.TableName, "#3");
1827 Assert.AreEqual (1, table.Columns.Count, "#4");
1828 Assert.AreEqual ("System.String", table.Columns [0].DataType.ToString (), "#5");
1830 Assert.AreEqual (3, table.Rows.Count, "#6");
1831 foreach (DataRow row in table.Rows)
1832 Assert.AreEqual ("System.DBNull", row [0].GetType ().ToString (), "#7");
1836 public void XmlTest29 ()
1838 MakeParentTable1 ();
1840 MakeSecondChildTable ();
1841 MakeDataRelation ();
1843 FileStream stream = new FileStream (fileName1, FileMode.Create);
1844 parentTable1.WriteXml (stream, XmlWriteMode.DiffGram, true);
1847 DataTable table1 = new DataTable ("ParentTable");
1848 table1.Columns.Add (new DataColumn (parentTable1.Columns [0].ColumnName, typeof (int)));
1849 table1.Columns.Add (new DataColumn (parentTable1.Columns [1].ColumnName, typeof (string)));
1850 table1.Columns.Add (new DataColumn (parentTable1.Columns [2].ColumnName, typeof (int)));
1852 //ReadXml on a DiffGram will never create any child relation
1853 XmlReadMode mode = table1.ReadXml (fileName1);
1855 Assert.AreEqual (XmlReadMode.DiffGram, mode, "#1");
1856 Assert.AreEqual (null, table1.DataSet, "#2");
1857 Assert.AreEqual ("ParentTable", table1.TableName, "#3");
1858 Assert.AreEqual (3, table1.Columns.Count, "#4");
1859 Assert.AreEqual ("System.Int32", table1.Columns [0].DataType.ToString (), "#5");
1860 Assert.AreEqual ("System.String", table1.Columns [1].DataType.ToString (), "#6");
1861 Assert.AreEqual ("System.Int32", table1.Columns [2].DataType.ToString (), "#7");
1862 Assert.AreEqual (0, table1.ChildRelations.Count, "#8");
1864 Assert.AreEqual (3, table1.Rows.Count, "#9");
1866 DataRow row = table1.Rows [0];
1867 Assert.AreEqual (1, row [0], "#10");
1868 Assert.AreEqual ("ParentItem 1", row [1], "#11");
1869 Assert.AreEqual (1, row [2], "#12");
1871 row = table1.Rows [1];
1872 Assert.AreEqual (2, row [0], "#13");
1873 Assert.AreEqual ("ParentItem 2", row [1], "#14");
1874 Assert.AreEqual (2, row [2], "#15");
1876 row = table1.Rows [2];
1877 Assert.AreEqual (3, row [0], "#16");
1878 Assert.AreEqual ("ParentItem 3", row [1], "#17");
1879 Assert.AreEqual (3, row [2], "#18");
1883 public void XmlTest30 ()
1886 FileStream stream = new FileStream (fileName1, FileMode.Create);
1887 dummyTable.WriteXml (stream, XmlWriteMode.DiffGram);
1890 Assert.AreEqual (3, dummyTable.Rows.Count, "#4b");
1892 DataSet dataSet = new DataSet ("HelloWorldDataSet");
1893 DataTable table = new DataTable ("DummyTable");
1894 table.Columns.Add (new DataColumn ("DummyItem", typeof (string)));
1895 dataSet.Tables.Add (table);
1897 //Call ReadXml on a table which belong to a DataSet
1898 table.ReadXml (fileName1);
1900 Assert.AreEqual ("HelloWorldDataSet", table.DataSet.DataSetName, "#1");
1901 Assert.AreEqual (1, table.Columns.Count, "#2");
1902 Assert.AreEqual ("System.String", table.Columns [0].DataType.ToString (), "#3");
1903 Assert.AreEqual (3, table.Rows.Count, "#4");
1906 DataRow row = table.Rows [0];
1907 Assert.AreEqual ("DummyItem 1", row [0], "#5");
1908 Assert.AreEqual (DataRowState.Unchanged, row.RowState, "#6");
1910 row = table.Rows [1];
1911 Assert.AreEqual ("Changed_DummyItem 2", row [0], "#7");
1912 Assert.AreEqual (DataRowState.Modified, row.RowState, "#8");
1914 row = table.Rows [2];
1915 Assert.AreEqual ("DummyItem 3", row [0], "#9");
1916 Assert.AreEqual (DataRowState.Unchanged, row.RowState, "#10");
1920 public void XmlTest31 ()
1922 FileStream stream = null;
1924 DataSet ds = new DataSet ();
1925 DataTable parent = new DataTable ("Parent");
1926 parent.Columns.Add (new DataColumn ("col1", typeof (int)));
1927 parent.Columns.Add (new DataColumn ("col2", typeof (string)));
1928 parent.Columns [0].Unique = true;
1930 DataTable child1 = new DataTable ("Child1");
1931 child1.Columns.Add (new DataColumn ("col3", typeof (int)));
1932 child1.Columns.Add (new DataColumn ("col4", typeof (string)));
1933 child1.Columns.Add (new DataColumn ("col5", typeof (int)));
1934 child1.Columns [2].Unique = true;
1936 DataTable child2 = new DataTable ("Child2");
1937 child2.Columns.Add (new DataColumn ("col6", typeof (int)));
1938 child2.Columns.Add (new DataColumn ("col7"));
1940 parent.Rows.Add (new object [] {1, "P_"});
1941 parent.Rows.Add (new object [] {2, "P_"});
1943 child1.Rows.Add (new object [] {1, "C1_", 3});
1944 child1.Rows.Add (new object [] {1, "C1_", 4});
1945 child1.Rows.Add (new object [] {2, "C1_", 5});
1946 child1.Rows.Add (new object [] {2, "C1_", 6});
1948 child2.Rows.Add (new object [] {3, "C2_"});
1949 child2.Rows.Add (new object [] {3, "C2_"});
1950 child2.Rows.Add (new object [] {4, "C2_"});
1951 child2.Rows.Add (new object [] {4, "C2_"});
1952 child2.Rows.Add (new object [] {5, "C2_"});
1953 child2.Rows.Add (new object [] {5, "C2_"});
1954 child2.Rows.Add (new object [] {6, "C2_"});
1955 child2.Rows.Add (new object [] {6, "C2_"});
1958 ds.Tables.Add (parent);
1959 ds.Tables.Add (child1);
1960 ds.Tables.Add (child2);
1962 DataRelation relation = new DataRelation ("Relation1", parent.Columns [0], child1.Columns [0]);
1963 parent.ChildRelations.Add (relation);
1965 relation = new DataRelation ("Relation2", child1.Columns [2], child2.Columns [0]);
1966 child1.ChildRelations.Add (relation);
1968 stream = new FileStream (fileName1, FileMode.Create);
1969 parent.WriteXml (stream, XmlWriteMode.WriteSchema, true);
1974 DataTable table = new DataTable ();
1975 table.ReadXml (fileName1);
1977 Assert.AreEqual ("Parent", table.TableName, "#1");
1978 Assert.AreEqual ("NewDataSet", table.DataSet.DataSetName, "#2");
1979 Assert.AreEqual (2, table.Columns.Count, "#3");
1980 Assert.AreEqual (2, table.Rows.Count, "#4");
1981 Assert.AreEqual (typeof (System.Int32), table.Columns [0].DataType, "#5");
1982 Assert.AreEqual (typeof (System.String), table.Columns [1].DataType, "#6");
1983 Assert.AreEqual (1, table.Constraints.Count, "#7");
1984 Assert.AreEqual (typeof (UniqueConstraint), table.Constraints [0].GetType (), "#8");
1985 Assert.AreEqual (1, table.ChildRelations.Count, "#9");
1986 Assert.AreEqual ("Relation1", table.ChildRelations [0].RelationName, "#10");
1987 Assert.AreEqual ("Parent", table.ChildRelations [0].ParentTable.TableName, "#11");
1988 Assert.AreEqual ("Child1", table.ChildRelations [0].ChildTable.TableName, "#12");
1990 DataTable table1 = table.ChildRelations [0].ChildTable;
1991 Assert.AreEqual ("Child1", table1.TableName, "#13");
1992 Assert.AreEqual ("NewDataSet", table1.DataSet.DataSetName, "#14");
1993 Assert.AreEqual (3, table1.Columns.Count, "#15");
1994 Assert.AreEqual (4, table1.Rows.Count, "#16");
1995 Assert.AreEqual (typeof (System.Int32), table1.Columns [0].DataType, "#17");
1996 Assert.AreEqual (typeof (System.String), table1.Columns [1].DataType, "#18");
1997 Assert.AreEqual (typeof (System.Int32), table1.Columns [2].DataType, "#19");
1998 Assert.AreEqual (2, table1.Constraints.Count, "#20");
1999 Assert.AreEqual (typeof (UniqueConstraint), table1.Constraints [0].GetType (), "#21");
2000 Assert.AreEqual (typeof (ForeignKeyConstraint), table1.Constraints [1].GetType (), "#22");
2001 Assert.AreEqual (1, table1.ParentRelations.Count, "#23");
2002 Assert.AreEqual (1, table1.ChildRelations.Count, "#24");
2003 Assert.AreEqual ("Relation1", table1.ParentRelations [0].RelationName, "#25");
2004 Assert.AreEqual ("Relation2", table1.ChildRelations [0].RelationName, "#26");
2005 Assert.AreEqual ("Parent", table1.ParentRelations [0].ParentTable.TableName, "#27");
2006 Assert.AreEqual ("Child2", table1.ChildRelations [0].ChildTable.TableName, "#28");
2008 table1 = table1.ChildRelations [0].ChildTable;
2009 Assert.AreEqual ("Child2", table1.TableName, "#28");
2010 Assert.AreEqual ("NewDataSet", table1.DataSet.DataSetName, "#29");
2011 Assert.AreEqual (2, table1.Columns.Count, "#30");
2012 Assert.AreEqual (8, table1.Rows.Count, "#31");
2013 Assert.AreEqual (typeof (System.Int32), table1.Columns [0].DataType, "#32");
2014 Assert.AreEqual (typeof (System.String), table1.Columns [1].DataType, "#33");
2015 Assert.AreEqual (1, table1.Constraints.Count, "#34");
2016 Assert.AreEqual (typeof (ForeignKeyConstraint), table1.Constraints [0].GetType (), "#35");
2017 Assert.AreEqual (1, table1.ParentRelations.Count, "#36");
2018 Assert.AreEqual (0, table1.ChildRelations.Count, "#37");
2019 Assert.AreEqual ("Relation2", table1.ParentRelations [0].RelationName, "#38");
2020 Assert.AreEqual ("Child1", table1.ParentRelations [0].ParentTable.TableName, "#39");