diff --git a/src/main/java/tdd/setup/Calculator.java b/src/main/java/tdd/setup/Calculator.java index 171f6d6..1c73b55 100644 --- a/src/main/java/tdd/setup/Calculator.java +++ b/src/main/java/tdd/setup/Calculator.java @@ -14,8 +14,8 @@ public String readScreen() { } public void pressDigitKey(int digit) { if(digit > 9 || digit < 0) throw new IllegalArgumentException(); - - if(latestOperation.isEmpty()) { + //bug fix for two tests (multi-digits and double number) + if(latestOperation.isEmpty() || latestValue != 0.0) { screen = screen + digit; } else { latestValue = Double.parseDouble(screen); @@ -47,6 +47,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); //function "1/x" 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..f8cae73 100644 --- a/src/test/java/tdd/setup/CalculatorTest.java +++ b/src/test/java/tdd/setup/CalculatorTest.java @@ -16,4 +16,52 @@ void calculatorCanDoTwoPlusTwo() { calc.pressEquals(); assertEquals("4", calc.readScreen()); } + + @Test + @DisplayName("should display result after multiplying positive and negative numbers") + void calculatorCanDoEightTimesNegativeTwo() { + Calculator calc = new Calculator(); + calc.pressDigitKey(8); + calc.pressOperationKey("x"); + calc.pressNegative(); + calc.pressDigitKey(2); + calc.pressEquals(); + assertEquals("-16", calc.readScreen()); + } + + @Test + @DisplayName("should display result after multiplying integer and double numbers") + void calculatorCanDoEightTimesTwoDotTwo() { + Calculator calc = new Calculator(); + calc.pressDigitKey(8); + calc.pressOperationKey("x"); + calc.pressDigitKey(2); + calc.pressDotKey(); + calc.pressDigitKey(2); + calc.pressEquals(); + assertEquals("17.6", calc.readScreen()); + } + + @Test + @DisplayName("should display result after multiplying integer numbers and multi-digit") + void calculatorCanDoEightTimesTwentyTwo() { + Calculator calc = new Calculator(); + calc.pressDigitKey(8); + calc.pressOperationKey("x"); + calc.pressNegative(); + calc.pressDigitKey(2); + calc.pressDigitKey(2); + calc.pressEquals(); + assertEquals("-176", calc.readScreen()); + } + + @Test + @DisplayName("should display result after one divided with integer") + void calculatorCanDoOneFourth() { + Calculator calc = new Calculator(); + calc.pressDigitKey(4); + calc.pressOperationKey("1/x"); + calc.pressEquals(); + assertEquals("0.25", calc.readScreen()); + } }