* roottypes.cs: Rename from tree.cs.
[mono.git] / mcs / class / System.Data / Test / System.Data.Tests.Mainsoft / System.Data / DataRelation / DataRelation_ctor_SDclmsDclms.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_SDclmsDclms : GHTBase
41 {
42         [Test] public void Main()
43         {
44                 DataRelation_ctor_SDclmsDclms tc = new DataRelation_ctor_SDclmsDclms();
45                 Exception exp = null;
46                 try
47                 {
48                         tc.BeginTest("DataRelation_CTor_SDclmsDclms");
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
76                 Exception exp = null;
77                 DataSet ds = new DataSet();
78                 DataTable dtChild = GHTUtils.DataProvider.CreateChildDataTable();
79                 DataTable dtParent = GHTUtils.DataProvider.CreateParentDataTable();
80                 ds.Tables.Add(dtParent);
81                 ds.Tables.Add(dtChild);
82
83                 DataRelation dRel;
84
85
86                 //check some exception 
87                 try
88                 {
89                         BeginCase("DataRelation - CTor ArgumentException, two columns child");
90                         exp = new Exception();
91                         try
92                         {
93                                 dRel = new DataRelation("MyRelation",new DataColumn[] {dtParent.Columns[0]},new DataColumn[]  {dtChild.Columns[0],dtChild.Columns[2]});
94                         }
95                         catch (ArgumentException ex){exp = ex;}
96                         Compare(exp.GetType().FullName ,typeof(ArgumentException).FullName );
97                         exp=null;
98                 }
99                 catch(Exception ex)     {exp = ex;}
100                 finally {EndCase(exp); exp = null;}
101
102                 dRel = new DataRelation("MyRelation",new DataColumn[] {dtParent.Columns[0],dtParent.Columns[1]},new DataColumn[]  {dtChild.Columns[0],dtChild.Columns[2]});
103                 try
104                 {
105                         BeginCase("DataRelation - Add Relation ArgumentException, fail on creating child Constraints");
106                         exp = new Exception();
107                         try
108                         {
109                                 ds.Relations.Add(dRel);
110                         }
111                         catch (ArgumentException ex){exp = ex;}
112                         Compare(exp.GetType().FullName ,typeof(ArgumentException).FullName );
113                         exp=null;
114                 }
115                 catch(Exception ex)     {exp = ex;}
116                 finally {EndCase(exp); exp = null;}
117         
118                 try
119                 {
120                         BeginCase("DataRelation ArgumentException - parent Constraints");
121                         Compare(dtParent.Constraints.Count ,1);
122                 }
123                 catch(Exception ex)     {exp = ex;}
124                 finally {EndCase(exp); exp = null;}
125
126                 try
127                 {
128                         BeginCase("DataRelation ArgumentException - child Constraints");
129                         Compare(dtChild.Constraints.Count ,0);
130                 }
131                 catch(Exception ex)     {exp = ex;}
132                 finally {EndCase(exp); exp = null;}
133
134                 try
135                 {
136                         BeginCase("DataRelation ArgumentException - DataSet.Relation count");
137                         Compare(ds.Relations.Count ,1);
138                 }
139                 catch(Exception ex)     {exp = ex;}
140                 finally {EndCase(exp); exp = null;}
141
142
143                 //begin to check the relation ctor
144                 dtParent.Constraints.Clear();
145                 dtChild.Constraints.Clear();
146                 ds.Relations.Clear();
147                 dRel = new DataRelation("MyRelation",new DataColumn[] {dtParent.Columns[0]},new DataColumn[]  {dtChild.Columns[0]});
148                 ds.Relations.Add(dRel);
149
150                 try
151                 {
152                         BeginCase("DataSet DataRelation count");
153                         Compare(ds.Relations.Count ,1);
154                 }
155                 catch(Exception ex)     {exp = ex;}
156                 finally {EndCase(exp); exp = null;}
157
158
159                 try
160                 {
161                         BeginCase("DataRelation - CTor");
162                         Compare(dRel == null ,false );
163                 }
164                 catch(Exception ex)     {exp = ex;}
165                 finally {EndCase(exp); exp = null;}
166
167                 try
168                 {
169                         BeginCase("DataRelation - parent Constraints");
170                         Compare(dtParent.Constraints.Count ,1);
171                 }
172                 catch(Exception ex)     {exp = ex;}
173                 finally {EndCase(exp); exp = null;}
174
175                 try
176                 {
177                         BeginCase("DataRelation - child Constraints");
178                         Compare(dtChild.Constraints.Count ,1);
179                 }
180                 catch(Exception ex)     {exp = ex;}
181                 finally {EndCase(exp); exp = null;}
182
183                 try
184                 {
185                         BeginCase("DataRelation - child relations");
186                         Compare(dtParent.ChildRelations[0] ,dRel);
187                 }
188                 catch(Exception ex)     {exp = ex;}
189                 finally {EndCase(exp); exp = null;}
190
191                 try
192                 {
193                         BeginCase("DataRelation - parent relations");
194                         Compare(dtChild.ParentRelations[0],dRel );
195                 }
196                 catch(Exception ex)     {exp = ex;}
197                 finally {EndCase(exp); exp = null;} 
198
199                 try
200                 {
201                         BeginCase("DataRelation - name");
202                         Compare(dRel.RelationName ,"MyRelation" );
203                 }
204                 catch(Exception ex)     {exp = ex;}
205                 finally {EndCase(exp); exp = null;} 
206
207         }
208 }
209 }