public void ShouldReturnExpectedForIntProp()
        {
            var result = TypeExpressions.GetPropertyExpression <TestClass>(nameof(TestClass.IntProp));
            Expression <Func <TestClass, object> > expected = x => x.IntProp;

            Assert.Equal(expected.ToString(), result.ToString());
        }
        public void ShouldReturnExpectedWhenCastingDecimalProp()
        {
            var result = TypeExpressions.GetPropertyExpression <TestClass, double>(nameof(TestClass.DecimalProp));
            Expression <Func <TestClass, double> > expected = x => (double)x.DecimalProp;

            Assert.Equal(expected.ToString(), result.ToString());
        }
        public void ExampleUsageShouldWork()
        {
            var predicate          = Predicate.Of <int>(a => a > 10);
            var propertyExpression = TypeExpressions.GetPropertyExpression <TestClass, int>(nameof(TestClass.IntProperty2));
            var result             = predicate.RemapTo(propertyExpression);

            Assert.Equal("x => (x.IntProperty2 > 10)", result.ToString());
        }
        public void DocumentationExampleShouldWork()
        {
            var data = new[]
            {
                new MyEntity
                {
                    Name = "b"
                },
                new MyEntity
                {
                    Name = "c"
                },
                new MyEntity
                {
                    Name = "a"
                }
            };
            var orderBy           = nameof(MyEntity.Name);
            var _entities         = data.AsQueryable();
            var orderByExpression = TypeExpressions.GetPropertyExpression <MyEntity>(orderBy);
            var orderedData       = _entities.OrderBy(orderByExpression);

            Assert.Equal(new[] { "a", "b", "c" }, orderedData.Select(x => x.Name).ToArray());
        }
 public void ShouldThrowArgumentExceptionWhenInvalidProperty()
 {
     Assert.Throws <ArgumentException>(() => TypeExpressions.GetPropertyExpression <TestClass>("ComputerSaysNo"));
 }
 public void ShouldThrowInvalidOperationExceptionWhenInvalidCast()
 {
     Assert.Throws <InvalidOperationException>(() => TypeExpressions.GetPropertyExpression <TestClass, DateTime>(nameof(TestClass.StringProp)));
 }