New test.
[mono.git] / mcs / class / System.Data / Test / System.Data.Common / DataColumnMappingCollectionTest.cs
1 // DataColumnMappingCollectionTest.cs - NUnit Test Cases for Testing the 
2 // DataColumnMappingCollection class
3 //
4 // Author: Ameya Sailesh Gargesh (ameya_13@yahoo.com)
5 //
6 // (C) Ameya Gargesh
7
8 //
9 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
10 //
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:
18 // 
19 // The above copyright notice and this permission notice shall be
20 // included in all copies or substantial portions of the Software.
21 // 
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.
29 //
30
31
32 using NUnit.Framework;
33 using System;
34 using System.Data;
35 using System.Data.Common;
36 namespace MonoTests.System.Data.Common
37 {
38         [TestFixture]
39         public class DataColumnMappingCollectionTest : Assertion
40         {
41                 //DataTableMapping tableMap;
42                 DataColumnMappingCollection columnMapCollection;
43                 DataColumnMapping [] cols;
44                 
45                 [SetUp]
46                 public void GetReady()
47                 {
48                         cols=new DataColumnMapping[5];
49                         cols[0]=new DataColumnMapping("sourceName","dataSetName");
50                         cols[1]=new DataColumnMapping("sourceID","dataSetID");
51                         cols[2]=new DataColumnMapping("sourceAddress","dataSetAddress");
52                         cols[3]=new DataColumnMapping("sourcePhone","dataSetPhone");
53                         cols[4]=new DataColumnMapping("sourcePIN","dataSetPIN");
54                         columnMapCollection=new DataColumnMappingCollection();                  
55                 }
56                 
57                 [TearDown]
58                 public void Clean()
59                 {
60                         columnMapCollection.Clear();
61                 }
62                 
63                 [Test]
64                 public void Add()
65                 {
66                         DataColumnMapping col1=new DataColumnMapping("sourceName","dataSetName");
67                         int t=columnMapCollection.Add((Object)col1);
68                         AssertEquals("test1",0,t);
69                         bool eq1=col1.Equals(columnMapCollection[0]);
70                         AssertEquals("test2",true,eq1);
71                         AssertEquals("test3",1,columnMapCollection.Count);
72                         DataColumnMapping col2;
73                         col2=columnMapCollection.Add("sourceID","dataSetID");
74                         bool eq2=col2.Equals(columnMapCollection[1]);
75                         AssertEquals("test4",true,eq2);
76                         AssertEquals("test5",2,columnMapCollection.Count);
77                 }
78                 
79                 [Test]
80                 [ExpectedException(typeof(InvalidCastException))]
81                 public void AddException1()
82                 {
83                         DataColumnMappingCollection c=new DataColumnMappingCollection();
84                         columnMapCollection.Add((Object)c);
85                 }
86                 
87                 [Test]
88                 public void AddRange()
89                 {
90                         columnMapCollection.Add(new DataColumnMapping("sourceAge","dataSetAge"));
91                         AssertEquals("test1",1,columnMapCollection.Count);
92                         columnMapCollection.AddRange(cols);
93                         AssertEquals("test2",6,columnMapCollection.Count);
94                         bool eq;
95                         eq=cols[0].Equals(columnMapCollection[1]);
96                         AssertEquals("test3",true,eq);
97                         eq=cols[1].Equals(columnMapCollection[2]);
98                         AssertEquals("test4",true,eq);
99                         
100                         eq=cols[0].Equals(columnMapCollection[0]);
101                         AssertEquals("test5",false,eq);
102                         eq=cols[1].Equals(columnMapCollection[0]);
103                         AssertEquals("test6",false,eq);                 
104                 }
105                 
106                 [Test]
107                 public void Clear()
108                 {
109                         DataColumnMapping col1=new DataColumnMapping("sourceName","dataSetName");
110                         columnMapCollection.Add((Object)col1);
111                         AssertEquals("test1",1,columnMapCollection.Count);
112                         columnMapCollection.Clear();
113                         AssertEquals("test2",0,columnMapCollection.Count);
114                         columnMapCollection.AddRange(cols);
115                         AssertEquals("test3",5,columnMapCollection.Count);
116                         columnMapCollection.Clear();
117                         AssertEquals("test4",0,columnMapCollection.Count);
118                 }
119                 
120                 [Test]
121                 public void Contains()
122                 {
123                         DataColumnMapping col1=new DataColumnMapping("sourceName","dataSetName");
124                         columnMapCollection.AddRange(cols);
125                         bool eq;
126                         eq=columnMapCollection.Contains((Object)cols[0]);
127                         AssertEquals("test1",true,eq);
128                         eq=columnMapCollection.Contains((Object)cols[1]);
129                         AssertEquals("test2",true,eq);
130                         
131                         eq=columnMapCollection.Contains((Object)col1);
132                         AssertEquals("test3",false,eq);
133                         
134                         eq=columnMapCollection.Contains(cols[0].SourceColumn);
135                         AssertEquals("test4",true,eq);
136                         eq=columnMapCollection.Contains(cols[1].SourceColumn);
137                         AssertEquals("test5",true,eq);
138                         
139                         eq=columnMapCollection.Contains(col1.SourceColumn);
140                         AssertEquals("test6",true,eq);
141                         
142                         eq=columnMapCollection.Contains(cols[0].DataSetColumn);
143                         AssertEquals("test7",false,eq);
144                         eq=columnMapCollection.Contains(cols[1].DataSetColumn);
145                         AssertEquals("test8",false,eq);
146                         
147                         eq=columnMapCollection.Contains(col1.DataSetColumn);
148                         AssertEquals("test9",false,eq);
149                 }
150                 
151                 [Test]
152                 [ExpectedException(typeof(InvalidCastException))]
153                 public void ContainsException1()
154                 {
155                         Object o = new Object();
156                         bool a = columnMapCollection.Contains(o);
157                 }
158                 
159                 [Test]
160                 public void CopyTo()
161                 {
162                         DataColumnMapping [] colcops=new DataColumnMapping[5];
163                         columnMapCollection.AddRange(cols);
164                         columnMapCollection.CopyTo(colcops,0);
165                         bool eq;
166                         for (int i=0;i<5;i++)
167                         {
168                                 eq=columnMapCollection[i].Equals(colcops[i]);
169                                 AssertEquals("test1"+i,true,eq);
170                         }
171                         colcops=null;
172                         colcops=new DataColumnMapping[7];
173                         columnMapCollection.CopyTo(colcops,2);
174                         for (int i=0;i<5;i++)
175                         {
176                                 eq=columnMapCollection[i].Equals(colcops[i+2]);
177                                 AssertEquals("test2"+i,true,eq);
178                         }
179                         eq=columnMapCollection[0].Equals(colcops[0]);
180                         AssertEquals("test31",false,eq);
181                         eq=columnMapCollection[0].Equals(colcops[1]);
182                         AssertEquals("test32",false,eq);
183                 }
184                 
185                 [Test]
186                 public void Equals()
187                 {
188 //                      DataColumnMappingCollection collect2=new DataColumnMappingCollection();
189                         columnMapCollection.AddRange(cols);
190 //                      collect2.AddRange(cols);
191                         DataColumnMappingCollection copy1;
192                         copy1=columnMapCollection;
193                         
194 //                      AssertEquals("test1",false,columnMapCollection.Equals(collect2));
195                         AssertEquals("test2",true,columnMapCollection.Equals(copy1));
196 //                      AssertEquals("test3",false,collect2.Equals(columnMapCollection));
197                         AssertEquals("test4",true,copy1.Equals(columnMapCollection));
198 //                      AssertEquals("test5",false,collect2.Equals(copy1));
199                         AssertEquals("test6",true,copy1.Equals(columnMapCollection));
200                         AssertEquals("test7",true,columnMapCollection.Equals(columnMapCollection));
201 //                      AssertEquals("test8",true,collect2.Equals(collect2));
202                         AssertEquals("test9",true,copy1.Equals(copy1));
203                         
204 //                      AssertEquals("test10",false,Object.Equals(collect2,columnMapCollection));
205                         AssertEquals("test11",true,Object.Equals(copy1,columnMapCollection));
206 //                      AssertEquals("test12",false,Object.Equals(columnMapCollection,collect2));
207                         AssertEquals("test13",true,Object.Equals(columnMapCollection,copy1));
208 //                      AssertEquals("test14",false,Object.Equals(copy1,collect2));
209                         AssertEquals("test15",true,Object.Equals(columnMapCollection,copy1));
210                         AssertEquals("test16",true,Object.Equals(columnMapCollection,columnMapCollection));
211 //                      AssertEquals("test17",true,Object.Equals(collect2,collect2));
212                         AssertEquals("test18",true,Object.Equals(copy1,copy1));
213 //                      AssertEquals("test10",false,Object.Equals(columnMapCollection,collect2));
214                         AssertEquals("test11",true,Object.Equals(columnMapCollection,copy1));
215 //                      AssertEquals("test12",false,Object.Equals(collect2,columnMapCollection));
216                         AssertEquals("test13",true,Object.Equals(copy1,columnMapCollection));
217 //                      AssertEquals("test14",false,Object.Equals(collect2,copy1));
218                         AssertEquals("test15",true,Object.Equals(copy1,columnMapCollection));
219                 }
220                 
221                 [Test]
222                 public void GetByDataSetColumn()
223                 {
224                         columnMapCollection.AddRange(cols);
225                         bool eq;
226                         DataColumnMapping col1;
227                         col1=columnMapCollection.GetByDataSetColumn("dataSetName");
228                         eq=(col1.DataSetColumn.Equals("dataSetName") && col1.SourceColumn.Equals("sourceName"));
229                         AssertEquals("test1",true,eq);
230                         col1=columnMapCollection.GetByDataSetColumn("dataSetID");
231                         eq=(col1.DataSetColumn.Equals("dataSetID") && col1.SourceColumn.Equals("sourceID"));
232                         AssertEquals("test2",true,eq);
233                                                 
234                         col1=columnMapCollection.GetByDataSetColumn("datasetname");
235                         eq=(col1.DataSetColumn.Equals("dataSetName") && col1.SourceColumn.Equals("sourceName"));
236                         AssertEquals("test3",true,eq);
237                         col1=columnMapCollection.GetByDataSetColumn("datasetid");
238                         eq=(col1.DataSetColumn.Equals("dataSetID") && col1.SourceColumn.Equals("sourceID"));
239                         AssertEquals("test4",true,eq);                  
240                 }
241                 
242                 [Test]
243                 public void GetColumnMappingBySchemaAction()
244                 {
245                         columnMapCollection.AddRange(cols);
246                         bool eq;
247                         DataColumnMapping col1;
248                         col1=DataColumnMappingCollection.GetColumnMappingBySchemaAction(columnMapCollection,"sourceName",MissingMappingAction.Passthrough);
249                         eq=(col1.DataSetColumn.Equals("dataSetName") && col1.SourceColumn.Equals("sourceName"));
250                         AssertEquals("test1",true,eq);
251                         col1=DataColumnMappingCollection.GetColumnMappingBySchemaAction(columnMapCollection,"sourceID",MissingMappingAction.Passthrough);
252                         eq=(col1.DataSetColumn.Equals("dataSetID") && col1.SourceColumn.Equals("sourceID"));
253                         AssertEquals("test2",true,eq);
254                         
255                         col1=DataColumnMappingCollection.GetColumnMappingBySchemaAction(columnMapCollection,"sourceData",MissingMappingAction.Passthrough);
256                         eq=(col1.DataSetColumn.Equals("sourceData") && col1.SourceColumn.Equals("sourceData"));
257                         AssertEquals("test3",true,eq);
258                         eq=columnMapCollection.Contains(col1);
259                         AssertEquals("test4",false,eq);
260                         col1=DataColumnMappingCollection.GetColumnMappingBySchemaAction(columnMapCollection,"sourceData",MissingMappingAction.Ignore);
261                         AssertEquals("test5",null,col1);
262                 }
263                 
264                 [Test]
265                 [ExpectedException(typeof(InvalidOperationException))]
266                 public void GetColumnMappingBySchemaActionException1()
267                 {
268                         DataColumnMappingCollection.GetColumnMappingBySchemaAction(columnMapCollection,"sourceName",MissingMappingAction.Error);
269                 }
270                 
271                 [Test]
272                 public void IndexOf()
273                 {
274                         columnMapCollection.AddRange(cols);
275                         int ind;
276                         ind=columnMapCollection.IndexOf(cols[0]);
277                         AssertEquals("test1",0,ind);
278                         ind=columnMapCollection.IndexOf(cols[1]);
279                         AssertEquals("test2",1,ind);
280                                         
281                         ind=columnMapCollection.IndexOf(cols[0].SourceColumn);
282                         AssertEquals("test3",0,ind);
283                         ind=columnMapCollection.IndexOf(cols[1].SourceColumn);
284                         AssertEquals("test4",1,ind);                    
285                 }
286                 
287                 [Test]
288                 public void IndexOfDataSetColumn()
289                 {
290                         columnMapCollection.AddRange(cols);
291                         int ind;
292                         ind=columnMapCollection.IndexOfDataSetColumn(cols[0].DataSetColumn);
293                         AssertEquals("test1",0,ind);
294                         ind=columnMapCollection.IndexOfDataSetColumn(cols[1].DataSetColumn);
295                         AssertEquals("test2",1,ind);                    
296                         
297                         ind=columnMapCollection.IndexOfDataSetColumn("datasetname");
298                         AssertEquals("test3",0,ind);
299                         ind=columnMapCollection.IndexOfDataSetColumn("datasetid");
300                         AssertEquals("test4",1,ind);
301                                                 
302                         ind=columnMapCollection.IndexOfDataSetColumn("sourcedeter");
303                         AssertEquals("test5",-1,ind);
304                 }
305                 
306                 [Test]
307                 public void Insert()
308                 {
309                         columnMapCollection.AddRange(cols);
310                         DataColumnMapping mymap=new DataColumnMapping("sourceAge","dataSetAge");
311                         columnMapCollection.Insert(3,mymap);
312                         int ind=columnMapCollection.IndexOfDataSetColumn("dataSetAge");
313                         AssertEquals("test1",3,ind);                    
314                 }
315                 
316                 [Test]
317                 [Ignore ("This test is wrong. A mapping in a DataColumnMappingCollection must be identical.")]
318                 public void Remove()
319                 {
320                         columnMapCollection.AddRange(cols);
321                         DataColumnMapping mymap=new DataColumnMapping("sourceName","dataSetName");
322                         columnMapCollection.Add(mymap);
323                         columnMapCollection.Remove((Object)mymap);
324                         bool eq=columnMapCollection.Contains((Object)mymap);
325                         AssertEquals("test1",false,eq);
326                 }
327                 
328                 [Test]
329                 [ExpectedException(typeof(InvalidCastException))]
330                 public void RemoveException1()
331                 {
332                         String te="testingdata";
333                         columnMapCollection.AddRange(cols);
334                         columnMapCollection.Remove(te);                 
335                 }
336                 
337                 [Test]
338                 [ExpectedException(typeof(ArgumentException))]
339                 public void RemoveException2()
340                 {
341                         columnMapCollection.AddRange(cols);
342                         DataColumnMapping mymap=new DataColumnMapping("sourceAge","dataSetAge");
343                         columnMapCollection.Remove(mymap);
344                 }
345                 
346                 [Test]
347                 public void RemoveAt()
348                 {
349                         columnMapCollection.AddRange(cols);
350                         bool eq;
351                         columnMapCollection.RemoveAt(0);
352                         eq=columnMapCollection.Contains(cols[0]);
353                         AssertEquals("test1",false,eq);
354                         eq=columnMapCollection.Contains(cols[1]);
355                         AssertEquals("test2",true,eq);
356                                                 
357                         columnMapCollection.RemoveAt("sourceID");
358                         eq=columnMapCollection.Contains(cols[1]);
359                         AssertEquals("test3",false,eq);
360                         eq=columnMapCollection.Contains(cols[2]);
361                         AssertEquals("test4",true,eq);                  
362                 }
363                 
364                 [Test]
365                 [ExpectedException(typeof(IndexOutOfRangeException))]
366                 public void RemoveAtException1()
367                 {
368                         columnMapCollection.RemoveAt(3);                        
369                 }
370                 
371                 [Test]
372                 [ExpectedException(typeof(IndexOutOfRangeException))]
373                 public void RemoveAtException2()
374                 {
375                         columnMapCollection.RemoveAt("sourceAge");                      
376                 }
377                 
378                 [Test]
379 #if TARGET_JVM
380                 [Ignore ("Does not work with TARGET_JVM")]
381 #endif
382                 public void ToStringTest()
383                 {
384                         AssertEquals("test1","System.Data.Common.DataColumnMappingCollection",columnMapCollection.ToString());
385                 }
386         }
387 }