2c32971b532f4f8a60728a100f05bb67da3f8c1e
[mono.git] / mcs / class / System.Data / Test / System.Data / DataSetAssertion.cs
1 //
2 // DataSetAssertion.cs
3 //
4 // Author:
5 //      Atsushi Enomoto <atsushi@ximian.com>
6 //
7 // (C)2004 Novell Inc.
8 //
9
10 using System;
11 using System.IO;
12 using System.Data;
13 using System.Text;
14 using System.Xml;
15 using NUnit.Framework;
16
17 namespace MonoTests.System.Data
18 {
19         public class DataSetAssertion : Assertion
20         {
21                 public void AssertDataSet (string label, DataSet ds, string name, int tableCount, int relCount)
22                 {
23                         AssertEquals (label + ".DataSetName", name, ds.DataSetName);
24                         AssertEquals (label + ".TableCount", tableCount, ds.Tables.Count);
25                         if (relCount >= 0)
26                                 AssertEquals (label + ".RelationCount", relCount, ds.Relations.Count);
27                 }
28
29                 public void AssertDataTable (string label, DataTable dt, string name, int columnCount, int rowCount, int parentRelationCount, int childRelationCount)
30                 {
31                         AssertEquals (label + ".TableName", name, dt.TableName);
32                         AssertEquals (label + ".ColumnCount", columnCount, dt.Columns.Count);
33                         AssertEquals (label + ".RowCount", rowCount, dt.Rows.Count);
34                         AssertEquals (label + ".ParentRelCount", parentRelationCount, dt.ParentRelations.Count);
35                         AssertEquals (label + ".ChildRelCount", childRelationCount, dt.ChildRelations.Count);
36                 }
37
38                 public void AssertReadXml (DataSet ds, string label, string xml, XmlReadMode readMode, XmlReadMode resultMode, string datasetName, int tableCount)
39                 {
40                         AssertReadXml (ds, label, xml, readMode, resultMode, datasetName, tableCount, ReadState.EndOfFile);
41                 }
42
43                 // a bit detailed version
44                 public void AssertReadXml (DataSet ds, string label, string xml, XmlReadMode readMode, XmlReadMode resultMode, string datasetName, int tableCount, ReadState state)
45                 {
46                         XmlReader xtr = new XmlTextReader (xml, XmlNodeType.Element, null);
47                         AssertEquals (label + ".return", resultMode, ds.ReadXml (xtr, readMode));
48                         AssertDataSet (label + ".dataset", ds, datasetName, tableCount, -1);
49                         AssertEquals (label + ".readstate", state, xtr.ReadState);
50                 }
51
52                 public void AssertDataRelation (string label, DataRelation rel, string name, bool nested,
53                         string [] parentColNames, string [] childColNames,
54                         bool existsUK, bool existsFK)
55                 {
56                         AssertEquals (label + ".Name", name, rel.RelationName);
57                         AssertEquals (label + ".Nested", nested, rel.Nested);
58                         for (int i = 0; i < parentColNames.Length; i++)
59                                 AssertEquals (label + ".parentColumn_" + i, parentColNames [i], rel.ParentColumns [i].ColumnName);
60                         AssertEquals (label + ".ParentColCount", parentColNames.Length, rel.ParentColumns.Length);
61                         for (int i = 0; i < childColNames.Length; i++)
62                                 AssertEquals (label + ".childColumn_" + i, childColNames [i], rel.ChildColumns [i].ColumnName);
63                         AssertEquals (label + ".ChildColCount", childColNames.Length, rel.ChildColumns.Length);
64                         if (existsUK)
65                                 AssertNotNull (label + ".uniqKeyExists", rel.ParentKeyConstraint);
66                         else
67                                 AssertNull (label + ".uniqKeyNotExists", rel.ParentKeyConstraint);
68                         if (existsFK)
69                                 AssertNotNull (label + ".fkExists", rel.ChildKeyConstraint);
70                         else
71                                 AssertNull (label + ".fkNotExists", rel.ChildKeyConstraint);
72                 }
73
74                 public void AssertUniqueConstraint (string label, UniqueConstraint uc, 
75                         string name, bool isPrimaryKey, string [] colNames)
76                 {
77                         AssertEquals (label + ".name", name, uc.ConstraintName);
78                         AssertEquals (label + ".pkey", isPrimaryKey, uc.IsPrimaryKey);
79                         for (int i = 0; i < colNames.Length; i++)
80                                 AssertEquals (label + ".column_" + i, colNames [i], uc.Columns [i].ColumnName);
81                         AssertEquals (label + ".colCount", colNames.Length, uc.Columns.Length);
82                 }
83
84                 public void AssertForeignKeyConstraint (string label,
85                         ForeignKeyConstraint fk, string name, 
86                         AcceptRejectRule acceptRejectRule, Rule delRule, Rule updateRule,
87                         string [] colNames, string [] relColNames)
88                 {
89                         AssertEquals (label + ".name", name, fk.ConstraintName);
90                         AssertEquals (label + ".acceptRejectRule", acceptRejectRule, fk.AcceptRejectRule);
91                         AssertEquals (label + ".delRule", delRule, fk.DeleteRule);
92                         AssertEquals (label + ".updateRule", updateRule, fk.UpdateRule);
93                         for (int i = 0; i < colNames.Length; i++)
94                                 AssertEquals (label + ".column_" + i, colNames [i], fk.Columns [i].ColumnName);
95                         AssertEquals (label + ".colCount", colNames.Length, fk.Columns.Length);
96                         for (int i = 0; i < relColNames.Length; i++)
97                                 AssertEquals (label + ".relatedColumn_" + i, relColNames [i], fk.RelatedColumns [i].ColumnName);
98                         AssertEquals (label + ".relatedColCount", relColNames.Length, fk.RelatedColumns.Length);
99                 }
100 \r
101                 public void AssertDataColumn (string label, DataColumn col, \r
102                         string colName, bool allowDBNull, \r
103                         bool autoIncr, int autoIncrSeed, int autoIncrStep, \r
104                         string caption, MappingType colMap, \r
105                         Type type, object defaultValue, string expression, \r
106                         int maxLength, string ns, int ordinal, string prefix, \r
107                         bool readOnly, bool unique)\r
108                 {\r
109                         AssertEquals (label + "ColumnName: " , colName, col.ColumnName);\r
110                         AssertEquals (label + "AllowDBNull? " , allowDBNull, col.AllowDBNull);\r
111                         AssertEquals (label + "AutoIncrement? " , autoIncr, col.AutoIncrement);\r
112                         AssertEquals (label + "  Seed: " , autoIncrSeed, col.AutoIncrementSeed);\r
113                         AssertEquals (label + "  Step: " , autoIncrStep, col.AutoIncrementStep);\r
114                         AssertEquals (label + "Caption " , caption, col.Caption);\r
115                         AssertEquals (label + "Mapping: " , colMap, col.ColumnMapping);\r
116                         AssertEquals (label + "Type: " , type, col.DataType);\r
117                         AssertEquals (label + "DefaultValue: " , defaultValue, col.DefaultValue);\r
118                         AssertEquals (label + "Expression: " , expression, col.Expression);\r
119                         AssertEquals (label + "MaxLength: " , maxLength, col.MaxLength);\r
120                         AssertEquals (label + "Namespace: " , ns, col.Namespace);\r
121                         AssertEquals (label + "Ordinal: " , ordinal, col.Ordinal);\r
122                         AssertEquals (label + "Prefix: " , prefix, col.Prefix);\r
123                         AssertEquals (label + "ReadOnly: " , readOnly, col.ReadOnly);\r
124                         AssertEquals (label + "Unique: " , unique, col.Unique);\r
125                 }\r
126         }
127 }
128