public void DeepClone_ListOfClass_AsReference(TypeModel model) { var list = new ListOfClass() { Collection = new List<ItemClass> { new ItemClass() { Message = "hello" }, new ItemClass() { Message = "world" } } }; var clone = (ListOfClass)model.DeepClone(list); Assert.AreEqual(list.Collection.Count, clone.Collection.Count); for (var i = 0; i < list.Collection.Count; i++) { Assert.AreEqual(list.Collection[i].Message, clone.Collection[i].Message); } }
public void DeepClone_ListWithNullItem_AsReference(TypeModel model) { var list = new ListOfClass() { Collection = new List<ItemClass>() { new ItemClass() { Message = "Hi there"}, null, new ItemClass() { Message = "How are you ?"} } }; var clone = (ListOfClass)model.DeepClone(list); Assert.AreEqual(list.Collection.Count, clone.Collection.Count); Assert.AreEqual(list.Collection[0].Message, clone.Collection[0].Message); Assert.IsNull(clone.Collection[1]); Assert.AreEqual(list.Collection[2].Message, clone.Collection[2].Message); }
public void DeepClone_ListOfClass_NotAsReference(TypeModel model) { var manualModel = TypeModel.Create(); manualModel.Add(typeof(ListOfClass), true).AddField(1, "Collection"); manualModel.Add(typeof (ItemClass), true).AddField(1, "Message"); var itemClass = new ItemClass() { Message = "hello" }; var list = new ListOfClass() { Collection = new List<ItemClass> { itemClass, itemClass } }; var clone = (ListOfClass)manualModel.DeepClone(list); Assert.IsTrue(object.ReferenceEquals(list.Collection[0], list.Collection[1]), "Original collection inner reference failed"); Assert.AreEqual(list.Collection.Count, clone.Collection.Count); for (var i = 0; i < list.Collection.Count; i++) { Assert.AreEqual(list.Collection[i].Message, clone.Collection[i].Message); } Assert.IsFalse(object.ReferenceEquals(clone.Collection[0], clone.Collection[1]), "Clone collection inner reference failed"); clone.Collection[0].Message = "wazuuuuup"; Assert.AreNotEqual(clone.Collection[0].Message, clone.Collection[1].Message); }
public void DeepClone_ListOfClassCheckInnerReference_AsReference(TypeModel model) { var itemClass = new ItemClass() { Message = "hello" }; var list = new ListOfClass() { Collection = new List<ItemClass> { itemClass, itemClass } }; var clone = (ListOfClass)model.DeepClone(list); Assert.IsTrue(object.ReferenceEquals(list.Collection[0], list.Collection[1]), "Original collection inner reference failed"); Assert.AreEqual(list.Collection.Count, clone.Collection.Count); for (var i = 0; i < list.Collection.Count; i++) { Assert.AreEqual(list.Collection[i].Message, clone.Collection[i].Message); } Assert.IsTrue(object.ReferenceEquals(clone.Collection[0], clone.Collection[1]), "Clone collection inner reference failed"); clone.Collection[0].Message = "wazuuuuup"; Assert.AreEqual(clone.Collection[0].Message, clone.Collection[1].Message); }