public void GetClone_DerivedTypeWithShadowedProperty_ClonnedProperly() { DerivedClassOne source = new DerivedClassOne() { MyField = 1, Property = 1, VirtualProperty = 2, VirtualProperty2 = 3, AbstractProperty = 4, VirtualProperty3 = "test1" }; Assert.AreEqual(2, ((BaseClassOne)source).VirtualProperty); Assert.AreEqual(3, ((BaseClassOne)source).VirtualProperty2); Assert.AreEqual(4, ((BaseClassOne)source).AbstractProperty); Assert.AreEqual("test1", ((BaseClassOne)source).VirtualProperty3); ((BaseClassOne)source).MyField = 2; ((BaseClassOne)source).Property = 5; ((BaseClassOne)source).VirtualProperty = 6; ((BaseClassOne)source).VirtualProperty2 = 7; ((BaseClassOne)source).AbstractProperty = 8; ((BaseClassOne)source).VirtualProperty3 = "test2"; Assert.AreEqual(1, source.MyField); Assert.AreEqual(2, ((BaseClassOne)source).MyField); Assert.AreEqual(1, source.Property); Assert.AreEqual(5, ((BaseClassOne)source).Property); Assert.AreEqual(6, source.VirtualProperty); Assert.AreEqual(6, ((BaseClassOne)source).VirtualProperty); Assert.AreEqual(7, source.VirtualProperty2); Assert.AreEqual(7, ((BaseClassOne)source).VirtualProperty2); Assert.AreEqual(8, source.AbstractProperty); Assert.AreEqual(8, ((BaseClassOne)source).AbstractProperty); Assert.AreEqual("test2", source.VirtualProperty3); Assert.AreEqual("test2", ((BaseClassOne)source).VirtualProperty3); var target = CloneFactory.GetClone(source); Assert.AreEqual(1, target.MyField); Assert.AreEqual(2, ((BaseClassOne)target).MyField); Assert.AreEqual(1, target.Property); Assert.AreEqual(5, ((BaseClassOne)target).Property); Assert.AreEqual(6, target.VirtualProperty); Assert.AreEqual(6, ((BaseClassOne)target).VirtualProperty); Assert.AreEqual(7, target.VirtualProperty2); Assert.AreEqual(7, ((BaseClassOne)target).VirtualProperty2); Assert.AreEqual(8, target.AbstractProperty); Assert.AreEqual(8, ((BaseClassOne)target).AbstractProperty); Assert.AreEqual("test2", target.VirtualProperty3); Assert.AreEqual("test2", ((BaseClassOne)target).VirtualProperty3); }
public virtual void ShadowFieldProps1() { DerivedClassOne source = new DerivedClassOne() { MyField = 1, Property = 1, VirtualProperty = 2, VirtualProperty2 = 3, AbstractProperty = 4, VirtualProperty3 = "test1" }; Assert.Equal(2, source.VirtualProperty); Assert.Equal(3, source.VirtualProperty2); Assert.Equal(4, source.AbstractProperty); Assert.Equal("test1", source.VirtualProperty3); ((BaseClassOne)source).MyField = 2; ((BaseClassOne)source).Property = 5; source.VirtualProperty = 6; source.VirtualProperty2 = 7; source.AbstractProperty = 8; source.VirtualProperty3 = "test2"; Assert.Equal(1, source.MyField); Assert.Equal(2, ((BaseClassOne)source).MyField); Assert.Equal(1, source.Property); Assert.Equal(5, ((BaseClassOne)source).Property); Assert.Equal(6, source.VirtualProperty); Assert.Equal(6, source.VirtualProperty); Assert.Equal(7, source.VirtualProperty2); Assert.Equal(7, source.VirtualProperty2); Assert.Equal(8, source.AbstractProperty); Assert.Equal(8, source.AbstractProperty); Assert.Equal("test2", source.VirtualProperty3); Assert.Equal("test2", source.VirtualProperty3); var target = GetClone(source, 1); Assert.Equal(1, target.MyField); Assert.Equal(2, ((BaseClassOne)target).MyField); Assert.Equal(1, target.Property); Assert.Equal(5, ((BaseClassOne)target).Property); Assert.Equal(6, target.VirtualProperty); Assert.Equal(6, target.VirtualProperty); Assert.Equal(7, target.VirtualProperty2); Assert.Equal(7, target.VirtualProperty2); Assert.Equal(8, target.AbstractProperty); Assert.Equal(8, target.AbstractProperty); Assert.Equal("test2", target.VirtualProperty3); Assert.Equal("test2", target.VirtualProperty3); }