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);
        }
Пример #6
0
 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()));
 }