Beispiel #1
0
        public CmsqlExpressionVisitorContext Parse(
            ContentType contentType,
            ICmsqlQueryExpression expression)
        {
            CmsqlExpressionVisitorContext context = new CmsqlExpressionVisitorContext(contentType);

            if (contentType == null)
            {
                return(context);
            }

            if (expression == null)
            {
                context.PushNewPropertyCriteriaCollection();
                return(context);
            }

            CmsqlExpressionVisitor visitor =
                new CmsqlExpressionVisitor(
                    new QueryConditionToPropertyCriteriaMapper(
                        new PropertyDataTypeResolver(contentType)), context);

            expression.Accept(visitor);

            return(context);
        }
        public void Test_can_parse_single_condition_as_expression()
        {
            CmsqlParser cmsqlParser = CmsqlParserFactory.CreateParserForQuery("where foo != 'bar'");

            CmsqlParser.WhereClauseContext parseTree = cmsqlParser.whereClause();

            WhereClauseVisitor    visitor    = new WhereClauseVisitor();
            ICmsqlQueryExpression expression = visitor.VisitWhereClause(parseTree);

            expression.Should().BeOfType <CmsqlQueryCondition>();
        }
Beispiel #3
0
        public void Test_can_parse_parenthesized_expression_containing_condition_expression()
        {
            CmsqlParser cmsqlParser = CmsqlParserFactory.CreateParserForQuery("(foo != 'bar')");

            CmsqlParser.ParenthesizedExpressionContext parseTree =
                (CmsqlParser.ParenthesizedExpressionContext)cmsqlParser.expression();

            ExpressionVisitor     visitor    = new ExpressionVisitor();
            ICmsqlQueryExpression expression = visitor.VisitParenthesizedExpression(parseTree);

            expression.Should().BeOfType <CmsqlQueryCondition>();
            expression.Should().NotBeNull();
        }
Beispiel #4
0
        public void Test_can_parse_condition_as_expression()
        {
            CmsqlParser cmsqlParser = CmsqlParserFactory.CreateParserForQuery("foo != 'bar'");

            CmsqlParser.ConditionExpressionContext parseTree =
                (CmsqlParser.ConditionExpressionContext)cmsqlParser.expression();

            ExpressionVisitor     visitor    = new ExpressionVisitor();
            ICmsqlQueryExpression expression = visitor.VisitConditionExpression(parseTree);

            expression.Should().BeOfType <CmsqlQueryCondition>();
            expression.Should().NotBeNull();
        }