public void DeepClone_HashSetRefItemInMultiplePlaces_AsReference(TypeModel model) { var item = new ItemClass() { Message = "Test" }; var obj = new CollectionRefItemInMutiplePlacesRef { AAItem = item, HashSet = new HashsetRefItemInMultiplePlaces { Item = item, Collection = new HashSet<ItemClass> { item } } }; var clone = (CollectionRefItemInMutiplePlacesRef)model.DeepClone(obj); Assert.AreEqual(obj.AAItem.Message, clone.AAItem.Message); Assert.AreEqual(obj.HashSet.Item.Message, clone.HashSet.Item.Message); Assert.AreEqual(1, clone.HashSet.Collection.Count); Assert.AreEqual(obj.HashSet.Collection.First().Message, clone.HashSet.Collection.First().Message); Assert.IsTrue(object.ReferenceEquals(obj.AAItem, obj.HashSet.Item), "Original Outside Item - Collection Item reference"); Assert.IsTrue(object.ReferenceEquals(obj.HashSet.Item, obj.HashSet.Collection.First()), "Original Item - Collection reference"); Assert.IsTrue(object.ReferenceEquals(clone.AAItem, clone.HashSet.Item), "Clone Outside Item - Collection Item reference"); Assert.IsTrue(object.ReferenceEquals(clone.HashSet.Item, clone.HashSet.Collection.First()), "Clone Collection - Collection reference"); }
public void DeepClone_ListRefItemInMultiplePlaces_AsReference(TypeModel model) { var item = new ItemClass() { Message = "Test" }; var obj = new CollectionRefItemInMutiplePlacesRef { AAItem = item, List = new ListRefItemInMultiplePlaces() { Item = item, Collection = new List<ItemClass> { item, item } } }; var clone = (CollectionRefItemInMutiplePlacesRef)model.DeepClone(obj); Assert.AreEqual(obj.AAItem.Message, clone.AAItem.Message); Assert.AreEqual(obj.List.Item.Message, clone.List.Item.Message); Assert.AreEqual(2, clone.List.Collection.Count); Assert.AreEqual(obj.List.Collection[0].Message, clone.List.Collection[0].Message); Assert.AreEqual(obj.List.Collection[1].Message, clone.List.Collection[1].Message); Assert.IsTrue(object.ReferenceEquals(obj.AAItem, obj.List.Item), "Original Outside Item - Collection Item reference"); Assert.IsTrue(object.ReferenceEquals(obj.List.Item, obj.List.Collection[0]), "Original Item - Collection reference"); Assert.IsTrue(object.ReferenceEquals(obj.List.Collection[0], obj.List.Collection[1]), "Original Collection - Collection reference"); Assert.IsTrue(object.ReferenceEquals(clone.AAItem, clone.List.Item), "Clone Outside Item - Collection Item reference"); Assert.IsTrue(object.ReferenceEquals(clone.List.Item, clone.List.Collection[0]), "Clone Item - Collection reference"); Assert.IsTrue(object.ReferenceEquals(clone.List.Collection[0], clone.List.Collection[1]), "Clone Collection - Collection reference"); }
public void DeepClone_ArrayRefItemInMultiplePlaces_AsReference(TypeModel model) { var item = new ItemClass() { Message = "Test" }; var obj = new CollectionRefItemInMutiplePlacesRef { AAItem = item, Array = new ArrayRefItemInMultiplePlaces() { Item = item, Collection = new[] { item, item } } }; var clone = (CollectionRefItemInMutiplePlacesRef)model.DeepClone(obj); Assert.AreEqual(obj.AAItem.Message, clone.AAItem.Message); Assert.AreEqual(obj.Array.Item.Message, clone.Array.Item.Message); Assert.AreEqual(2, clone.Array.Collection.Length); Assert.AreEqual(obj.Array.Collection[0].Message, clone.Array.Collection[0].Message); Assert.AreEqual(obj.Array.Collection[1].Message, clone.Array.Collection[1].Message); Assert.IsTrue(object.ReferenceEquals(obj.AAItem, obj.Array.Item), "Original Oustide item - Collection item reference"); Assert.IsTrue(object.ReferenceEquals(obj.Array.Item, obj.Array.Collection[0]), "Original Item - Collection reference"); Assert.IsTrue(object.ReferenceEquals(obj.Array.Collection[0], obj.Array.Collection[1]), "Original Collection - Collection reference"); Assert.IsTrue(object.ReferenceEquals(clone.AAItem, clone.Array.Item), "Clone Oustide item - Collection item reference"); Assert.IsTrue(object.ReferenceEquals(clone.Array.Item, clone.Array.Collection[0]), "Clone Item - Collection reference"); Assert.IsTrue(object.ReferenceEquals(clone.Array.Collection[0], clone.Array.Collection[1]), "Clone Collection - Collection reference"); }