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