diff --git a/src/main/java/tdd/setup/Calculator.java b/src/main/java/tdd/setup/Calculator.java index 171f6d6..c9bf54d 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; @@ -47,6 +47,7 @@ public void pressEquals() { case "-" -> latestValue - Double.parseDouble(screen); case "x" -> latestValue * Double.parseDouble(screen); case "/" -> latestValue / Double.parseDouble(screen); + case "sqrt" -> Math.sqrt(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..f302c6d 100644 --- a/src/test/java/tdd/setup/CalculatorTest.java +++ b/src/test/java/tdd/setup/CalculatorTest.java @@ -16,4 +16,39 @@ void calculatorCanDoTwoPlusTwo() { calc.pressEquals(); assertEquals("4", calc.readScreen()); } + // First Green Test + @Test + @DisplayName("should Clear the screen and display 0") + void calculatorCanClearScreen() { + Calculator calc1 = new Calculator(); + calc1.pressDigitKey(2); + calc1.pressOperationKey("+"); + calc1.pressDigitKey(2); + calc1.pressEquals(); + calc1.pressClearKey(); + assertEquals("0",calc1.readScreen()); + } + // First Red Test + @Test + @DisplayName("should display decimal number") + void CalculatorCanDisplayDecimal() { + Calculator calc2 = new Calculator(); + calc2.pressDigitKey(1); + calc2.pressDotKey(); + calc2.pressDigitKey(9); + calc2.pressDigitKey(9); + + assertEquals("1.99", calc2.readScreen()); + } + // second Red Test + @Test + @DisplayName("Should calculate the square root") + void CalculatorCanDoSquareroot() { + Calculator calc3 = new Calculator(); + calc3.pressDigitKey(5); + calc3.pressOperationKey("sqrt"); + calc3.pressEquals(); + + assertEquals("2.23606797749979", calc3.readScreen()); + } }