diff --git a/src/main/java/tdd/setup/Calculator.java b/src/main/java/tdd/setup/Calculator.java index 171f6d6..7c374ad 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; @@ -19,7 +19,7 @@ public void pressDigitKey(int digit) { screen = screen + digit; } else { latestValue = Double.parseDouble(screen); - screen = Integer.toString(digit); + screen = Integer.toString(digit); //Hier muss doch Double.toString(digit) stehen? } } @@ -31,6 +31,7 @@ public void pressClearKey() { public void pressOperationKey(String operation) { latestOperation = operation; + latestValue = 1; } public void pressDotKey() { @@ -41,15 +42,18 @@ public void pressNegative() { screen = screen.startsWith("-") ? screen.substring(1) : "-" + screen; } + public void pressEquals() { var result = switch(latestOperation) { case "+" -> latestValue + Double.parseDouble(screen); case "-" -> latestValue - Double.parseDouble(screen); case "x" -> latestValue * Double.parseDouble(screen); case "/" -> latestValue / Double.parseDouble(screen); + case "%" -> latestValue / 100; default -> throw new IllegalArgumentException(); }; screen = Double.toString(result); if(screen.endsWith(".0")) screen = screen.substring(0,screen.length()-2); } + } diff --git a/src/test/java/tdd/setup/CalculatorTest.java b/src/test/java/tdd/setup/CalculatorTest.java index 3bf16e9..72f6951 100644 --- a/src/test/java/tdd/setup/CalculatorTest.java +++ b/src/test/java/tdd/setup/CalculatorTest.java @@ -16,4 +16,42 @@ void calculatorCanDoTwoPlusTwo() { calc.pressEquals(); assertEquals("4", calc.readScreen()); } + + + @Test + @DisplayName("should display result after dividing two positive numbers") + void calculatorCanDoEightDividedByFour() { + Calculator c1 = new Calculator(); + c1.pressDigitKey(8); + c1.pressOperationKey("/"); + c1.pressDigitKey(4); + c1.pressEquals(); + assertEquals("2", c1.readScreen()); + } + + @Test + @DisplayName("should display a correct number with a dot") //Code von 2.2.8 auf 1.1+1.1 und davon auf 1.1 + void calculatorCanAdditionWithTwoDots() { + Calculator c2 = new Calculator(); + c2.pressDigitKey(1); + c2.pressDotKey(); + c2.pressDigitKey(1); + /* c2.pressOperationKey("+"); + c2.pressDigitKey(1); + c2.pressDotKey(); + c2.pressDigitKey(1); */ + assertEquals("1.1", c2.readScreen()); + + } + + @Test + @DisplayName("should display result after pressing percentage") + void calculatorCanPercentage() { + Calculator c3 = new Calculator(); + c3.pressDigitKey(1); + c3.pressOperationKey("%"); + c3.pressEquals(); + assertEquals("0.01", c3.readScreen()); + } + }