* roottypes.cs: Rename from tree.cs.
[mono.git] / mcs / class / Mono.C5 / Test / hashing / HashTableTests.cs
index f44a6d3389ee79c06e5560f3474a6fe820947da1..a92d407d6478ed365f563ecfa94d9e4ce934a326 100644 (file)
@@ -1,6 +1,5 @@
-#if NET_2_0\r
 /*\r
- Copyright (c) 2003-2004 Niels Kokholm <kokholm@itu.dk> and Peter Sestoft <sestoft@dina.kvl.dk>\r
+ Copyright (c) 2003-2006 Niels Kokholm and Peter Sestoft\r
  Permission is hereby granted, free of charge, to any person obtaining a copy\r
  of this software and associated documentation files (the "Software"), to deal\r
  in the Software without restriction, including without limitation the rights\r
 using System;\r
 using C5;\r
 using NUnit.Framework;\r
-using MSG = System.Collections.Generic;\r
-namespace nunit.hashtable.set\r
+using SCG = System.Collections.Generic;\r
+namespace C5UnitTests.hashtable.set\r
 {\r
-       namespace Enumerable\r
+  using CollectionOfInt = HashSet<int>;\r
+\r
+  [TestFixture]\r
+  public class GenericTesters\r
+  {\r
+    [Test]\r
+    public void TestEvents()\r
+    {\r
+      Fun<CollectionOfInt> factory = delegate() { return new CollectionOfInt(TenEqualityComparer.Default); };\r
+      new C5UnitTests.Templates.Events.CollectionTester<CollectionOfInt>().Test(factory);\r
+    }\r
+\r
+    [Test]\r
+    public void Extensible()\r
+    {\r
+      C5UnitTests.Templates.Extensible.Clone.Tester<CollectionOfInt>();\r
+      C5UnitTests.Templates.Extensible.Serialization.Tester<CollectionOfInt>();\r
+    }\r
+  }\r
+\r
+  static class Factory\r
+  {\r
+    public static ICollection<T> New<T>() { return new HashSet<T>(); }\r
+  }\r
+\r
+\r
+  namespace Enumerable\r
        {\r
                [TestFixture]\r
                public class Multiops\r
                {\r
                        private HashSet<int> list;\r
 \r
-                       private Filter<int> always, never, even;\r
+                       private Fun<int, bool> always, never, even;\r
 \r
 \r
                        [SetUp]\r
@@ -81,11 +106,11 @@ namespace nunit.hashtable.set
 \r
 \r
                        [Test]\r
-                       [Ignore("This is also failing on windows. Martin")]\r
+                       [Ignore("Temporarily disabled.  2006-03-07.  Martin")]\r
                        public void Apply()\r
                        {\r
                                int sum = 0;\r
-                               Applier<int> a = delegate(int i){sum=i+10*sum;};\r
+                               Act<int> a = delegate(int i){sum=i+10*sum;};\r
 \r
                                list.Apply(a);\r
                                Assert.AreEqual(0, sum);\r
@@ -115,7 +140,7 @@ namespace nunit.hashtable.set
                        [Test]\r
                        public void Empty()\r
                        {\r
-                               MSG.IEnumerator<int> e = hashset.GetEnumerator();\r
+                               SCG.IEnumerator<int> e = hashset.GetEnumerator();\r
 \r
                                Assert.IsFalse(e.MoveNext());\r
                        }\r
@@ -134,87 +159,9 @@ namespace nunit.hashtable.set
                                hashset.Add(18);\r
                                hashset.Add(17);\r
                                hashset.Add(33);\r
-                               Assert.IsTrue(IC.seq(hashset, 1, 5, 8, 10, 16, 17, 18, 33));\r
+                               Assert.IsTrue(IC.seteq(hashset, 1, 5, 8, 10, 16, 17, 18, 33));\r
                        }\r
 \r
-\r
-#if SAFEENUMERATORS\r
-                       [Test]\r
-                       [ExpectedException(typeof(InvalidOperationException))]\r
-                       public void TooEarlyCurrent()\r
-                       {\r
-                               int none = hashset.GetEnumerator().Current;\r
-                       }\r
-                       [Test]\r
-                       [ExpectedException(typeof(InvalidOperationException))]\r
-                       public void TooLateMoveNext()\r
-                       {\r
-                               hashset.Add(5);\r
-                               hashset.Add(8);\r
-                               hashset.Add(5);\r
-\r
-                               MSG.IEnumerator<int> e = hashset.GetEnumerator();\r
-\r
-                               e.MoveNext();\r
-                               e.MoveNext();\r
-                               e.MoveNext();\r
-                               e.MoveNext();\r
-                               e.MoveNext();\r
-                       }\r
-\r
-\r
-                       [Test]\r
-                       [ExpectedException(typeof(InvalidOperationException))]\r
-                       public void TooLateCurrent()\r
-                       {\r
-                               hashset.Add(5);\r
-                               hashset.Add(8);\r
-                               hashset.Add(5);\r
-\r
-                               MSG.IEnumerator<int> e = hashset.GetEnumerator();\r
-\r
-                               e.MoveNext();\r
-                               e.MoveNext();\r
-                               e.MoveNext();\r
-                               e.MoveNext();\r
-\r
-                               int i = e.Current;\r
-                       }\r
-\r
-\r
-                       [Test]\r
-                       [ExpectedException(typeof(InvalidOperationException))]\r
-                       public void MoveNextAfterDispose()\r
-                       {\r
-                               hashset.Add(5);\r
-                               hashset.Add(8);\r
-                               hashset.Add(5);\r
-\r
-                               MSG.IEnumerator<int> e = hashset.GetEnumerator();\r
-\r
-                               e.MoveNext();\r
-                               e.Dispose();\r
-                               e.MoveNext();\r
-                       }\r
-                       \r
-                       \r
-                       [Test]\r
-                       [ExpectedException(typeof(InvalidOperationException))]\r
-                       public void CurrentAfterDispose()\r
-                       {\r
-                               hashset.Add(5);\r
-                               hashset.Add(8);\r
-                               hashset.Add(5);\r
-\r
-                               MSG.IEnumerator<int> e = hashset.GetEnumerator();\r
-\r
-                               e.MoveNext();\r
-                               e.Dispose();\r
-\r
-                               int i = e.Current;\r
-                       }\r
-#endif\r
-\r
                        [Test]\r
                        public void DoDispose()\r
                        {\r
@@ -222,7 +169,7 @@ namespace nunit.hashtable.set
                                hashset.Add(8);\r
                                hashset.Add(5);\r
 \r
-                               MSG.IEnumerator<int> e = hashset.GetEnumerator();\r
+                               SCG.IEnumerator<int> e = hashset.GetEnumerator();\r
 \r
                                e.MoveNext();\r
                                e.MoveNext();\r
@@ -231,14 +178,14 @@ namespace nunit.hashtable.set
 \r
 \r
                        [Test]\r
-                       [ExpectedException(typeof(InvalidOperationException))]\r
-                       public void MoveNextAfterUpdate()\r
+      [ExpectedException(typeof(CollectionModifiedException))]\r
+      public void MoveNextAfterUpdate()\r
                        {\r
                                hashset.Add(5);\r
                                hashset.Add(8);\r
                                hashset.Add(5);\r
 \r
-                               MSG.IEnumerator<int> e = hashset.GetEnumerator();\r
+                               SCG.IEnumerator<int> e = hashset.GetEnumerator();\r
 \r
                                e.MoveNext();\r
                                hashset.Add(99);\r
@@ -251,13 +198,32 @@ namespace nunit.hashtable.set
                }\r
        }\r
 \r
-\r
-\r
-\r
        namespace CollectionOrSink\r
        {\r
-               [TestFixture]\r
-               public class CollectionOrSink\r
+    [TestFixture]\r
+    public class Formatting\r
+    {\r
+      ICollection<int> coll;\r
+      IFormatProvider rad16;\r
+      [SetUp]\r
+      public void Init() { coll = Factory.New<int>(); rad16 = new RadixFormatProvider(16); }\r
+      [TearDown]\r
+      public void Dispose() { coll = null; rad16 = null; }\r
+      [Test]\r
+      [Ignore("Temporarily disabled.  2006-03-07.  Martin")]\r
+      public void Format()\r
+      {\r
+        Assert.AreEqual("{  }", coll.ToString());\r
+        coll.AddAll<int>(new int[] { -4, 28, 129, 65530 });\r
+        Assert.AreEqual("{ 65530, -4, 28, 129 }", coll.ToString());\r
+        Assert.AreEqual("{ FFFA, -4, 1C, 81 }", coll.ToString(null, rad16));\r
+        Assert.AreEqual("{ 65530, -4, ... }", coll.ToString("L14", null));\r
+        Assert.AreEqual("{ FFFA, -4, ... }", coll.ToString("L14", rad16));\r
+      }\r
+    }\r
+\r
+    [TestFixture]\r
+    public class CollectionOrSink\r
                {\r
                        private HashSet<int> hashset;\r
 \r
@@ -265,9 +231,22 @@ namespace nunit.hashtable.set
                        [SetUp]\r
                        public void Init() { hashset = new HashSet<int>(); }\r
 \r
+      [Test]\r
+      public void Choose()\r
+      {\r
+        hashset.Add(7);\r
+        Assert.AreEqual(7, hashset.Choose());\r
+      }\r
 \r
-                       [Test]\r
-                       public void CountEtAl()\r
+      [Test]\r
+      [ExpectedException(typeof(NoSuchItemException))]\r
+      public void BadChoose()\r
+      {\r
+        hashset.Choose();\r
+      }\r
+\r
+      [Test]\r
+      public void CountEtAl()\r
                        {\r
                                Assert.AreEqual(0, hashset.Count);\r
                                Assert.IsTrue(hashset.IsEmpty);\r
@@ -293,11 +272,11 @@ namespace nunit.hashtable.set
                                HashSet<int> hashset2 = new HashSet<int>();\r
 \r
                                hashset2.AddAll(hashset);\r
-                               Assert.IsTrue(IC.seq(hashset2, 3, 4, 5));\r
+                               Assert.IsTrue(IC.seteq(hashset2, 3, 4, 5));\r
                                hashset.Add(9);\r
                                hashset.AddAll(hashset2);\r
-                               Assert.IsTrue(IC.seq(hashset2, 3, 4, 5));\r
-                               Assert.IsTrue(IC.seq(hashset, 3, 4, 5, 9));\r
+                               Assert.IsTrue(IC.seteq(hashset2, 3, 4, 5));\r
+                               Assert.IsTrue(IC.seteq(hashset, 3, 4, 5, 9));\r
                        }\r
 \r
 \r
@@ -305,10 +284,60 @@ namespace nunit.hashtable.set
                        public void Dispose() { hashset = null; }\r
                }\r
 \r
-\r
-\r
-               [TestFixture]\r
-               public class ArrayTest\r
+    [TestFixture]\r
+    public class FindPredicate\r
+    {\r
+      private HashSet<int> list;\r
+      Fun<int, bool> pred;\r
+\r
+      [SetUp]\r
+      public void Init()\r
+      {\r
+        list = new HashSet<int>(TenEqualityComparer.Default);\r
+        pred = delegate(int i) { return i % 5 == 0; };\r
+      }\r
+\r
+      [TearDown]\r
+      public void Dispose() { list = null; }\r
+\r
+      [Test]\r
+      [Ignore("Temporarily disabled.  2006-03-07.  Martin")]\r
+      public void Find()\r
+      {\r
+        int i;\r
+        Assert.IsFalse(list.Find(pred, out i));\r
+        list.AddAll<int>(new int[] { 4, 22, 67, 37 });\r
+        Assert.IsFalse(list.Find(pred, out i));\r
+        list.AddAll<int>(new int[] { 45, 122, 675, 137 });\r
+        Assert.IsTrue(list.Find(pred, out i));\r
+        Assert.AreEqual(45, i);\r
+      }\r
+    }\r
+\r
+    [TestFixture]\r
+    public class UniqueItems\r
+    {\r
+      private HashSet<int> list;\r
+\r
+      [SetUp]\r
+      public void Init() { list = new HashSet<int>(); }\r
+\r
+      [TearDown]\r
+      public void Dispose() { list = null; }\r
+\r
+      [Test]\r
+      public void Test()\r
+      {\r
+        Assert.IsTrue(IC.seteq(list.UniqueItems()));\r
+        Assert.IsTrue(IC.seteq(list.ItemMultiplicities()));\r
+        list.AddAll<int>(new int[] { 7, 9, 7 });\r
+        Assert.IsTrue(IC.seteq(list.UniqueItems(), 7, 9));\r
+        Assert.IsTrue(IC.seteq(list.ItemMultiplicities(), 7, 1, 9, 1));\r
+      }\r
+    }\r
+\r
+    [TestFixture]\r
+    public class ArrayTest\r
                {\r
                        private HashSet<int> hashset;\r
 \r
@@ -358,10 +387,10 @@ namespace nunit.hashtable.set
 \r
 \r
                        [Test]\r
-                       [Ignore("This is also failing on windows. Martin")]\r
+                       [Ignore("Temporarily disabled.  2006-03-07.  Martin")]\r
                        public void CopyTo()\r
                        {\r
-                               //Note: for small ints the itemhasher is the identity!\r
+                               //Note: for small ints the itemequalityComparer is the identity!\r
                                hashset.CopyTo(a, 1);\r
                                Assert.AreEqual("Alles klar", aeq(a, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009));\r
                                hashset.Add(6);\r
@@ -371,7 +400,7 @@ namespace nunit.hashtable.set
                                hashset.Add(9);\r
                                hashset.CopyTo(a, 4);\r
 \r
-                               //TODO: make test independent on onterhasher\r
+                               //TODO: make test independent on onterequalityComparer\r
                                Assert.AreEqual("Alles klar", aeq(a, 1000, 1001, 6, 1003, 6, 9, 4, 1007, 1008, 1009));\r
                                hashset.Clear();\r
                                hashset.Add(7);\r
@@ -381,11 +410,10 @@ namespace nunit.hashtable.set
 \r
 \r
                        [Test]\r
-                       [ExpectedException(typeof(ArgumentException))]\r
-                       public void CopyToBad()\r
+      [ExpectedException(typeof(ArgumentOutOfRangeException))]\r
+      public void CopyToBad()\r
                        {\r
-                               hashset.Add(3);\r
-                               hashset.CopyTo(a, 10);\r
+                               hashset.CopyTo(a, 11);\r
                        }\r
 \r
 \r
@@ -398,8 +426,8 @@ namespace nunit.hashtable.set
 \r
 \r
                        [Test]\r
-                       [ExpectedException(typeof(ArgumentException))]\r
-                       public void CopyToTooFar()\r
+      [ExpectedException(typeof(ArgumentOutOfRangeException))]\r
+      public void CopyToTooFar()\r
                        {\r
                                hashset.Add(3);\r
                                hashset.Add(8);\r
@@ -458,7 +486,7 @@ namespace nunit.hashtable.set
                                hashset.Add(7);\r
                                hashset.Add(7 - 1503427877);\r
 \r
-                               //foreach (int i in hashset) Console.WriteLine("A: {0}", i);\r
+                               //foreach (int cell in hashset) Console.WriteLine("A: {0}", cell);\r
                                hashset.Remove(7);\r
                                Assert.IsTrue(hashset.Contains(7 - 1503427877));\r
                        }\r
@@ -483,7 +511,28 @@ namespace nunit.hashtable.set
                        public void Init() { hashset = new HashSet<int>(); }\r
 \r
 \r
-                       [Test]\r
+      [Test]\r
+      [ExpectedException(typeof(NullReferenceException))]\r
+      public void NullEqualityComparerinConstructor1()\r
+      {\r
+        new HashSet<int>(null);\r
+      }\r
+\r
+      [Test]\r
+      [ExpectedException(typeof(NullReferenceException))]\r
+      public void NullEqualityComparerinConstructor2()\r
+      {\r
+        new HashSet<int>(5, null);\r
+      }\r
+\r
+      [Test]\r
+      [ExpectedException(typeof(NullReferenceException))]\r
+      public void NullEqualityComparerinConstructor3()\r
+      {\r
+        new HashSet<int>(5, 0.5, null);\r
+      }\r
+\r
+      [Test]\r
                        public void Contains()\r
                        {\r
                                Assert.IsFalse(hashset.Contains(5));\r
@@ -543,7 +592,7 @@ namespace nunit.hashtable.set
                                        a[i] = 3 * i + 1;\r
                                }\r
 \r
-                               Assert.IsTrue(IC.seq(hashset, a));\r
+                               Assert.IsTrue(IC.seteq(hashset, a));\r
                        }\r
 \r
 \r
@@ -566,7 +615,7 @@ namespace nunit.hashtable.set
 \r
 \r
                        [Test]\r
-                       [Ignore("This is also failing on windows. Martin")]\r
+                       [Ignore("Temporarily disabled.  2006-03-07.  Martin")]\r
                        public void RemoveAllCopies()\r
                        {\r
                                hashset.Add(5);hashset.Add(7);hashset.Add(5);\r
@@ -608,12 +657,12 @@ namespace nunit.hashtable.set
                                hashset.Add(4);hashset.Add(5);hashset.Add(6);\r
                                list2.Add(5);list2.Add(4);list2.Add(7);\r
                                hashset.RetainAll(list2);\r
-                               Assert.IsTrue(IC.seq(hashset, 4, 5));\r
+                               Assert.IsTrue(IC.seteq(hashset, 4, 5));\r
                                hashset.Add(6);\r
                                list2.Clear();\r
                                list2.Add(7);list2.Add(8);list2.Add(9);\r
                                hashset.RetainAll(list2);\r
-                               Assert.IsTrue(IC.seq(hashset));\r
+                               Assert.IsTrue(IC.seteq(hashset));\r
                        }\r
 \r
 \r
@@ -644,19 +693,19 @@ namespace nunit.hashtable.set
                                hashset.Add(4);hashset.Add(4);hashset.Add(5);hashset.Add(4);hashset.Add(6);\r
                                Assert.IsFalse(hashset.Remove(2));\r
                                Assert.IsTrue(hashset.Remove(4));\r
-                               Assert.IsTrue(IC.seq(hashset, 5, 6));\r
+                               Assert.IsTrue(IC.seteq(hashset, 5, 6));\r
                                hashset.Add(7);\r
                                hashset.Add(21);hashset.Add(37);hashset.Add(53);hashset.Add(69);hashset.Add(85);\r
                                Assert.IsTrue(hashset.Remove(5));\r
-                               Assert.IsTrue(IC.seq(hashset, 6, 7, 21, 37, 53, 69, 85));\r
+                               Assert.IsTrue(IC.seteq(hashset, 6, 7, 21, 37, 53, 69, 85));\r
                                Assert.IsFalse(hashset.Remove(165));\r
-                               Assert.IsTrue(IC.seq(hashset, 6, 7, 21, 37, 53, 69, 85));\r
+                               Assert.IsTrue(IC.seteq(hashset, 6, 7, 21, 37, 53, 69, 85));\r
                                Assert.IsTrue(hashset.Remove(53));\r
-                               Assert.IsTrue(IC.seq(hashset, 6, 7, 21, 37, 69, 85));\r
+                               Assert.IsTrue(IC.seteq(hashset, 6, 7, 21, 37, 69, 85));\r
                                Assert.IsTrue(hashset.Remove(37));\r
-                               Assert.IsTrue(IC.seq(hashset, 6, 7, 21, 69, 85));\r
+                               Assert.IsTrue(IC.seteq(hashset, 6, 7, 21, 69, 85));\r
                                Assert.IsTrue(hashset.Remove(85));\r
-                               Assert.IsTrue(IC.seq(hashset, 6, 7, 21, 69));\r
+                               Assert.IsTrue(IC.seteq(hashset, 6, 7, 21, 69));\r
                        }\r
 \r
 \r
@@ -682,8 +731,8 @@ namespace nunit.hashtable.set
                        [SetUp]\r
                        public void Init()\r
                        {\r
-                               lst = new HashSet<KeyValuePair<int,int>>();\r
-                               for (int i = 0; i < 10; i++)\r
+                lst = new HashSet<KeyValuePair<int, int>>(new KeyValuePairEqualityComparer<int, int>());\r
+                for (int i = 0; i < 10; i++)\r
                                        lst.Add(new KeyValuePair<int,int>(i, i + 30));\r
                        }\r
 \r
@@ -698,8 +747,8 @@ namespace nunit.hashtable.set
                                KeyValuePair<int,int> p = new KeyValuePair<int,int>(3, 78);\r
 \r
                                Assert.IsTrue(lst.Find(ref p));\r
-                               Assert.AreEqual(3, p.key);\r
-                               Assert.AreEqual(33, p.value);\r
+                               Assert.AreEqual(3, p.Key);\r
+                               Assert.AreEqual(33, p.Value);\r
                                p = new KeyValuePair<int,int>(13, 78);\r
                                Assert.IsFalse(lst.Find(ref p));\r
                        }\r
@@ -712,14 +761,14 @@ namespace nunit.hashtable.set
                                KeyValuePair<int,int> q = new KeyValuePair<int,int>();\r
 \r
                                Assert.IsTrue(lst.FindOrAdd(ref p));\r
-                               Assert.AreEqual(3, p.key);\r
-                               Assert.AreEqual(33, p.value);\r
+                               Assert.AreEqual(3, p.Key);\r
+                               Assert.AreEqual(33, p.Value);\r
                                p = new KeyValuePair<int,int>(13, 79);\r
                                Assert.IsFalse(lst.FindOrAdd(ref p));\r
-                               q.key = 13;\r
+                               q.Key = 13;\r
                                Assert.IsTrue(lst.Find(ref q));\r
-                               Assert.AreEqual(13, q.key);\r
-                               Assert.AreEqual(79, q.value);\r
+                               Assert.AreEqual(13, q.Key);\r
+                               Assert.AreEqual(79, q.Value);\r
                        }\r
 \r
 \r
@@ -730,10 +779,10 @@ namespace nunit.hashtable.set
                                KeyValuePair<int,int> q = new KeyValuePair<int,int>();\r
 \r
                                Assert.IsTrue(lst.Update(p));\r
-                               q.key = 3;\r
+                               q.Key = 3;\r
                                Assert.IsTrue(lst.Find(ref q));\r
-                               Assert.AreEqual(3, q.key);\r
-                               Assert.AreEqual(78, q.value);\r
+                               Assert.AreEqual(3, q.Key);\r
+                               Assert.AreEqual(78, q.Value);\r
                                p = new KeyValuePair<int,int>(13, 78);\r
                                Assert.IsFalse(lst.Update(p));\r
                        }\r
@@ -746,16 +795,16 @@ namespace nunit.hashtable.set
                                KeyValuePair<int,int> q = new KeyValuePair<int,int>();\r
 \r
                                Assert.IsTrue(lst.UpdateOrAdd(p));\r
-                               q.key = 3;\r
+                               q.Key = 3;\r
                                Assert.IsTrue(lst.Find(ref q));\r
-                               Assert.AreEqual(3, q.key);\r
-                               Assert.AreEqual(78, q.value);\r
+                               Assert.AreEqual(3, q.Key);\r
+                               Assert.AreEqual(78, q.Value);\r
                                p = new KeyValuePair<int,int>(13, 79);\r
                                Assert.IsFalse(lst.UpdateOrAdd(p));\r
-                               q.key = 13;\r
+                               q.Key = 13;\r
                                Assert.IsTrue(lst.Find(ref q));\r
-                               Assert.AreEqual(13, q.key);\r
-                               Assert.AreEqual(79, q.value);\r
+                               Assert.AreEqual(13, q.Key);\r
+                               Assert.AreEqual(79, q.Value);\r
                        }\r
 \r
 \r
@@ -763,15 +812,17 @@ namespace nunit.hashtable.set
                        public void RemoveWithReturn()\r
                        {\r
                                KeyValuePair<int,int> p = new KeyValuePair<int,int>(3, 78);\r
-                               KeyValuePair<int,int> q = new KeyValuePair<int,int>();\r
+                               //KeyValuePair<int,int> q = new KeyValuePair<int,int>();\r
 \r
-                               Assert.IsTrue(lst.RemoveWithReturn(ref p));\r
-                               Assert.AreEqual(3, p.key);\r
-                               Assert.AreEqual(33, p.value);\r
+                Assert.IsTrue(lst.Remove(p, out p));\r
+                Assert.AreEqual(3, p.Key);\r
+                               Assert.AreEqual(33, p.Value);\r
                                p = new KeyValuePair<int,int>(13, 78);\r
-                               Assert.IsFalse(lst.RemoveWithReturn(ref p));\r
-                       }\r
+                Assert.IsFalse(lst.Remove(p, out p));\r
+            }\r
                }\r
+\r
+\r
        }\r
 \r
 \r
@@ -797,7 +848,7 @@ namespace nunit.hashtable.set
                        [Test]\r
                        public void EmptyEmpty()\r
                        {\r
-                               Assert.IsTrue(dit.Equals(dat));\r
+                               Assert.IsTrue(dit.UnsequencedEquals(dat));\r
                        }\r
 \r
 \r
@@ -805,45 +856,34 @@ namespace nunit.hashtable.set
                        public void EmptyNonEmpty()\r
                        {\r
                                dit.Add(3);\r
-                               Assert.IsFalse(dit.Equals(dat));\r
-                               Assert.IsFalse(dat.Equals(dit));\r
-                       }\r
-\r
-\r
-                       public int hasher(int count, params int[] items)\r
-                       {\r
-                               int retval = 0;\r
-\r
-                               foreach (int i in items)\r
-                                       retval ^= i;\r
-\r
-                               return (count << 16) + retval;\r
+                               Assert.IsFalse(dit.UnsequencedEquals(dat));\r
+                               Assert.IsFalse(dat.UnsequencedEquals(dit));\r
                        }\r
 \r
 \r
                        [Test]\r
                        public void HashVal()\r
                        {\r
-                               Assert.AreEqual(hasher(0), dit.GetHashCode());\r
-                               dit.Add(3);\r
-                               Assert.AreEqual(hasher(1, 3), dit.GetHashCode());\r
-                               dit.Add(7);\r
-                               Assert.AreEqual(hasher(2, 3, 7), dit.GetHashCode());\r
-                               Assert.AreEqual(hasher(0), dut.GetHashCode());\r
-                               dut.Add(3);\r
-                               Assert.AreEqual(hasher(1, 3), dut.GetHashCode());\r
-                               dut.Add(7);\r
-                               Assert.AreEqual(hasher(2, 7, 3), dut.GetHashCode());\r
-                       }\r
+                Assert.AreEqual(CHC.unsequencedhashcode(), dit.GetUnsequencedHashCode());\r
+                dit.Add(3);\r
+                Assert.AreEqual(CHC.unsequencedhashcode(3), dit.GetUnsequencedHashCode());\r
+                dit.Add(7);\r
+                Assert.AreEqual(CHC.unsequencedhashcode(3, 7), dit.GetUnsequencedHashCode());\r
+                Assert.AreEqual(CHC.unsequencedhashcode(), dut.GetUnsequencedHashCode());\r
+                dut.Add(3);\r
+                Assert.AreEqual(CHC.unsequencedhashcode(3), dut.GetUnsequencedHashCode());\r
+                dut.Add(7);\r
+                Assert.AreEqual(CHC.unsequencedhashcode(7, 3), dut.GetUnsequencedHashCode());\r
+            }\r
 \r
 \r
                        [Test]\r
                        public void EqualHashButDifferent()\r
                        {\r
-                               dit.Add(2);dit.Add(1);\r
-                               dat.Add(3);dat.Add(0);\r
-                               Assert.AreEqual(dit.GetHashCode(), dat.GetHashCode());\r
-                               Assert.IsFalse(dit.Equals(dat));\r
+                               dit.Add(-1657792980);dit.Add(-1570288808);\r
+                               dat.Add(1862883298);dat.Add(-272461342);\r
+                               Assert.AreEqual(dit.GetUnsequencedHashCode(), dat.GetUnsequencedHashCode());\r
+                               Assert.IsFalse(dit.UnsequencedEquals(dat));\r
                        }\r
 \r
 \r
@@ -853,11 +893,11 @@ namespace nunit.hashtable.set
                                dit.Add(3);\r
                                dit.Add(7);\r
                                dat.Add(3);\r
-                               Assert.IsFalse(dit.Equals(dat));\r
-                               Assert.IsFalse(dat.Equals(dit));\r
+                               Assert.IsFalse(dit.UnsequencedEquals(dat));\r
+                               Assert.IsFalse(dat.UnsequencedEquals(dit));\r
                                dat.Add(7);\r
-                               Assert.IsTrue(dit.Equals(dat));\r
-                               Assert.IsTrue(dat.Equals(dit));\r
+                               Assert.IsTrue(dit.UnsequencedEquals(dat));\r
+                               Assert.IsTrue(dat.UnsequencedEquals(dit));\r
                        }\r
 \r
 \r
@@ -866,23 +906,23 @@ namespace nunit.hashtable.set
                        {\r
                                dit.Add(3);\r
                                dut.Add(3);\r
-                               Assert.IsTrue(dit.Equals(dut));\r
-                               Assert.IsTrue(dut.Equals(dit));\r
+                               Assert.IsTrue(dit.UnsequencedEquals(dut));\r
+                               Assert.IsTrue(dut.UnsequencedEquals(dit));\r
                                dit.Add(7);\r
                                dut.Add(7);\r
-                               Assert.IsTrue(dit.Equals(dut));\r
-                               Assert.IsTrue(dut.Equals(dit));\r
+                               Assert.IsTrue(dit.UnsequencedEquals(dut));\r
+                               Assert.IsTrue(dut.UnsequencedEquals(dit));\r
                        }\r
 \r
 \r
                        [Test]\r
                        public void Reflexive()\r
                        {\r
-                               Assert.IsTrue(dit.Equals(dit));\r
+                               Assert.IsTrue(dit.UnsequencedEquals(dit));\r
                                dit.Add(3);\r
-                               Assert.IsTrue(dit.Equals(dit));\r
+                               Assert.IsTrue(dit.UnsequencedEquals(dit));\r
                                dit.Add(7);\r
-                               Assert.IsTrue(dit.Equals(dit));\r
+                               Assert.IsTrue(dit.UnsequencedEquals(dit));\r
                        }\r
 \r
 \r
@@ -923,8 +963,8 @@ namespace nunit.hashtable.set
                        [Test]\r
                        public void Check()\r
                        {\r
-                               Assert.IsTrue(dit.Equals(dat));\r
-                               Assert.IsFalse(dit.Equals(dut));\r
+                               Assert.IsTrue(dit.UnsequencedEquals(dat));\r
+                               Assert.IsFalse(dit.UnsequencedEquals(dut));\r
                        }\r
 \r
 \r
@@ -933,8 +973,8 @@ namespace nunit.hashtable.set
                        {\r
                                Dit.Add(dit);Dit.Add(dut);Dit.Add(dit);\r
                                Dat.Add(dut);Dat.Add(dit);Dat.Add(dat);\r
-                               Assert.IsTrue(Dit.Equals(Dat));\r
-                               Assert.IsFalse(Dit.Equals(Dut));\r
+                               Assert.IsTrue(Dit.UnsequencedEquals(Dat));\r
+                               Assert.IsFalse(Dit.UnsequencedEquals(Dut));\r
                        }\r
 \r
 \r
@@ -974,8 +1014,8 @@ namespace nunit.hashtable.set
                        [Test]\r
                        public void Check()\r
                        {\r
-                               Assert.IsTrue(dit.Equals(dat));\r
-                               Assert.IsFalse(dit.Equals(dut));\r
+                               Assert.IsTrue(dit.UnsequencedEquals(dat));\r
+                               Assert.IsFalse(dit.UnsequencedEquals(dut));\r
                        }\r
 \r
 \r
@@ -985,8 +1025,8 @@ namespace nunit.hashtable.set
                                Dit.Add(dit);Dit.Add(dut);Dit.Add(dit);\r
                                Dat.Add(dut);Dat.Add(dit);Dat.Add(dat);\r
                                Dut.Add(dit);Dut.Add(dut);Dut.Add(dat);\r
-                               Assert.IsFalse(Dit.Equals(Dat));\r
-                               Assert.IsTrue(Dit.Equals(Dut));\r
+                               Assert.IsFalse(Dit.SequencedEquals(Dat));\r
+                               Assert.IsTrue(Dit.SequencedEquals(Dut));\r
                        }\r
 \r
 \r
@@ -1029,9 +1069,9 @@ namespace nunit.hashtable.set
                        [Test]\r
                        public void Check()\r
                        {\r
-                               Assert.IsFalse(dit.Equals(dat));\r
-                               Assert.IsTrue(dit.Equals(dot));\r
-                               Assert.IsFalse(dit.Equals(dut));\r
+                               Assert.IsFalse(dit.SequencedEquals(dat));\r
+                               Assert.IsTrue(dit.SequencedEquals(dot));\r
+                               Assert.IsFalse(dit.SequencedEquals(dut));\r
                        }\r
 \r
 \r
@@ -1042,10 +1082,10 @@ namespace nunit.hashtable.set
                                Dat.Add(dut);Dat.Add(dit);Dat.Add(dat);\r
                                Dut.Add(dot);Dut.Add(dut);//Dut.Add(dit);\r
                                Dot.Add(dit);Dot.Add(dit);Dot.Add(dut);\r
-                               Assert.IsTrue(Dit.Equals(Dit));\r
-                               Assert.IsTrue(Dit.Equals(Dut));\r
-                               Assert.IsFalse(Dit.Equals(Dat));\r
-                               Assert.IsTrue(Dit.Equals(Dot));\r
+                               Assert.IsTrue(Dit.UnsequencedEquals(Dit));\r
+                               Assert.IsTrue(Dit.UnsequencedEquals(Dut));\r
+                               Assert.IsFalse(Dit.UnsequencedEquals(Dat));\r
+                               Assert.IsTrue(Dit.UnsequencedEquals(Dot));\r
                        }\r
 \r
 \r
@@ -1058,4 +1098,3 @@ namespace nunit.hashtable.set
                }\r
        }\r
 }\r
-#endif\r