diff --git a/src/main/java/tdd/setup/Calculator.java b/src/main/java/tdd/setup/Calculator.java index 171f6d6..0be3c90 100644 --- a/src/main/java/tdd/setup/Calculator.java +++ b/src/main/java/tdd/setup/Calculator.java @@ -3,7 +3,7 @@ // behaviour inspired by https://www.online-calculator.com/ public class Calculator { - private String screen = "0"; + private String screen = ""; private double latestValue; @@ -37,8 +37,11 @@ public void pressDotKey() { if(!screen.endsWith(".")) screen = screen + "."; } - public void pressNegative() { - screen = screen.startsWith("-") ? screen.substring(1) : "-" + screen; + public void pressNegative(){ + if(!screen.startsWith("-")) screen = "-" + screen; + else { + if (!screen.endsWith("-")) screen = screen + "-"; + } } public void pressEquals() { @@ -47,6 +50,7 @@ public void pressEquals() { case "-" -> latestValue - Double.parseDouble(screen); case "x" -> latestValue * Double.parseDouble(screen); case "/" -> latestValue / Double.parseDouble(screen); + case "1/x" -> 1 / Double.parseDouble(screen); default -> throw new IllegalArgumentException(); }; screen = Double.toString(result); diff --git a/src/test/java/tdd/setup/CalculatorTest.java b/src/test/java/tdd/setup/CalculatorTest.java index 3bf16e9..e7062fd 100644 --- a/src/test/java/tdd/setup/CalculatorTest.java +++ b/src/test/java/tdd/setup/CalculatorTest.java @@ -16,4 +16,33 @@ void calculatorCanDoTwoPlusTwo() { calc.pressEquals(); assertEquals("4", calc.readScreen()); } + @Test + @DisplayName("should display clear result after divide two positive numbers") + void calculatorCanClearDisplay() { + Calculator calc = new Calculator(); + calc.pressDigitKey(3); + calc.pressOperationKey("/"); + calc.pressDigitKey(2); + calc.pressEquals(); + calc.pressClearKey(); + assertEquals("0", calc.readScreen()); + } + @Test + @DisplayName("New Button for Fractional") + void calculatorFractional() { + Calculator calc = new Calculator(); + calc.pressDigitKey(3); + calc.pressOperationKey("1/x"); + calc.pressEquals(); + assertEquals("0.3333333333333333", calc.readScreen()); + } + + @Test + @DisplayName("Processing negative numbers") + void calculatorNegativeNumbers() { + Calculator calc = new Calculator(); + calc.pressDigitKey(9); + calc.pressNegative(); + assertEquals("-9", calc.readScreen()); + } }