Пример #1
0
        public void TestCreateByKey()
        {
            var comparer = EqualityComparers.Create((string s) => s.Length);

            comparer.Equals("a", "b").ShouldEqual(true);
            comparer.Equals(null, string.Empty).ShouldEqual(false);
            comparer.Equals(string.Empty, null).ShouldEqual(false);
            comparer.Equals("aa", "b").ShouldEqual(false);
            comparer.GetHashCode("abc").ShouldEqual(3);
        }
        public void TestRapidExit()
        {
            var comparer = EqualityComparers.Create(
                (int a, int b) => { throw new InvalidOperationException("should never get here"); },
                i => { throw new InvalidOperationException("should never get here"); }
                );

            Sequence <int>().CollectionEquals(Sequence <int>(), comparer).ShouldEqual(true);
            new int[0].CollectionEquals(new int[0], comparer).ShouldEqual(true);

            new[] { 1, 2, 3 }.CollectionEquals(new[] { 1, 2, 3, 4 }).ShouldEqual(false);
        }
Пример #3
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));
        }
Пример #4
0
        public void TestCreate()
        {
            Assert.Throws <ArgumentNullException>(() => EqualityComparers.Create <int>(null));

            var comparer = EqualityComparers.Create <string>((a, b) => a.Length == b.Length);

            comparer.Equals("a", "b").ShouldEqual(true);
            comparer.Equals(null, string.Empty).ShouldEqual(false);
            comparer.Equals(string.Empty, null).ShouldEqual(false);
            comparer.Equals("aa", "b").ShouldEqual(false);
            comparer.GetHashCode("abc").ShouldEqual(-1);

            comparer = EqualityComparers.Create <string>((a, b) => a.Length == b.Length, s => s.Length);
            comparer.Equals("a", "b").ShouldEqual(true);
            comparer.Equals(null, string.Empty).ShouldEqual(false);
            comparer.Equals(string.Empty, null).ShouldEqual(false);
            comparer.Equals("aa", "b").ShouldEqual(false);
            comparer.GetHashCode("abc").ShouldEqual(3);
        }