public void MergeDifferentClassesShallNotOverrideUncommonMembersWithSameName() { var a = new ClassWithEqualNamedButHiddenMembersA(1, 1); var b = new ClassWithEqualNamedButHiddenMembersB(2, 2); a.PropertyNotToCopyPublic = 1; a.FieldNotToCopyPublic = 1; a.PropertyToCopy = 1; b.PropertyNotToCopyPublic = 2; b.FieldNotToCopyPublic = 2; b.PropertyToCopy = 2; var result = ObjectMerger.ObjectMerger.MergeObjects((IEqualNamedAndHiddenMembersClass)a, b); var castedResult = (ClassWithEqualNamedButHiddenMembersA)result; Assert.AreEqual(2, result.PropertyToCopy); PrivateObject privateObject = new PrivateObject(result); Assert.AreEqual(1, privateObject.GetProperty("PropertyNotToCopyPrivate")); Assert.AreEqual(1, privateObject.GetProperty("FieldNotToCopyPrivate")); Assert.AreEqual(1, castedResult.FieldNotToCopyPublic); Assert.AreEqual(1, castedResult.PropertyNotToCopyPublic); }
public void MergeDifferentClassesWithDatatypeParameterWorks() { var a = new ClassWithEqualNamedButHiddenMembersA(1, 2); var b = new ClassWithEqualNamedButHiddenMembersB(5, 6); a.PropertyNotToCopyPublic = 3; a.FieldNotToCopyPublic = 4; a.PropertyToCopy = 10; b.PropertyNotToCopyPublic = 7; b.FieldNotToCopyPublic = 8; b.PropertyToCopy = 20; IEqualNamedAndHiddenMembersClass result = ObjectMerger.ObjectMerger.MergeObjects(a, b); Assert.AreEqual(a.GetType(), result.GetType()); Assert.AreNotEqual(b.GetType(), result.GetType()); }