Example #1
0
        public new void GetHashCode()
        {
            var obj1 = new Testing(5, "ABC");
            var obj2 = new Testing(3, "NA");
            var obj3 = new Testing(2, "ABCDE");
            var obj4 = new Testing(5, "NA");
            var obj5 = new Testing(7, null);

            var comparer = new EqualityComparerStateless <Testing, int>(obj => obj.A);

            Assert.Equal(comparer.GetHashCode(obj1), obj1.A.GetHashCode());
            Assert.Equal(comparer.GetHashCode(obj2), obj2.A.GetHashCode());
            Assert.Equal(comparer.GetHashCode(obj3), obj3.A.GetHashCode());
            Assert.Equal(comparer.GetHashCode(obj4), obj4.A.GetHashCode());
            Assert.Equal(comparer.GetHashCode(obj5), obj5.A.GetHashCode());

            var stringComparer = new EqualityComparerStateless <Testing, string>(obj => obj.B);

            Assert.Equal(stringComparer.GetHashCode(obj1), obj1.B.GetHashCode());
            Assert.Equal(stringComparer.GetHashCode(obj2), obj2.B.GetHashCode());
            Assert.Equal(stringComparer.GetHashCode(obj3), obj3.B.GetHashCode());
            Assert.Equal(stringComparer.GetHashCode(obj4), obj4.B.GetHashCode());
            Assert.Equal(stringComparer.GetHashCode(obj5), 0);
        }
Example #2
0
        public void Equals()
        {
            var obj1 = new Testing(5, "ABC");
            var obj2 = new Testing(3, "NA");
            var obj3 = new Testing(2, "ABCDE");
            var obj4 = new Testing(5, "NA");
            var obj5 = new Testing(7, null);

            var comparer = new EqualityComparerStateless <Testing, int>(obj => obj.A);

            Assert.True(comparer.Equals(obj1, obj1));
            Assert.False(comparer.Equals(obj1, obj2));
            Assert.False(comparer.Equals(obj1, obj3));
            Assert.True(comparer.Equals(obj1, obj4));
            Assert.False(comparer.Equals(obj1, obj5));

            Assert.False(comparer.Equals(obj2, obj1));
            Assert.True(comparer.Equals(obj2, obj2));
            Assert.False(comparer.Equals(obj2, obj3));
            Assert.False(comparer.Equals(obj2, obj4));
            Assert.False(comparer.Equals(obj2, obj5));

            Assert.False(comparer.Equals(obj3, obj1));
            Assert.False(comparer.Equals(obj3, obj2));
            Assert.True(comparer.Equals(obj3, obj3));
            Assert.False(comparer.Equals(obj3, obj4));
            Assert.False(comparer.Equals(obj3, obj5));

            Assert.True(comparer.Equals(obj4, obj1));
            Assert.False(comparer.Equals(obj4, obj2));
            Assert.False(comparer.Equals(obj4, obj3));
            Assert.True(comparer.Equals(obj4, obj4));
            Assert.False(comparer.Equals(obj4, obj5));

            Assert.False(comparer.Equals(obj5, obj1));
            Assert.False(comparer.Equals(obj5, obj2));
            Assert.False(comparer.Equals(obj5, obj3));
            Assert.False(comparer.Equals(obj5, obj4));
            Assert.True(comparer.Equals(obj5, obj5));

            var stringComparer = new EqualityComparerStateless <Testing, string>(obj => obj.B);

            Assert.True(stringComparer.Equals(obj1, obj1));
            Assert.False(stringComparer.Equals(obj1, obj2));
            Assert.False(stringComparer.Equals(obj1, obj3));
            Assert.False(stringComparer.Equals(obj1, obj4));
            Assert.False(stringComparer.Equals(obj1, obj5));

            Assert.False(stringComparer.Equals(obj2, obj1));
            Assert.True(stringComparer.Equals(obj2, obj2));
            Assert.False(stringComparer.Equals(obj2, obj3));
            Assert.True(stringComparer.Equals(obj2, obj4));
            Assert.False(stringComparer.Equals(obj2, obj5));

            Assert.False(stringComparer.Equals(obj3, obj1));
            Assert.False(stringComparer.Equals(obj3, obj2));
            Assert.True(stringComparer.Equals(obj3, obj3));
            Assert.False(stringComparer.Equals(obj3, obj4));
            Assert.False(stringComparer.Equals(obj3, obj5));

            Assert.False(stringComparer.Equals(obj4, obj1));
            Assert.True(stringComparer.Equals(obj4, obj2));
            Assert.False(stringComparer.Equals(obj4, obj3));
            Assert.True(stringComparer.Equals(obj4, obj4));
            Assert.False(stringComparer.Equals(obj4, obj5));

            Assert.False(stringComparer.Equals(obj5, obj1));
            Assert.False(stringComparer.Equals(obj5, obj2));
            Assert.False(stringComparer.Equals(obj5, obj3));
            Assert.False(stringComparer.Equals(obj5, obj4));
            Assert.True(stringComparer.Equals(obj5, obj5));
        }