public void CloneClassWithCollectionReferenceViaInterface()
        {
            var source = new ClassWithCollectionViaInterface <string>();
            var clone  = source.Clone();

            Assert.IsNull(clone.Collection);

            source.Collection = new string[] { "Hello", "World!" };
            clone             = source.Clone();
            Assert.AreEqual(clone.Collection.GetType(), typeof(string[]));
            Assert.IsTrue(clone.Collection.SequenceEqual(new [] { "Hello", "World!" }));

            source.Collection = new Collection <string> {
                "Hello", "World!"
            };
            clone = source.Clone();
            Assert.AreEqual(clone.Collection.GetType(), typeof(Collection <string>));
            Assert.IsTrue(clone.Collection.SequenceEqual(new[] { "Hello", "World!" }));

            source.Collection = new List <string> {
                "Hello", "World!"
            };
            clone = source.Clone();
            Assert.AreEqual(clone.Collection.GetType(), typeof(List <string>));
            Assert.IsTrue(clone.Collection.SequenceEqual(new[] { "Hello", "World!" }));
        }
        public void CloneClassWithCollectionReferenceViaInterface()
        {
            var source = new ClassWithCollectionViaInterface<string>();
            var clone = source.Clone();

            Assert.IsNull(clone.Collection);

            source.Collection = new string[] {"Hello", "World!"};
            clone = source.Clone();
            Assert.AreEqual(clone.Collection.GetType(), typeof(string[]));
            Assert.IsTrue(clone.Collection.SequenceEqual(new []{"Hello", "World!"}));

            source.Collection = new Collection<string> { "Hello", "World!" };
            clone = source.Clone();
            Assert.AreEqual(clone.Collection.GetType(), typeof(Collection<string>));
            Assert.IsTrue(clone.Collection.SequenceEqual(new[] { "Hello", "World!" }));

            source.Collection = new List<string> { "Hello", "World!" };
            clone = source.Clone();
            Assert.AreEqual(clone.Collection.GetType(), typeof(List<string>));
            Assert.IsTrue(clone.Collection.SequenceEqual(new[] { "Hello", "World!" }));
        }