public void GetClone_KeyValuePairRefTypeValueShallowClone_ValueAreNotTheSame() { var source = new KeyValuePair <int, MyClass>(10, new MyClass()); var target = CloneFactory.GetClone(source, CloningFlags.Shallow); Assert.AreSame(source.Value, target.Value); }
public void GetClone_Class_Cloned() { var source = new SimpleClass() { Property = 10, _field = 3 }; var target = CloneFactory.GetClone(source); Assert.AreEqual(source.Property, target.Property); Assert.AreEqual(source._field, target._field); }
public void GetClone_NullListOfInt_NullCloned() { List <int> source = null; var target = CloneFactory.GetClone(source); Assert.IsNull(target); }
public void GetClone_SameTypepProperty_Cloned() { var source = new SelfReferencedClass { Value = new SelfReferencedClass() }; var target = CloneFactory.GetClone(source); Assert.IsNotNull(target.Value); Assert.IsNull(target.Value.Value); }
public static void GetArrayCloneAndAssert <T>(Func <T[]> getInstance, bool assertSame = false, CloningFlags?flags = null) { var source = getInstance(); var target = flags.HasValue ? CloneFactory.GetClone(source, flags.Value) : CloneFactory.GetClone(source); if (source == null) { Assert.IsNull(target); } else { Assert.AreEqual(source.Length, target.Length); for (int i = 0; i < source.Length; i++) { Assert.AreEqual(source[i], target[i]); if (assertSame) { Assert.AreSame(source[i], target[i]); } else { Assert.AreNotSame(source[i], target[i]); } } } }
public void GetClone_KeyValuePair_ValueIsCloned() { var source = new KeyValuePair <int, string>(10, "test"); var target = CloneFactory.GetClone(source); Assert.AreEqual(source.Key, target.Key); }
public void GetClone_Tuple_Null() { var source = (Tuple <int>)null; var target = CloneFactory.GetClone(source); Assert.IsNull(target); }
public void GetClone_KeyValuePairRefTypeKeyShallowClone_KeysAreNotTheSame() { var source = new KeyValuePair <MyClass, int>(new MyClass(), 10); var target = CloneFactory.GetClone(source, CloningFlags.Shallow); Assert.AreSame(source.Key, target.Key); }
public static void GetCloneAndAssert <T>(Func <T> getInstance, bool assertSame = false, CloningFlags?flags = null) { var source = getInstance(); var target = flags.HasValue ? CloneFactory.GetClone(source, flags.Value) : CloneFactory.GetClone(source); if (source == null) { Assert.IsNull(target); } else { Assert.AreEqual(source, target); if (assertSame) { Assert.AreSame(source, target); } else { Assert.AreNotSame(source, target); } } }
public void GetClone_KeyValuePairRefTypeKey_KeysAreNotTheSame() { var source = new KeyValuePair <MyClass, int>(new MyClass(), 10); var target = CloneFactory.GetClone(source); Assert.AreNotSame(source.Value, target.Value); }
public void GetClone_KeyValuePairOfIntAndString_AreNotSame() { var source = new KeyValuePair <int, string>(10, "test"); var target = CloneFactory.GetClone(source); Assert.AreNotSame(source, target); }
public void GetClone_Struct_Cloned() { var source = new SimpleStruct() { Property = 10, _field = 3 }; var target = CloneFactory.GetClone(source); }
public void GetClone_ListOfInts_Cloned() { var source = Enumerable.Range(0, 10).ToList(); var target = CloneFactory.GetClone(source); Assert.AreNotSame(source, target); Assert.IsTrue(source.SequenceEqual(target)); }
public void GetClone_AbstractClassInitializerNotSpecified_InvalidOperationExceptionThrown() { var source = (AbstractClass) new DerivedClass() { AbstractProperty = 10 }; var target = CloneFactory.GetClone(source); }
public void GetClone_TupleT8CloneTest_InstanceIsCloned() { var source = new Tuple <int, int, int, int, int, int, int, Tuple <int, int, int> >(1, 2, 3, 4, 5, 6, 7, new Tuple <int, int, int>(8, 9, 10)); var target = CloneFactory.GetClone(source); Assert.AreEqual(source, target); Assert.AreNotSame(source, target); }
public void GetClone_TupleT5CloneTest_InstanceIsCloned() { var source = Tuple.Create(1, 2, 3, 4, 5); var target = CloneFactory.GetClone(source); Assert.AreEqual(source, target); Assert.AreNotSame(source, target); }
public void GetClone_TupleT1CloneTest_RefTypeValue_ValuesAreNotTheSame() { var source = new Tuple <MyClass>(new MyClass()); var target = CloneFactory.GetClone(source); Assert.AreNotSame(source.Item1, target.Item1); Assert.AreNotSame(source, target); }
public void GetClone_InterfaceInitializerNotSpecified_InvalidOperationExceptionThrown() { IInterface source = new DerivedClass() { InterfaceProperty = 10 }; var target = CloneFactory.GetClone(source); }
public void GetClone_ListOfIntsCloningFlagsCollectionItemsNotProvided_ItemsNotCloned() { var source = Enumerable.Range(0, 10).ToList(); var target = CloneFactory.GetClone(source, CloningFlags.Properties); Assert.AreNotSame(source, target); Assert.AreEqual(source.Count, target.Capacity); Assert.AreEqual(0, target.Count); }
public void GetCLone_AbstractClassInitializerSpecified_InstanceCloned() { var source = (AbstractClass)new DerivedClass() { AbstractProperty = 10 }; var initializers = new Dictionary<Type, Func<object, object>>() { { typeof(AbstractClass), (s) => new DerivedClass() } }; var target = CloneFactory.GetClone(source, initializers); Assert.AreEqual(source.AbstractProperty, target.AbstractProperty); }
public void I_Can_Create_Copy_Of_Sheep_Object() { var sila = new Sheep { Name = "Sila" }; var silaClone = (Sheep)CloneFactory.GetClone(sila); Assert.Equal(sila.Name, silaClone.Name); Assert.NotEqual(sila, silaClone); }
public void GetClone_Dictionary_Cloned() { var source = new Dictionary <int, string>() { { 1, "one" }, { 2, "two" } }; var target = CloneFactory.GetClone(source); Assert.IsTrue(source.SequenceEqual(target)); }
public void GetClone_InterfaceInitializerSpecified_InstanceCloned() { IInterface source = new DerivedClass() { InterfaceProperty = 10}; var initializers = new Dictionary<Type, Func<object, object>>() { { typeof(IInterface), (s) => new DerivedClass() } }; var target = CloneFactory.GetClone(source, initializers); Assert.AreNotSame(source, target); Assert.AreEqual(source.InterfaceProperty, target.InterfaceProperty); }
public void GetClone_CircularDependency_ItemsClonedCorrectly() { CircularReference1 one = new CircularReference1(); CircularReference2 two = new CircularReference2(); one.First = two; one.Second = two; two.Other = one; var target = CloneFactory.GetClone(one); Assert.AreSame(target.First, target.Second, "Are the same"); }
public void GetClone_FieldWithNotClonedAttribute_FieldNotCloned() { var source = new ClassWithAttributedMembers() { FieldWithAttribute = "value" }; var target = CloneFactory.GetClone(source); Assert.AreNotSame(source, target); Assert.AreNotEqual(source.FieldWithAttribute, target.FieldWithAttribute); Assert.AreEqual(default(string), target.FieldWithAttribute); }
public void GetClone_PropertyWithNotClonedAttribute_PropertyNotCloned() { var source = new ClassWithAttributedMembers() { PropertyWithAttributes = "value" }; var target = CloneFactory.GetClone(source); Assert.AreNotSame(source, target); Assert.AreNotEqual(source.PropertyWithAttributes, target.PropertyWithAttributes); Assert.AreEqual(default(string), target.PropertyWithAttributes); }
public void GetClone_ListOfClass_ReferenceEqualityReturnsFalse() { var source = Enumerable.Range(1, 10).Select(x => new MyClass() { _field = x, Property = x }).ToList(); var target = CloneFactory.GetClone(source); Assert.AreNotSame(source, target); Assert.IsTrue(source.SequenceEqual(target)); Assert.IsFalse(source.Zip(target, (s, t) => new { s, t }).Any(x => ReferenceEquals(x.s, x.t))); }
static void Main(string[] args) { CloneFactory animalMaker = new CloneFactory(); Sheep sally = new Sheep(); Sheep clonedSheep = (Sheep)animalMaker.GetClone(sally); Console.WriteLine(sally); Console.WriteLine(clonedSheep); Console.WriteLine(sally.Voice); Console.WriteLine(clonedSheep.Voice); }
public void GetClone_DerivedTypeWithShadowedProperty_ClonnedProperly() { DerivedClass source = new DerivedClass() { Property = 1 }; ((BaseClass)source).Property = 2; var target = CloneFactory.GetClone(source); Assert.AreEqual(1, target.Property); Assert.AreEqual(2, ((BaseClass)target).Property); }
public void GetClone_IListOfClass_ReferenceEqualityReturnsFalse() { IList <MyClass> source = Enumerable.Range(1, 10).Select(x => new MyClass() { _field = x, Property = x }).ToList(); var initializers = new Dictionary <Type, Func <object, object> >() { { typeof(IList <MyClass>), (s) => new List <MyClass>() } }; var target = CloneFactory.GetClone(source, initializers); Assert.AreNotSame(source, target); Assert.IsTrue(source.SequenceEqual(target)); Assert.IsFalse(source.Zip(target, (s, t) => new { s, t }).Any(x => ReferenceEquals(x.s, x.t))); }