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>()); }