Hi, all.

The attached patch adds a new test under Test/System.Data -
 ConstraintCollectionTest2.cs
This test is a Mono NUnit standardized version of the tests under
  Test/System.Data.Tests.Mainsoft/System.Data/ConstraintCollection
As part of the patch I copied a couple of utility classes from
Test/System.Data.Tests.Mainsoft/GHUtils into a new test utility dir
called:
  Test/System.Data.Test.Utils
These utilities are used to create populated data tables.
It is our intention to standardize all the tests under
  Test/System.Data.Tests.Mainsoft/System.Data in the same manner.

Any comments are welcome.

Eyal.
Index: Test/System.Data/ConstraintCollectionTest2.cs

===================================================================

--- Test/System.Data/ConstraintCollectionTest2.cs       (revision 0)

+++ Test/System.Data/ConstraintCollectionTest2.cs       (revision 0)

@@ -0,0 +1,280 @@

+// Authors:
+//   Rafael Mizrahi   <[EMAIL PROTECTED]>
+//   Erez Lotan       <[EMAIL PROTECTED]>
+//   Oren Gurfinkel   <[EMAIL PROTECTED]>
+//   Ofer Borstein
+// 
+// Copyright (c) 2004 Mainsoft Co.
+// 
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using NUnit.Framework;
+using MonoTests.System.Data.Test.Utils;
+using System;
+using System.Collections;
+using System.ComponentModel;
+using System.Data;
+
+namespace MonoTests.System.Data
+{
+       [TestFixture] public class ConstraintCollectionTest2
+       {
+               private bool CollectionChangedFlag = false;
+
+               [Test] public void CanRemove_ParentForeign()
+               {
+                       DataSet ds = DataProvider.CreateForigenConstraint();
+                       Assert.AreEqual(false, 
ds.Tables["parent"].Constraints.CanRemove(ds.Tables["parent"].Constraints[0]), 
"CN1");
+               }
+
+               [Test] public void CanRemove_ChildForeign()
+               {
+                       DataSet ds = DataProvider.CreateForigenConstraint();
+                       Assert.AreEqual(true, 
ds.Tables["child"].Constraints.CanRemove(ds.Tables["child"].Constraints[0]), 
"CN2");
+               }
+
+               [Test] public void CanRemove_ParentAndChildForeign()
+               {
+                       DataSet ds = DataProvider.CreateForigenConstraint();
+                       //remove the forigen and ask about the unique
+                       
ds.Tables["child"].Constraints.Remove(ds.Tables["child"].Constraints[0]);
+                       Assert.AreEqual(true, 
ds.Tables["parent"].Constraints.CanRemove(ds.Tables["parent"].Constraints[0]), 
"CN3");
+               }
+
+               // FIXME. This test isn't complete.
+               public void CanRemove_Unique()
+               {
+                       DataTable dt = DataProvider.CreateUniqueConstraint();
+                       //remove the forigen and ask about the unique
+                       dt.Constraints.Remove(dt.Constraints[0]);
+                       Assert.AreEqual(true, 
dt.Constraints.CanRemove(dt.Constraints[0]), "CN4");
+               }
+
+               [Test] public void Clear_Foreign()
+               {
+                       DataSet ds = DataProvider.CreateForigenConstraint();
+                       foreach(DataTable dt in ds.Tables)
+                       {
+                               dt.Constraints.Clear();
+                       }
+                       Assert.AreEqual(0, ds.Tables[0].Constraints.Count, 
"CN5");
+                       Assert.AreEqual(0, ds.Tables[0].Constraints.Count, 
"CN6");
+
+               }
+
+               [Test] public void Clear_Unique()
+               {
+                       DataTable dt = DataProvider.CreateUniqueConstraint();
+                       int rowsCount = dt.Rows.Count;
+                       dt.Constraints.Clear();
+                       DataRow dr = dt.NewRow();
+                       dr[0] = 1;
+                       dt.Rows.Add(dr);
+                       Assert.AreEqual(rowsCount+1, dt.Rows.Count, "CN7"); 
//Just checking that no expection ocuured
+               }
+
+               [Test] public void CollectionChanged()
+               {
+                       DataTable dt = DataProvider.CreateParentDataTable();
+                       CollectionChangedFlag = false;
+                       dt.Constraints.CollectionChanged += new 
CollectionChangeEventHandler(Constraints_CollectionChangedHandler);     
+                       dt = DataProvider.CreateUniqueConstraint(dt);
+                       Assert.AreEqual(true, CollectionChangedFlag, "CN8"); 
+               }
+
+               [Test] public void Contains_ByName()
+               {
+                       DataSet ds =  DataProvider.CreateForigenConstraint();
+        
+                       //changing the constraints's name
+
+                       ds.Tables["child"].Constraints[0].ConstraintName = 
"name1";
+                       ds.Tables["parent"].Constraints[0].ConstraintName = 
"name2";
+
+
+                       Assert.AreEqual(true, 
ds.Tables["child"].Constraints.Contains("name1"), "CN9");
+                       Assert.AreEqual(false, 
ds.Tables["child"].Constraints.Contains("xxx"), "CN10");
+                       Assert.AreEqual(true, 
ds.Tables["parent"].Constraints.Contains("name2"), "CN11");
+                       Assert.AreEqual(false, 
ds.Tables["parent"].Constraints.Contains("xxx"), "CN12");
+
+               }
+
+               [Test] public void CopyTo()
+               {
+                       DataTable dt = DataProvider.CreateUniqueConstraint();
+                       
dt.Constraints.Add("constraint2",dt.Columns["String1"],true);
+
+                       object[] ar = new object[2];
+
+                       dt.Constraints.CopyTo(ar,0);
+                       Assert.AreEqual(2, ar.Length, "CN13");
+               }
+
+               [Test] public void Count()
+               {
+                       DataTable dt = DataProvider.CreateUniqueConstraint();
+                       Assert.AreEqual(1, dt.Constraints.Count, "CN14");
+
+                       //Add
+
+                       
dt.Constraints.Add("constraint2",dt.Columns["String1"],false);
+                       Assert.AreEqual(2, dt.Constraints.Count, "CN15");
+
+                       //Remove
+
+                       dt.Constraints.Remove("constraint2");
+                       Assert.AreEqual(1, dt.Constraints.Count, "CN16");
+               }
+
+               [Test] public void GetEnumerator()
+               {
+                       DataTable dt = DataProvider.CreateUniqueConstraint();
+                       
dt.Constraints.Add("constraint2",dt.Columns["String1"],false);
+
+                       int counter=0;
+                       IEnumerator myEnumerator = 
dt.Constraints.GetEnumerator();
+                       while (myEnumerator.MoveNext())
+                       {
+                               counter++;
+
+                       }
+                       Assert.AreEqual(2, counter, "CN17");
+               }
+
+               [Test] public void IndexOf()
+               {
+                       DataTable dt = DataProvider.CreateUniqueConstraint();
+                       Assert.AreEqual(0, 
dt.Constraints.IndexOf(dt.Constraints[0]), "CN18");
+
+                       //Add new constraint
+                       Constraint con = new 
UniqueConstraint(dt.Columns["String1"],false);
+
+                       dt.Constraints.Add(con);
+                       Assert.AreEqual(1, dt.Constraints.IndexOf(con), "CN19");
+
+                       //Remove it and try to look for it 
+
+                       dt.Constraints.Remove(con);
+                       Assert.AreEqual(-1, dt.Constraints.IndexOf(con), 
"CN20");
+
+               }
+
+               [Test] public void IndexOf_ByName()
+               {
+                       DataTable dt = DataProvider.CreateUniqueConstraint();
+                       dt.Constraints[0].ConstraintName="name1";
+                       Assert.AreEqual(0, dt.Constraints.IndexOf("name1"), 
"CN21");
+
+                       //Add new constraint
+                       Constraint con = new 
UniqueConstraint(dt.Columns["String1"],false);
+                       con.ConstraintName="name2";
+
+                       dt.Constraints.Add(con);
+                       Assert.AreEqual(1, dt.Constraints.IndexOf("name2"), 
"CN22");
+
+                       //Remove it and try to look for it 
+
+                       dt.Constraints.Remove(con);
+                       Assert.AreEqual(-1, dt.Constraints.IndexOf("name2"), 
"CN23");
+
+               }
+
+               [Test] public void IsReadOnly()
+               {
+                       DataTable dt = DataProvider.CreateUniqueConstraint();
+                       Assert.AreEqual(false, dt.Constraints.IsReadOnly, 
"CN24"); 
+               }
+
+               [Test] public void IsSynchronized()
+               {
+                       DataTable dt = DataProvider.CreateUniqueConstraint();
+                       Assert.AreEqual(false, dt.Constraints.IsSynchronized, 
"CN25");
+        
+                       ConstraintCollection col = 
(ConstraintCollection)dt.Constraints.SyncRoot;
+
+       //              lock(dt.Constraints.SyncRoot)
+       //              {
+                       //      Assert.AreEqual(true, col.IsSynchronized, 
"CN26");
+
+                       //}
+               }
+
+               [Test] public void Remove()
+               {
+                       DataTable dt = DataProvider.CreateUniqueConstraint();
+                       dt.Constraints.Remove(dt.Constraints[0]);
+                       Assert.AreEqual(0, dt.Constraints.Count, "CN27");
+               }
+
+               [Test] public void Remove_ByNameSimple()
+               {
+                       DataTable dt = DataProvider.CreateUniqueConstraint();
+                       dt.Constraints[0].ConstraintName = "constraint1";
+                       dt.Constraints.Remove("constraint1");
+                       Assert.AreEqual(0, dt.Constraints.Count, "CN28");
+               }
+
+               [Test] public void Remove_ByNameWithAdd()
+               {
+                       DataTable dt = DataProvider.CreateUniqueConstraint();
+                       dt.Constraints[0].ConstraintName = "constraint1";
+                       Constraint con = new 
UniqueConstraint(dt.Columns["String1"],false);
+                       dt.Constraints.Add(con);
+                       dt.Constraints.Remove(con);
+
+                       Assert.AreEqual(1, dt.Constraints.Count, "CN29");
+                       Assert.AreEqual("constraint1", 
dt.Constraints[0].ConstraintName, "CN30");
+               }
+
+               [Test] public void Remove_CollectionChangedEvent()
+               {
+                       DataTable dt = DataProvider.CreateUniqueConstraint();
+                       CollectionChangedFlag = false;
+                       dt.Constraints.CollectionChanged += new 
CollectionChangeEventHandler(Constraints_CollectionChangedHandler);
+                       dt.Constraints.Remove(dt.Constraints[0]);
+                       Assert.AreEqual(true, CollectionChangedFlag, "CN31"); 
//Checking that event has raised
+               }
+
+               [Test] public void Remove_ByNameCollectionChangedEvent()
+               {
+                       DataTable dt = DataProvider.CreateUniqueConstraint();
+                       CollectionChangedFlag = false;
+                       dt.Constraints.CollectionChanged += new 
CollectionChangeEventHandler(Constraints_CollectionChangedHandler);
+                       dt.Constraints.Remove("constraint1");
+                       Assert.AreEqual(true, CollectionChangedFlag, "CN32"); 
//Checking that event has raised
+
+               }
+
+               [Test] public void add_CollectionChanged()
+               {
+                       DataTable dt = DataProvider.CreateParentDataTable();
+                       CollectionChangedFlag = false;
+                       dt.Constraints.CollectionChanged += new 
CollectionChangeEventHandler(Constraints_CollectionChangedHandler);     
+                       dt = DataProvider.CreateUniqueConstraint(dt);
+                       Assert.AreEqual(true, CollectionChangedFlag, "CN33"); 
+               }
+
+               private void Constraints_CollectionChangedHandler(object 
sender, CollectionChangeEventArgs e)
+               {
+                       CollectionChangedFlag = true;
+               }
+       }
+}
Index: Test/System.Data.Test.Utils/DataProvider.cs

===================================================================

--- Test/System.Data.Test.Utils/DataProvider.cs (revision 0)

+++ Test/System.Data.Test.Utils/DataProvider.cs (working copy)

@@ -30,11 +30,10 @@

 using System.Data;
 using System.Data.OleDb ;
 using System.IO;
-using GHTUtils.Data;
 using System.Collections;
 
 // Provide All Data required by the diffderent tests e.g.DataTable, DataRow ...
-namespace GHTUtils
+namespace MonoTests.System.Data.Test.Utils
 {
 
        public class DataProvider
@@ -49,9 +48,9 @@

                
                #endregion
 
-               public static System.Data.DataTable CreateChildDataTable()
+               public static DataTable CreateChildDataTable()
                {
-                       System.Data.DataTable dtChild = new 
System.Data.DataTable("Child");
+                       DataTable dtChild = new DataTable("Child");
                        dtChild.Columns.Add("ParentId",typeof(int));
                        dtChild.Columns.Add("ChildId",typeof(int));
                        dtChild.Columns.Add("String1",typeof(string));
@@ -76,10 +75,10 @@

 
                }
 
-               public static System.Data.DataTable CreateParentDataTable()
+               public static DataTable CreateParentDataTable()
                {     
 
-                       System.Data.DataTable dtParent = new 
System.Data.DataTable("Parent");
+                       DataTable dtParent = new DataTable("Parent");
 
                        dtParent.Columns.Add("ParentId",typeof(int));
                        dtParent.Columns.Add("String1",typeof(string));
@@ -149,7 +148,7 @@

 
                public static DataTable CreateUniqueConstraint()
                {
-                       DataTable dt = 
GHTUtils.DataProvider.CreateParentDataTable();
+                       DataTable dt = DataProvider.CreateParentDataTable();
                        return CreateUniqueConstraint(dt);
                }
                public static DataTable CreateUniqueConstraint(DataTable dt)
@@ -172,8 +171,8 @@

                }
                public static DataSet CreateForigenConstraint()
                {
-                       DataTable parent = 
GHTUtils.DataProvider.CreateParentDataTable();
-                       DataTable child = 
GHTUtils.DataProvider.CreateChildDataTable(); 
+                       DataTable parent = DataProvider.CreateParentDataTable();
+                       DataTable child = DataProvider.CreateChildDataTable(); 
                        DataSet ds = new DataSet();
                        ds.Tables.Add(parent); 
                        ds.Tables.Add(child);
@@ -198,4 +197,4 @@

                }
 
        } 
-}

\ No newline at end of file

+}
Index: Test/System.Data.Test.Utils/DbTypeParameter.cs

===================================================================

--- Test/System.Data.Test.Utils/DbTypeParameter.cs      (revision 0)

+++ Test/System.Data.Test.Utils/DbTypeParameter.cs      (working copy)

@@ -30,7 +30,7 @@

 using System.Data;
 using System.Data.OleDb;
 
-namespace GHTUtils.Data
+namespace MonoTests.System.Data.Tests.Utils
 {
        /// <summary>
        /// Represents a parameter type for use in tests of System.Data.
Index: System.Data_test.dll.sources

===================================================================

--- System.Data_test.dll.sources        (revision 44927)

+++ System.Data_test.dll.sources        (working copy)

@@ -1,3 +1,5 @@

+System.Data.Test.Utils/DataProvider.cs
+System.Data.Test.Utils/DbTypeParameter.cs
 System.Data.SqlTypes/SqlBinaryTest.cs
 System.Data.SqlTypes/SqlBooleanTest.cs
 System.Data.SqlTypes/SqlByteTest.cs
@@ -14,6 +16,7 @@

 System.Xml/XmlDataDocumentTest.cs
 System.Xml/XmlDataDocumentTest2.cs
 System.Data/ConstraintCollectionTest.cs
+System.Data/ConstraintCollectionTest2.cs
 System.Data/ConstraintTest.cs
 System.Data/DataColumnCollectionTest.cs
 System.Data/DataColumnTest.cs
@@ -59,20 +62,6 @@

 System.Data.Tests.Mainsoft/GHTUtils/HttpClientBase.cs
 System.Data.Tests.Mainsoft/GHTUtils/ObjectTester.cs
 System.Data.Tests.Mainsoft/GHTUtils/XmlUtils.cs
-System.Data.Tests.Mainsoft/System.Data/ConstraintCollection/ConstraintCollection_add_CollectionChanged_C.cs
-System.Data.Tests.Mainsoft/System.Data/ConstraintCollection/ConstraintCollection_CanRemove_C.cs
-System.Data.Tests.Mainsoft/System.Data/ConstraintCollection/ConstraintCollection_Clear.cs
-System.Data.Tests.Mainsoft/System.Data/ConstraintCollection/ConstraintCollection_CollectionChanged.cs
-System.Data.Tests.Mainsoft/System.Data/ConstraintCollection/ConstraintCollection_Contains_S.cs
-System.Data.Tests.Mainsoft/System.Data/ConstraintCollection/ConstraintCollection_CopyTo_AI.cs
-System.Data.Tests.Mainsoft/System.Data/ConstraintCollection/ConstraintCollection_Count.cs
-System.Data.Tests.Mainsoft/System.Data/ConstraintCollection/ConstraintCollection_GetEnumerator.cs
-System.Data.Tests.Mainsoft/System.Data/ConstraintCollection/ConstraintCollection_IndexOf_C.cs
-System.Data.Tests.Mainsoft/System.Data/ConstraintCollection/ConstraintCollection_IndexOf_S.cs
-System.Data.Tests.Mainsoft/System.Data/ConstraintCollection/ConstraintCollection_IsReadOnly.cs
-System.Data.Tests.Mainsoft/System.Data/ConstraintCollection/ConstraintCollection_IsSynchronized.cs
-System.Data.Tests.Mainsoft/System.Data/ConstraintCollection/ConstraintCollection_Remove_C.cs
-System.Data.Tests.Mainsoft/System.Data/ConstraintCollection/ConstraintCollection_Remove_S.cs
 
System.Data.Tests.Mainsoft/System.Data/ConstraintException/ConstraintException_Generate.cs
 System.Data.Tests.Mainsoft/System.Data/DataColumn/DataColumn_AllowDBNull.cs
 System.Data.Tests.Mainsoft/System.Data/DataColumn/DataColumn_AutoIncrement.cs
_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list

Reply via email to