public void CloneToStructArrayOfDifferingLengthsWillNotWork() { var source = new CloneTestStruct[2]; var destination = new CloneTestStruct[3]; Assert.Throws <InvalidOperationException>(() => Cloneable <CloneTestStruct[]> .CloneTo(source, destination)); }
public void CloneToClass() { var source = new CloneTestClass { FirstName = "John", LastName = "Doe" }; var destination = new CloneTestClass(); Cloneable <CloneTestClass> .CloneTo(source, destination); Assert.AreEqual(source.FirstName, destination.FirstName); Assert.AreEqual(source.LastName, destination.LastName); }
public void CloneToObjectHierarchyWithNullSourceChild() { var source = new ParentClass(); var destination = new ParentClass { Child = new ChildClass { Name = "John Doe" } }; Cloneable <ParentClass> .CloneTo(source, destination); Assert.IsNull(destination.Child); }
public void CloneToClassArray() { var destinationClass = new CloneTestClass(); var source = new[] { new CloneTestClass { FirstName = "John", LastName = "Doe" } }; var destination = new[] { destinationClass }; Cloneable <CloneTestClass[]> .CloneTo(source, destination); Assert.IsTrue(ReferenceEquals(destinationClass, destination[0])); Assert.AreEqual("John", destinationClass.FirstName); Assert.AreEqual("Doe", destinationClass.LastName); }
public void CloneToObjectHierarchyWithNullDestinationChild() { var source = new ParentClass(); var sourceChild = new ChildClass { Name = "John Doe" }; source.Child = sourceChild; var destination = new ParentClass(); Cloneable <ParentClass> .CloneTo(source, destination); Assert.IsFalse(object.ReferenceEquals(sourceChild, destination.Child)); Assert.AreEqual(sourceChild.Name, destination.Child.Name); }
public static T CloneTo <T>(this T source, T destination) { return(Cloneable <T> .CloneTo(source, destination)); }
public void CloneToWithSameDestinationAsSourceWillNotWork() { var testClass = new ParentClass(); Assert.Throws <InvalidOperationException>(() => Cloneable <ParentClass> .CloneTo(testClass, testClass)); }
public void CloneToWillNotWorkWithNullReferences() { Assert.Throws <ArgumentNullException>(() => Cloneable <ParentClass> .CloneTo(new ParentClass(), null)); Assert.Throws <ArgumentNullException>(() => Cloneable <ParentClass> .CloneTo(null, new ParentClass())); }