public void HandlesCircularReferences__ObjectReferencesSelfDirectly()
        {
            var n = new LinkedListNode { Id = 13 };
            n.Next = n;
            n.Previous = n;

            var tm = new TypeMapper();

            var clone = tm.DeepClone<LinkedListNode>(n);

            Assert.AreEqual(13, clone.Id);
            Assert.AreSame(n, n.Next);
            Assert.AreSame(n, n.Previous);
        }
예제 #2
0
        public static void EnsureDefaultTestHierarchyPreserved(LinkedListNode node)
        {
            Assert.AreEqual(3, node.Id);

            Assert.AreEqual(2, node.Previous.Id);
            Assert.AreEqual(1, node.Previous.Previous.Id);
            Assert.AreEqual(0, node.Previous.Previous.Previous.Id);
            Assert.AreEqual(3, node.Previous.Previous.Previous.Previous.Id);

            Assert.AreEqual(0, node.Next.Id);
            Assert.AreEqual(1, node.Next.Next.Id);
            Assert.AreEqual(2, node.Next.Next.Next.Id);
            Assert.AreEqual(3, node.Next.Next.Next.Next.Id);

            Assert.AreSame(node, node.Next.Next.Next.Next);
            Assert.AreSame(node, node.Previous.Previous.Previous.Previous);
        }
예제 #3
0
        public static LinkedListNode CreateDefaultTestHierarchy()
        {
            var n0 = new LinkedListNode { Id = 0 };
            var n1 = new LinkedListNode { Id = 1 };
            var n2 = new LinkedListNode { Id = 2 };
            var n3 = new LinkedListNode { Id = 3 };

            n0.Next = n1;
            n1.Next = n2;
            n2.Next = n3;
            n3.Next = n0;

            n0.Previous = n3;
            n1.Previous = n0;
            n2.Previous = n1;
            n3.Previous = n2;

            return n3;
        }
        public void HandlesCircularReferences__ObjectReferencesSelfIndirectly()
        {
            var n0 = new LinkedListNode { Id = 0 };
            var n1 = new LinkedListNode { Id = 1 };
            var n2 = new LinkedListNode { Id = 2 };
            var n3 = new LinkedListNode { Id = 3 };

            n0.Next = n1;
            n1.Next = n2;
            n2.Next = n3;
            n3.Next = n0;

            n0.Previous = n3;
            n1.Previous = n0;
            n2.Previous = n1;
            n3.Previous = n2;

            var tm = new TypeMapper();

            var clone = tm.DeepClone<LinkedListNode>(n3);

            Assert.AreEqual(3, clone.Id);

            Assert.AreEqual(2, clone.Previous.Id);
            Assert.AreEqual(1, clone.Previous.Previous.Id);
            Assert.AreEqual(0, clone.Previous.Previous.Previous.Id);
            Assert.AreEqual(3, clone.Previous.Previous.Previous.Previous.Id);

            Assert.AreEqual(0, clone.Next.Id);
            Assert.AreEqual(1, clone.Next.Next.Id);
            Assert.AreEqual(2, clone.Next.Next.Next.Id);
            Assert.AreEqual(3, clone.Next.Next.Next.Next.Id);

            Assert.AreSame(clone, clone.Next.Next.Next.Next);
            Assert.AreSame(clone, clone.Previous.Previous.Previous.Previous);
        }