public void Replaced_member_does_not_break_comparison() { var one = new AbstractMembers { NotSealedProperty = _fixture.Create <BaseNestedObject>() }; _comparer.Equals(one, one.DeepClone()).Should().BeTrue(); for (var i = 0; i < 100; i++) { one.NotSealedProperty = _fixture.Create <AnotherNestedObject>(); var other = new AbstractMembers { NotSealedProperty = _fixture.Create <AnotherNestedObject>() }; var expectedHashX = one.GetHashCode(); var expectedHashY = other.GetHashCode(); var expectedEquals = one.Equals(other); var hashX = _comparer.GetHashCode(one); var hashY = _comparer.GetHashCode(other); var equals = _comparer.Equals(one, other); using (new AssertionScope()) { equals.Should().Be(expectedEquals); hashX.Should().Be(expectedHashX); hashY.Should().Be(expectedHashY); } } }
public void Generate_comparer_for_not_sealed_member_in_parallel_still_works() { Helper.Parallel(() => { var one = new AbstractMembers { NotSealedProperty = _fixture.Create <AnotherNestedObject>() }; var other = new AbstractMembers { NotSealedProperty = _fixture.Create <AnotherNestedObject>() }; var expectedHashX = one.GetHashCode(); var expectedHashY = other.GetHashCode(); var expectedEquals = one.Equals(other); var comparer = CreateComparer(); Helper.Parallel(() => { var hashX = comparer.GetHashCode(one); var hashY = comparer.GetHashCode(other); var equals = comparer.Equals(one, other); using (new AssertionScope()) { equals.Should().Be(expectedEquals); hashX.Should().Be(expectedHashX); hashY.Should().Be(expectedHashY); } }); }); }