public void Detects_cycle_on_first_member() { var one = new CycledStructObject(); /* * 1 * / \ * vX vX * / | | \ * N N N N */ var other = new CycledStructObject(); other.FirstStruct = new CycledStruct { FirstObject = other }; /* * 2 * / \ * v1 vX * / | | \ * 2 N N N */ var expected = CycledStructObject.Comparer.Compare(one, other); var actual = ComparerObject.Compare(one, other); using (new AssertionScope()) { expected.Should().Be(-1); actual.Should().Be(expected); } }
public void Detects_cycle_on_first_member() { var one = new CycledStructObject(); /* * 1 * / \ * vX vX * / | | \ * N N N N */ var other = new CycledStructObject(); other.FirstStruct = new CycledStruct { FirstObject = other }; /* * 2 * / \ * v1 vX * / | | \ * 2 N N N */ using (new AssertionScope()) { ComparerObject.Equals(one, other).Should().BeFalse(); ComparerObject.GetHashCode(one).Should().Be(0); ComparerObject.GetHashCode(other).Should().Be(-1940015289); } }
public void Detects_cycle_in_object() { var one = new CycledStructObject(); one.FirstStruct = new CycledStruct { SecondObject = one }; var other = new CycledStructObject(); other.FirstStruct = new CycledStruct { SecondObject = other }; using (new AssertionScope()) { ComparerObject.Equals(one, other).Should().BeTrue(); ComparerObject.GetHashCode(one).Should().Be(ComparerObject.GetHashCode(other)); } }
public void Detects_cycle_in_object() { var one = new CycledStructObject(); one.FirstStruct = new CycledStruct { SecondObject = one }; var other = new CycledStructObject(); other.FirstStruct = new CycledStruct { SecondObject = other }; var expected = CycledStructObject.Comparer.Compare(one, other); var actual = ComparerObject.Compare(one, other); using (new AssertionScope()) { expected.Should().Be(0); actual.Should().Be(expected); } }