public void ConstructorFuncOfTOfObject_should_use_specified_key_equality() { // Arrange var getHashCodeCalled = new List <bool>(); var equalsCalled = new List <bool>(); var mock1 = new MockParent(); mock1.Key.GetHashCodeProvider = () => { getHashCodeCalled.Add(true); return(0); }; mock1.Key.EqualsProvider = obj => { equalsCalled.Add(true); return(obj.Equals(null)); }; var mock2 = new MockParent(); mock2.Key.GetHashCodeProvider = () => { getHashCodeCalled.Add(true); return(0); }; mock2.Key.EqualsProvider = obj => { equalsCalled.Add(true); return(true); }; // Act var comparer = new LambdaEqualityComparer <MockParent>(_ => _.Key); var hashCode = comparer.GetHashCode(mock1); var isEqual = comparer.Equals(mock1, mock2); // Assert CollectionAssert.AreEqual(new[] { true }, getHashCodeCalled); CollectionAssert.AreEqual(new[] { true, true }, equalsCalled); Assert.AreEqual(0, hashCode); Assert.IsTrue(isEqual); }
public void LambdaEqualityComparer_ShouldInvokeGetHashCodeParameter_IfGetHashCodeIsCalled() { var called = false; var comparer = new LambdaEqualityComparer <string>((s1, s2) => s1 == s2, s => { called = true; return(s.GetHashCode()); }); comparer.GetHashCode("s"); called.Should().BeTrue(); }
public void ConstructorFuncOfTOfint_should_use_default_Equals_and_specified_GetHashCode() { // Arrange var getHashCodeCalled = false; var equalsCalled = false; var mock = new MockObject(); mock.GetHashCodeProvider = () => { getHashCodeCalled = true; return 0; }; mock.EqualsProvider = obj => { equalsCalled = true; return true; }; // Act var comparer = new LambdaEqualityComparer<MockObject>(_ => 0); var hashCode = comparer.GetHashCode(mock); var isEqual = comparer.Equals(mock, mock); // Assert Assert.IsFalse(getHashCodeCalled); Assert.IsTrue(equalsCalled); Assert.AreEqual(0, hashCode); Assert.IsTrue(isEqual); }
public void ConstructorFuncOfTOfint_should_use_default_Equals_and_specified_GetHashCode() { // Arrange var getHashCodeCalled = false; var equalsCalled = false; var mock = new MockObject(); mock.GetHashCodeProvider = () => { getHashCodeCalled = true; return(0); }; mock.EqualsProvider = obj => { equalsCalled = true; return(true); }; // Act var comparer = new LambdaEqualityComparer <MockObject>(_ => 0); var hashCode = comparer.GetHashCode(mock); var isEqual = comparer.Equals(mock, mock); // Assert Assert.IsFalse(getHashCodeCalled); Assert.IsTrue(equalsCalled); Assert.AreEqual(0, hashCode); Assert.IsTrue(isEqual); }
public void ConstructorFuncOfTOfObject_should_use_specified_key_equality() { // Arrange var getHashCodeCalled = new List<bool>(); var equalsCalled = new List<bool>(); var mock1 = new MockParent(); mock1.Key.GetHashCodeProvider = () => { getHashCodeCalled.Add(true); return 0; }; mock1.Key.EqualsProvider = obj => { equalsCalled.Add(true); return obj.Equals(null); }; var mock2 = new MockParent(); mock2.Key.GetHashCodeProvider = () => { getHashCodeCalled.Add(true); return 0; }; mock2.Key.EqualsProvider = obj => { equalsCalled.Add(true); return true; }; // Act var comparer = new LambdaEqualityComparer<MockParent>(_ => _.Key); var hashCode = comparer.GetHashCode(mock1); var isEqual = comparer.Equals(mock1, mock2); // Assert CollectionAssert.AreEqual(new[] { true }, getHashCodeCalled); CollectionAssert.AreEqual(new[] { true, true }, equalsCalled); Assert.AreEqual(0, hashCode); Assert.IsTrue(isEqual); }