public void EvaluationVisit(string input, int value) { var lexer = new Lexer(input); var parser = new Parser(lexer); INode tree = parser.Parse(); var visitor = new EvaluationVisitor(); int result = visitor.Visit(tree); Assert.That(result, Is.EqualTo(value)); }
public void LogicalExpressionShouldHandlePrecedence() { BinaryExpresssion expression = LogicalExpression.Create(Parse("3 * (5 + 2)")) as BinaryExpresssion; EvaluationVisitor visitor = new EvaluationVisitor(); visitor.Visit(expression); Assert.AreEqual(21, visitor.Result); Assert.AreEqual(40, new Expression("5 * 2 ^ 3").Evaluate()); }
public void LogicalExpressionShouldCreateTimes() { BinaryExpresssion expression = LogicalExpression.Create(Parse("3 * 2")) as BinaryExpresssion; Assert.IsNotNull(expression); Assert.AreEqual(BinaryExpressionType.Times, expression.Type); EvaluationVisitor visitor = new EvaluationVisitor(); visitor.Visit(expression); Assert.AreEqual(6, visitor.Result); }
public void LogicalExpressionShouldCreateNot() { UnaryExpression expression = LogicalExpression.Create(Parse("not true")) as UnaryExpression; Assert.IsNotNull(expression); Assert.AreEqual(typeof(Value), expression.Expression.GetType()); EvaluationVisitor visitor = new EvaluationVisitor(); visitor.Visit(expression); Assert.AreEqual(false, visitor.Result); }
public void LogicalExpressionShouldCreateInteger() { Value expression = LogicalExpression.Create(Parse("2")) as Value; Assert.IsNotNull(expression); Assert.AreEqual("2", expression.Text); EvaluationVisitor visitor = new EvaluationVisitor(); visitor.Visit(expression); Assert.AreEqual(2, visitor.Result); }