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 void CanCloneAnObject() { var st = new SimpleType(); st.EnumProperty = DayOfWeek.Friday; st.IntegerProperty = 13; st.StringProperty = "some string"; var tm = new TypeMapper(); var clone = tm.DeepClone<SimpleType>(st); Assert.AreEqual(st.EnumProperty, clone.EnumProperty); Assert.AreEqual(st.IntegerProperty, clone.IntegerProperty); Assert.AreEqual(st.StringProperty, clone.StringProperty); }
public void Bug001__MapToInterfaceProperty() { var c1 = new Bug001_Class(); c1.Id = 1; c1.Property = new Bug001_Class(); c1.Property.Id = 2; var tm = new TypeMapper(); var clone = tm.DeepClone(c1); Assert.IsNotNull(clone); Assert.AreEqual(clone.Id, c1.Id); Assert.AreEqual(clone.Property.Id, c1.Property.Id); Assert.IsNull(clone.Property.Property); }
public void CanCloneToSubType() { var st = new SimpleType2(); st.EnumProperty = DayOfWeek.Friday; st.IntegerProperty = 13; st.StringProperty = "some string"; st.AnotherProperty = 1; var tm = new TypeMapper(); // clone SimpleType2 to its subtype SimpleType var clone = tm.DeepClone<SimpleType>(st); Assert.AreEqual(st.EnumProperty, clone.EnumProperty); Assert.AreEqual(st.IntegerProperty, clone.IntegerProperty); Assert.AreEqual(st.StringProperty, clone.StringProperty); Assert.IsFalse(clone is SimpleType2); Assert.IsTrue(clone is SimpleType); }
public void Bug005__CloneDataTable__NotSupported_Thrown() { var dt = new DataTable(); dt.Columns.Add("str", typeof(string)); dt.Columns.Add("int", typeof(int)); dt.Rows.Add("one", 1); dt.Rows.Add("two", 2); var tm = new TypeMapper(); var clone = tm.DeepClone(dt); Assert.IsNotNull(clone); Assert.AreEqual(dt.Rows.Count, clone.Rows.Count); Assert.AreEqual(dt.Columns.Count, clone.Columns.Count); }
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); }