1 // DataRelationCollection.cs - Nunit Test Cases for for testing the DataRelationCollection
5 // Punit Kumar Todi ( punit_todi@da-iict.org )
13 namespace MonoTests.System.Data
17 public class DataRelationCollectionTest : Assertion
20 DataTable _tblparent,_tblchild;
21 DataRelation _relation;
23 public void GetReady()
25 _dataset = new DataSet();
26 _tblparent = new DataTable("Customer");
27 _tblchild = new DataTable("Order");
28 _dataset.Tables.Add(_tblchild);
29 _dataset.Tables.Add(_tblparent);
30 _dataset.Tables.Add("Item");
31 _dataset.Tables["Customer"].Columns.Add("custid");
32 _dataset.Tables["Customer"].Columns.Add("custname");
33 _dataset.Tables["Order"].Columns.Add("oid");
34 _dataset.Tables["Order"].Columns.Add("custid");
35 _dataset.Tables["Order"].Columns.Add("itemid");
36 _dataset.Tables["Order"].Columns.Add("desc");
37 _dataset.Tables["Item"].Columns.Add("itemid");
38 _dataset.Tables["Item"].Columns.Add("desc");
45 _dataset.Relations.Clear();
51 DataRelationCollection drcol = _dataset.Relations;
52 DataColumn parentCol = _dataset.Tables["Customer"].Columns["custid"];
53 DataColumn childCol = _dataset.Tables["Order"].Columns["custid"];
54 DataRelation dr = new DataRelation("CustOrder",parentCol,childCol);
57 AssertEquals("test#1","CustOrder",drcol[0].RelationName);
60 drcol.Add(parentCol,childCol);
61 AssertEquals("test#2",1,drcol.Count);
64 drcol.Add("NewRelation",parentCol,childCol);
65 AssertEquals("test#3","NewRelation",drcol[0].RelationName);
68 drcol.Add("NewRelation",parentCol,childCol,false);
69 AssertEquals("test#4",1,drcol.Count);
72 drcol.Add("NewRelation",parentCol,childCol,true);
73 AssertEquals("test#5",1,drcol.Count);
78 [ExpectedException(typeof(ArgumentNullException))]
79 public void AddException1()
81 DataRelationCollection drcol = _dataset.Relations;
82 DataRelation drnull = null;
87 [ExpectedException(typeof(ArgumentException))]
88 public void AddException2()
90 DataRelationCollection drcol = _dataset.Relations;
91 DataRelation dr1= new DataRelation("CustOrder"
92 ,_dataset.Tables["Customer"].Columns["custid"]
93 ,_dataset.Tables["Order"].Columns["custid"]);
99 [ExpectedException(typeof(DuplicateNameException))]
100 public void AddException3()
102 DataRelationCollection drcol = _dataset.Relations;
103 DataRelation dr1= new DataRelation("DuplicateName"
104 ,_dataset.Tables["Customer"].Columns["custid"]
105 ,_dataset.Tables["Order"].Columns["custid"]);
106 DataRelation dr2 = new DataRelation("DuplicateName"
107 ,_dataset.Tables["Item"].Columns["itemid"]
108 ,_dataset.Tables["Order"].Columns["custid"]);
116 public void AddRange()
118 DataRelationCollection drcol = _dataset.Relations;
119 DataRelation dr1= new DataRelation("CustOrder"
120 ,_dataset.Tables["Customer"].Columns["custid"]
121 ,_dataset.Tables["Order"].Columns["custid"]);
122 DataRelation dr2 = new DataRelation("ItemOrder"
123 ,_dataset.Tables["Item"].Columns["itemid"]
124 ,_dataset.Tables["Order"].Columns["custid"]);
125 drcol.AddRange(new DataRelation[] {dr1,dr2});
127 AssertEquals("test#1","CustOrder",drcol[0].RelationName);
128 AssertEquals("test#2","ItemOrder",drcol[1].RelationName);
132 public void CanRemove()
134 DataRelationCollection drcol = _dataset.Relations;
135 DataColumn parentCol = _dataset.Tables["Customer"].Columns["custid"];
136 DataColumn childCol = _dataset.Tables["Order"].Columns["custid"];
137 DataRelation dr = new DataRelation("CustOrder",parentCol,childCol);
140 AssertEquals("test#1",true,drcol.CanRemove(dr));
142 AssertEquals("test#2",false,drcol.CanRemove(dr));
143 DataRelation dr2 = new DataRelation("ItemOrder"
144 ,_dataset.Tables["Item"].Columns["itemid"]
145 ,_dataset.Tables["Order"].Columns["custid"]);
146 AssertEquals("test#3",false,drcol.CanRemove(dr2));
152 DataRelationCollection drcol = _dataset.Relations;
153 DataColumn parentCol = _dataset.Tables["Customer"].Columns["custid"];
154 DataColumn childCol = _dataset.Tables["Order"].Columns["custid"];
155 drcol.Add(new DataRelation("CustOrder",parentCol,childCol));
156 drcol.Add("ItemOrder",_dataset.Tables["Item"].Columns["itemid"]
157 ,_dataset.Tables["Order"].Columns["itemid"]);
159 AssertEquals("test#1",0,drcol.Count);
163 public void Contains()
165 DataRelationCollection drcol = _dataset.Relations;
166 DataColumn parentCol = _dataset.Tables["Customer"].Columns["custid"];
167 DataColumn childCol = _dataset.Tables["Order"].Columns["custid"];
168 DataRelation dr = new DataRelation("CustOrder",parentCol,childCol);
171 AssertEquals("test#1",true,drcol.Contains(dr.RelationName));
173 AssertEquals("test#2",false,drcol.Contains(drnull));
174 dr = new DataRelation("newRelation",childCol,parentCol);
175 AssertEquals("test#3",false,drcol.Contains("NoSuchRelation"));
181 DataRelationCollection drcol = _dataset.Relations;
182 drcol.Add("CustOrder"
183 ,_dataset.Tables["Customer"].Columns["custid"]
184 ,_dataset.Tables["Order"].Columns["custid"]);
185 drcol.Add("ItemOrder"
186 ,_dataset.Tables["Item"].Columns["itemid"]
187 ,_dataset.Tables["Order"].Columns["custid"]);
189 DataRelation [] array = new DataRelation[2];
190 drcol.CopyTo(array,0);
191 AssertEquals("test#1",2,array.Length);
192 AssertEquals("test#2", "CustOrder", array[0].RelationName);
193 AssertEquals("test#3", "ItemOrder", array[1].RelationName);
195 DataRelation [] array1 = new DataRelation[4];
196 drcol.CopyTo(array1,2);
197 AssertEquals("test#4", null, array1[0]);
198 AssertEquals("test#5", null, array1[1]);
199 AssertEquals("test#6", "CustOrder", array1[2].RelationName);
200 AssertEquals("test#7", "ItemOrder", array1[3].RelationName);
206 DataRelationCollection drcol = _dataset.Relations;
207 drcol.Add("CustOrder"
208 ,_dataset.Tables["Customer"].Columns["custid"]
209 ,_dataset.Tables["Order"].Columns["custid"]);
210 drcol.Add("ItemOrder"
211 ,_dataset.Tables["Item"].Columns["itemid"]
212 ,_dataset.Tables["Order"].Columns["custid"]);
213 DataSet newds = new DataSet();
214 DataRelationCollection drcol1 = newds.Relations;
215 DataRelationCollection drcol2 = _dataset.Relations;
217 AssertEquals("test#1", true, drcol.Equals(drcol));
218 AssertEquals("test#2", true, drcol.Equals(drcol2));
220 AssertEquals("test#3", false, drcol1.Equals(drcol));
221 AssertEquals("test#4", false, drcol.Equals(drcol1));
223 AssertEquals("test#5", true, Object.Equals(drcol,drcol2));
224 AssertEquals("test#6", false, Object.Equals(drcol,drcol1));
228 public void IndexOf()
230 DataRelationCollection drcol = _dataset.Relations;
231 DataRelation dr1= new DataRelation("CustOrder"
232 ,_dataset.Tables["Customer"].Columns["custid"]
233 ,_dataset.Tables["Order"].Columns["custid"]);
234 DataRelation dr2 = new DataRelation("ItemOrder"
235 ,_dataset.Tables["Item"].Columns["itemid"]
236 ,_dataset.Tables["Order"].Columns["custid"]);
240 AssertEquals("test#1",0,drcol.IndexOf(dr1));
241 AssertEquals("test#2",1,drcol.IndexOf(dr2));
243 AssertEquals("test#3",0,drcol.IndexOf("CustOrder"));
244 AssertEquals("test#4",1,drcol.IndexOf("ItemOrder"));
246 AssertEquals("test#5",0,drcol.IndexOf(drcol[0]));
247 AssertEquals("test#6",1,drcol.IndexOf(drcol[1]));
249 AssertEquals("test#7",-1,drcol.IndexOf("_noRelation_"));
250 DataRelation newdr = new DataRelation("newdr"
251 ,_dataset.Tables["Customer"].Columns["custid"]
252 ,_dataset.Tables["Order"].Columns["custid"]);
254 AssertEquals("test#8",-1,drcol.IndexOf(newdr));
260 DataRelationCollection drcol = _dataset.Relations;
261 DataRelation dr1= new DataRelation("CustOrder"
262 ,_dataset.Tables["Customer"].Columns["custid"]
263 ,_dataset.Tables["Order"].Columns["custid"]);
264 DataRelation dr2 = new DataRelation("ItemOrder"
265 ,_dataset.Tables["Item"].Columns["itemid"]
266 ,_dataset.Tables["Order"].Columns["custid"]);
271 AssertEquals("test#1", false, drcol.Contains(dr1.RelationName));
274 drcol.Remove("CustOrder");
275 AssertEquals("test#2", false, drcol.Contains("CustOrder"));
278 DataRelation drnull = null;
281 drcol.Remove(drnull);
282 Fail("Err:: drcol.Remove(null) must fail");
286 AssertEquals("test#3", typeof (ArgumentNullException), e.GetType());
289 DataRelation newdr = new DataRelation("newdr"
290 ,_dataset.Tables["Customer"].Columns["custid"]
291 ,_dataset.Tables["Order"].Columns["custid"]);
295 Fail("Err: removed relation which not part of collection");
299 AssertEquals ("test#4", typeof(ArgumentException), e.GetType());
303 drcol.Remove("newdr");
304 Fail("Err: removed relation which not part of collection");
308 AssertEquals ("test#5", typeof(IndexOutOfRangeException), e.GetType());
315 public void RemoveAt()
317 DataRelationCollection drcol = _dataset.Relations;
318 DataRelation dr1= new DataRelation("CustOrder"
319 ,_dataset.Tables["Customer"].Columns["custid"]
320 ,_dataset.Tables["Order"].Columns["custid"]);
321 DataRelation dr2 = new DataRelation("ItemOrder"
322 ,_dataset.Tables["Item"].Columns["itemid"]
323 ,_dataset.Tables["Order"].Columns["custid"]);
330 Fail("the index was out of bound: must have failed");
334 AssertEquals ("test#1", typeof (ArgumentException), e.GetType ());
335 AssertEquals ("test#2", "There is no row at position -1.", e.Message);
340 Fail("the index was out of bound: must have failed");
344 AssertEquals ("test#3", typeof (ArgumentException), e.GetType ());
345 AssertEquals ("test#4", "There is no row at position -1.", e.Message);
349 AssertEquals ("test#5", false, drcol.Contains(dr2.RelationName));
351 AssertEquals ("test#6", false, drcol.Contains(dr1.RelationName));
355 public void ToStringTest()
357 DataRelationCollection drcol = _dataset.Relations;
358 DataRelation dr1= new DataRelation("CustOrder"
359 ,_dataset.Tables["Customer"].Columns["custid"]
360 ,_dataset.Tables["Order"].Columns["custid"]);
362 AssertEquals("test#1","System.Data.DataRelationCollection",drcol.ToString());
363 System.Console.WriteLine(drcol.ToString());