diff --git a/src/main/java/tdd/setup/Calculator.java b/src/main/java/tdd/setup/Calculator.java index 171f6d6..d9387ef 100644 --- a/src/main/java/tdd/setup/Calculator.java +++ b/src/main/java/tdd/setup/Calculator.java @@ -12,10 +12,12 @@ public class Calculator { public String readScreen() { return screen; } + public void pressDigitKey(int digit) { if(digit > 9 || digit < 0) throw new IllegalArgumentException(); - if(latestOperation.isEmpty()) { + //Bug-Fix No 2 + if(latestOperation.isEmpty() || !(latestValue == 0.0)) { screen = screen + digit; } else { latestValue = Double.parseDouble(screen); @@ -37,12 +39,18 @@ public void pressDotKey() { if(!screen.endsWith(".")) screen = screen + "."; } + //Bug-Fix No 3 public void pressNegative() { - screen = screen.startsWith("-") ? screen.substring(1) : "-" + screen; + if (screen.startsWith("-")) { + screen = screen.substring(1); + } else{ + screen = "-" + screen.substring(1); + } } public void pressEquals() { var result = switch(latestOperation) { + case "" -> Double.parseDouble(screen); //Bug-Fix No 1 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..c216ac2 100644 --- a/src/test/java/tdd/setup/CalculatorTest.java +++ b/src/test/java/tdd/setup/CalculatorTest.java @@ -16,4 +16,49 @@ void calculatorCanDoTwoPlusTwo() { calc.pressEquals(); assertEquals("4", calc.readScreen()); } + + @Test + @DisplayName("should display result after divide two numbers") + void calculatorCanDoFiveDividedFive() + { + Calculator calc1 = new Calculator(); + calc1.pressDigitKey(5); + calc1.pressOperationKey("/"); + calc1.pressDigitKey(5); + calc1.pressEquals(); + assertEquals("1", calc1.readScreen()); + } + + @Test + @DisplayName("should display show the same digit after press 'equals'") + void calculatorCanDoSixEquals() { + Calculator calc2 = new Calculator(); + calc2.pressDigitKey(6); + calc2.pressEquals(); + assertEquals("6", calc2.readScreen()); + } + + @Test + @DisplayName("should display show the result of multiplying of two digit numbers") + void calculatorCanDoMultiplyTwoTWODIGITNumbers() { + Calculator calc3 = new Calculator(); + calc3.pressDigitKey(1); + calc3.pressDigitKey(0); + calc3.pressOperationKey("x"); + calc3.pressDigitKey(2); + calc3.pressDigitKey(0); + calc3.pressEquals(); + assertEquals("200", calc3.readScreen()); + } + //System.out.println(calc3.readScreen()); -> Debugger für die Kommandozeile + + @Test + @DisplayName("should display a negative number") + void calculatorCanNegativeANumber() { + Calculator calc4 = new Calculator(); + calc4.pressDigitKey(8); + calc4.pressNegative(); + System.out.println("Was bisher rauskommt: " + calc4.readScreen()); + assertEquals("-8", calc4.readScreen()); + } }