[bcl] Add NUnitHelper.cs with API not in nunit-lite
[mono.git] / mcs / class / System.Data / Test / System.Data / DataRelationTest.cs
1 //\r
2 // DataRelationTest.cs - NUnit Test Cases for  DataRelation\r
3 //\r
4 // Authors:\r
5 //   Ville Palo (vi64pa@koti.soon.fi)\r
6 //   Martin Willemoes Hansen (mwh@sysrq.dk)\r
7 //\r
8 // (C) 2003 Ville Palo\r
9 // (C) 2003 Martin Willemoes Hansen\r
10 // \r
11 \r
12 //\r
13 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)\r
14 //\r
15 // Permission is hereby granted, free of charge, to any person obtaining\r
16 // a copy of this software and associated documentation files (the\r
17 // "Software"), to deal in the Software without restriction, including\r
18 // without limitation the rights to use, copy, modify, merge, publish,\r
19 // distribute, sublicense, and/or sell copies of the Software, and to\r
20 // permit persons to whom the Software is furnished to do so, subject to\r
21 // the following conditions:\r
22 // \r
23 // The above copyright notice and this permission notice shall be\r
24 // included in all copies or substantial portions of the Software.\r
25 // \r
26 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
27 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
28 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
29 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
30 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
31 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
32 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
33 //\r
34 using NUnit.Framework;\r
35 using System;\r
36 using System.Data;\r
37 \r
38 namespace MonoTests.System.Data\r
39 {\r
40         [TestFixture]\r
41         public class DataRelationTest\r
42         {\r
43                 private DataSet Set = null;\r
44                 private DataTable Mom = null;\r
45                 private DataTable Child = null;         \r
46 \r
47                 [SetUp]\r
48                 public void GetReady ()\r
49                 {\r
50                         Set = new DataSet ();\r
51                         Mom = new DataTable ("Mom");\r
52                         Child = new DataTable ("Child");\r
53                         Set.Tables.Add (Mom);\r
54                         Set.Tables.Add (Child);\r
55                         \r
56                         DataColumn Col = new DataColumn ("Name");\r
57                         DataColumn Col2 = new DataColumn ("ChildName");\r
58                         Mom.Columns.Add (Col);\r
59                         Mom.Columns.Add (Col2);\r
60                         \r
61                         DataColumn Col3 = new DataColumn ("Name");\r
62                         DataColumn Col4 = new DataColumn ("Age");\r
63                         Col4.DataType = Type.GetType ("System.Int16");\r
64                         Child.Columns.Add (Col3);\r
65                         Child.Columns.Add (Col4);\r
66                 }  \r
67 \r
68                 [Test]\r
69                 public void Foreign ()\r
70                 {\r
71                         DataRelation Relation = new DataRelation ("Rel", Mom.Columns [1], Child.Columns [0]);\r
72                         Set.Relations.Add (Relation);\r
73 \r
74                         DataRow Row = Mom.NewRow ();\r
75                         Row [0] = "Teresa";\r
76                         Row [1] = "Jack";\r
77                         Mom.Rows.Add (Row);\r
78                         \r
79                         Row = Mom.NewRow ();\r
80                         Row [0] = "Teresa";\r
81                         Row [1] = "Dick";\r
82                         Mom.Rows.Add (Row);\r
83                         \r
84                         Row = Mom.NewRow ();\r
85                         Row [0] = "Mary";\r
86                         Row [1] = "Harry";\r
87                         \r
88                         Row = Child.NewRow ();\r
89                         Row [0] = "Jack";\r
90                         Row [1] = 16;\r
91                         Child.Rows.Add (Row);\r
92                         \r
93                         Row = Child.NewRow ();\r
94                         Row [0] = "Dick";\r
95                         Row [1] = 56;\r
96                         Child.Rows.Add (Row);\r
97                         \r
98                         Assert.That (Child.Rows.Count, Is.EqualTo (2), "test#01");\r
99                         \r
100                         Row = Mom.Rows [0];\r
101                         Row.Delete ();\r
102                         \r
103                         Assert.That (Child.Rows.Count, Is.EqualTo (1), "test#02");\r
104                         \r
105                         Row = Mom.NewRow ();\r
106                         Row [0] = "Teresa";\r
107                         Row [1] = "Dick";\r
108                         \r
109                         try {\r
110                                 Mom.Rows.Add (Row);\r
111                                 Assert.Fail ("test#03");\r
112                         } catch (Exception e) {\r
113                                 Assert.That (e, Is.TypeOf (typeof(ConstraintException)), "test#04");\r
114                                 // Never premise English.\r
115                                 //Assert.That (e.Message, Is.EqualTo("Column 'ChildName' is constrained to be unique.  Value 'Dick' is already present."), "test#05");\r
116                         }                       \r
117 \r
118                         Row = Mom.NewRow ();                                 \r
119                         Row [0] = "Teresa";                                  \r
120                         Row [1] = "Mich";                                    \r
121                         Mom.Rows.Add (Row);                                  \r
122                         Assert.That (Child.Rows.Count, Is.EqualTo (1), "test#06");\r
123                         \r
124                         Row = Child.NewRow ();                               \r
125                         Row [0] = "Jack";                                    \r
126                         Row [1] = 16;                                        \r
127                         \r
128                         try {                                                \r
129                                 Child.Rows.Add (Row);                               \r
130                                 Assert.Fail ("test#07");\r
131                         } catch (Exception e) {                              \r
132                                 Assert.That (e, Is.TypeOf (typeof(InvalidConstraintException)), "test#08");\r
133                         }                                                    \r
134                 }\r
135 \r
136                 [Test]\r
137                 [ExpectedException (typeof(InvalidConstraintException))]\r
138                 public void InvalidConstraintException ()\r
139                 {\r
140                         // Parent Columns and Child Columns don't have type-matching columns.\r
141                         DataRelation Relation = new DataRelation ("Rel", Mom.Columns [1], Child.Columns [1], true);\r
142                 }\r
143 \r
144                 [Test]\r
145                 [ExpectedException (typeof (InvalidConstraintException))]\r
146                 public void InvalidConstraintException2 ()\r
147                 {\r
148                         // Parent Columns and Child Columns don't have type-matching columns.\r
149                         Child.Columns [1].DataType = Mom.Columns [1].DataType;\r
150                         \r
151                         DataRelation Relation = new DataRelation ("Rel", Mom.Columns [1], Child.Columns [1], true);\r
152                         Set.Relations.Add (Relation);\r
153                         Assert.That (Set.Relations.Count, Is.EqualTo (1), "test#01");\r
154                         \r
155                         Child.Columns [1].DataType = Type.GetType ("System.Double");\r
156                 }\r
157 \r
158                 [Test]\r
159                 public void DataSetRelations ()\r
160                 {\r
161                         DataRelation Relation;\r
162                         Assert.That (Set.Relations.Count, Is.EqualTo (0), "test#01");\r
163                         Assert.That (Mom.ParentRelations.Count, Is.EqualTo (0), "test#02");\r
164                         Assert.That (Mom.ChildRelations.Count, Is.EqualTo (0), "test#03");\r
165                         Assert.That (Child.ParentRelations.Count, Is.EqualTo (0), "test#04");\r
166                         Assert.That (Child.ChildRelations.Count, Is.EqualTo (0), "test#05");\r
167                         \r
168                         Relation = new DataRelation ("Rel", Mom.Columns [1], Child.Columns [0]);\r
169                         Set.Relations.Add (Relation);\r
170                         \r
171                         Assert.That (Set.Relations.Count, Is.EqualTo (1), "test#06");\r
172                         Assert.That (Mom.ParentRelations.Count, Is.EqualTo (0), "test#07");\r
173                         Assert.That (Mom.ChildRelations.Count, Is.EqualTo (1), "test#08");\r
174                         Assert.That (Child.ParentRelations.Count, Is.EqualTo (1), "test#09");\r
175                         Assert.That (Child.ChildRelations.Count, Is.EqualTo (0), "test#10");\r
176                                                 \r
177                         Relation = Set.Relations [0];\r
178                         Assert.That (Relation.ParentColumns.Length, Is.EqualTo (1), "test#11");\r
179                         Assert.That (Relation.ChildColumns.Length, Is.EqualTo (1), "test#12");\r
180                         Assert.That (Relation.ChildKeyConstraint.ConstraintName, Is.EqualTo ("Rel"), "test#13");\r
181                         Assert.That (Relation.ParentKeyConstraint.ConstraintName, Is.EqualTo ("Constraint1"), "test#14");\r
182                 }\r
183 \r
184                 [Test]\r
185                 public void Constraints ()\r
186                 {\r
187                         Assert.That (Mom.Constraints.Count, Is.EqualTo (0), "test#01");\r
188                         Assert.That (Child.Constraints.Count, Is.EqualTo (0), "test#02");\r
189 \r
190                         DataRelation Relation = new DataRelation ("Rel", Mom.Columns [1], Child.Columns [0]);\r
191                         Set.Relations.Add (Relation);\r
192                         \r
193                         Assert.That (Mom.Constraints.Count, Is.EqualTo (1), "test#03");\r
194                         Assert.That (Child.Constraints.Count, Is.EqualTo (1), "test#04");\r
195                         Assert.That (Child.Constraints [0], Is.TypeOf (typeof(ForeignKeyConstraint)), "test#05");\r
196                         Assert.That (Mom.Constraints [0], Is.TypeOf (typeof(UniqueConstraint)), "test#06");\r
197                 }\r
198 \r
199                 [Test]\r
200                 public void Creation ()\r
201                 {\r
202                         DataRelation Relation = new DataRelation ("Rel", Mom.Columns [1], Child.Columns [0]);\r
203                         Set.Relations.Add (Relation);\r
204                         DataRelation Test = null;\r
205                         Assert.That (Mom.ChildRelations.Count, Is.EqualTo (1), "test#01");\r
206                         Assert.That (Child.ChildRelations.Count, Is.EqualTo (0), "test#02");\r
207                         Assert.That (Mom.ParentRelations.Count, Is.EqualTo (0), "test#03");\r
208                         Assert.That (Child.ParentRelations.Count, Is.EqualTo (1), "test#04");\r
209                                 \r
210                         Test = Child.ParentRelations [0];\r
211                         Assert.That (Test.ToString (), Is.EqualTo ("Rel"), "test#05");\r
212                         Assert.That (Test.RelationName, Is.EqualTo ("Rel"), "test#06");\r
213                         Assert.That (Test.ParentTable.TableName, Is.EqualTo ("Mom"), "test#07");\r
214                         Assert.That (Test.ParentKeyConstraint.Columns.Length, Is.EqualTo (1), "test#08");\r
215                         Assert.That (Test.ParentKeyConstraint.IsPrimaryKey, Is.False, "test#09");\r
216                         Assert.That (Test.ParentColumns.Length, Is.EqualTo (1), "test#10");\r
217                         Assert.That (Test.Nested, Is.False, "test#11");\r
218                         Assert.That (Test.ExtendedProperties.Count, Is.EqualTo (0), "test#12");\r
219                         Assert.That (Test.ChildTable.TableName, Is.EqualTo ("Child"), "test#13");\r
220                         Assert.That (Test.ChildKeyConstraint.ConstraintName, Is.EqualTo ("Rel"), "test#14");\r
221                         Assert.That (Test.ChildColumns.Length, Is.EqualTo (1), "test#15");\r
222                 }\r
223 \r
224                 [Test]\r
225                 public void Creation2 ()\r
226                 {\r
227                         DataSet Set = new DataSet ();\r
228                         DataTable Mom2 = new DataTable ("Mom");\r
229                         DataTable Child2 = new DataTable ("Child");\r
230                         DataTable Hubby = new DataTable ("Hubby");\r
231                         Set.Tables.Add (Mom2);\r
232                         Set.Tables.Add (Child2);\r
233                         Set.Tables.Add (Hubby);\r
234                                                 \r
235                         DataColumn Col = new DataColumn ("Name");\r
236                         DataColumn Col2 = new DataColumn ("ChildName");\r
237                         DataColumn Col3 = new DataColumn ("hubby");\r
238                         Mom2.Columns.Add (Col);\r
239                         Mom2.Columns.Add (Col2);\r
240                         Mom2.Columns.Add (Col3);\r
241                         \r
242                         DataColumn Col4 = new DataColumn ("Name");\r
243                         DataColumn Col5 = new DataColumn ("Age");\r
244                         DataColumn Col6 = new DataColumn ("father");\r
245                         Child2.Columns.Add (Col4);\r
246                         Child2.Columns.Add (Col5);\r
247                         Child2.Columns.Add (Col6);\r
248                         \r
249                         \r
250                         DataColumn Col7 = new DataColumn ("Name");\r
251                         DataColumn Col8 = new DataColumn ("Age");\r
252                         Hubby.Columns.Add (Col7);\r
253                         Hubby.Columns.Add (Col8);\r
254                         \r
255                         DataColumn [] Parents = new DataColumn [2];\r
256                         Parents [0] = Col2;\r
257                         Parents [1] = Col3;\r
258                         DataColumn [] Childs = new DataColumn [2];\r
259                         Childs [0] = Col4;\r
260                         Childs [1] = Col7;\r
261                         \r
262                         DataRelation Relation = null;\r
263                         try {\r
264                                 Relation = new DataRelation ("Rel", Parents, Childs);\r
265                                 Assert.Fail ("test#01");\r
266                         } catch (InvalidConstraintException e) {\r
267 //                              Assert.That (e.GetType (), Is.EqualTo(typeof (InvalidConstraintException)), "test#02");                         \r
268 //                              Assert.That (e.Message, Is.EqualTo("Cannot create a Key from Columns that belong to different tables."), "test#03");\r
269                         }\r
270                         \r
271                         Childs [1] = Col6;\r
272                         Relation = new DataRelation ("Rel", Parents, Childs);\r
273                         \r
274                         Set.Relations.Add (Relation);\r
275                         \r
276                         DataRelation Test = null;\r
277                         Assert.That (Mom2.ChildRelations.Count, Is.EqualTo (1), "test#01");\r
278                         Assert.That (Child2.ChildRelations.Count, Is.EqualTo (0), "test#02");\r
279                         Assert.That (Mom2.ParentRelations.Count, Is.EqualTo (0), "test#03");\r
280                         Assert.That (Child2.ParentRelations.Count, Is.EqualTo (1), "test#04");\r
281                                 \r
282                         Test = Child2.ParentRelations [0];\r
283                         Assert.That (Test.ToString (), Is.EqualTo ("Rel"), "test#05");\r
284                         Assert.That (Test.RelationName, Is.EqualTo ("Rel"), "test#06");\r
285                         Assert.That (Test.ParentTable.TableName, Is.EqualTo ("Mom"), "test#07");\r
286                         Assert.That (Test.ParentKeyConstraint.Columns.Length, Is.EqualTo (2), "test#08");\r
287                         Assert.That (Test.ParentKeyConstraint.IsPrimaryKey, Is.False, "test#09");\r
288                         Assert.That (Test.ParentColumns.Length, Is.EqualTo (2), "test#10");\r
289                         Assert.That (Test.Nested, Is.False, "test#11");\r
290                         Assert.That (Test.ExtendedProperties.Count, Is.EqualTo (0), "test#12");\r
291                         Assert.That (Test.ChildTable.TableName, Is.EqualTo ("Child"), "test#13");\r
292                         Assert.That (Test.ChildKeyConstraint.ConstraintName, Is.EqualTo ("Rel"), "test#14");\r
293                         Assert.That (Test.ChildColumns.Length, Is.EqualTo (2), "test#15");\r
294                         Assert.That (Mom2.Constraints.Count, Is.EqualTo (1), "test#16");\r
295                         Assert.That (Mom2.Constraints [0].ToString (), Is.EqualTo ("Constraint1"), "test#17");\r
296                         Assert.That (Child2.Constraints.Count, Is.EqualTo (1), "test#18");\r
297                         Assert.That (Hubby.Constraints.Count, Is.EqualTo (0), "test#19");\r
298                 }\r
299 \r
300                 [Test]\r
301                 public void Creation3 ()\r
302                 {\r
303                         DataRelation Relation = new DataRelation ("Rel", Mom.Columns [1], Child.Columns [0], false);\r
304                         Set.Relations.Add (Relation);\r
305                         DataRelation Test = null;\r
306         \r
307                         Assert.That (Mom.ChildRelations.Count, Is.EqualTo (1), "test#01");\r
308                         Assert.That (Child.ChildRelations.Count, Is.EqualTo (0), "test#02");\r
309                         Assert.That (Mom.ParentRelations.Count, Is.EqualTo (0), "test#03");\r
310                         Assert.That (Child.ParentRelations.Count, Is.EqualTo (1), "test#04");\r
311 \r
312                         Test = Child.ParentRelations [0];\r
313                         \r
314                         Assert.That (Test.ToString (), Is.EqualTo ("Rel"), "test#05");\r
315 \r
316                         Assert.That (Test.RelationName, Is.EqualTo ("Rel"), "test#06");\r
317                         Assert.That (Test.ParentTable.TableName, Is.EqualTo ("Mom"), "test#07");\r
318 \r
319                         Assert.That (Test.ParentKeyConstraint, Is.Null, "test#08");\r
320 \r
321                         Assert.That (Test.ParentKeyConstraint, Is.Null, "test#09");\r
322 \r
323                         Assert.That (Test.ParentColumns.Length, Is.EqualTo (1), "test#10");\r
324                         Assert.That (Test.Nested, Is.False, "test#11");\r
325                         Assert.That (Test.ExtendedProperties.Count, Is.EqualTo (0), "test#12");\r
326                         Assert.That (Test.ChildTable.TableName, Is.EqualTo ("Child"), "test#13");\r
327 \r
328                         Assert.That (Test.ChildKeyConstraint, Is.Null, "test#14");\r
329                         Assert.That (Test.ChildColumns.Length, Is.EqualTo (1), "test#15");\r
330                         Assert.That (Mom.Constraints.Count, Is.EqualTo (0), "test#16");\r
331                         Assert.That (Child.Constraints.Count, Is.EqualTo (0), "test#17");\r
332                 }\r
333 \r
334                 [Test]\r
335                 public void Creation4 ()\r
336                 {\r
337                         DataRelation Relation = new DataRelation ("Rel", "Mom", "Child", \r
338                                                                   new string [] {"ChildName"},\r
339                                                                   new string [] {"Name"}, true);\r
340                         \r
341                         try {\r
342                                 Set.Relations.Add (Relation);\r
343                                 Assert.Fail ("test#01");\r
344                         } catch (Exception e) {\r
345                                 Assert.That (e, Is.TypeOf (typeof(NullReferenceException)), "test#02");\r
346                         }\r
347                         \r
348                         try {\r
349                                 Set.Relations.AddRange (new DataRelation [] {Relation});\r
350                                 Assert.Fail ("test#03");\r
351                         } catch (Exception e) {\r
352                                 Assert.That (e, Is.TypeOf (typeof(NullReferenceException)), "test#04");\r
353                         }\r
354                         \r
355                         Set.BeginInit ();\r
356                         Set.Relations.AddRange (new DataRelation [] {Relation});\r
357                         Set.EndInit ();\r
358                         \r
359                         DataRelation Test = null;\r
360                         Assert.That (Mom.ChildRelations.Count, Is.EqualTo (1), "test#01");\r
361                         Assert.That (Child.ChildRelations.Count, Is.EqualTo (0), "test#02");\r
362                         Assert.That (Mom.ParentRelations.Count, Is.EqualTo (0), "test#03");\r
363                         Assert.That (Child.ParentRelations.Count, Is.EqualTo (1), "test#04");\r
364                                 \r
365                         Test = Child.ParentRelations [0];\r
366                         Assert.That (Test.ToString (), Is.EqualTo ("Rel"), "test#05");\r
367                         Assert.That (Test.RelationName, Is.EqualTo ("Rel"), "test#06");\r
368                         Assert.That (Test.ParentTable.TableName, Is.EqualTo ("Mom"), "test#07");\r
369                         \r
370                         Assert.That (Test.ParentKeyConstraint, Is.Null, "test#08");\r
371                                                 \r
372                         Assert.That (Test.ParentColumns.Length, Is.EqualTo (1), "test#10");\r
373                         Assert.That (Test.Nested, Is.True, "test#11");\r
374                         Assert.That (Test.ExtendedProperties.Count, Is.EqualTo (0), "test#12");\r
375                         Assert.That (Test.ChildTable.TableName, Is.EqualTo ("Child"), "test#13");\r
376                         Assert.That (Test.ChildKeyConstraint, Is.Null, "test#14");\r
377                         Assert.That (Test.ChildColumns.Length, Is.EqualTo (1), "test#15");\r
378                         \r
379                 }\r
380 \r
381                 [Test]\r
382                 public void RelationFromSchema ()\r
383                 {\r
384                         DataSet Set = new DataSet ();\r
385                         Set.ReadXmlSchema ("Test/System.Data/store.xsd");\r
386                         DataTable Table = Set.Tables [0];\r
387                         \r
388                         Assert.That (Table.CaseSensitive, Is.False, "test#01");\r
389                         Assert.That (Table.ChildRelations.Count, Is.EqualTo (1), "test#02");\r
390                         Assert.That (Table.ParentRelations.Count, Is.EqualTo (0), "test#03");\r
391                         Assert.That (Table.Constraints.Count, Is.EqualTo (1), "test#04");\r
392                         Assert.That (Table.PrimaryKey.Length, Is.EqualTo (1), "test#05");\r
393                         Assert.That (Table.Rows.Count, Is.EqualTo (0), "test#06");\r
394                         Assert.That (Table.TableName, Is.EqualTo ("bookstore"), "test#07");\r
395                         Assert.That (Table.Columns.Count, Is.EqualTo (1), "test#08");\r
396                                                 \r
397                         DataRelation Relation = Table.ChildRelations [0];\r
398                         Assert.That (Relation.ChildColumns.Length, Is.EqualTo (1), "test#09");\r
399                         Assert.That (Relation.ChildKeyConstraint.ConstraintName, Is.EqualTo ("bookstore_book"), "test#10");\r
400                         Assert.That (Relation.ChildKeyConstraint.Columns.Length, Is.EqualTo (1), "test#11");\r
401                         Assert.That (Relation.ChildTable.TableName, Is.EqualTo ("book"), "test#12");\r
402                         Assert.That (Relation.DataSet.DataSetName, Is.EqualTo ("NewDataSet"), "test#13");\r
403                         Assert.That (Relation.ExtendedProperties.Count, Is.EqualTo (0), "test#14");\r
404                         Assert.That (Relation.Nested, Is.True, "test#15");\r
405                         Assert.That (Relation.ParentColumns.Length, Is.EqualTo (1), "test#16");\r
406                         Assert.That (Relation.ParentKeyConstraint.ConstraintName, Is.EqualTo ("Constraint1"), "test#17");\r
407                         Assert.That (Relation.ParentTable.TableName, Is.EqualTo ("bookstore"), "test#18");\r
408                         Assert.That (Relation.RelationName, Is.EqualTo ("bookstore_book"), "test#19");\r
409 \r
410                         Table = Set.Tables [1];\r
411                         \r
412                         Assert.That (Table.CaseSensitive, Is.False, "test#20");\r
413                         Assert.That (Table.ChildRelations.Count, Is.EqualTo (1), "test#21");\r
414                         Assert.That (Table.ParentRelations.Count, Is.EqualTo (1), "test#22");\r
415                         Assert.That (Table.Constraints.Count, Is.EqualTo (2), "test#23");\r
416                         Assert.That (Table.PrimaryKey.Length, Is.EqualTo (1), "test#24");\r
417                         Assert.That (Table.Rows.Count, Is.EqualTo (0), "test#25");\r
418                         Assert.That (Table.TableName, Is.EqualTo ("book"), "test#26");\r
419                         Assert.That (Table.Columns.Count, Is.EqualTo (5), "test#27");\r
420                 \r
421                         Relation = Table.ChildRelations [0];\r
422                         Assert.That (Relation.ChildColumns.Length, Is.EqualTo (1), "test#28");\r
423                         Assert.That (Relation.ChildKeyConstraint.ConstraintName, Is.EqualTo ("book_author"), "test#29");\r
424                         Assert.That (Relation.ChildKeyConstraint.Columns.Length, Is.EqualTo (1), "test#30");\r
425                         Assert.That (Relation.ChildTable.TableName, Is.EqualTo ("author"), "test#31");\r
426                         Assert.That (Relation.DataSet.DataSetName, Is.EqualTo ("NewDataSet"), "test#32");\r
427                         Assert.That (Relation.ExtendedProperties.Count, Is.EqualTo (0), "test#33");\r
428                         Assert.That (Relation.Nested, Is.True, "test#34");\r
429                         Assert.That (Relation.ParentColumns.Length, Is.EqualTo (1), "test#35");\r
430                         Assert.That (Relation.ParentKeyConstraint.ConstraintName, Is.EqualTo ("Constraint1"), "test#36");\r
431                         Assert.That (Relation.ParentTable.TableName, Is.EqualTo ("book"), "test#37");\r
432                         Assert.That (Relation.RelationName, Is.EqualTo ("book_author"), "test#38");\r
433                         \r
434                         Table = Set.Tables [2];\r
435                         Assert.That (Table.CaseSensitive, Is.False, "test#39");\r
436                         Assert.That (Table.ChildRelations.Count, Is.EqualTo (0), "test#40");\r
437                         Assert.That (Table.ParentRelations.Count, Is.EqualTo (1), "test#41");\r
438                         Assert.That (Table.Constraints.Count, Is.EqualTo (1), "test#42");\r
439                         Assert.That (Table.PrimaryKey.Length, Is.EqualTo (0), "test#43");\r
440                         Assert.That (Table.Rows.Count, Is.EqualTo (0), "test#44");\r
441                         Assert.That (Table.TableName, Is.EqualTo ("author"), "test#45");\r
442                         Assert.That (Table.Columns.Count, Is.EqualTo (3), "test#46");\r
443                 }\r
444 \r
445                 [Test]\r
446                 public void ChildRows ()\r
447                 {\r
448                         DataRelation Relation = new DataRelation ("Rel", Mom.Columns [1], Child.Columns [0]);\r
449                         Set.Relations.Add (Relation);\r
450                         \r
451                         DataRow TempRow = Mom.NewRow ();\r
452                         TempRow [0] = "teresa";\r
453                         TempRow [1] = "john";\r
454                         Mom.Rows.Add (TempRow);\r
455                         \r
456                         TempRow = Mom.NewRow ();\r
457                         TempRow [0] = "teresa";\r
458                         TempRow [1] = "Dick";\r
459                         Mom.Rows.Add (TempRow);\r
460                                                 \r
461                         TempRow = Child.NewRow ();\r
462                         TempRow [0] = "john";\r
463                         TempRow [1] = "15";\r
464                         Child.Rows.Add (TempRow);\r
465                         \r
466                         TempRow = Child.NewRow ();\r
467                         TempRow [0] = "Dick";\r
468                         TempRow [1] = "10";\r
469                         Child.Rows.Add (TempRow);\r
470                         \r
471                         DataRow Row = Mom.Rows [1];                     \r
472                         TempRow = Row.GetChildRows ("Rel") [0];\r
473                         Assert.That (TempRow [0], Is.EqualTo ("Dick"), "test#01");\r
474                         Assert.That (TempRow [1].ToString (), Is.EqualTo ("10"), "test#02");\r
475                         TempRow = TempRow.GetParentRow ("Rel");\r
476                         Assert.That (TempRow [0], Is.EqualTo ("teresa"), "test#03");\r
477                         Assert.That (TempRow [1], Is.EqualTo ("Dick"), "test#04");\r
478                         \r
479                         Row = Child.Rows [0];\r
480                         TempRow = Row.GetParentRows ("Rel") [0];\r
481                         Assert.That (TempRow [0], Is.EqualTo ("teresa"), "test#05");\r
482                         Assert.That (TempRow [1], Is.EqualTo ("john"), "test#06");                                              \r
483                 }\r
484         }\r
485 }\r