private void BuildEnumerableExpression(IEnumerable <Token> tokens, Expression parent) { if (parent == null) { _graph.Add(new EnumerableExpression()); BuildUp(tokens, _graph.Current); } else { var enumerableExpression = new EnumerableExpression(); parent.AddChild(enumerableExpression); BuildUp(tokens, enumerableExpression); } }
public void ParserShouldCallCompiler() { var lexer = MockRepository.GenerateStub <ILexer>(); var tokens = new List <Token>(); lexer.Stub(x => x.Tokenize("ABC")).Return(tokens); var expectedGraph = new ExGraph(); expectedGraph.Add(new StringExpression("asdf")); var graphBuilder = MockRepository.GenerateStub <IExpressionGraphBuilder>(); graphBuilder.Stub(x => x.Build(tokens)).Return(expectedGraph); var compiler = MockRepository.GenerateStub <IExpressionCompiler>(); compiler.Stub(x => x.Compile(expectedGraph.Expressions)).Return(new CompileResult(0, DataType.Integer)); _parser.Configure(config => { config .SetLexer(lexer) .SetGraphBuilder(graphBuilder) .SetExpresionCompiler(compiler); }); _parser.Parse("ABC"); compiler.AssertWasCalled(x => x.Compile(expectedGraph.Expressions)); }
public void ShouldCompileTwoInterExpressionsToCorrectResult() { var exp1 = new IntegerExpression("2"); exp1.Operator = Operator.Plus; _graph.Add(exp1); var exp2 = new IntegerExpression("2"); _graph.Add(exp2); var result = _expressionCompiler.Compile(_graph.Expressions); Assert.AreEqual(4d, result.Result); }
public void ParserShouldCallCompiler() { var lexer = MockRepository.GenerateStub<ILexer>(); var tokens = new List<Token>(); lexer.Stub(x => x.Tokenize("ABC")).Return(tokens); var expectedGraph = new ExGraph(); expectedGraph.Add(new StringExpression("asdf")); var graphBuilder = MockRepository.GenerateStub<IExpressionGraphBuilder>(); graphBuilder.Stub(x => x.Build(tokens)).Return(expectedGraph); var compiler = MockRepository.GenerateStub<IExpressionCompiler>(); compiler.Stub(x => x.Compile(expectedGraph.Expressions)).Return(new CompileResult(0, DataType.Integer)); _parser.Configure(config => { config .SetLexer(lexer) .SetGraphBuilder(graphBuilder) .SetExpresionCompiler(compiler); }); _parser.Parse("ABC"); compiler.AssertWasCalled(x => x.Compile(expectedGraph.Expressions)); }