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());
        }
        /// <summary>
        /// Converts the provided <see cref="TypeExpressions"/> into an equivilant <see cref="MetaGraphTypes"/>
        /// array.
        /// </summary>
        /// <param name="modifer">The modifer to expand.</param>
        /// <returns>GraphTypeWrapper[].</returns>
        public static MetaGraphTypes[] ToTypeWrapperSet(this TypeExpressions modifer)
        {
            var list = new List <MetaGraphTypes>();

            if (modifer.HasFlag(TypeExpressions.IsNotNullList))
            {
                list.Add(MetaGraphTypes.IsNotNull);
            }

            if (modifer.HasFlag(TypeExpressions.IsList))
            {
                list.Add(MetaGraphTypes.IsList);
            }

            if (modifer.HasFlag(TypeExpressions.IsNotNull) && (list.Count == 0 || list[list.Count - 1] != MetaGraphTypes.IsNotNull))
            {
                list.Add(MetaGraphTypes.IsNotNull);
            }

            return(list.ToArray());
        }
        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());
        }
Esempio n. 6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="FromGraphQLAttribute"/> class.
 /// </summary>
 /// <param name="argumentName">The name of the input argument to extract the value from.</param>
 /// <param name="typeExpression">The type expression to apply to this value.</param>
 public FromGraphQLAttribute(string argumentName, TypeExpressions typeExpression)
 {
     this.ArgumentName   = argumentName?.Trim();
     this.TypeExpression = typeExpression;
 }
Esempio n. 7
0
 /// <summary>
 /// Initializes a new instance of the <see cref="FromGraphQLAttribute"/> class.
 /// </summary>/// <param name="typeExpression">The type expression to apply to this value.</param>
 public FromGraphQLAttribute(TypeExpressions typeExpression)
     : this(Constants.Routing.PARAMETER_META_NAME, typeExpression)
 {
 }
 public void ShouldThrowArgumentExceptionWhenInvalidProperty()
 {
     Assert.Throws <ArgumentException>(() => TypeExpressions.GetPropertyExpression <TestClass>("ComputerSaysNo"));
 }
 public void ShouldThrowInvalidOperationExceptionWhenInvalidCast()
 {
     Assert.Throws <InvalidOperationException>(() => TypeExpressions.GetPropertyExpression <TestClass, DateTime>(nameof(TestClass.StringProp)));
 }