public void CopyFrom_ReferencesProps_Clones() { var first = new ClassOfValues { BoolField = true, IntField = 123, LongField = 123456812312331231 }; var second = new ClassOfValues() { BoolProp = false, IntProp = 1, LongProp = 333 }; var nestedClass = new ClassOfReferences() { FirstObjectProp = first, SecondObjectProp = second }; var newNestedClass = new ClassOfReferences().CopyFrom(nestedClass); Assert.True(newNestedClass.FirstObjectProp.BoolField); Assert.False(newNestedClass.SecondObjectProp.BoolField); Assert.Equal(123, newNestedClass.FirstObjectProp.IntField); Assert.Equal(1, newNestedClass.SecondObjectProp.IntProp); Assert.Equal(333, newNestedClass.SecondObjectProp.LongProp); Assert.Equal(123456812312331231, newNestedClass.FirstObjectProp.LongField); }
public void CopyFrom_PrivateReferenceField_Clones() { var classOfReferences = new ClassOfReferences() { PrivateFieldProp = new ClassOfValues() { PrivateFieldProp = 4 } }; var copy = new ClassOfReferences().CopyFrom(classOfReferences); Assert.Equal(10, copy.PrivateFieldProp.PrivateFieldProp); }
public void CopyFrom_ReferenceValues_CanNotModifyOriginal() { var values = new ClassOfValues() { BoolProp = true, BoolField = false }; var nested = new ClassOfReferences() { FirstObjectProp = values }; var clone = new ClassOfReferences().CopyFrom(nested); nested.FirstObjectProp.BoolProp = false; nested.FirstObjectProp.BoolField = true; Assert.True(clone.FirstObjectProp.BoolProp); Assert.False(clone.FirstObjectProp.BoolField); }