public void CompareClasses()
        {
            var comparerUnderTest = new ClassEqualityComparer();

            var c1d1 = new DummyClass1();
            var c1d2 = new DummyClass1();
            var c2d1 = new DummyClass2();
            var c2d2 = new DummyClass2();
            var c3d1 = new DummyClass3();

            Assert.IsTrue(comparerUnderTest.Equals(c1d1, c1d2));
            Assert.IsTrue(comparerUnderTest.Equals(c2d1, c2d2));
            Assert.IsFalse(comparerUnderTest.Equals(c1d1, c2d2));
            Assert.IsFalse(comparerUnderTest.Equals(c1d1, c2d1));
            Assert.IsFalse(comparerUnderTest.Equals(c1d1, c3d1));
            Assert.IsFalse(comparerUnderTest.Equals(c2d1, c3d1));
            Assert.IsFalse(comparerUnderTest.Equals(c2d2, c3d1));
        }
        public void CompareHashes()
        {
            var comparerUnderTest = new ClassEqualityComparer();

            var c1d1 = new DummyClass1();
            var c1d2 = new DummyClass1();
            var c2d1 = new DummyClass2();
            var c2d2 = new DummyClass2();
            var c3d1 = new DummyClass3();

            var c1d1Hash = comparerUnderTest.GetHashCode(c1d1);
            var c1d2Hash = comparerUnderTest.GetHashCode(c1d2);
            var c2d1Hash = comparerUnderTest.GetHashCode(c2d1);
            var c2d2Hash = comparerUnderTest.GetHashCode(c2d2);
            var c3d1Hash = comparerUnderTest.GetHashCode(c3d1);

            Assert.AreEqual(c1d1Hash, c1d2Hash);
            Assert.AreEqual(c2d1Hash, c2d2Hash);
            Assert.AreNotEqual(c1d1Hash, c2d1Hash);
            Assert.AreNotEqual(c1d2Hash, c2d1Hash);
            Assert.AreNotEqual(c1d1Hash, c3d1Hash);
            Assert.AreNotEqual(c2d1Hash, c3d1Hash);
        }