public void EvaluationTest() { var operand = new NumberExpression("10"); var addition = new AdditionBinaryExpression { LeftOperand = operand, RightOperand = operand }; var subraction = new SubtractionBinaryExpression { LeftOperand = operand, RightOperand = operand }; var division = new DivisionBinaryExpression { LeftOperand = operand, RightOperand = operand }; var multiplication = new MultiplicationBinaryExpression { LeftOperand = operand, RightOperand = operand }; Assert.AreEqual(20, addition.Evaluate(), "Ошибка в вычилсении AdditionBinaryExpression"); Assert.AreEqual(0, subraction.Evaluate(), "Ошибка в вычилсении SubtractionBinaryExpression"); Assert.AreEqual(1, division.Evaluate(), "Ошибка в вычилсении DivisionBinaryExpression"); Assert.AreEqual(100, multiplication.Evaluate(), "Ошибка в вычилсении MultiplicationBinaryExpression"); }
public void ExpressionTest() { // (10 + 20) * 30 / 40 var e1 = new ValueExpression(10); var e2 = new ValueExpression(20); var e3 = new ValueExpression(30); var e4 = new ValueExpression(40); Expression expression = new DivisionBinaryExpression( new MultiplicationBinaryExpression( new AdditionBinaryExpression(e1, e2), e3), e4); var solution = expression.Solve(); Assert.That(solution, Is.EqualTo(22.5)); }