add some Formula tests

This commit is contained in:
tibbi
2016-01-03 21:52:39 +01:00
parent fe5efdd3c3
commit 39227c7e5f
3 changed files with 53 additions and 2 deletions

View File

@ -50,8 +50,10 @@ public class MainActivityTest {
press(R.id.btn_6); press(R.id.btn_6);
press(R.id.btn_equals); press(R.id.btn_equals);
checkResult("3.5"); checkResult("3.5");
checkFormula("-2.5+6");
press(R.id.btn_equals); press(R.id.btn_equals);
checkResult("9.5"); checkResult("9.5");
checkFormula("3.5+6");
} }
@Test @Test
@ -63,6 +65,7 @@ public class MainActivityTest {
press(R.id.btn_3); press(R.id.btn_3);
press(R.id.btn_equals); press(R.id.btn_equals);
checkResult("4.8"); checkResult("4.8");
checkFormula("7.8-3");
} }
@Test @Test
@ -72,6 +75,7 @@ public class MainActivityTest {
press(R.id.btn_4); press(R.id.btn_4);
press(R.id.btn_equals); press(R.id.btn_equals);
checkResult("8"); checkResult("8");
checkFormula("2*4");
} }
@Test @Test
@ -82,6 +86,7 @@ public class MainActivityTest {
press(R.id.btn_4); press(R.id.btn_4);
press(R.id.btn_equals); press(R.id.btn_equals);
checkResult("2.5"); checkResult("2.5");
checkFormula("10/4");
} }
@Test @Test
@ -91,6 +96,7 @@ public class MainActivityTest {
press(R.id.btn_0); press(R.id.btn_0);
press(R.id.btn_equals); press(R.id.btn_equals);
checkResult("0"); checkResult("0");
checkFormula("8/0");
} }
@Test @Test
@ -100,6 +106,7 @@ public class MainActivityTest {
press(R.id.btn_2); press(R.id.btn_2);
press(R.id.btn_equals); press(R.id.btn_equals);
checkResult("1"); checkResult("1");
checkFormula("7%2");
} }
@Test @Test
@ -109,6 +116,7 @@ public class MainActivityTest {
press(R.id.btn_3); press(R.id.btn_3);
press(R.id.btn_equals); press(R.id.btn_equals);
checkResult("8"); checkResult("8");
checkFormula("2^3");
} }
@Test @Test
@ -116,6 +124,7 @@ public class MainActivityTest {
press(R.id.btn_9); press(R.id.btn_9);
press(R.id.btn_root); press(R.id.btn_root);
checkResult("3"); checkResult("3");
checkFormula("√9");
} }
@Test @Test
@ -145,6 +154,7 @@ public class MainActivityTest {
press(R.id.btn_2); press(R.id.btn_2);
press(R.id.btn_equals); press(R.id.btn_equals);
checkResult("2"); checkResult("2");
checkFormula("");
} }
@Test @Test
@ -154,29 +164,36 @@ public class MainActivityTest {
press(R.id.btn_5); press(R.id.btn_5);
press(R.id.btn_minus); press(R.id.btn_minus);
checkResult("7"); checkResult("7");
checkFormula("2+5");
press(R.id.btn_3); press(R.id.btn_3);
press(R.id.btn_multiply); press(R.id.btn_multiply);
checkResult("4"); checkResult("4");
checkFormula("7-3");
press(R.id.btn_5); press(R.id.btn_5);
press(R.id.btn_divide); press(R.id.btn_divide);
checkResult("20"); checkResult("20");
checkFormula("4*5");
press(R.id.btn_2); press(R.id.btn_2);
press(R.id.btn_modulo); press(R.id.btn_modulo);
checkResult("10"); checkResult("10");
checkFormula("20/2");
press(R.id.btn_4); press(R.id.btn_4);
press(R.id.btn_power); press(R.id.btn_power);
checkResult("2"); checkResult("2");
checkFormula("10%4");
press(R.id.btn_8); press(R.id.btn_8);
press(R.id.btn_modulo); press(R.id.btn_modulo);
checkResult("256"); checkResult("256");
checkFormula("2^8");
press(R.id.btn_root); press(R.id.btn_root);
checkResult("16"); checkResult("16");
checkFormula("√256");
press(R.id.btn_clear); press(R.id.btn_clear);
checkResult("1"); checkResult("1");
@ -196,4 +213,8 @@ public class MainActivityTest {
private void checkResult(String desired) { private void checkResult(String desired) {
onView(withId(R.id.result)).check(matches(withText(desired))); onView(withId(R.id.result)).check(matches(withText(desired)));
} }
private void checkFormula(String desired) {
onView(withId(R.id.formula)).check(matches(withText(desired)));
}
} }

View File

@ -2,6 +2,7 @@ package calculator.simplemobiletools.com.simple_calculator;
public class CalculatorImpl { public class CalculatorImpl {
private String displayedValue; private String displayedValue;
private String displayedFormula;
private double baseValue; private double baseValue;
private double secondValue; private double secondValue;
private boolean resetValue; private boolean resetValue;
@ -38,6 +39,7 @@ public class CalculatorImpl {
lastKey = ""; lastKey = "";
lastOperation = ""; lastOperation = "";
displayedValue = ""; displayedValue = "";
displayedFormula = "";
isFirstOperation = true; isFirstOperation = true;
} }
@ -48,6 +50,7 @@ public class CalculatorImpl {
private void setFormula(String value) { private void setFormula(String value) {
callback.setFormula(value); callback.setFormula(value);
displayedFormula = value;
} }
private void updateFormula() { private void updateFormula() {
@ -90,6 +93,10 @@ public class CalculatorImpl {
return Double.parseDouble(getDisplayedNumber()); return Double.parseDouble(getDisplayedNumber());
} }
public String getDisplayedFormula() {
return displayedFormula;
}
public void handleResult() { public void handleResult() {
secondValue = getDisplayedNumberAsDouble(); secondValue = getDisplayedNumberAsDouble();
calculateResult(); calculateResult();
@ -97,9 +104,8 @@ public class CalculatorImpl {
} }
public void calculateResult() { public void calculateResult() {
if (!isFirstOperation) { if (!isFirstOperation)
updateFormula(); updateFormula();
}
switch (lastOperation) { switch (lastOperation) {
case Constants.PLUS: case Constants.PLUS:

View File

@ -38,42 +38,49 @@ public class MainActivityTest {
public void additionTest() { public void additionTest() {
String res = calcResult(-1.2, Constants.PLUS, 3.4); String res = calcResult(-1.2, Constants.PLUS, 3.4);
assertEquals("2.2", res); assertEquals("2.2", res);
checkFormula("-1.2+3.4");
} }
@Test @Test
public void subtractionTest() { public void subtractionTest() {
String res = calcResult(7.8, Constants.MINUS, 2.5); String res = calcResult(7.8, Constants.MINUS, 2.5);
assertEquals("5.3", res); assertEquals("5.3", res);
checkFormula("7.8-2.5");
} }
@Test @Test
public void multiplyTest() { public void multiplyTest() {
String res = calcResult(-3.2, Constants.MULTIPLY, 6.6); String res = calcResult(-3.2, Constants.MULTIPLY, 6.6);
assertEquals("-21.12", res); assertEquals("-21.12", res);
checkFormula("-3.2*6.6");
} }
@Test @Test
public void divisionTest() { public void divisionTest() {
String res = calcResult(18.25, Constants.DIVIDE, 5); String res = calcResult(18.25, Constants.DIVIDE, 5);
assertEquals("3.65", res); assertEquals("3.65", res);
checkFormula("18.25/5");
} }
@Test @Test
public void divisionByZero_returnsZero() { public void divisionByZero_returnsZero() {
String res = calcResult(6, Constants.DIVIDE, 0); String res = calcResult(6, Constants.DIVIDE, 0);
assertEquals("0", res); assertEquals("0", res);
checkFormula("6/0");
} }
@Test @Test
public void moduloTest() { public void moduloTest() {
String res = calcResult(6.5, Constants.MODULO, 3); String res = calcResult(6.5, Constants.MODULO, 3);
assertEquals("0.5", res); assertEquals("0.5", res);
checkFormula("6.5%3");
} }
@Test @Test
public void powerTest() { public void powerTest() {
String res = calcResult(3, Constants.POWER, 6); String res = calcResult(3, Constants.POWER, 6);
assertEquals("729", res); assertEquals("729", res);
checkFormula("3^6");
} }
@Test @Test
@ -81,6 +88,7 @@ public class MainActivityTest {
setDouble(16); setDouble(16);
handleOperation(Constants.ROOT); handleOperation(Constants.ROOT);
assertEquals("4", getDisplayedNumber()); assertEquals("4", getDisplayedNumber());
checkFormula("√16");
} }
@Test @Test
@ -107,6 +115,7 @@ public class MainActivityTest {
setDouble(3); setDouble(3);
activity.getCalc().handleResult(); activity.getCalc().handleResult();
assertEquals("3", getDisplayedNumber()); assertEquals("3", getDisplayedNumber());
checkFormula("");
} }
@Test @Test
@ -116,29 +125,36 @@ public class MainActivityTest {
setDouble(21); setDouble(21);
handleOperation(Constants.MINUS); handleOperation(Constants.MINUS);
assertEquals("8.8", getDisplayedNumber()); assertEquals("8.8", getDisplayedNumber());
checkFormula("-12.2+21");
setDouble(1.6); setDouble(1.6);
activity.getCalc().handleEquals(); activity.getCalc().handleEquals();
assertEquals("7.2", getDisplayedNumber()); assertEquals("7.2", getDisplayedNumber());
checkFormula("8.8-1.6");
activity.getCalc().handleEquals(); activity.getCalc().handleEquals();
assertEquals("5.6", getDisplayedNumber()); assertEquals("5.6", getDisplayedNumber());
checkFormula("7.2-1.6");
handleOperation(Constants.MULTIPLY); handleOperation(Constants.MULTIPLY);
setDouble(5); setDouble(5);
handleOperation(Constants.DIVIDE); handleOperation(Constants.DIVIDE);
assertEquals("28", getDisplayedNumber()); assertEquals("28", getDisplayedNumber());
checkFormula("5.6*5");
setDouble(4); setDouble(4);
handleOperation(Constants.MODULO); handleOperation(Constants.MODULO);
assertEquals("7", getDisplayedNumber()); assertEquals("7", getDisplayedNumber());
checkFormula("28/4");
setDouble(5); setDouble(5);
handleOperation(Constants.POWER); handleOperation(Constants.POWER);
assertEquals("2", getDisplayedNumber()); assertEquals("2", getDisplayedNumber());
checkFormula("7%5");
setDouble(8); setDouble(8);
handleOperation(Constants.ROOT); handleOperation(Constants.ROOT);
assertEquals("16", getDisplayedNumber()); assertEquals("16", getDisplayedNumber());
checkFormula("√256");
activity.getCalc().handleClear(); activity.getCalc().handleClear();
assertEquals("1", getDisplayedNumber()); assertEquals("1", getDisplayedNumber());
@ -152,6 +168,10 @@ public class MainActivityTest {
activity.getCalc().handleOperation(operation); activity.getCalc().handleOperation(operation);
} }
private void checkFormula(String desired) {
assertEquals(desired, getDisplayedFormula());
}
private String calcResult(double baseValue, String operation, double secondValue) { private String calcResult(double baseValue, String operation, double secondValue) {
setDouble(baseValue); setDouble(baseValue);
handleOperation(operation); handleOperation(operation);
@ -163,4 +183,8 @@ public class MainActivityTest {
private String getDisplayedNumber() { private String getDisplayedNumber() {
return activity.getCalc().getDisplayedNumber(); return activity.getCalc().getDisplayedNumber();
} }
private String getDisplayedFormula() {
return activity.getCalc().getDisplayedFormula();
}
} }