public void CloneToJaggedClassArray() { var source = new[] { new[] { new CloneTestClass { FirstName = "John", LastName = "Doe" } }, new[] { new CloneTestClass { FirstName = "Jane", LastName = "Smith" } } }; var dest1 = new CloneTestClass(); var dest2 = new CloneTestClass(); var destination = new[] { new[] { dest1 }, new[] { dest2 } }; source.CloneTo(destination); Assert.IsTrue(ReferenceEquals(dest1, destination[0][0])); Assert.IsTrue(ReferenceEquals(dest2, destination[1][0])); Assert.AreEqual("John", destination[0][0].FirstName); Assert.AreEqual("Doe", destination[0][0].LastName); Assert.AreEqual("Jane", destination[1][0].FirstName); Assert.AreEqual("Smith", destination[1][0].LastName); }
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 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 ShallowCloneToClassArrayOfDifferingLengthsWillNotWork() { var source = new CloneTestClass[2]; var destination = new CloneTestClass[3]; Assert.Throws <InvalidOperationException>(() => Cloneable <CloneTestClass[]> .ShallowCloneTo(source, destination)); }
static void Main(string[] args) { Console.WriteLine("Hello World!"); Console.WriteLine("Please input what you want to show!"); if (args != null && args.Any()) { Console.WriteLine($"Hello World:{args[0]}"); } //use $ to format string of gettting input /* var input = Console.ReadLine(); * Console.WriteLine($"Hello World:{input}"); */ //use stack string firstStr = "it is the first string"; string secondStr = "it is the first string"; Stack stack = new Stack(); stack.Push(firstStr); stack.Push(secondStr); Console.WriteLine($"The first element is {stack.Pop()}, second element is {stack.Pop()}"); //serialize CloneTestClass ali = new CloneTestClass() { Name = "Ali", Age = 20 }; var tencent = (CloneTestClass)Clone.DeepClone(ali); Console.WriteLine($"Before change Ali:Name is{ali.Name} and Age is {ali.Age}"); Console.WriteLine($"Before change Tencent:Name is{tencent.Name} and Age is {tencent.Age}"); tencent.Age = 30; tencent.Name = "Tencent"; Console.WriteLine($"After change Ali:Name is{ali.Name} and Age is {ali.Age}"); Console.WriteLine($"After change Tencent:Name is{tencent.Name} and Age is {tencent.Age}"); try { var mayBeException = Clone.DeepClone(new SeriClassB() { Name = "Test" }); } catch { Console.WriteLine($"SeriClassB can't be serialize cause SeriClassA don't have the attribute Serializeable!"); } }
public void ShallowCloneToClass() { var source = new CloneTestClass { FirstName = "John", LastName = "Doe" }; var destination = new CloneTestClass(); Cloneable <CloneTestClass> .ShallowCloneTo(source, destination); Assert.AreEqual(source.FirstName, destination.FirstName); Assert.AreEqual(source.LastName, destination.LastName); }
public void ShallowCloneToClassArray() { var destinationClass = new CloneTestClass(); var source = new[] { new CloneTestClass { FirstName = "John", LastName = "Doe" } }; var destination = new[] { destinationClass }; Cloneable <CloneTestClass[]> .ShallowCloneTo(source, destination); Assert.IsTrue(ReferenceEquals(source[0], destination[0])); }
public void CloneMultidimensionalClassArray() { CloneTestClass[,] source = new CloneTestClass[, ] { { new CloneTestClass { FirstName = "John", LastName = "Doe" }, new CloneTestClass { FirstName = "Jane", LastName = "Smith" } } }; source[0, 1].InnerClass = source[0, 1]; Assert.IsTrue(Cloneable <CloneTestClass[, ]> .CanClone()); Assert.IsTrue(Cloneable <CloneTestClass[, ]> .CanShallowClone()); var clone = Cloneable <CloneTestClass[, ]> .Clone(source); var shallowClone = Cloneable <CloneTestClass[, ]> .ShallowClone(source); Assert.IsFalse(object.ReferenceEquals(source, clone)); Assert.IsFalse(object.ReferenceEquals(source, shallowClone)); Assert.AreEqual(source.Length, clone.Length); Assert.AreEqual(source.Length, shallowClone.Length); Assert.IsFalse(object.ReferenceEquals(source[0, 0], clone[0, 0])); Assert.IsFalse(object.ReferenceEquals(source[0, 1], clone[0, 1])); Assert.IsFalse(object.ReferenceEquals(source[0, 1], clone[0, 1].InnerClass)); Assert.IsTrue(object.ReferenceEquals(clone[0, 1], clone[0, 1].InnerClass)); Assert.IsTrue(object.ReferenceEquals(source[0, 0], shallowClone[0, 0])); Assert.IsTrue(object.ReferenceEquals(source[0, 1], shallowClone[0, 1])); Assert.IsTrue(object.ReferenceEquals(source[0, 1], shallowClone[0, 1].InnerClass)); Assert.IsFalse(object.ReferenceEquals(clone[0, 1], shallowClone[0, 1].InnerClass)); Assert.AreEqual("John", clone[0, 0].FirstName); Assert.AreEqual("Doe", clone[0, 0].LastName); Assert.AreEqual("Jane", clone[0, 1].FirstName); Assert.AreEqual("Smith", clone[0, 1].LastName); Assert.AreEqual("John", shallowClone[0, 0].FirstName); Assert.AreEqual("Doe", shallowClone[0, 0].LastName); Assert.AreEqual("Jane", shallowClone[0, 1].FirstName); Assert.AreEqual("Smith", shallowClone[0, 1].LastName); }
public void CloneSelfReferencingClass() { var source = new CloneTestClass { FirstName = "John", LastName = "Doe" }; source.InnerClass = source; var clone = Cloneable<CloneTestClass>.Clone(source); var shallowClone = Cloneable<CloneTestClass>.ShallowClone(source); Assert.IsFalse(object.ReferenceEquals(source, clone)); Assert.IsFalse(object.ReferenceEquals(source, shallowClone)); Assert.IsTrue(object.ReferenceEquals(clone, clone.InnerClass)); Assert.IsTrue(object.ReferenceEquals(shallowClone, shallowClone.InnerClass)); }
public void CloneStructWithSelfReferencingClass() { var selfRefClass = new CloneTestClass { FirstName = "John", LastName = "Doe" }; selfRefClass.InnerClass = selfRefClass; var source = new StructWithReferenceToSelfReferencingClass {Class = selfRefClass}; var clone = Cloneable<StructWithReferenceToSelfReferencingClass>.Clone(source); var shallowClone = Cloneable<StructWithReferenceToSelfReferencingClass>.ShallowClone(source); Assert.IsFalse(object.ReferenceEquals(source.Class, clone.Class)); Assert.IsTrue(object.ReferenceEquals(source.Class, shallowClone.Class)); Assert.IsTrue(object.ReferenceEquals(clone.Class, clone.Class.InnerClass)); }
public void ShallowCloneToWillAValueType() { var testClass = new CloneTestClass { FirstName = "John", LastName = "Doe" }; var source = new CloneTestStructWithClonableClassField { TestClass = testClass }; var dest = new CloneTestStructWithClonableClassField { TestClass = new CloneTestClass() }; var clone = source.ShallowCloneTo(dest); Assert.IsTrue(ReferenceEquals(testClass, clone.TestClass)); }
public void CloneSelfReferencingClass() { var source = new CloneTestClass { FirstName = "John", LastName = "Doe" }; source.InnerClass = source; var clone = Cloneable <CloneTestClass> .Clone(source); var shallowClone = Cloneable <CloneTestClass> .ShallowClone(source); Assert.IsFalse(object.ReferenceEquals(source, clone)); Assert.IsFalse(object.ReferenceEquals(source, shallowClone)); Assert.IsTrue(object.ReferenceEquals(clone, clone.InnerClass)); Assert.IsTrue(object.ReferenceEquals(shallowClone, shallowClone.InnerClass)); }
public void CloneClass() { var source = new CloneTestClass { FirstName = "John", LastName = "Doe" }; Assert.IsTrue(Cloneable<CloneTestClass>.CanClone()); Assert.IsTrue(Cloneable<CloneTestClass>.CanShallowClone()); var clone = Cloneable<CloneTestClass>.Clone(source); var shallowClone = Cloneable<CloneTestClass>.ShallowClone(source); Assert.IsFalse(ReferenceEquals(source, clone)); Assert.IsFalse(ReferenceEquals(source, shallowClone)); Assert.AreEqual("John", clone.FirstName); Assert.AreEqual("Doe", clone.LastName); Assert.AreEqual("John", shallowClone.FirstName); Assert.AreEqual("Doe", shallowClone.LastName); }
public void CloneJaggedClassArray() { var source = new CloneTestClass[][] { new CloneTestClass[] { new CloneTestClass { FirstName = "John", LastName = "Doe" }, new CloneTestClass { FirstName = "Jane", LastName = "Smith" } } }; Assert.IsTrue(Cloneable <CloneTestClass[][]> .CanClone()); Assert.IsTrue(Cloneable <CloneTestClass[][]> .CanShallowClone()); var clone = Cloneable <CloneTestClass[][]> .Clone(source); var shallowClone = Cloneable <CloneTestClass[][]> .ShallowClone(source); Assert.IsFalse(object.ReferenceEquals(source, clone)); Assert.IsFalse(object.ReferenceEquals(source, shallowClone)); Assert.IsFalse(object.ReferenceEquals(source[0], clone[0])); Assert.IsFalse(object.ReferenceEquals(source[0][0], clone[0][0])); Assert.IsFalse(object.ReferenceEquals(source[0][1], clone[0][1])); Assert.IsTrue(object.ReferenceEquals(source[0], shallowClone[0])); Assert.IsTrue(object.ReferenceEquals(source[0][0], shallowClone[0][0])); Assert.IsTrue(object.ReferenceEquals(source[0][1], shallowClone[0][1])); Assert.AreEqual(source.Length, clone.Length); Assert.AreEqual(source.Length, shallowClone.Length); Assert.AreEqual("John", clone[0][0].FirstName); Assert.AreEqual("Doe", clone[0][0].LastName); Assert.AreEqual("Jane", clone[0][1].FirstName); Assert.AreEqual("Smith", clone[0][1].LastName); }
public void CloneStructWithSelfReferencingClass() { var selfRefClass = new CloneTestClass { FirstName = "John", LastName = "Doe" }; selfRefClass.InnerClass = selfRefClass; var source = new StructWithReferenceToSelfReferencingClass { Class = selfRefClass }; var clone = Cloneable <StructWithReferenceToSelfReferencingClass> .Clone(source); var shallowClone = Cloneable <StructWithReferenceToSelfReferencingClass> .ShallowClone(source); Assert.IsFalse(object.ReferenceEquals(source.Class, clone.Class)); Assert.IsTrue(object.ReferenceEquals(source.Class, shallowClone.Class)); Assert.IsTrue(object.ReferenceEquals(clone.Class, clone.Class.InnerClass)); }
public void CloneToJaggedStructArray() { var source = new[] { new[] { new CloneTestStructWithClonableClassField { TestClass = new CloneTestClass { FirstName = "John", LastName = "Doe" } } }, new[] { new CloneTestStructWithClonableClassField { TestClass = new CloneTestClass { FirstName = "Jane", LastName = "Smith" } } } }; var dest1 = new CloneTestClass(); var dest2 = new CloneTestClass(); var destination = new[] { new[] { new CloneTestStructWithClonableClassField { TestClass = dest1 } }, new[] { new CloneTestStructWithClonableClassField { TestClass = dest2 } } }; var clone = source.CloneTo(destination); Assert.IsTrue(ReferenceEquals(dest1, clone[0][0].TestClass)); Assert.IsTrue(ReferenceEquals(dest2, clone[1][0].TestClass)); Assert.AreEqual("John", clone[0][0].TestClass.FirstName); Assert.AreEqual("Doe", clone[0][0].TestClass.LastName); Assert.AreEqual("Jane", clone[1][0].TestClass.FirstName); Assert.AreEqual("Smith", clone[1][0].TestClass.LastName); }
public void CloneMultipleReferencesToSameArray() { var child = new CloneTestClass[] { new CloneTestClass(), new CloneTestClass() }; var source = new CloneTestClass[][] { child, child }; var clone = Cloneable <CloneTestClass[][]> .Clone(source); Assert.IsFalse(object.ReferenceEquals(source, clone)); Assert.IsFalse(object.ReferenceEquals(clone[0], child)); Assert.IsFalse(object.ReferenceEquals(clone[1], child)); Assert.IsTrue(object.ReferenceEquals(clone[0], clone[1])); }
public void CloneClass() { var source = new CloneTestClass { FirstName = "John", LastName = "Doe" }; Assert.IsTrue(Cloneable <CloneTestClass> .CanClone()); Assert.IsTrue(Cloneable <CloneTestClass> .CanShallowClone()); var clone = Cloneable <CloneTestClass> .Clone(source); var shallowClone = Cloneable <CloneTestClass> .ShallowClone(source); Assert.IsFalse(ReferenceEquals(source, clone)); Assert.IsFalse(ReferenceEquals(source, shallowClone)); Assert.AreEqual("John", clone.FirstName); Assert.AreEqual("Doe", clone.LastName); Assert.AreEqual("John", shallowClone.FirstName); Assert.AreEqual("Doe", shallowClone.LastName); }
public void CloneBidirectionalReferences() { var left = new CloneTestClass(); var right = new CloneTestClass(); left.InnerClass = right; right.InnerClass = left; var leftClone = Cloneable <CloneTestClass> .Clone(left); var rightClone = leftClone.InnerClass; Assert.IsFalse(object.ReferenceEquals(right, rightClone)); Assert.IsFalse(object.ReferenceEquals(rightClone.InnerClass, left)); Assert.IsTrue(object.ReferenceEquals(rightClone.InnerClass, leftClone)); leftClone = Cloneable <CloneTestClass> .ShallowClone(left); rightClone = leftClone.InnerClass; Assert.IsTrue(object.ReferenceEquals(right, rightClone)); Assert.IsTrue(object.ReferenceEquals(rightClone.InnerClass, left)); Assert.IsFalse(object.ReferenceEquals(rightClone.InnerClass, leftClone)); }
public void CloneToMultidimentionalClassArray() { CloneTestClass[,] source = new[, ] { { new CloneTestClass { FirstName = "John", LastName = "Doe" }, new CloneTestClass { FirstName = "Jane", LastName = "Smith" } } }; var dest1 = new CloneTestClass(); var dest2 = new CloneTestClass(); var destination = new[, ] { { dest1, dest2 } }; source.CloneTo(destination); Assert.IsTrue(ReferenceEquals(dest1, destination[0, 0])); Assert.IsTrue(ReferenceEquals(dest2, destination[0, 1])); Assert.AreEqual("John", destination[0, 0].FirstName); Assert.AreEqual("Doe", destination[0, 0].LastName); Assert.AreEqual("Jane", destination[0, 1].FirstName); Assert.AreEqual("Smith", destination[0, 1].LastName); }
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 ShallowCloneToClass() { var source = new CloneTestClass { FirstName = "John", LastName = "Doe" }; var destination = new CloneTestClass(); Cloneable<CloneTestClass>.ShallowCloneTo(source, destination); Assert.AreEqual(source.FirstName, destination.FirstName); Assert.AreEqual(source.LastName, destination.LastName); }
public void CloneMultidimensionalClassArray() { CloneTestClass[,] source = new CloneTestClass[,] { { new CloneTestClass { FirstName = "John", LastName = "Doe" }, new CloneTestClass { FirstName = "Jane", LastName = "Smith"} } }; source[0, 1].InnerClass = source[0, 1]; Assert.IsTrue(Cloneable<CloneTestClass[,]>.CanClone()); Assert.IsTrue(Cloneable<CloneTestClass[,]>.CanShallowClone()); var clone = Cloneable<CloneTestClass[,]>.Clone(source); var shallowClone = Cloneable<CloneTestClass[,]>.ShallowClone(source); Assert.IsFalse(object.ReferenceEquals(source, clone)); Assert.IsFalse(object.ReferenceEquals(source, shallowClone)); Assert.AreEqual(source.Length, clone.Length); Assert.AreEqual(source.Length, shallowClone.Length); Assert.IsFalse(object.ReferenceEquals(source[0, 0], clone[0, 0])); Assert.IsFalse(object.ReferenceEquals(source[0, 1], clone[0, 1])); Assert.IsFalse(object.ReferenceEquals(source[0, 1], clone[0, 1].InnerClass)); Assert.IsTrue(object.ReferenceEquals(clone[0, 1], clone[0, 1].InnerClass)); Assert.IsTrue(object.ReferenceEquals(source[0, 0], shallowClone[0, 0])); Assert.IsTrue(object.ReferenceEquals(source[0, 1], shallowClone[0, 1])); Assert.IsTrue(object.ReferenceEquals(source[0, 1], shallowClone[0, 1].InnerClass)); Assert.IsFalse(object.ReferenceEquals(clone[0, 1], shallowClone[0, 1].InnerClass)); Assert.AreEqual("John", clone[0, 0].FirstName); Assert.AreEqual("Doe", clone[0, 0].LastName); Assert.AreEqual("Jane", clone[0, 1].FirstName); Assert.AreEqual("Smith", clone[0, 1].LastName); Assert.AreEqual("John", shallowClone[0, 0].FirstName); Assert.AreEqual("Doe", shallowClone[0, 0].LastName); Assert.AreEqual("Jane", shallowClone[0, 1].FirstName); Assert.AreEqual("Smith", shallowClone[0, 1].LastName); }
public void ShallowCloneToClassArray() { var destinationClass = new CloneTestClass(); var source = new[] { new CloneTestClass { FirstName = "John", LastName = "Doe" } }; var destination = new[] { destinationClass }; Cloneable<CloneTestClass[]>.ShallowCloneTo(source, destination); Assert.IsTrue(ReferenceEquals(source[0], destination[0])); }
public void CloneMultipleReferencesToSameArray() { var child = new CloneTestClass[] { new CloneTestClass(), new CloneTestClass() }; var source = new CloneTestClass[][] { child, child }; var clone = Cloneable<CloneTestClass[][]>.Clone(source); Assert.IsFalse(object.ReferenceEquals(source, clone)); Assert.IsFalse(object.ReferenceEquals(clone[0], child)); Assert.IsFalse(object.ReferenceEquals(clone[1], child)); Assert.IsTrue(object.ReferenceEquals(clone[0], clone[1])); }
public void ShallowCloneToClassArrayOfDifferingLengthsWillNotWork() { var source = new CloneTestClass[2]; var destination = new CloneTestClass[3]; Assert.Throws<InvalidOperationException>(() => Cloneable<CloneTestClass[]>.ShallowCloneTo(source, destination)); }
public void CloneClassArray() { var source = new CloneTestClass[] { new CloneTestClass { FirstName = "John", LastName = "Doe" }, new CloneTestClass { FirstName = "Jane", LastName = "Smith"} }; Assert.IsTrue(Cloneable<CloneTestClass[]>.CanClone()); Assert.IsTrue(Cloneable<CloneTestClass[]>.CanShallowClone()); var clones = Cloneable<CloneTestClass[]>.Clone(source); var shallowClones = Cloneable<CloneTestClass[]>.ShallowClone(source); Assert.IsFalse(object.ReferenceEquals(source, clones)); Assert.IsFalse(object.ReferenceEquals(source, shallowClones)); Assert.AreEqual(source.Length, clones.Length); Assert.AreEqual(source.Length, shallowClones.Length); Assert.IsFalse(object.ReferenceEquals(source[0], clones[0])); Assert.IsFalse(object.ReferenceEquals(source[1], clones[1])); Assert.IsTrue(object.ReferenceEquals(source[0], shallowClones[0])); Assert.IsTrue(object.ReferenceEquals(source[1], shallowClones[1])); Assert.AreEqual("John", clones[0].FirstName); Assert.AreEqual("Doe", clones[0].LastName); Assert.AreEqual("Jane", clones[1].FirstName); Assert.AreEqual("Smith", clones[1].LastName); }
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 CloneToMultidimentionalClassArray() { CloneTestClass[,] source = new[,] { { new CloneTestClass { FirstName = "John", LastName = "Doe" }, new CloneTestClass { FirstName = "Jane", LastName = "Smith"} } }; var dest1 = new CloneTestClass(); var dest2 = new CloneTestClass(); var destination = new[,] { { dest1, dest2 } }; source.CloneTo(destination); Assert.IsTrue(ReferenceEquals(dest1, destination[0, 0])); Assert.IsTrue(ReferenceEquals(dest2, destination[0, 1])); Assert.AreEqual("John", destination[0, 0].FirstName); Assert.AreEqual("Doe", destination[0, 0].LastName); Assert.AreEqual("Jane", destination[0, 1].FirstName); Assert.AreEqual("Smith", destination[0, 1].LastName); }
public void ShallowCloneToWillAValueType() { var testClass = new CloneTestClass {FirstName = "John", LastName = "Doe"}; var source = new CloneTestStructWithClonableClassField { TestClass = testClass }; var dest = new CloneTestStructWithClonableClassField {TestClass = new CloneTestClass()}; var clone = source.ShallowCloneTo(dest); Assert.IsTrue(ReferenceEquals(testClass, clone.TestClass)); }
public void CloneToJaggedClassArray() { var source = new[] { new[] {new CloneTestClass { FirstName = "John", LastName = "Doe" }}, new[] {new CloneTestClass { FirstName = "Jane", LastName = "Smith"}} }; var dest1 = new CloneTestClass(); var dest2 = new CloneTestClass(); var destination = new[] { new[] {dest1}, new[] {dest2} }; source.CloneTo(destination); Assert.IsTrue(ReferenceEquals(dest1, destination[0][0])); Assert.IsTrue(ReferenceEquals(dest2, destination[1][0])); Assert.AreEqual("John", destination[0][0].FirstName); Assert.AreEqual("Doe", destination[0][0].LastName); Assert.AreEqual("Jane", destination[1][0].FirstName); Assert.AreEqual("Smith", destination[1][0].LastName); }
public void CloneBidirectionalReferences() { var left = new CloneTestClass(); var right = new CloneTestClass(); left.InnerClass = right; right.InnerClass = left; var leftClone = Cloneable<CloneTestClass>.Clone(left); var rightClone = leftClone.InnerClass; Assert.IsFalse(object.ReferenceEquals(right, rightClone)); Assert.IsFalse(object.ReferenceEquals(rightClone.InnerClass, left)); Assert.IsTrue(object.ReferenceEquals(rightClone.InnerClass, leftClone)); leftClone = Cloneable<CloneTestClass>.ShallowClone(left); rightClone = leftClone.InnerClass; Assert.IsTrue(object.ReferenceEquals(right, rightClone)); Assert.IsTrue(object.ReferenceEquals(rightClone.InnerClass, left)); Assert.IsFalse(object.ReferenceEquals(rightClone.InnerClass, leftClone)); }
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 CloneToJaggedStructArray() { var source = new[] { new[] {new CloneTestStructWithClonableClassField { TestClass = new CloneTestClass { FirstName = "John", LastName = "Doe" }}}, new[] {new CloneTestStructWithClonableClassField { TestClass = new CloneTestClass { FirstName = "Jane", LastName = "Smith"}}} }; var dest1 = new CloneTestClass(); var dest2 = new CloneTestClass(); var destination = new[] { new[] {new CloneTestStructWithClonableClassField { TestClass = dest1}}, new[] {new CloneTestStructWithClonableClassField { TestClass = dest2}} }; var clone = source.CloneTo(destination); Assert.IsTrue(ReferenceEquals(dest1, clone[0][0].TestClass)); Assert.IsTrue(ReferenceEquals(dest2, clone[1][0].TestClass)); Assert.AreEqual("John", clone[0][0].TestClass.FirstName); Assert.AreEqual("Doe", clone[0][0].TestClass.LastName); Assert.AreEqual("Jane", clone[1][0].TestClass.FirstName); Assert.AreEqual("Smith", clone[1][0].TestClass.LastName); }