public void DeepClone_DictionaryBaseCollectionAsProperty_AsReference(TypeModel model) { var assignableItem = new AssignableItem() { Test = "Test" }; var obj = new BaseCollectionWrapper() { LookupItems = new LookupItems() { { "1-2-3", assignableItem }, { "null", null }, { "4-5-6", assignableItem }, } }; var clone = (BaseCollectionWrapper)model.DeepClone(obj); Assert.AreEqual(3, clone.LookupItems.Count); Assert.AreEqual(obj.LookupItems["1-2-3"].Test, clone.LookupItems["1-2-3"].Test); Assert.AreEqual(obj.LookupItems["4-5-6"].Test, clone.LookupItems["4-5-6"].Test); Assert.IsNull(clone.LookupItems["null"]); Assert.IsTrue(object.ReferenceEquals(obj.LookupItems["1-2-3"], obj.LookupItems["4-5-6"]), "Original Reference failed"); Assert.IsTrue(object.ReferenceEquals(clone.LookupItems["1-2-3"], clone.LookupItems["4-5-6"]), "Clone reference not maintained"); }
public void DeepClone_MultiLayeredBaseCollection_AsReference(TypeModel model) { var superItem = new SuperItem() { Message = "Yellow" }; var obj = new BaseCollectionWrapper() { MultiLayerCollections = new SuperItems() { superItem, superItem, null } }; var clone = (BaseCollectionWrapper)model.DeepClone(obj); Assert.AreEqual(3, clone.MultiLayerCollections.Count); Assert.AreEqual(obj.MultiLayerCollections[0].Message, clone.MultiLayerCollections[0].Message); Assert.AreEqual(obj.MultiLayerCollections[1].Message, clone.MultiLayerCollections[1].Message); Assert.IsNull(clone.MultiLayerCollections[2]); Assert.IsTrue(object.ReferenceEquals(obj.MultiLayerCollections[0], obj.MultiLayerCollections[1]), "Original Reference failed"); Assert.IsTrue(object.ReferenceEquals(clone.MultiLayerCollections[0], clone.MultiLayerCollections[1]), "Clone Reference failed"); }
public void DeepClone_ListBaseCollectionAsProperty_AsReference(TypeModel model) { var assignableItem = new AssignableItem() { Test = "Test" }; var obj = new BaseCollectionWrapper() { AssignableItems = new AssignableItems() { assignableItem, null, assignableItem } }; var clone = (BaseCollectionWrapper)model.DeepClone(obj); Assert.AreEqual(3, clone.AssignableItems.Count); Assert.AreEqual(obj.AssignableItems[0].Test, clone.AssignableItems[0].Test); Assert.IsNull(clone.AssignableItems[1]); Assert.AreEqual(obj.AssignableItems[2].Test, clone.AssignableItems[2].Test); Assert.IsTrue(object.ReferenceEquals(obj.AssignableItems[0], obj.AssignableItems[2]), "Original Reference failed"); Assert.IsTrue(object.ReferenceEquals(clone.AssignableItems[0], clone.AssignableItems[2]), "Clone reference not maintained"); }