Пример #1
0
 public void Clone_WithArray_WithCircularReference_ShouldWork()
 {
     var original = new TestObject_WithCircularReference[] {
         new TestObject_WithCircularReference { Id = 1, Name = "Test1" },
         new TestObject_WithCircularReference { Id = 2, Name = "Test2" }
     };
     original[0].Child = original[1];
     original[1].Child = original[0];
     var clone = Cloner.Clone(original, CloneMethod.Deep);
     for (var i = 0; i < original.Length; i++)
     {
         Assert.AreEqual(original[i].Name, clone[i].Name);
         Assert.AreEqual(original[i].Child.Name, clone[i].Child.Name);
         Assert.AreEqual(original[i].Child.Child.Name, clone[i].Child.Child.Name);
     }
     Assert.IsTrue(ReferenceEquals(clone[0], clone[1].Child), "When cloning circular references, referential integrity should be preserved");
     Assert.IsTrue(ReferenceEquals(clone[1], clone[0].Child), "When cloning circular references, referential integrity should be preserved");
 } 
Пример #2
0
 public void Clone_WithCircularReference_ShouldWork()
 {
     var original = new TestObject_WithCircularReference { Id = 1, Name = "Test" };
     original.Child = original;
     var clone = Cloner.Clone(original, CloneMethod.Deep);
     Assert.AreEqual(original.Name, clone.Name);
     Assert.AreEqual(original.Child.Name, clone.Child.Name);
     Assert.AreEqual(original.Child.Child.Name, clone.Child.Child.Name);
     Assert.IsTrue(ReferenceEquals(clone, clone.Child), "When cloning circular references, referential integrity should be preserved");
 }