public void MathExpression_Arithmetic_Division_Throws_If_Denominator_Is_Zero() { var expression = MathExpressionBuilder.CreateArithmetic(ArithmeticOperator.Division, 42, 0); var visitor = new EvaluationVisitor(); var message = Assert.Throws<MathExpressionException>(() => visitor.Evaluate(expression, new MathExpressionContext())).Message; Assert.AreEqual("Cannot divide by zero.", message); }
public void MathExpression_Arithmetic_Expression_Throws_When_Evaluated_If_Operator_Is_Unknown() { var op = ((ArithmeticOperator)int.MaxValue); var expression = MathExpressionBuilder.CreateArithmetic(op, 42, 0); var visitor = new EvaluationVisitor(); var exception = Assert.Throws<MathExpressionException>(() => visitor.Evaluate(expression, new MathExpressionContext())); Assert.AreEqual("Encountered unknown arithmetic operator.", exception.Details); }
public void MathExpression_Can_Evaluate_Arithmetic_Multiplication_Expression() { var expression = MathExpressionBuilder.CreateArithmetic(ArithmeticOperator.Multiplication, 21, 2); var visitor = new EvaluationVisitor(); Assert.AreEqual(42, visitor.Evaluate(expression, new MathExpressionContext())); }
public void MathExpression_Can_Evaluate_Variable_Expression() { var expression = new VariableExpression("x"); var visitor = new EvaluationVisitor(); var context = new MathExpressionContext(); context.Define("x", 42D); Assert.AreEqual(42, visitor.Evaluate(expression, context)); }
public void MathExpression_Can_Evaluate_Numeric_Expression() { var expression = new NumericExpression(42); var visitor = new EvaluationVisitor(); Assert.AreEqual(42, visitor.Evaluate(expression, new MathExpressionContext())); }
public void MathExpression_Can_Evaluate_Constant_Expression() { var expression = new ConstantExpression("pi", Math.PI); var visitor = new EvaluationVisitor(); Assert.AreEqual(Math.PI, visitor.Evaluate(expression, new MathExpressionContext())); }