public void Copy_CopiesNestedObject()
        {
            MyNestedObject copied =
                new MyNestedObject {
                Meta = "metadata", Single = new MySingleObject {
                    One = "single_one"
                }
            }.Copy();

            Assert.AreEqual("metadata", copied.Meta);
            Assert.AreEqual("single_one", copied.Single.One);
        }
        public void CloneByJson_creates_new_object_with_same_values()
        {
            var nest = new MyNestedObject() { MyDateTimeProp = DateTime.Now, MyDoubleProp = 5.3 };

            var obj = new MyObject() { MyIntProp = 5, MyStringProp = "Shnogerdob", MyNestedObjectProp = nest };
            var objClone = obj.CloneByJson();

            Assert.False(obj == objClone, "References should be different");
            Assert.AreEqual(obj.MyIntProp, objClone.MyIntProp);
            Assert.AreEqual(obj.MyStringProp, objClone.MyStringProp);
            Assert.AreEqual(obj.MyNestedObjectProp.MyDateTimeProp, objClone.MyNestedObjectProp.MyDateTimeProp);
            Assert.AreEqual(obj.MyNestedObjectProp.MyDoubleProp, obj.MyNestedObjectProp.MyDoubleProp);
        }
        public void CloneByJson_creates_new_object_with_same_values()
        {
            var nest = new MyNestedObject()
            {
                MyDateTimeProp = DateTime.Now, MyDoubleProp = 5.3
            };

            var obj = new MyObject()
            {
                MyIntProp = 5, MyStringProp = "Shnogerdob", MyNestedObjectProp = nest
            };
            var objClone = obj.CloneByJson();

            Assert.False(obj == objClone, "References should be different");
            Assert.AreEqual(obj.MyIntProp, objClone.MyIntProp);
            Assert.AreEqual(obj.MyStringProp, objClone.MyStringProp);
            Assert.AreEqual(obj.MyNestedObjectProp.MyDateTimeProp, objClone.MyNestedObjectProp.MyDateTimeProp);
            Assert.AreEqual(obj.MyNestedObjectProp.MyDoubleProp, obj.MyNestedObjectProp.MyDoubleProp);
        }