Exemple #1
0
        private void TestEq <T>(bool eq, Comparable <T> id1, Comparable <T> id2)
        {
            int h1 = id1.GetHashCode();
            int h2 = id2.GetHashCode();

            // eq reflectivity:
            NUnit.Framework.Assert.IsTrue(id1.Equals(id1));
            NUnit.Framework.Assert.IsTrue(id2.Equals(id2));
            NUnit.Framework.Assert.AreEqual(0, id1.CompareTo((T)id1));
            NUnit.Framework.Assert.AreEqual(0, id2.CompareTo((T)id2));
            // eq symmetry:
            NUnit.Framework.Assert.AreEqual(eq, id1.Equals(id2));
            NUnit.Framework.Assert.AreEqual(eq, id2.Equals(id1));
            // null comparison:
            NUnit.Framework.Assert.IsFalse(id1.Equals(null));
            NUnit.Framework.Assert.IsFalse(id2.Equals(null));
            // compareTo:
            NUnit.Framework.Assert.AreEqual(eq, 0 == id1.CompareTo((T)id2));
            NUnit.Framework.Assert.AreEqual(eq, 0 == id2.CompareTo((T)id1));
            // compareTo must be antisymmetric:
            NUnit.Framework.Assert.AreEqual(Sign(id1.CompareTo((T)id2)), -Sign(id2.CompareTo(
                                                                                   (T)id1)));
            // compare with null should never return 0 to be consistent with #equals():
            NUnit.Framework.Assert.IsTrue(id1.CompareTo(null) != 0);
            NUnit.Framework.Assert.IsTrue(id2.CompareTo(null) != 0);
            // check that hash codes did not change:
            NUnit.Framework.Assert.AreEqual(h1, id1.GetHashCode());
            NUnit.Framework.Assert.AreEqual(h2, id2.GetHashCode());
            if (eq)
            {
                // in this case the hash codes must be the same:
                NUnit.Framework.Assert.AreEqual(h1, h2);
            }
        }