1 // DataRelationCollection.cs - Nunit Test Cases for for testing the DataRelationCollection
5 // Punit Kumar Todi ( punit_todi@da-iict.org )
9 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
11 // Permission is hereby granted, free of charge, to any person obtaining
12 // a copy of this software and associated documentation files (the
13 // "Software"), to deal in the Software without restriction, including
14 // without limitation the rights to use, copy, modify, merge, publish,
15 // distribute, sublicense, and/or sell copies of the Software, and to
16 // permit persons to whom the Software is furnished to do so, subject to
17 // the following conditions:
19 // The above copyright notice and this permission notice shall be
20 // included in all copies or substantial portions of the Software.
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30 using NUnit.Framework;
34 namespace MonoTests.System.Data
38 public class DataRelationCollectionTest
41 DataTable _tblparent, _tblchild;
42 DataRelation _relation;
45 public void GetReady ()
47 _dataset = new DataSet ();
48 _tblparent = new DataTable ("Customer");
49 _tblchild = new DataTable ("Order");
50 _dataset.Tables.Add (_tblchild);
51 _dataset.Tables.Add (_tblparent);
52 _dataset.Tables.Add ("Item");
53 _dataset.Tables ["Customer"].Columns.Add ("custid");
54 _dataset.Tables ["Customer"].Columns.Add ("custname");
55 _dataset.Tables ["Order"].Columns.Add ("oid");
56 _dataset.Tables ["Order"].Columns.Add ("custid");
57 _dataset.Tables ["Order"].Columns.Add ("itemid");
58 _dataset.Tables ["Order"].Columns.Add ("desc");
59 _dataset.Tables ["Item"].Columns.Add ("itemid");
60 _dataset.Tables ["Item"].Columns.Add ("desc");
67 _dataset.Relations.Clear ();
73 DataRelationCollection drcol = _dataset.Relations;
74 DataColumn parentCol = _dataset.Tables ["Customer"].Columns ["custid"];
75 DataColumn childCol = _dataset.Tables ["Order"].Columns ["custid"];
76 DataRelation dr = new DataRelation ("CustOrder", parentCol, childCol);
79 Assert.That (drcol [0].RelationName, Is.EqualTo ("CustOrder"), "test#1");
82 drcol.Add (parentCol, childCol);
83 Assert.That (drcol.Count, Is.EqualTo (1), "test#2");
86 drcol.Add ("NewRelation", parentCol, childCol);
87 Assert.That (drcol [0].RelationName, Is.EqualTo ("NewRelation"), "test#3");
90 drcol.Add ("NewRelation", parentCol, childCol, false);
91 Assert.That (drcol.Count, Is.EqualTo (1), "test#4");
94 drcol.Add ("NewRelation", parentCol, childCol, true);
95 Assert.That (drcol.Count, Is.EqualTo (1), "test#5");
100 [ExpectedException(typeof(ArgumentNullException))]
101 [Ignore ("It does not pass under MS.NET")]
102 public void AddException1 ()
104 DataRelationCollection drcol = _dataset.Relations;
105 DataRelation drnull = null;
110 [ExpectedException(typeof(ArgumentException))]
111 public void AddException2 ()
113 DataRelationCollection drcol = _dataset.Relations;
114 DataRelation dr1 = new DataRelation ("CustOrder"
115 , _dataset.Tables ["Customer"].Columns ["custid"]
116 , _dataset.Tables ["Order"].Columns ["custid"]);
122 [ExpectedException(typeof(DuplicateNameException))]
123 public void AddException3 ()
125 DataRelationCollection drcol = _dataset.Relations;
126 DataRelation dr1 = new DataRelation ("DuplicateName"
127 , _dataset.Tables ["Customer"].Columns ["custid"]
128 , _dataset.Tables ["Order"].Columns ["custid"]);
129 DataRelation dr2 = new DataRelation ("DuplicateName"
130 , _dataset.Tables ["Item"].Columns ["itemid"]
131 , _dataset.Tables ["Order"].Columns ["custid"]);
138 public void AddRange ()
140 DataRelationCollection drcol = _dataset.Relations;
141 DataRelation dr1 = new DataRelation ("CustOrder"
142 , _dataset.Tables ["Customer"].Columns ["custid"]
143 , _dataset.Tables ["Order"].Columns ["custid"]);
144 DataRelation dr2 = new DataRelation ("ItemOrder"
145 , _dataset.Tables ["Item"].Columns ["itemid"]
146 , _dataset.Tables ["Order"].Columns ["custid"]);
147 drcol.AddRange (new DataRelation[] {dr1,dr2});
149 Assert.That (drcol [0].RelationName, Is.EqualTo ("CustOrder"), "test#1");
150 Assert.That (drcol [1].RelationName, Is.EqualTo ("ItemOrder"), "test#2");
154 public void CanRemove ()
156 DataRelationCollection drcol = _dataset.Relations;
157 DataColumn parentCol = _dataset.Tables ["Customer"].Columns ["custid"];
158 DataColumn childCol = _dataset.Tables ["Order"].Columns ["custid"];
159 DataRelation dr = new DataRelation ("CustOrder", parentCol, childCol);
162 Assert.That (drcol.CanRemove (dr), Is.True, "test#1");
163 Assert.That (drcol.CanRemove (null), Is.False, "test#2");
164 DataRelation dr2 = new DataRelation ("ItemOrder"
165 , _dataset.Tables ["Item"].Columns ["itemid"]
166 , _dataset.Tables ["Order"].Columns ["custid"]);
167 Assert.That (drcol.CanRemove (dr2), Is.False, "test#3");
173 DataRelationCollection drcol = _dataset.Relations;
174 DataColumn parentCol = _dataset.Tables ["Customer"].Columns ["custid"];
175 DataColumn childCol = _dataset.Tables ["Order"].Columns ["custid"];
176 drcol.Add (new DataRelation ("CustOrder", parentCol, childCol));
177 drcol.Add ("ItemOrder", _dataset.Tables ["Item"].Columns ["itemid"]
178 , _dataset.Tables ["Order"].Columns ["itemid"]);
180 Assert.That (drcol.Count, Is.EqualTo (0), "test#1");
184 public void Contains ()
186 DataRelationCollection drcol = _dataset.Relations;
187 DataColumn parentCol = _dataset.Tables ["Customer"].Columns ["custid"];
188 DataColumn childCol = _dataset.Tables ["Order"].Columns ["custid"];
189 DataRelation dr = new DataRelation ("CustOrder", parentCol, childCol);
192 Assert.That (drcol.Contains (dr.RelationName), Is.True, "test#1");
194 Assert.That (drcol.Contains (drnull), Is.False, "test#2");
195 dr = new DataRelation ("newRelation", childCol, parentCol);
196 Assert.That (drcol.Contains ("NoSuchRelation"), Is.False, "test#3");
200 public void CopyTo ()
202 DataRelationCollection drcol = _dataset.Relations;
203 drcol.Add ("CustOrder"
204 , _dataset.Tables ["Customer"].Columns ["custid"]
205 , _dataset.Tables ["Order"].Columns ["custid"]);
206 drcol.Add ("ItemOrder"
207 , _dataset.Tables ["Item"].Columns ["itemid"]
208 , _dataset.Tables ["Order"].Columns ["custid"]);
210 DataRelation [] array = new DataRelation[2];
211 drcol.CopyTo (array, 0);
212 Assert.That (array.Length, Is.EqualTo (2), "test#1");
213 Assert.That (array [0].RelationName, Is.EqualTo ("CustOrder"), "test#2");
214 Assert.That (array [1].RelationName, Is.EqualTo ("ItemOrder"), "test#3");
216 DataRelation [] array1 = new DataRelation[4];
217 drcol.CopyTo (array1, 2);
218 Assert.That (array1 [0], Is.Null, "test#4");
219 Assert.That (array1 [1], Is.Null, "test#5");
220 Assert.That (array1 [2].RelationName, Is.EqualTo ("CustOrder"), "test#6");
221 Assert.That (array1 [3].RelationName, Is.EqualTo ("ItemOrder"), "test#7");
225 public void Equals ()
227 DataRelationCollection drcol = _dataset.Relations;
228 drcol.Add ("CustOrder"
229 , _dataset.Tables ["Customer"].Columns ["custid"]
230 , _dataset.Tables ["Order"].Columns ["custid"]);
231 drcol.Add ("ItemOrder"
232 , _dataset.Tables ["Item"].Columns ["itemid"]
233 , _dataset.Tables ["Order"].Columns ["custid"]);
234 DataSet newds = new DataSet ();
235 DataRelationCollection drcol1 = newds.Relations;
236 DataRelationCollection drcol2 = _dataset.Relations;
238 Assert.That (drcol.Equals (drcol), Is.True, "test#1");
239 Assert.That (drcol.Equals (drcol2), Is.True, "test#2");
241 Assert.That (drcol1.Equals (drcol), Is.False, "test#3");
242 Assert.That (drcol.Equals (drcol1), Is.False, "test#4");
244 Assert.That (Object.Equals (drcol, drcol2), Is.True, "test#5");
245 Assert.That (Object.Equals (drcol, drcol1), Is.False, "test#6");
250 public void IndexOf ()
252 DataRelationCollection drcol = _dataset.Relations;
253 DataRelation dr1 = new DataRelation ("CustOrder"
254 , _dataset.Tables ["Customer"].Columns ["custid"]
255 , _dataset.Tables ["Order"].Columns ["custid"]);
256 DataRelation dr2 = new DataRelation ("ItemOrder"
257 , _dataset.Tables ["Item"].Columns ["itemid"]
258 , _dataset.Tables ["Order"].Columns ["custid"]);
262 Assert.That (drcol.IndexOf (dr1), Is.EqualTo (0), "test#1");
263 Assert.That (drcol.IndexOf (dr2), Is.EqualTo (1), "test#2");
265 Assert.That (drcol.IndexOf ("CustOrder"), Is.EqualTo (0), "test#3");
266 Assert.That (drcol.IndexOf ("ItemOrder"), Is.EqualTo (1), "test#4");
268 Assert.That (drcol.IndexOf (drcol [0]), Is.EqualTo (0), "test#5");
269 Assert.That (drcol.IndexOf (drcol [1]), Is.EqualTo (1), "test#6");
271 Assert.That (drcol.IndexOf ("_noRelation_"), Is.EqualTo (-1), "test#7");
272 DataRelation newdr = new DataRelation ("newdr"
273 , _dataset.Tables ["Customer"].Columns ["custid"]
274 , _dataset.Tables ["Order"].Columns ["custid"]);
276 Assert.That (drcol.IndexOf (newdr), Is.EqualTo (-1), "test#8");
280 public void Remove ()
282 DataRelationCollection drcol = _dataset.Relations;
283 DataRelation dr1 = new DataRelation ("CustOrder"
284 , _dataset.Tables ["Customer"].Columns ["custid"]
285 , _dataset.Tables ["Order"].Columns ["custid"]);
286 DataRelation dr2 = new DataRelation ("ItemOrder"
287 , _dataset.Tables ["Item"].Columns ["itemid"]
288 , _dataset.Tables ["Order"].Columns ["custid"]);
293 Assert.That (drcol.Contains (dr1.RelationName), Is.False, "test#1");
296 drcol.Remove ("CustOrder");
297 Assert.That (drcol.Contains ("CustOrder"), Is.False, "test#2");
300 DataRelation drnull = null;
301 drcol.Remove (drnull);
303 DataRelation newdr = new DataRelation ("newdr"
304 , _dataset.Tables ["Customer"].Columns ["custid"]
305 , _dataset.Tables ["Order"].Columns ["custid"]);
307 drcol.Remove (newdr);
308 Assert.Fail ("Err: removed relation which not part of collection");
309 } catch (Exception e) {
310 Assert.That (e, Is.TypeOf (typeof(ArgumentException)), "test#4");
313 drcol.Remove ("newdr");
314 Assert.Fail ("Err: removed relation which not part of collection");
315 } catch (ArgumentException e) {
320 public void RemoveAt ()
322 DataRelationCollection drcol = _dataset.Relations;
323 DataRelation dr1 = new DataRelation ("CustOrder"
324 , _dataset.Tables ["Customer"].Columns ["custid"]
325 , _dataset.Tables ["Order"].Columns ["custid"]);
326 DataRelation dr2 = new DataRelation ("ItemOrder"
327 , _dataset.Tables ["Item"].Columns ["itemid"]
328 , _dataset.Tables ["Order"].Columns ["custid"]);
334 Assert.Fail ("the index was out of bound: must have failed");
335 } catch (IndexOutOfRangeException e) {
338 drcol.RemoveAt (101);
339 Assert.Fail ("the index was out of bound: must have failed");
340 } catch (IndexOutOfRangeException e) {
344 Assert.That (drcol.Contains (dr2.RelationName), Is.False, "test#5");
346 Assert.That (drcol.Contains (dr1.RelationName), Is.False, "test#6");
350 public void ToStringTest ()
352 DataRelationCollection drcol = _dataset.Relations;
353 DataRelation dr1 = new DataRelation ("CustOrder"
354 , _dataset.Tables ["Customer"].Columns ["custid"]
355 , _dataset.Tables ["Order"].Columns ["custid"]);
357 Assert.That (drcol.ToString (), Is.EqualTo ("System.Data.DataRelationCollection"), "test#1");
358 Console.WriteLine (drcol.ToString ());