2004-05-26 Umadevi S <sumadevi@novell.com.
authorUmadevi S <uma@mono-cvs.ximian.com>
Wed, 26 May 2004 11:26:34 +0000 (11:26 -0000)
committerUmadevi S <uma@mono-cvs.ximian.com>
Wed, 26 May 2004 11:26:34 +0000 (11:26 -0000)
        * Added files DataTableCollectionTest and DataRelationCollectionTest

svn path=/trunk/mcs/; revision=28144

mcs/class/System.Data/Test/System.Data/DataRelationCollectionTest.cs [new file with mode: 0644]

diff --git a/mcs/class/System.Data/Test/System.Data/DataRelationCollectionTest.cs b/mcs/class/System.Data/Test/System.Data/DataRelationCollectionTest.cs
new file mode 100644 (file)
index 0000000..9dde899
--- /dev/null
@@ -0,0 +1,366 @@
+// DataRelationCollection.cs - Nunit Test Cases for for testing the DataRelationCollection
+// class
+// Author:
+//
+//     Punit Kumar Todi ( punit_todi@da-iict.org )
+// (C) Punit Todi
+// (C) Novell Inc.
+
+using NUnit.Framework;
+using System;
+using System.Data;
+
+namespace MonoTests.System.Data
+{
+
+       [TestFixture]
+       public class DataRelationCollectionTest : Assertion 
+       {
+               DataSet _dataset;
+               DataTable _tblparent,_tblchild;
+               DataRelation _relation;
+               [SetUp]
+               public void GetReady() 
+               {
+                       _dataset = new DataSet();
+                       _tblparent = new DataTable("Customer");
+                       _tblchild = new DataTable("Order");
+                       _dataset.Tables.Add(_tblchild);
+                       _dataset.Tables.Add(_tblparent);
+                       _dataset.Tables.Add("Item");
+                       _dataset.Tables["Customer"].Columns.Add("custid");
+                       _dataset.Tables["Customer"].Columns.Add("custname");
+                       _dataset.Tables["Order"].Columns.Add("oid");
+                       _dataset.Tables["Order"].Columns.Add("custid");
+                       _dataset.Tables["Order"].Columns.Add("itemid");
+                       _dataset.Tables["Order"].Columns.Add("desc");
+                       _dataset.Tables["Item"].Columns.Add("itemid");
+                       _dataset.Tables["Item"].Columns.Add("desc");
+                       
+               }
+       
+               [TearDown]
+               public void Clean() 
+               {
+                       _dataset.Relations.Clear();
+               }
+       
+               [Test]
+               public void Add()
+               {
+                       DataRelationCollection drcol = _dataset.Relations;
+                       DataColumn parentCol = _dataset.Tables["Customer"].Columns["custid"];
+                       DataColumn childCol = _dataset.Tables["Order"].Columns["custid"];
+                       DataRelation dr = new DataRelation("CustOrder",parentCol,childCol);
+                       
+                       drcol.Add(dr);
+                       AssertEquals("test#1","CustOrder",drcol[0].RelationName);
+                       drcol.Clear();
+                       
+                       drcol.Add(parentCol,childCol);
+                       AssertEquals("test#2",1,drcol.Count);
+                       drcol.Clear();
+                       
+                       drcol.Add("NewRelation",parentCol,childCol);
+                       AssertEquals("test#3","NewRelation",drcol[0].RelationName);
+                       drcol.Clear();
+                       
+                       drcol.Add("NewRelation",parentCol,childCol,false);
+                       AssertEquals("test#4",1,drcol.Count);
+                       drcol.Clear();
+                       
+                       drcol.Add("NewRelation",parentCol,childCol,true);
+                       AssertEquals("test#5",1,drcol.Count);
+                       drcol.Clear();
+               }
+               
+               [Test]          
+               [ExpectedException(typeof(ArgumentNullException))]
+               public void AddException1()
+               {
+                       DataRelationCollection drcol = _dataset.Relations;
+                       DataRelation drnull = null;
+                       drcol.Add(drnull);
+               }
+               
+               [Test]
+               [ExpectedException(typeof(ArgumentException))]
+               public void AddException2()
+               {
+                       DataRelationCollection drcol = _dataset.Relations;
+                       DataRelation dr1= new DataRelation("CustOrder"
+                                                       ,_dataset.Tables["Customer"].Columns["custid"]
+                                                       ,_dataset.Tables["Order"].Columns["custid"]);
+                       drcol.Add(dr1);                 
+                       drcol.Add(dr1);
+               }
+               
+               [Test]
+               [ExpectedException(typeof(DuplicateNameException))]
+               public void AddException3()
+               {
+                       DataRelationCollection drcol = _dataset.Relations;
+                       DataRelation dr1= new DataRelation("DuplicateName"
+                                                       ,_dataset.Tables["Customer"].Columns["custid"]
+                                                       ,_dataset.Tables["Order"].Columns["custid"]);
+                       DataRelation dr2 = new DataRelation("DuplicateName"
+                                                       ,_dataset.Tables["Item"].Columns["itemid"]
+                                                       ,_dataset.Tables["Order"].Columns["custid"]);
+                       
+                       drcol.Add(dr1);                 
+                       drcol.Add(dr2);
+               }
+               
+               
+               [Test]
+               public void AddRange()
+               {
+                       DataRelationCollection drcol = _dataset.Relations;
+                       DataRelation dr1= new DataRelation("CustOrder"
+                                                       ,_dataset.Tables["Customer"].Columns["custid"]
+                                                       ,_dataset.Tables["Order"].Columns["custid"]);
+                       DataRelation dr2 = new DataRelation("ItemOrder"
+                                                       ,_dataset.Tables["Item"].Columns["itemid"]
+                                                       ,_dataset.Tables["Order"].Columns["custid"]);
+                       drcol.AddRange(new DataRelation[] {dr1,dr2});
+                       
+                       AssertEquals("test#1","CustOrder",drcol[0].RelationName);
+                       AssertEquals("test#2","ItemOrder",drcol[1].RelationName);
+               }
+               
+               [Test]
+               public void CanRemove()
+               {
+                       DataRelationCollection drcol = _dataset.Relations;
+                       DataColumn parentCol = _dataset.Tables["Customer"].Columns["custid"];
+                       DataColumn childCol = _dataset.Tables["Order"].Columns["custid"];
+                       DataRelation dr = new DataRelation("CustOrder",parentCol,childCol);
+                       
+                       drcol.Add(dr);
+                       AssertEquals("test#1",true,drcol.CanRemove(dr));
+                       dr = null;
+                       AssertEquals("test#2",false,drcol.CanRemove(dr));
+                       DataRelation dr2 = new DataRelation("ItemOrder"
+                                               ,_dataset.Tables["Item"].Columns["itemid"]
+                                               ,_dataset.Tables["Order"].Columns["custid"]);
+                       AssertEquals("test#3",false,drcol.CanRemove(dr2));
+               }
+               
+               [Test]
+               public void Clear()
+               {
+                       DataRelationCollection drcol = _dataset.Relations;
+                       DataColumn parentCol = _dataset.Tables["Customer"].Columns["custid"];
+                       DataColumn childCol = _dataset.Tables["Order"].Columns["custid"];
+                       drcol.Add(new DataRelation("CustOrder",parentCol,childCol));
+                       drcol.Add("ItemOrder",_dataset.Tables["Item"].Columns["itemid"]
+                                                                ,_dataset.Tables["Order"].Columns["itemid"]);
+                       drcol.Clear();
+                       AssertEquals("test#1",0,drcol.Count);
+               }
+               
+               [Test]
+               public void Contains()
+               {
+                       DataRelationCollection drcol = _dataset.Relations;
+                       DataColumn parentCol = _dataset.Tables["Customer"].Columns["custid"];
+                       DataColumn childCol = _dataset.Tables["Order"].Columns["custid"];
+                       DataRelation dr = new DataRelation("CustOrder",parentCol,childCol);
+                       
+                       drcol.Add(dr);
+                       AssertEquals("test#1",true,drcol.Contains(dr.RelationName));
+                       string drnull = "";
+                       AssertEquals("test#2",false,drcol.Contains(drnull));
+                       dr = new DataRelation("newRelation",childCol,parentCol);
+                       AssertEquals("test#3",false,drcol.Contains("NoSuchRelation"));
+               }
+               
+               [Test]
+               public void CopyTo()
+               {
+                       DataRelationCollection drcol = _dataset.Relations;
+                       drcol.Add("CustOrder"
+                                       ,_dataset.Tables["Customer"].Columns["custid"]
+                                       ,_dataset.Tables["Order"].Columns["custid"]);
+                       drcol.Add("ItemOrder"
+                                       ,_dataset.Tables["Item"].Columns["itemid"]
+                                       ,_dataset.Tables["Order"].Columns["custid"]);
+                       
+                       DataRelation [] array = new DataRelation[2];
+                       drcol.CopyTo(array,0);
+                       AssertEquals("test#1",2,array.Length);
+                       AssertEquals("test#2", "CustOrder", array[0].RelationName);
+                       AssertEquals("test#3", "ItemOrder", array[1].RelationName);
+                       
+                       DataRelation [] array1 = new DataRelation[4];
+                       drcol.CopyTo(array1,2);
+                       AssertEquals("test#4", null, array1[0]);
+                       AssertEquals("test#5", null, array1[1]);
+                       AssertEquals("test#6", "CustOrder", array1[2].RelationName);
+                       AssertEquals("test#7", "ItemOrder", array1[3].RelationName);
+               }
+               
+               [Test]
+               public void Equals()
+               {
+                       DataRelationCollection drcol = _dataset.Relations;
+                       drcol.Add("CustOrder"
+                                       ,_dataset.Tables["Customer"].Columns["custid"]
+                                       ,_dataset.Tables["Order"].Columns["custid"]);
+                       drcol.Add("ItemOrder"
+                                       ,_dataset.Tables["Item"].Columns["itemid"]
+                                       ,_dataset.Tables["Order"].Columns["custid"]);
+                       DataSet newds = new DataSet();
+                       DataRelationCollection drcol1 = newds.Relations;
+                       DataRelationCollection drcol2 = _dataset.Relations;
+
+                       AssertEquals("test#1", true, drcol.Equals(drcol));
+                       AssertEquals("test#2", true, drcol.Equals(drcol2));
+                       
+                       AssertEquals("test#3", false, drcol1.Equals(drcol));
+                       AssertEquals("test#4", false, drcol.Equals(drcol1));
+                       
+                       AssertEquals("test#5", true, Object.Equals(drcol,drcol2));
+                       AssertEquals("test#6", false, Object.Equals(drcol,drcol1));
+                       
+               }
+               [Test]
+               public void IndexOf()
+               {
+                       DataRelationCollection drcol = _dataset.Relations;
+                       DataRelation dr1= new DataRelation("CustOrder"
+                                                       ,_dataset.Tables["Customer"].Columns["custid"]
+                                                       ,_dataset.Tables["Order"].Columns["custid"]);
+                       DataRelation dr2 = new DataRelation("ItemOrder"
+                                                       ,_dataset.Tables["Item"].Columns["itemid"]
+                                                       ,_dataset.Tables["Order"].Columns["custid"]);
+                       drcol.Add(dr1);
+                       drcol.Add(dr2);
+                       
+                       AssertEquals("test#1",0,drcol.IndexOf(dr1));
+                       AssertEquals("test#2",1,drcol.IndexOf(dr2));
+                       
+                       AssertEquals("test#3",0,drcol.IndexOf("CustOrder"));
+                       AssertEquals("test#4",1,drcol.IndexOf("ItemOrder"));
+                       
+                       AssertEquals("test#5",0,drcol.IndexOf(drcol[0]));
+                       AssertEquals("test#6",1,drcol.IndexOf(drcol[1]));
+                       
+                       AssertEquals("test#7",-1,drcol.IndexOf("_noRelation_"));
+                       DataRelation newdr = new DataRelation("newdr"
+                                                                               ,_dataset.Tables["Customer"].Columns["custid"]
+                                                                               ,_dataset.Tables["Order"].Columns["custid"]);
+                       
+                       AssertEquals("test#8",-1,drcol.IndexOf(newdr));
+               }
+
+               [Test]
+               public void Remove()
+               {
+                       DataRelationCollection drcol = _dataset.Relations;
+                       DataRelation dr1= new DataRelation("CustOrder"
+                                                       ,_dataset.Tables["Customer"].Columns["custid"]
+                                                       ,_dataset.Tables["Order"].Columns["custid"]);
+                       DataRelation dr2 = new DataRelation("ItemOrder"
+                                                       ,_dataset.Tables["Item"].Columns["itemid"]
+                                                       ,_dataset.Tables["Order"].Columns["custid"]);
+                       drcol.Add(dr1);
+                       drcol.Add(dr2);
+                       
+                       drcol.Remove(dr1);
+                       AssertEquals("test#1", false, drcol.Contains(dr1.RelationName));
+                       drcol.Add(dr1);
+                       
+                       drcol.Remove("CustOrder");
+                       AssertEquals("test#2", false, drcol.Contains("CustOrder"));
+                       drcol.Add(dr1);
+                       
+                       DataRelation drnull = null;
+                       try
+                       {                       
+                               drcol.Remove(drnull);
+                               Fail("Err:: drcol.Remove(null) must fail");
+                       }
+                       catch(Exception e)
+                       {
+                               AssertEquals("test#3", typeof (ArgumentNullException), e.GetType());
+                       }
+                       
+                       DataRelation newdr = new DataRelation("newdr"
+                                                                               ,_dataset.Tables["Customer"].Columns["custid"]
+                                                                               ,_dataset.Tables["Order"].Columns["custid"]);
+                       try
+                       {
+                               drcol.Remove(newdr);
+                               Fail("Err: removed relation which not part of collection");
+                       }
+                       catch (Exception e)
+                       {
+                               AssertEquals ("test#4", typeof(ArgumentException), e.GetType());
+                       }
+                       try
+                       {
+                               drcol.Remove("newdr");
+                               Fail("Err: removed relation which not part of collection");
+                       }
+                       catch (Exception e)
+                       {
+                               AssertEquals ("test#5", typeof(IndexOutOfRangeException), e.GetType());
+                       }
+
+                       
+               }
+               
+               [Test]
+               public void RemoveAt()
+               {
+                       DataRelationCollection drcol = _dataset.Relations;
+                       DataRelation dr1= new DataRelation("CustOrder"
+                                                       ,_dataset.Tables["Customer"].Columns["custid"]
+                                                       ,_dataset.Tables["Order"].Columns["custid"]);
+                       DataRelation dr2 = new DataRelation("ItemOrder"
+                                                       ,_dataset.Tables["Item"].Columns["itemid"]
+                                                       ,_dataset.Tables["Order"].Columns["custid"]);
+                       drcol.Add(dr1);
+                       drcol.Add(dr2);
+
+                       try
+                       {
+                               drcol.RemoveAt(-1);
+                               Fail("the index was out of bound: must have failed");
+                       }
+                       catch(Exception e)
+                       {
+                               AssertEquals ("test#1", typeof (ArgumentException), e.GetType ());
+                               AssertEquals ("test#2", "There is no row at position -1.", e.Message);
+                       }
+                       try
+                       {
+                               drcol.RemoveAt(101);
+                               Fail("the index was out of bound: must have failed");
+                       }
+                       catch(Exception e)
+                       {
+                               AssertEquals ("test#3", typeof (ArgumentException), e.GetType ());
+                               AssertEquals ("test#4", "There is no row at position -1.", e.Message);
+                       }
+                       
+                       drcol.RemoveAt (1);
+                       AssertEquals ("test#5", false, drcol.Contains(dr2.RelationName));
+                       drcol.RemoveAt (0);
+                       AssertEquals ("test#6", false, drcol.Contains(dr1.RelationName));
+               }
+               
+               [Test]
+               public void ToStringTest()
+               {
+                       DataRelationCollection drcol = _dataset.Relations;
+                       DataRelation dr1= new DataRelation("CustOrder"
+                                                       ,_dataset.Tables["Customer"].Columns["custid"]
+                                                       ,_dataset.Tables["Order"].Columns["custid"]);
+                       drcol.Add(dr1); 
+                       AssertEquals("test#1","System.Data.DataRelationCollection",drcol.ToString());
+                       System.Console.WriteLine(drcol.ToString());
+               }
+       }
+}