public void DeepClone_ListBaseCollectionNonGeneric_AsReference(TypeModel model) { var item = new ItemClass() { Message = "Hi" }; var inner = new ListBaseCollectionNonGeneric() { item, new ItemClass() { Message = "There bro" }, null, item }; var obj = new ListBaseCollectionWrapper<IItemClass>() { NonGenericCollection = inner }; var clone = (ListBaseCollectionWrapper<IItemClass>)model.DeepClone(obj); Assert.AreEqual(obj.NonGenericCollection.Count, clone.NonGenericCollection.Count); Assert.AreEqual(obj.NonGenericCollection[0].Message, clone.NonGenericCollection[0].Message); Assert.AreEqual(obj.NonGenericCollection[1].Message, clone.NonGenericCollection[1].Message); Assert.IsNull(obj.NonGenericCollection[2]); Assert.AreEqual(obj.NonGenericCollection[3].Message, clone.NonGenericCollection[3].Message); Assert.IsTrue(object.ReferenceEquals(obj.NonGenericCollection[0], obj.NonGenericCollection[3]), "Original Reference failed"); Assert.IsTrue(object.ReferenceEquals(clone.NonGenericCollection[0], clone.NonGenericCollection[3]), "Clone Reference failed"); }
public void DeepClone_ListBaseCollectionRefDefinedBefore_AsReference(TypeModel model) { var itemClass = new ItemClass() { Message = "Hi" }; var inner = new ListBaseCollection<IItemClass> { itemClass, itemClass }; var obj = new ListBaseCollectionWrapper<IItemClass>() { AItem = itemClass, Collection = inner }; var clone = (ListBaseCollectionWrapper<IItemClass>)model.DeepClone(obj); Assert.AreEqual(obj.AItem.Message, clone.AItem.Message); Assert.AreEqual(obj.Collection.Count, clone.Collection.Count); Assert.AreEqual(obj.Collection[0].Message, clone.Collection[0].Message); Assert.AreEqual(obj.Collection[1].Message, clone.Collection[1].Message); Assert.IsTrue(object.ReferenceEquals(obj.AItem, obj.Collection[0]), "Original reference Item-Collection failed"); Assert.IsTrue(object.ReferenceEquals(obj.Collection[0], obj.Collection[1]), "Original reference Collection-Collection failed"); Assert.IsTrue(object.ReferenceEquals(clone.AItem, clone.Collection[0]), "Clone reference Item-Collection not maintained"); Assert.IsTrue(object.ReferenceEquals(clone.Collection[0], clone.Collection[1]), "Clone reference Collection-Collection not maintained"); }
public void DeepClone_ListBaseCollection_AsReference(TypeModel model) { var inner = new ListBaseCollection<IItemClass> { new ItemClass() { Message = "Hi" }, new ItemClass() { Message = "There bro" } }; var obj = new ListBaseCollectionWrapper<IItemClass>() { Collection = inner }; var clone = (ListBaseCollectionWrapper<IItemClass>)model.DeepClone(obj); Assert.AreEqual(obj.Collection.Count, clone.Collection.Count); Assert.AreEqual(obj.Collection[0].Message, clone.Collection[0].Message); Assert.AreEqual(obj.Collection[1].Message, clone.Collection[1].Message); }