diff --git a/src/main/java/tdd/setup/Calculator.java b/src/main/java/tdd/setup/Calculator.java index 171f6d6..286e509 100644 --- a/src/main/java/tdd/setup/Calculator.java +++ b/src/main/java/tdd/setup/Calculator.java @@ -38,11 +38,14 @@ public void pressDotKey() { } public void pressNegative() { - screen = screen.startsWith("-") ? screen.substring(1) : "-" + screen; + screen = screen.startsWith("-") ? screen.substring(1) : "-"; + + } public void pressEquals() { var result = switch(latestOperation) { + case "%" -> latestValue / 100; case "+" -> latestValue + Double.parseDouble(screen); case "-" -> latestValue - Double.parseDouble(screen); case "x" -> latestValue * Double.parseDouble(screen); diff --git a/src/test/java/tdd/setup/CalculatorTest.java b/src/test/java/tdd/setup/CalculatorTest.java index 3bf16e9..eda6eb6 100644 --- a/src/test/java/tdd/setup/CalculatorTest.java +++ b/src/test/java/tdd/setup/CalculatorTest.java @@ -6,14 +6,46 @@ @DisplayName("Retro calculator") class CalculatorTest { + + private Calculator calc = new Calculator(); @Test @DisplayName("should display result after adding two positive numbers") void calculatorCanDoTwoPlusTwo() { - Calculator calc = new Calculator(); calc.pressDigitKey(2); calc.pressOperationKey("+"); calc.pressDigitKey(2); calc.pressEquals(); assertEquals("4", calc.readScreen()); } + + @Test + @DisplayName("should revert screen to 0") + void calculatorCanClearScreen(){ + calc.pressDigitKey(2); + calc.pressOperationKey("+"); + calc.pressDigitKey(2); + calc.pressEquals(); + calc.pressClearKey(); + assertEquals("0", calc.readScreen()); + } + + @Test + @DisplayName("should move decimal point two spaces forward") + void calculatorCanDecimalizePercentages(){ + calc.pressDigitKey(8); + calc.pressDigitKey(9); + calc.pressDigitKey(8); + calc.pressOperationKey("%"); + assertEquals("8.98", calc.readScreen()); + } + + @Test + @DisplayName ("if the negative key is pressed before the input of a number, the number should turn negative") + void calculatorCanDisplayNegativeNumbers () { + calc.pressClearKey(); + calc.pressNegative(); + calc.pressDigitKey(8); + calc.pressDigitKey(8); + assertEquals("-88", calc.readScreen()); + } }