예제 #1
0
        public void TestComparerEquality()
        {
            Func <string, string, bool> sameLength = (a, b) => a.Length == b.Length;
            Func <string, int>          getLength  = s => s.Length;

            ComparersTest.TestEquality(EqualityComparers.Create(sameLength, getLength), EqualityComparers.Create(sameLength, getLength), EqualityComparers.Create(getLength));

            ComparersTest.TestEquality(EqualityComparers.Create(getLength), EqualityComparers.Create(getLength, EqualityComparer <int> .Default), EqualityComparers.Create((string s) => s[0]));

            ComparersTest.TestEquality(EqualityComparers.GetReferenceComparer <string>(), EqualityComparers.GetReferenceComparer <string>(), EqualityComparer <string> .Default);

            ComparersTest.TestEquality(EqualityComparers.GetCollectionComparer(EqualityComparer <string> .Default), EqualityComparers.GetCollectionComparer <string>(), EqualityComparers.GetCollectionComparer(StringComparer.OrdinalIgnoreCase));

            ComparersTest.TestEquality(EqualityComparers.GetSequenceComparer(StringComparer.Ordinal), EqualityComparers.GetSequenceComparer(StringComparer.Ordinal), EqualityComparers.GetCollectionComparer(StringComparer.Ordinal));
        }
예제 #2
0
        public void TestReferenceComparer()
        {
            var referenceComparer = EqualityComparers.GetReferenceComparer <string>();

            Assert.Same(referenceComparer, EqualityComparers.GetReferenceComparer <string>());

            referenceComparer.Equals(new string('a', 1), new string('a', 1)).ShouldEqual(false);
            var text = new string('a', 1);

            referenceComparer.Equals(text, text).ShouldEqual(true);
            referenceComparer.GetHashCode(text).ShouldEqual(referenceComparer.GetHashCode(text));
            referenceComparer.Equals(text, null).ShouldEqual(false);
            referenceComparer.Equals(null, null).ShouldEqual(true);

            var obj = new object();

            EqualityComparers.GetReferenceComparer <object>().GetHashCode(obj)
            .ShouldEqual(obj.GetHashCode());
        }