@Test
public void longExpression() {

    Expression expr = new Expression();
    expr.numbers.add(new BigDecimal("-1"));
    expr.operators.add(Expression.Operator.DIVIDE);
    expr.numbers.add(new BigDecimal("6"));
    expr.operators.add(Expression.Operator.ADD);
    expr.numbers.add(new BigDecimal("5"));
    expr.operators.add(Expression.Operator.MULTIPLY);
    expr.numbers.add(new BigDecimal("12"));
    expr.operators.add(Expression.Operator.DIVIDE);
    expr.numbers.add(new BigDecimal("3"));
    expr.operators.add(Expression.Operator.DIVIDE);
    expr.numbers.add(new BigDecimal("8"));
    expr.operators.add(Expression.Operator.SUBTRACT);
    expr.numbers.add(new BigDecimal("-10"));
    BigDecimal result1 = expr.evaluate(false, 8, RoundingMode.HALF_UP);
    assertEquals(result1, new BigDecimal("12.41666667"));
    BigDecimal result2 = expr.evaluate(true, 8, RoundingMode.HALF_UP);
    assertEquals(result2, new BigDecimal("12.33333333"));
}