* roottypes.cs: Rename from tree.cs.
[mono.git] / mcs / class / System.Data / Test / System.Data.Tests.Mainsoft / System.Data / DataRelation / DataRelation_ctor_SDclmsDclmsB.cs
1 // Authors:
2 //   Rafael Mizrahi   <rafim@mainsoft.com>
3 //   Erez Lotan       <erezl@mainsoft.com>
4 //   Oren Gurfinkel   <oreng@mainsoft.com>
5 //   Ofer Borstein
6 // 
7 // Copyright (c) 2004 Mainsoft Co.
8 // 
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
16 // 
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
19 // 
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 //
28
29 using NUnit.Framework;
30
31
32 using System;
33 using System.Data;
34
35 using GHTUtils;
36 using GHTUtils.Base;
37
38 namespace tests.system_data_dll.System_Data
39 {
40 [TestFixture] public class DataRelation_ctor_SDclmsDclmsB : GHTBase
41 {
42         [Test] public void Main()
43         {
44                 DataRelation_ctor_SDclmsDclmsB tc = new DataRelation_ctor_SDclmsDclmsB();
45                 Exception exp = null;
46                 try
47                 {
48                         tc.BeginTest("DataRelation_CTor_SDclmsDclmsB");
49                         tc.run();
50                 }
51                 catch(Exception ex)
52                 {
53                         exp = ex;
54                 }
55                 finally
56                 {
57                         tc.EndTest(exp);
58                 }
59         }
60
61         //Activate This Construntor to log All To Standard output
62         //public TestClass():base(true){}
63
64         //Activate this constructor to log Failures to a log file
65         //public TestClass(System.IO.TextWriter tw):base(tw, false){}
66
67
68         //Activate this constructor to log All to a log file
69         //public TestClass(System.IO.TextWriter tw):base(tw, true){}
70
71         //BY DEFAULT LOGGING IS DONE TO THE STANDARD OUTPUT ONLY FOR FAILURES
72
73         public void run()
74         {
75                 Exception exp = null;
76                 DataRelation dRel;              
77                 DataTable dtChild = GHTUtils.DataProvider.CreateChildDataTable();
78                 DataTable dtParent = GHTUtils.DataProvider.CreateParentDataTable();
79
80                 DataSet ds = new DataSet();
81                 ds.Tables.Add(dtParent);
82                 ds.Tables.Add(dtChild);
83
84                 //parameter createConstraints = true
85
86                 bool createConstraints = true;
87                 for (int i=0; i<=1; i++)
88                 {
89                         if (i==0)
90                                 createConstraints = false;
91                         else 
92                                 createConstraints = true;
93
94                         ds.Relations.Clear();
95                         dtParent.Constraints.Clear();
96                         dtChild.Constraints.Clear();
97
98
99                         //add duplicated row
100                         dtParent.Rows.Add(dtParent.Rows[0].ItemArray); 
101                         dRel = new DataRelation("MyRelation",new DataColumn[] {dtParent.Columns[0]},new DataColumn[]  {dtChild.Columns[0]},createConstraints);
102                         try
103                         {
104                                 BeginCase("Add relation which will create invalid constraint,createConstraints=" + createConstraints.ToString());
105                                 exp = new Exception();
106                                 try
107                                 {
108                                         ds.Relations.Add(dRel);
109                                 }
110                                 catch (ArgumentException ex) {exp=ex;}
111                                 if (createConstraints==true)
112                                         Compare(exp.GetType().FullName ,typeof(ArgumentException).FullName );
113                                 else
114                                         Compare(exp.GetType().FullName ,typeof(Exception).FullName );
115                                 exp=null;
116                         }
117                         catch(Exception ex)     {exp = ex;}
118                         finally {EndCase(exp); exp = null;} 
119
120                         ds.Relations.Clear();
121                         dtParent.Constraints.Clear();
122                         dtChild.Constraints.Clear();
123                         dtParent.Rows.Remove(dtParent.Rows[dtParent.Rows.Count-1]);
124
125                         dRel = new DataRelation("MyRelation",new DataColumn[] {dtParent.Columns[0]},new DataColumn[]  {dtChild.Columns[0]},createConstraints);
126                         ds.Relations.Add(dRel);
127                         
128                         try
129                         {
130                                 BeginCase("DataRelation - CTor,createConstraints=" + createConstraints.ToString());
131                                 Compare(dRel == null ,false );
132                         }
133                         catch(Exception ex)     {exp = ex;}
134                         finally {EndCase(exp); exp = null;}
135
136                         try
137                         {
138                                 BeginCase("DataRelation - parent Constraints,createConstraints=" + createConstraints.ToString());
139                                         Compare(dtParent.Constraints.Count ,i);
140                         }
141                         catch(Exception ex)     {exp = ex;}
142                         finally {EndCase(exp); exp = null;}
143
144                         try
145                         {
146                                 BeginCase("DataRelation - child Constraints,createConstraints=" + createConstraints.ToString());
147                                         Compare(dtChild.Constraints.Count ,i);
148                         }
149                         catch(Exception ex)     {exp = ex;}
150                         finally {EndCase(exp); exp = null;}
151
152                         try
153                         {
154                                 BeginCase("DataRelation - child relations,createConstraints=" + createConstraints.ToString());
155                                         Compare(dtParent.ChildRelations[0] ,dRel);
156                         }
157                         catch(Exception ex)     {exp = ex;}
158                         finally {EndCase(exp); exp = null;}
159
160                         try
161                         {
162                                 BeginCase("DataRelation - parent relations,createConstraints=" + createConstraints.ToString());
163                                         Compare(dtChild.ParentRelations[0],dRel );
164                         }
165                         catch(Exception ex)     {exp = ex;}
166                         finally {EndCase(exp); exp = null;} 
167
168                         try
169                         {
170                                 BeginCase("DataRelation - name");
171                                 Compare(dRel.RelationName ,"MyRelation" );
172                         }
173                         catch(Exception ex)     {exp = ex;}
174                         finally {EndCase(exp); exp = null;} 
175                 }       
176         }
177 }
178 }