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);
            }
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        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);
            }
        }