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