diff --git a/src/main/java/tdd/setup/Calculator.java b/src/main/java/tdd/setup/Calculator.java index 171f6d6..c4dd77a 100644 --- a/src/main/java/tdd/setup/Calculator.java +++ b/src/main/java/tdd/setup/Calculator.java @@ -1,29 +1,27 @@ package tdd.setup; +import java.util.Scanner; // behaviour inspired by https://www.online-calculator.com/ public class Calculator { - private String screen = "0"; + private String screen = ""; private double latestValue; private String latestOperation = ""; - public String readScreen() { + public String readScreen() + { return screen; } - public void pressDigitKey(int digit) { + public void pressDigitKey(int digit) + { if(digit > 9 || digit < 0) throw new IllegalArgumentException(); - - if(latestOperation.isEmpty()) { screen = screen + digit; - } else { - latestValue = Double.parseDouble(screen); - screen = Integer.toString(digit); - } } - public void pressClearKey() { + public void pressClearKey() + { screen = "0"; latestOperation = ""; latestValue = 0.0; @@ -31,6 +29,8 @@ public void pressClearKey() { public void pressOperationKey(String operation) { latestOperation = operation; + latestValue = Double.parseDouble(screen); + screen = ""; } public void pressDotKey() { @@ -41,6 +41,8 @@ public void pressNegative() { screen = screen.startsWith("-") ? screen.substring(1) : "-" + screen; } + + public void pressEquals() { var result = switch(latestOperation) { case "+" -> latestValue + Double.parseDouble(screen); @@ -53,3 +55,5 @@ public void pressEquals() { if(screen.endsWith(".0")) screen = screen.substring(0,screen.length()-2); } } + +//hallo \ No newline at end of file diff --git a/src/test/java/tdd/setup/CalculatorTest.java b/src/test/java/tdd/setup/CalculatorTest.java index 3bf16e9..b8921d0 100644 --- a/src/test/java/tdd/setup/CalculatorTest.java +++ b/src/test/java/tdd/setup/CalculatorTest.java @@ -16,4 +16,51 @@ void calculatorCanDoTwoPlusTwo() { calc.pressEquals(); assertEquals("4", calc.readScreen()); } + + //successful + @Test + @DisplayName("should display result after multiplying two positive numbers") + void calculatorCanDoTwoTimesFour() + { + Calculator calc = new Calculator(); + calc.pressDigitKey(2); + calc.pressOperationKey("x"); + calc.pressDigitKey(4); + calc.pressEquals(); + assertEquals("8", calc.readScreen()); + System.out.println(calc.readScreen()); + } + + + + //fail + @Test + @DisplayName("should display result after addition with dot ") + void calculatorCanDoAdditionWithDot() + { + Calculator calc = new Calculator(); + + calc.pressDigitKey(5); + calc.pressDotKey(); + calc.pressDigitKey(2); + calc.pressOperationKey("+"); + calc.pressDigitKey(3); + calc.pressDotKey(); + calc.pressDigitKey(5); + calc.pressEquals(); + assertEquals("8.7", calc.readScreen()); + System.out.println(calc.readScreen()); + } + + @Test + @DisplayName("should display number negative") + void calculatorCanDoNegative() + { + Calculator calc = new Calculator(); + calc.pressDigitKey(3); + calc.pressNegative(); + assertEquals("-3", calc.readScreen()); + System.out.println(calc.readScreen()); + } + }