1 // DataTableCollectionTest.cs - NUnit Test Cases for for testing the DataTableCollection
4 // Punit Kumar Todi ( punit_todi@da-iict.org )
10 using NUnit.Framework;
14 namespace MonoTests.System.Data
18 public class DataTableCollectionTest : Assertion {
19 // common variables here
20 private DataSet [] _dataset;
21 private DataTable [] _tables;
24 public void GetReady()
26 // setting up dataset && tables
27 _dataset = new DataSet[2];
28 _tables = new DataTable[2];
29 _dataset[0] = new DataSet();
30 _dataset[1] = new DataSet();
31 _tables[0] = new DataTable("Books");
32 _tables[0].Columns.Add("id",typeof(int));
33 _tables[0].Columns.Add("name",typeof(String));
34 _tables[0].Columns.Add("author",typeof(String));
36 _tables[1] = new DataTable("Category");
37 _tables[1].Columns.Add("id",typeof(int));
38 _tables[1].Columns.Add("desc",typeof(String));
44 _dataset[0].Tables.Clear();
45 _dataset[1].Tables.Clear();
50 DataTableCollection tbcol = _dataset[0].Tables;
51 tbcol.Add(_tables[0]);
55 foreach( DataTable table in tbcol )
57 AssertEquals("test#1",_tables[i].TableName,table.TableName);
59 foreach( DataColumn column in table.Columns )
61 AssertEquals("test#2",_tables[i].Columns[j].ColumnName,column.ColumnName);
67 tbcol.Add(_tables[1]);
69 foreach( DataTable table in tbcol )
71 AssertEquals("test#3",_tables[i].TableName,table.TableName);
73 foreach( DataColumn column in table.Columns )
75 AssertEquals("test#4",_tables[i].Columns[j].ColumnName,column.ColumnName);
83 [ExpectedException(typeof(ArgumentNullException))]
84 public void AddException1()
86 DataTableCollection tbcol = _dataset[0].Tables;
92 [ExpectedException(typeof(ArgumentException))]
93 public void AddException2()
95 /* table already exist in the collection */
96 DataTableCollection tbcol = _dataset[0].Tables;
97 tbcol.Add(_tables[0]);
98 tbcol.Add(_tables[0]);
102 [ExpectedException(typeof(DuplicateNameException))]
103 public void AddException3()
105 DataTableCollection tbcol = _dataset[0].Tables;
106 tbcol.Add(new DataTable("SameTableName"));
107 tbcol.Add(new DataTable("SameTableName"));
111 [ExpectedException(typeof(DuplicateNameException))]
112 public void AddException4()
114 DataTableCollection tbcol = _dataset[0].Tables;
115 tbcol.Add("SameTableName");
116 tbcol.Add("SameTableName");
122 DataTableCollection tbcol = _dataset[0].Tables;
123 tbcol.Add(_tables[0]);
124 AssertEquals("test#1",1, tbcol.Count);
125 tbcol.Add(_tables[1]);
126 AssertEquals("test#2",2, tbcol.Count);
130 public void AddRange()
132 DataTableCollection tbcol = _dataset[0].Tables;
134 /* _tables is array of type DataTable defined in Setup */
135 tbcol.AddRange(_tables);
138 foreach( DataTable table in tbcol )
140 AssertEquals("test#1",_tables[i].TableName,table.TableName);
142 foreach( DataColumn column in table.Columns )
144 AssertEquals("test#2",_tables[i].Columns[j].ColumnName,column.ColumnName);
152 public void CanRemove()
154 DataTableCollection tbcol = _dataset[0].Tables;
156 /* _tables is array of DataTables defined in Setup */
157 tbcol.AddRange(_tables);
158 DataTable tbl = null;
159 /* checking for a recently input table, expecting true */
160 AssertEquals("test#1",true,tbcol.CanRemove(_tables[0]));
161 /* trying to check with a null reference, expecting false */
162 AssertEquals("test#2",false,tbcol.CanRemove(tbl));
163 /* trying to check with a table that does not exist in collection, expecting false */
164 AssertEquals("test#3",false,tbcol.CanRemove(new DataTable("newTable")));
170 DataTableCollection tbcol = _dataset[0].Tables;
172 /* _tables is array of DataTables defined in Setup */
173 tbcol.AddRange(_tables);
175 /* removing a recently added table */
176 int count = tbcol.Count;
177 tbcol.Remove(_tables[0]);
178 AssertEquals("test#1",count-1,tbcol.Count);
179 DataTable tbl = null;
180 /* removing a null reference. must generate an Exception */
184 Fail("Err:: tbcol.Rmove(null) must fail");
188 AssertEquals ("test#2", typeof (ArgumentNullException), e.GetType());
190 /* removing a table that is not there in collection */
193 tbcol.Remove(new DataTable("newTable"));
194 Fail("Err:: cannot remove a table that is not there in collection");
198 AssertEquals ("test#3", typeof (ArgumentException), e.GetType());
205 DataTableCollection tbcol = _dataset[0].Tables;
206 tbcol.Add(_tables[0]);
208 AssertEquals("Test#1",0,tbcol.Count);
210 tbcol.AddRange(new DataTable[] {_tables[0],_tables[1]});
212 AssertEquals("Test#2",0,tbcol.Count);
215 public void Contains()
217 DataTableCollection tbcol = _dataset[0].Tables;
219 /* _tables is array of DataTables defined in Setup */
220 tbcol.AddRange(_tables);
222 /* checking for a recently input table, expecting true */
223 AssertEquals("test#1",true,tbcol.Contains(_tables[0].TableName));
224 /* trying to check with a empty string, expecting false */
225 AssertEquals("test#2",false,tbcol.Contains(tblname));
226 /* trying to check for a table that donot exist, expecting false */
227 AssertEquals("test#3",false,tbcol.Contains("InvalidTableName"));
233 DataTableCollection tbcol = _dataset[0].Tables;
239 DataTable [] array = new DataTable[4];
240 /* copying to the beginning of the array */
241 tbcol.CopyTo(array,0);
242 AssertEquals ("test#01", 4, array.Length);
243 AssertEquals ("test#02", "Table1", array[0].TableName);
244 AssertEquals ("test#03", "Table2", array[1].TableName);
245 AssertEquals ("test#04", "Table3", array[2].TableName);
246 AssertEquals ("test#05", "Table4", array[3].TableName);
248 /* copying with in a array */
249 DataTable [] array1 = new DataTable[6];
250 tbcol.CopyTo(array1,2);
251 AssertEquals("test#06",null,array1[0]);
252 AssertEquals("test#07",null,array1[1]);
253 AssertEquals("test#08","Table1",array1[2].TableName);
254 AssertEquals("test#09","Table2",array1[3].TableName);
255 AssertEquals("test#10","Table3",array1[4].TableName);
256 AssertEquals("test#11","Table4",array1[5].TableName);
261 DataTableCollection tbcol1 = _dataset[0].Tables;
262 DataTableCollection tbcol2 = _dataset[1].Tables;
263 DataTableCollection tbcol3;
264 tbcol1.Add(_tables[0]);
265 tbcol2.Add(_tables[1]);
268 AssertEquals("test#1",true,tbcol1.Equals(tbcol1));
269 AssertEquals("test#2",true,tbcol1.Equals(tbcol3));
270 AssertEquals("test#3",true,tbcol3.Equals(tbcol1));
272 AssertEquals("test#4",false,tbcol1.Equals(tbcol2));
273 AssertEquals("test#5",false,tbcol2.Equals(tbcol1));
275 AssertEquals("test#6",true,Object.Equals(tbcol1,tbcol3));
276 AssertEquals("test#7",true,Object.Equals(tbcol1,tbcol1));
277 AssertEquals("test#8",false,Object.Equals(tbcol1,tbcol2));
280 public void IndexOf()
282 DataTableCollection tbcol = _dataset[0].Tables;
283 tbcol.Add(_tables[0]);
287 AssertEquals("test#1",0,tbcol.IndexOf(_tables[0]));
288 AssertEquals("test#2",-1,tbcol.IndexOf(_tables[1]));
289 AssertEquals("test#3",1,tbcol.IndexOf("table1"));
290 AssertEquals("test#4",2,tbcol.IndexOf("table2"));
292 AssertEquals("test#5",0,tbcol.IndexOf(tbcol[0]));
293 AssertEquals("test#6",1,tbcol.IndexOf(tbcol[1]));
294 AssertEquals("test#7",-1,tbcol.IndexOf("_noTable_"));
295 DataTable tb = new DataTable("new_table");
296 AssertEquals("test#8",-1,tbcol.IndexOf(tb));
300 public void RemoveAt()
302 DataTableCollection tbcol = _dataset[0].Tables;
303 tbcol.Add(_tables[0]);
309 Fail("the index was out of bound: must have failed");
313 AssertEquals ("test#1", typeof (ArgumentException), e.GetType ());
314 AssertEquals ("test#2", "There is no row at position -1.", e.Message);
319 Fail("the index was out of bound: must have failed");
323 AssertEquals ("test#3", typeof (ArgumentException), e.GetType ());
324 AssertEquals ("test#4", "There is no row at position -1.", e.Message);
327 AssertEquals ("test#5", 1, tbcol.Count);
329 AssertEquals ("test#6", 0, tbcol.Count);
333 public void ToStringTest()
335 DataTableCollection tbcol = _dataset[0].Tables;
339 AssertEquals("test#1","System.Data.DataTableCollection",tbcol.ToString());