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); }
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); }
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); }