public void ShouldNotThrowWhenGetHashCodeProducesHashBasedOnValues(GetHashCodeValueCheckAssertion sut)
 {
     EqualityTestAssert.ExceptionWasNotThrownForTestType <ValueObjectHashCodeExample>(sut);
 }
 public void ShouldThrowWhenGetHashCodeProducesHashBasedOnIdentity(GetHashCodeValueCheckAssertion sut)
 {
     EqualityTestAssert
     .ExceptionWasThrownForTestType <GetHashCodeValueCheckException, IdentityObjectHashCodeExample>(sut);
 }
        public void ShouldExplainWhyExceptionIsThrownWhenHashCodeIsProducedOnIdentity(GetHashCodeValueCheckAssertion sut)
        {
            var exception = Record.Exception(
                () => sut.Verify(typeof(IdentityObjectHashCodeExample)));

            Assert.Contains(
                string.Format(
                    "Expected type {0} GetHashCode method to compute bash based on value semantic not identity",
                    typeof(IdentityObjectHashCodeExample).Name), exception.Message);
        }
 public void ShouldBeIdiomaticAssertion(GetHashCodeValueCheckAssertion sut)
 {
     Assert.IsAssignableFrom <IdiomaticAssertion>(sut);
 }