public void TestCollectionComparer() { var a = new[] { 1, 2, 3 }; var b = new[] { 3, 2, 1 }; var c = new[] { 1, 2, 4 }; var comparer = EqualityComparers.GetCollectionComparer <int>(); Assert.Same(comparer, EqualityComparers.GetCollectionComparer <int>()); Assert.Same(comparer, EqualityComparers.GetCollectionComparer(EqualityComparer <int> .Default)); comparer.Equals(a, b).ShouldEqual(true); comparer.Equals(a, null).ShouldEqual(false); comparer.Equals(a, c).ShouldEqual(false); comparer.GetHashCode(a).ShouldEqual(comparer.GetHashCode(b)); Assert.NotEqual(comparer.GetHashCode(a), comparer.GetHashCode(c)); var stringComparer = EqualityComparers.GetCollectionComparer(StringComparer.OrdinalIgnoreCase); var aa = new[] { "a", "B", "C" }; var bb = new[] { "B", "A", "c" }; var cc = new[] { "a", "B", "C", "d" }; stringComparer.Equals(aa, bb).ShouldEqual(true); stringComparer.Equals(aa, cc).ShouldEqual(false); stringComparer.GetHashCode(aa).ShouldEqual(stringComparer.GetHashCode(bb)); Assert.NotEqual(stringComparer.GetHashCode(aa), stringComparer.GetHashCode(cc)); }
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)); }