I am working on building a simple calculator in Java. Currently, I am testing the subtraction functionality using tests. It works fine for the first subtraction (5-5-5) but doesn't work with the (-2-2) due to Java stack order - how can I go about solving this problem.
Calculator class:
public class Calculator{
public double evaluate(String expression){
if (expression.contains("+")){
int index = expression.indexOf("+");
String str1 = expression.substring(0, index);
// String str2 = expression.substring(index + 1);
return evaluate(str1) + evaluate(expression.substring(index + 1));
}
else if (expression.contains("-")){
int index = expression.indexOf("-");
String str1 = expression.substring(0, index);
// String str2 = expression.substring(index + 1);
return evaluate(expression.substring(index + 1)) - evaluate(str1);
}
return Double.parseDouble(expression);
}
Test class:
public class CalculatorTest{
Calculator cal;
@Before
public void setUp(){
cal = new Calculator();
}
@Test
public void testEvaluateReturnsDoubleMinusZeroWhenStringFiveMinusFiveMinusFiveIsPassedIn(){
assertEquals(-5.0,cal.evaluate("5-5-5"),0.0);
}
@Test
public void testEvaluateReturnsDoubleMinusFourWhenStringMinusTwoMinusTwoIsPassedIn(){
assertEquals(-4.0,cal.evaluate("-2-2"),0.0);
}