private void TestParseSelect(string input)
        {
            var parser = new ODataExpressionLanguageParser(typeof(A), input);
            var parsed = parser.ParseSelectColumnList();

            parsed.ToDelimitedString().ShouldEqual(input);

            var dynamicParser = new ODataExpressionLanguageParser(typeof(ODataEntity), input);
            var dynamicParsed = dynamicParser.ParseSelectColumnList();

            dynamicParsed.ToDelimitedString().ShouldEqual(input);
        }
        public void TestParseSortKeys(string input, string expected = null)
        {
            var parser = new ODataExpressionLanguageParser(typeof(A), input);
            var parsed = parser.ParseSortKeyList();

            parsed.ToDelimitedString().ShouldEqual(expected ?? input);

            var dynamicParser = new ODataExpressionLanguageParser(typeof(ODataEntity), input);
            var dynamicParsed = dynamicParser.ParseSortKeyList();

            dynamicParsed.ToDelimitedString().ShouldEqual(expected ?? input);
        }
        private void TestParseExpressionLanguage(string input, Type type = null)
        {
            var parser = new ODataExpressionLanguageParser(type ?? typeof(A), input);
            var parsed = parser.Parse();

            parsed.ToString().ShouldEqual(input);

            var dynamicParser = new ODataExpressionLanguageParser(typeof(ODataEntity), input);
            var dynamicParsed = dynamicParser.Parse();

            parsed.ToString().ShouldEqual(input, "dynamic parse");
        }
 private void TestParseSelect(string input)
 {
     var parser = new ODataExpressionLanguageParser(typeof(A), input);
     var parsed = parser.ParseSelectColumnList();
     parsed.ToDelimitedString().ShouldEqual(input);
 }
 private void TestParseExpressionLanguage(string input)
 {
     var parser = new ODataExpressionLanguageParser(typeof(A), input);
     var parsed = parser.Parse();
     parsed.ToString().ShouldEqual(input);
 }
 public void TestParseSortKeys(string input, string expected = null)
 {
     var parser = new ODataExpressionLanguageParser(typeof(A), input);
     var parsed = parser.ParseSortKeyList();
     parsed.ToDelimitedString().ShouldEqual(expected ?? input);
 }
        public static ODataQueryExpression Parse(Type elementType, NameValueCollection parameters)
        {
            Throw.IfNull(elementType, "elementType");
            Throw.IfNull(parameters, "parameters");

            ODataExpression filter = null;
            var filterString = parameters["$filter"];
            if (filterString != null)
            {
                var parser = new ODataExpressionLanguageParser(elementType, filterString);
                filter = parser.Parse();
            }

            IReadOnlyList<ODataSortKeyExpression> orderBy = Empty<ODataSortKeyExpression>.Array;
            var orderByString = parameters["$orderby"];
            if (orderByString != null)
            {
                var parser = new ODataExpressionLanguageParser(elementType, orderByString);
                orderBy = parser.ParseSortKeyList();
            }

            int? top = null;
            var topString = parameters["$top"];
            if (topString != null)
            {
                int topValue;
                if (!int.TryParse(topString, out topValue))
                {
                    throw new ODataParseException("Expected an integer value for $top: " + topString);
                }
                top = topValue;
            }

            var skip = 0;
            var skipString = parameters["$skip"];
            if (skipString != null)
            {
                if (!int.TryParse(skipString, out skip))
                {
                    throw new ODataParseException("Expected an integer value for $skip: " + skipString);
                }
            }

            IReadOnlyList<ODataSelectColumnExpression> select = Empty<ODataSelectColumnExpression>.Array;
            var selectString = parameters["$select"];
            if (selectString != null)
            {
                var parser = new ODataExpressionLanguageParser(elementType, selectString);
                select = parser.ParseSelectColumnList();
            }

            var format = parameters["$format"];

            var inlineCount = ODataInlineCountOption.None;
            var inlineCountString = parameters["$inlinecount"];
            if (inlineCountString != null)
            {
                if (!Enum.TryParse(inlineCountString, ignoreCase: true, result: out inlineCount))
                {
                    throw new ODataParseException("Unexpected value " + inlineCountString + " for $inlinecount");
                }
            }

            return ODataExpression.Query(
                filter: filter,
                orderBy: orderBy,
                top: top,
                skip: skip,
                select: select,
                format: format,
                inlineCount: inlineCount
            );
        }