public void NotEqualNestedNoLevels()
        {
            var l1 = new Level { Value = 1 };
            var l2 = new Level { Value = 2 };

            Assert.AreEqual(false, BinaryComparer<Level>.Default.Equals(l1, l2));
            Assert.AreEqual(false, BinaryComparer<Level>.Default.Equals(l2, l1));
        }
        public void NotEqualNestedOneLevel2()
        {
            var l1 = new Level { Value = 2, Next = null };
            var l2 = new Level { Value = 2, Next = new Level() };

            Assert.AreEqual(false, BinaryComparer<Level>.Default.Equals(l1, l2));
            Assert.AreEqual(false, BinaryComparer<Level>.Default.Equals(l2, l1));
        }
        public void EqualNestedOneLevel2()
        {
            var l1 = new Level { Value = 1, Next = new Level { Value = 2 } };
            var l2 = new Level { Value = 1, Next = new Level { Value = 2 } };

            Assert.AreEqual(true, BinaryComparer<Level>.Default.Equals(l1, l1));
            Assert.AreEqual(true, BinaryComparer<Level>.Default.Equals(l1, l2));
            Assert.AreEqual(true, BinaryComparer<Level>.Default.Equals(l2, l1));
        }
        public void EqualNestedOneLevel2()
        {
            var l1 = new Level { Value = 1, Next = new Level { Value = 2 } };
            var l2 = new Level { Value = 1, Next = new Level { Value = 2 } };

            FieldAssert.Equal(l1, l1);
            FieldAssert.Equal(l2, l1);
            FieldAssert.Equal(l1, l2);
        }
        public void EqualNestedNoLevels()
        {
            var l1 = new Level { Value = 2 };
            var l2 = new Level { Value = 2 };

            FieldAssert.Equal(l1, l1);
            FieldAssert.Equal(l2, l1);
            FieldAssert.Equal(l1, l2);
        }
        public void EqualNestedOneLevel1()
        {
            var l1 = new Level { Value = 2 };
            var l2 = new Level { Value = 2 };

            BinaryAssert.Equal(l1, l1);
            BinaryAssert.Equal(l2, l1);
            BinaryAssert.Equal(l1, l2);
        }
        public void NotEqualNestedNoLevels()
        {
            var l1 = new Level { Value = 1 };
            var l2 = new Level { Value = 2 };

            var comparer = FieldComparer<Level>.Default;
            Assert.IsFalse(comparer.Equals(l1, l2));
            Assert.IsFalse(comparer.Equals(l2, l1));
            Assert.AreEqual(-1, ((IComparer)comparer).Compare(l1, l2));
            Assert.AreEqual(-1, ((IComparer)comparer).Compare(l2, l1));
        }
        public void EqualNestedOneLevel2()
        {
            var l1 = new Level { Value = 1, Next = new Level { Value = 2 } };
            var l2 = new Level { Value = 1, Next = new Level { Value = 2 } };

            var comparer = FieldComparer<Level>.Default;
            Assert.IsTrue(comparer.Equals(l1, l1));
            Assert.IsTrue(comparer.Equals(l1, l2));
            Assert.IsTrue(comparer.Equals(l2, l1));
            Assert.AreEqual(0, ((IComparer)comparer).Compare(l1, l1));
            Assert.AreEqual(0, ((IComparer)comparer).Compare(l1, l2));
            Assert.AreEqual(0, ((IComparer)comparer).Compare(l2, l1));
        }
        public void NotEqualNestedNoLevels()
        {
            var l1 = new Level { Value = 1 };
            var l2 = new Level { Value = 2 };

            var ex1 = Assert.Throws<AssertException>(() => BinaryAssert.Equal(l1, l2));
            var ex2 = Assert.Throws<AssertException>(() => BinaryAssert.Equal(l2, l1));
            var expected = "  Expected bytes to be equal.\r\n" +
                           "  Bytes differ at index 410.";
            foreach (var ex in new[] { ex1, ex2 })
            {
                Assert.AreEqual(expected, ex.Message);
            }
        }
        public void NotEqualNestedNoLevels()
        {
            var l1 = new Level { Value = 1 };
            var l2 = new Level { Value = 2 };

            var ex1 = Assert.Throws<AssertException>(() => FieldAssert.Equal(l1, l2));
            var em1 = "  Found this difference between expected and actual:\r\n" +
                      "  expected.value: 1\r\n" +
                      "    actual.value: 2";
            Assert.AreEqual(em1, ex1.Message);

            var ex2 = Assert.Throws<AssertException>(() => FieldAssert.Equal(l2, l1));
            var em2 = "  Found this difference between expected and actual:\r\n" +
                      "  expected.value: 2\r\n" +
                      "    actual.value: 1";
            Assert.AreEqual(em2, ex2.Message);

        }
 public void Levels()
 {
     var p1 = new Level(1) { Next = new Level(3) };
     var p2 = new Level(2) { Next = new Level(4) };
     var comparison = DeepEqualsNode.CreateFor(p1, p2);
     var dump = Dump(comparison);
     Console.Write(dump);
     var expectedDump = "Level Expected: Level Actual: Level\r\n" +
                        "  value: Int32 Expected: 1 Actual: 2\r\n" +
                        "  next: Level Expected: Level Actual: Level\r\n" +
                        "    value: Int32 Expected: 3 Actual: 4\r\n" +
                        "    next: Level Expected: null Actual: null\r\n" +
                        "    <Levels>k__BackingField: List`1 Expected: List`1 Actual: List`1\r\n" +
                        "      _items: Level[] Expected: Level[] Actual: Level[]\r\n" +
                        "      _size: Int32 Expected: 0 Actual: 0\r\n" +
                        "      _version: Int32 Expected: 0 Actual: 0\r\n" +
                        "      _syncRoot: Object Expected: null Actual: null\r\n" +
                        "  <Levels>k__BackingField: List`1 Expected: List`1 Actual: List`1\r\n" +
                        "    _items: Level[] Expected: Level[] Actual: Level[]\r\n" +
                        "    _size: Int32 Expected: 0 Actual: 0\r\n" +
                        "    _version: Int32 Expected: 0 Actual: 0\r\n" +
                        "    _syncRoot: Object Expected: null Actual: null";
     Assert.AreEqual(expectedDump, dump);
 }
        public void NotEqualNestedOneLevel2()
        {
            var l1 = new Level { Value = 2, Next = null };
            var l2 = new Level { Value = 2, Next = new Level() };

            var ex1 = Assert.Throws<AssertException>(() => FieldAssert.Equal(l1, l2));
            var em1 = "  Found this difference between expected and actual:\r\n" +
                      "  expected.next: null\r\n" +
                      "    actual.next: Gu.SerializationAsserts.Tests.Dtos.Level";
            Assert.AreEqual(em1, ex1.Message);

            var ex2 = Assert.Throws<AssertException>(() => FieldAssert.Equal(l2, l1));
            var em2 = "  Found this difference between expected and actual:\r\n" +
                      "  expected.next: Gu.SerializationAsserts.Tests.Dtos.Level\r\n" +
                      "    actual.next: null";
            Assert.AreEqual(em2, ex2.Message);
        }
        public void NotEqualNestedOneLevel2()
        {
            var l1 = new Level { Value = 2, Next = null };
            var l2 = new Level { Value = 2, Next = new Level() };

            var ex = Assert.Throws<AssertException>(() => BinaryAssert.Equal(l1, l2));
            var expected = "  Expected bytes to have equal lengths.\r\n" +
                           "  expected: 742.\r\n" +
                           "  actual:   787.";
            Assert.AreEqual(expected, ex.Message);
            expected = "  Expected bytes to have equal lengths.\r\n" +
                       "  expected: 787.\r\n" +
                       "  actual:   742.";

            ex = Assert.Throws<AssertException>(() => BinaryAssert.Equal(l2, l1));
            Assert.AreEqual(expected, ex.Message);
        }