public void WrapperCreator_FromPropertyInfo_WorksProperly()
        {
            var propertyInfo = typeof(MergeTestObject).GetProperty("Property1");

            var propertyWrapper = PropertyWrapperHelper.Create<MergeTestObject>(propertyInfo);

            var instance1 = new MergeTestObject()
            {
                Property1 = 1
            };

            var instance2 = new MergeTestObject();

            propertyWrapper.Copy(instance1, instance2);

            // this should match the name of whatever property is accessed in the lambda above
            Assert.AreEqual("Property1", propertyWrapper.Name);
            Assert.AreEqual(instance1.Property1, instance2.Property1);
        }
        public void WrapperCreator_FromExpression_WorksProperly()
        {
            Expression<Func<MergeTestObject, int>> expression = o => o.Property1;

            var propertyWrapper = PropertyWrapperHelper.Create(expression);

            var instance1 = new MergeTestObject()
            {
                Property1 = 1
            };

            var instance2 = new MergeTestObject();

            propertyWrapper.Copy(instance1, instance2);

            // this should match the name of whatever property is accessed in the lambda above
            Assert.AreEqual("Property1", propertyWrapper.Name);
            Assert.AreEqual(instance1.Property1, instance2.Property1);
        }
 public void ParameterValidation_ThrowsWhenParamterIsNotPropertyAccess()
 {
     PropertyWrapperHelper.Create<MergeTestObject, int>(o => o.NotProperty);
 }