public void ExpressionFactoryGetterFromPropertyNameGetPropertyValue()
        {
            var item = new CompiledExpTestEntity
            {
                Id   = 1,
                Name = "foo"
            };

            var getterFunc = CompiledExpressionFactory.CreatePropertyGetter <CompiledExpTestEntity, int>("Id");

            Assert.AreEqual(1, getterFunc(item));
        }
        public void ExpressionFactoryGetterFromPropertySupportsCasting()
        {
            var item = new CompiledExpTestEntity
            {
                Id   = 1,
                Name = "foo"
            };

            var getterFunc = CompiledExpressionFactory.CreatePropertyGetterWithCast <CompiledExpTestEntity, double>("Id");

            Assert.AreEqual(1.0, getterFunc(item));
        }
        public void ExpressionFactorySetterFromPropertyNameSetsPropertyValue()
        {
            var item = new CompiledExpTestEntity
            {
                Id   = 1,
                Name = "foo"
            };

            var setterFunc = CompiledExpressionFactory.CreatePropertySetter <CompiledExpTestEntity, int>("Id");

            setterFunc(item, 2);

            Assert.AreEqual(2, item.Id);
        }
        public void ExpressionFactorySetterFromPropertyNameWithCastSetsPropertyValue()
        {
            var item = new CompiledExpTestEntity
            {
                Id   = 1,
                Name = "foo"
            };

            var setterWithCastFunc =
                CompiledExpressionFactory.CreatePropertySetterCast <CompiledExpTestEntity, object>("Name");

            object o = "bar";

            setterWithCastFunc(item, o);

            Assert.AreEqual("bar", item.Name);
        }