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 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); }