diff --git a/src/main/java/tdd/setup/Calculator.java b/src/main/java/tdd/setup/Calculator.java index 171f6d6..249f64f 100644 --- a/src/main/java/tdd/setup/Calculator.java +++ b/src/main/java/tdd/setup/Calculator.java @@ -15,7 +15,7 @@ public String readScreen() { public void pressDigitKey(int digit) { if(digit > 9 || digit < 0) throw new IllegalArgumentException(); - if(latestOperation.isEmpty()) { + if(latestOperation.isEmpty() || screen.substring(screen.length()-1).equals(".")) { screen = screen + digit; } else { latestValue = Double.parseDouble(screen); @@ -30,6 +30,9 @@ public void pressClearKey() { } public void pressOperationKey(String operation) { + if (!this.latestOperation.isEmpty()) { + pressEquals() ; + } latestOperation = operation; } diff --git a/src/test/java/tdd/setup/CalculatorRoundingTest.java b/src/test/java/tdd/setup/CalculatorRoundingTest.java new file mode 100644 index 0000000..ca9ab09 --- /dev/null +++ b/src/test/java/tdd/setup/CalculatorRoundingTest.java @@ -0,0 +1,23 @@ +package tdd.setup; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +@DisplayName("Retro calculator") +class CalculatorRoundingTest { + @Test + @DisplayName("should display a rounded number") + void calculatorCanDoTwoPlusTwo() { + Calculator calc = new Calculator(); + calc.pressDigitKey(1); + calc.pressDotKey(); + calc.pressDigitKey(5); + calc.pressOperationKey("+"); + calc.pressDigitKey(1); + calc.pressDotKey(); + calc.pressDigitKey(5); + calc.pressEquals(); + assertEquals("3", calc.readScreen()); + } +} diff --git a/src/test/java/tdd/setup/CalculatorTest2.java b/src/test/java/tdd/setup/CalculatorTest2.java new file mode 100644 index 0000000..7097bc3 --- /dev/null +++ b/src/test/java/tdd/setup/CalculatorTest2.java @@ -0,0 +1,22 @@ +package tdd.setup; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +@DisplayName("Retro calculator2") +class CalculatorTest2 { + @Test + @DisplayName("should display negative result after adding two numbers") + void calculatorCanDosixPlusTen() { + Calculator calc = new Calculator(); + calc.pressDigitKey(6); + calc.pressOperationKey("-"); + calc.pressDigitKey(9); + calc.pressEquals(); + assertEquals("-3", calc.readScreen()); + + + + } +} diff --git a/src/test/java/tdd/setup/MultipleOperationTest.java b/src/test/java/tdd/setup/MultipleOperationTest.java new file mode 100644 index 0000000..2fdd238 --- /dev/null +++ b/src/test/java/tdd/setup/MultipleOperationTest.java @@ -0,0 +1,21 @@ +package tdd.setup; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +@DisplayName("Retro calculator") +class MultipleOperationTest { + @Test + @DisplayName("should display a result after multiple additions") + void calculatorCanDoMultipleAddition() { + Calculator calc = new Calculator(); + calc.pressDigitKey(1); + calc.pressOperationKey("+"); + calc.pressDigitKey(3); + calc.pressOperationKey("+"); + calc.pressDigitKey(5); + calc.pressEquals(); + assertEquals("9", calc.readScreen()); + } +}