Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }