public void Cloner_Collection_Collection() { //Arrange ICollection <Test2> test2List = new Collection <Test2> { new Test2 { Name = "Name11" }, new Test2 { Name = "Name12" } }; //Act var cloner = ClonerBase.Create(test2List.GetType()); var clone = (Collection <Test2>)cloner.Clone(test2List); //Assert Assert.IsTrue(clone != null && clone != test2List && clone.GetType() == test2List.GetType() && clone.Count == 2 && clone[0].Name == "Name11" && clone[1].Name == "Name12"); }
public void Cloner_Collection_HashSet() { //Arrange IEnumerable <Test2> test2List = new HashSet <Test2> { new Test2 { Name = "Name11" }, new Test2 { Name = "Name12" } }; //Act var cloner = ClonerBase.Create(test2List.GetType()); var clone = (HashSet <Test2>)cloner.Clone(test2List); //Assert Assert.IsTrue(clone != null && clone != test2List && clone.GetType() == test2List.GetType() && clone.Count == 2 && clone.Any(x => x.Name == "Name11") && clone.Any(x => x.Name == "Name12")); }
public void Cloner_Collection_Array() { //Arrange var test2List = new[] { new Test2 { Name = "Name11" }, new Test2 { Name = "Name12" } }; //Act var cloner = ClonerBase.Create(test2List.GetType()); var clone = (Test2[])cloner.Clone(test2List); //Assert Assert.IsTrue(clone != null && clone != test2List && clone.GetType() == test2List.GetType() && clone.Length == 2 && clone[0].Name == "Name11" && clone[1].Name == "Name12"); }
public void Cloner_Dictionary_IDict() { //Arrange IDictionary <int, Test3> test3Dict = new Dictionary <int, Test3>() { { 1, new Test3 { Name = "Name11" } }, { 2, new Test3 { Name = "Name12" } } }; //Act var cloner = ClonerBase.Create(typeof(IDictionary <int, Test3>)); var clone = (Dictionary <int, Test3>)cloner.Clone(test3Dict); //Assert Assert.IsTrue(clone != null && clone != test3Dict && clone.GetType() == test3Dict.GetType() && clone.Count == 2 && clone[1].Name == "Name11" && clone[2].Name == "Name12"); }
public void Cloner_Instance() { //Arrange var x = new X { Name = "Name1", Number = 1, Double = 2, Y = new Y() }; //Act var cloner = ClonerBase.Create(typeof(X)); var clone = (X)cloner.Clone(x); //Assert Assert.IsNotNull(clone); Assert.AreNotEqual(x, clone); Assert.AreEqual("Name1", clone.Name); Assert.AreEqual(1, clone.Number); Assert.AreEqual(2, clone.Double); Assert.IsNull(clone.Y); }
public CollectionVisitor(Type ownerType, Type collectionType, string elementName = null, PropertyGuard guard = null, bool supportsCloning = true) : base(guard, supportsCloning) { ElementName = elementName; if (!string.IsNullOrWhiteSpace(elementName)) { _elementAccessor = ExpressAccessor.Create(ownerType, collectionType, elementName); } if (SupportsCloning) { _elementCloner = ClonerBase.Create(collectionType); } }
public void Cloner_Collection_ArrayList() { //Arrange var test2List = new ArrayList(new[] { new Test2 { Name = "Name11" }, new Test2 { Name = "Name12" } }); //Act var cloner = ClonerBase.Create(test2List.GetType()); var clone = (ArrayList)cloner.Clone(test2List); }
public DictionaryVisitor(Type ownerType, Type dictionaryType, string elementName = null, PropertyGuard guard = null, bool supportsCloning = true) : base(guard, supportsCloning) { ElementName = elementName; if (!string.IsNullOrWhiteSpace(elementName)) { _elementAccessor = ExpressAccessor.Create(ownerType, dictionaryType, elementName); } if (SupportsCloning) { _elementCloner = ClonerBase.Create(dictionaryType); } var keyType = dictionaryType.GenericTypeArguments[0]; var valueType = dictionaryType.GenericTypeArguments[1]; var kvpType = typeof(KeyValuePair <,>).MakeGenericType(keyType, valueType); KeyValueAccessor = ExpressAccessor.Create(kvpType, valueType, "Value"); }