public void EqualsTest() { var eq = FuncEqualityComparer.Make <int>(); Assert.Equal(50.GetHashCode(), eq.GetHashCode(50)); Assert.NotEqual(50.GetHashCode(), eq.GetHashCode(60)); Assert.True(eq.Equals(5, 5)); Assert.False(eq.Equals(8, 5)); eq = FuncEqualityComparer.Make <int>((x, y) => x.Equals(y)); Assert.Equal(50.GetHashCode(), eq.GetHashCode(50)); Assert.NotEqual(50.GetHashCode(), eq.GetHashCode(60)); Assert.True(eq.Equals(5, 5)); Assert.False(eq.Equals(8, 5)); eq = FuncEqualityComparer.Make <int>((x, y) => x.Equals(y), x => 2 * x); Assert.Equal(100, eq.GetHashCode(50)); Assert.NotEqual(eq.GetHashCode(50), eq.GetHashCode(60)); Assert.True(eq.Equals(5, 5)); Assert.False(eq.Equals(8, 5)); }