public void ShallowCloneToJaggedStructArray()
        {
            var source1 = new CloneTestClass { FirstName = "John", LastName = "Doe" };
            var source2 = new CloneTestClass { FirstName = "Jane", LastName = "Smith" };

            var source = new[]
            {
                new[] {new CloneTestStructWithClonableClassField { TestClass = source1}},
                new[] {new CloneTestStructWithClonableClassField { TestClass = source2}}
            };

            var destination = new[]
            {
                new[] {new CloneTestStructWithClonableClassField()}, 
                new[] {new CloneTestStructWithClonableClassField()}
            };

            var clone = source.ShallowCloneTo(destination);

            Assert.IsTrue(ReferenceEquals(source1, destination[0][0].TestClass));
            Assert.IsTrue(ReferenceEquals(source2, destination[1][0].TestClass));
        }
        public void ShallowCloneToJaggedClassArray()
        {
            var source1 = new CloneTestClass { FirstName = "John", LastName = "Doe" };
            var source2 = new CloneTestClass { FirstName = "Jane", LastName = "Smith" };

            var source = new[]
            {
                new[] {source1},
                new[] {source2}
            };

            var destination = new[]
            {
                new[] {new CloneTestClass()}, 
                new[] {new CloneTestClass()}
            };

            source.ShallowCloneTo(destination);

            Assert.IsTrue(ReferenceEquals(source1, destination[0][0]));
            Assert.IsTrue(ReferenceEquals(source2, destination[1][0]));
        }
        public void ShallowCloneToMultidimentionalClassArray()
        {
            var source1 = new CloneTestClass { FirstName = "John", LastName = "Doe" };
            var source2 = new CloneTestClass { FirstName = "Jane", LastName = "Smith" };

            CloneTestClass[,] source = new[,]
            {
                {
                    source1,
                    source2
                }
            };

            var destination = new[,]
            {
                {
                    new CloneTestClass(),
                    new CloneTestClass()
                }
            };

            source.ShallowCloneTo(destination);

            Assert.IsTrue(ReferenceEquals(source1, destination[0, 0]));
            Assert.IsTrue(ReferenceEquals(source2, destination[0, 1]));
        }
        public void ShallowCloneToMultidimentionalStructArray()
        {
            var source1 = new CloneTestStructWithClonableClassField { TestClass = new CloneTestClass { FirstName = "John", LastName = "Doe" } };
            var source2 = new CloneTestStructWithClonableClassField { TestClass = new CloneTestClass { FirstName = "Jane", LastName = "Smith" } };

            var source = new[,]
            {
                {
                    source1,
                    source2
                }
            };

            var dest = new CloneTestStructWithClonableClassField[1, 2];

            var clone = source.ShallowCloneTo(dest);

            Assert.IsTrue(ReferenceEquals(clone[0, 0].TestClass, source1.TestClass));
            Assert.IsTrue(ReferenceEquals(clone[0, 1].TestClass, source2.TestClass));
        }
        public void ShallowCloneToStructArray()
        {
            var source = new[] { new CloneTestStruct { FirstName = "John", LastName = "Doe" } };
            var destination = new CloneTestStruct[1];

            source.ShallowCloneTo(destination);

            Assert.AreEqual("John", destination[0].FirstName);
            Assert.AreEqual("Doe", destination[0].LastName);
        }