Exemple #1
0
        public void BuildExpression_ProperStack_ReturnsCorrectUnaryFilterExpression()
        {
            _baseStrategy
            .Stub(x => x.BuildExpression(null))
            .IgnoreArguments()
            .Return(FilterExpression.Constant(true));

            var stack = new Stack <Token>();

            stack.Push(new Token
            {
                TokenType = TokenType.Boolean,
                Value     = "true"
            });

            stack.Push(new Token
            {
                TokenType = TokenType.UnaryOperator,
                Value     = "not"
            });

            var expression = _unaryStrategy.BuildExpression(stack);

            Assert.That(expression, Is.TypeOf <UnaryFilterExpression>());
            Assert.That(expression.ExpressionType, Is.EqualTo(FilterExpressionType.Unary));
            Assert.That(((UnaryFilterExpression)expression).Operator, Is.EqualTo(FilterExpressionOperator.Not));
            Assert.That(((UnaryFilterExpression)expression).Operand, Is.TypeOf <ConstantFilterExpression>());
        }
        public void BuildExpression_ValidBinaryExpressionStack_ReturnsBinaryFilterExpression()
        {
            _baseStrategy.Stub(x => x.BuildExpression(null))
            .IgnoreArguments()
            .Return(FilterExpression.MemberAccess("TestInt"));

            var stack = new Stack <Token>();

            stack.Push(new Token
            {
                TokenType = TokenType.Name,
                Value     = "TestInt"
            });

            stack.Push(new Token
            {
                TokenType = TokenType.Integer,
                Value     = "42"
            });

            stack.Push(new Token
            {
                TokenType = TokenType.BinaryOperator,
                Value     = "ne"
            });

            var expression = _binaryStrategy.BuildExpression(stack);

            Assert.That(expression, Is.Not.Null);
            Assert.That(expression, Is.TypeOf <BinaryFilterExpression>());
        }