From 6668264cd11942aaf7d2d4d19f670e555a0a6bcf Mon Sep 17 00:00:00 2001 From: rosekroschel Date: Fri, 30 Oct 2020 17:03:55 +0100 Subject: [PATCH 1/5] 1. Test --- src/test/java/tdd/setup/CalculatorTest.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/test/java/tdd/setup/CalculatorTest.java b/src/test/java/tdd/setup/CalculatorTest.java index 3bf16e9..de3a5e7 100644 --- a/src/test/java/tdd/setup/CalculatorTest.java +++ b/src/test/java/tdd/setup/CalculatorTest.java @@ -16,4 +16,15 @@ void calculatorCanDoTwoPlusTwo() { calc.pressEquals(); assertEquals("4", calc.readScreen()); } + @Test + @DisplayName("should display result after subtracting two positiv digits" ) + void calculatorCanDoTwom) { + Calculator calc = new Calculator(); + calc.pressDigitKey(2); + calc.pressOperationKey("-"); + calc.pressDigitKey(2); + calc.pressEquals(); + assertEquals("0", calc.readScreen()); + } + } From 889640744eb4a2d36ed60deaba80a1b56bb0a3af Mon Sep 17 00:00:00 2001 From: rosekroschel Date: Fri, 30 Oct 2020 17:06:16 +0100 Subject: [PATCH 2/5] 2. Test --- src/test/java/tdd/setup/CalculatorTest.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/test/java/tdd/setup/CalculatorTest.java b/src/test/java/tdd/setup/CalculatorTest.java index de3a5e7..69fffe7 100644 --- a/src/test/java/tdd/setup/CalculatorTest.java +++ b/src/test/java/tdd/setup/CalculatorTest.java @@ -26,5 +26,14 @@ void calculatorCanDoTwoPlusTwo() { calc.pressEquals(); assertEquals("0", calc.readScreen()); } + @Test + @DisplayName("should display a double digit") + void calculatorCanDisplayDigit() { + Calculator calc = new Calculator(); + calc.pressDigitKey(3); + assertEquals("3", calc.readScreen()); + calc.pressClearKey(); + assertEquals("0", calc.readScreen()); + } } From c82d76e5b59852f26726cd7ab090feb3f01053db Mon Sep 17 00:00:00 2001 From: rosekroschel Date: Fri, 30 Oct 2020 17:15:10 +0100 Subject: [PATCH 3/5] 2. Test bug fix --- src/main/java/tdd/setup/Calculator.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/tdd/setup/Calculator.java b/src/main/java/tdd/setup/Calculator.java index 171f6d6..960b42b 100644 --- a/src/main/java/tdd/setup/Calculator.java +++ b/src/main/java/tdd/setup/Calculator.java @@ -14,6 +14,12 @@ public String readScreen() { } public void pressDigitKey(int digit) { if(digit > 9 || digit < 0) throw new IllegalArgumentException(); + isCleared = false; + if (isCleared){ + screen = "0"; + } else{ + screen = ""; + } if(latestOperation.isEmpty()) { screen = screen + digit; @@ -27,6 +33,7 @@ public void pressClearKey() { screen = "0"; latestOperation = ""; latestValue = 0.0; + isCleared = true; } public void pressOperationKey(String operation) { From 90249aef6db192a21205e6338d332813c2ccdb36 Mon Sep 17 00:00:00 2001 From: rosekroschel Date: Fri, 30 Oct 2020 17:16:09 +0100 Subject: [PATCH 4/5] 3. Test --- src/test/java/tdd/setup/CalculatorTest.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/test/java/tdd/setup/CalculatorTest.java b/src/test/java/tdd/setup/CalculatorTest.java index 69fffe7..e6e4878 100644 --- a/src/test/java/tdd/setup/CalculatorTest.java +++ b/src/test/java/tdd/setup/CalculatorTest.java @@ -16,6 +16,7 @@ void calculatorCanDoTwoPlusTwo() { calc.pressEquals(); assertEquals("4", calc.readScreen()); } + @Test @DisplayName("should display result after subtracting two positiv digits" ) void calculatorCanDoTwom) { @@ -35,5 +36,19 @@ void calculatorCanDisplayDigit() { calc.pressClearKey(); assertEquals("0", calc.readScreen()); } - + @Test + @DisplayName("should display a double digit") + void calculatorCanDisplayDigit() { + Calculator calc = new Calculator(); + calc.pressDigitKey(3); + calc.pressDotKey(); + calc.pressDigitKey(3); + assertEquals("3.3", calc.readScreen()); + calc.pressOperationKey("x"); + calc.pressDigitKey(3); + calc.pressDotKey(); + calc.pressDigitKey(3); + calc.pressEquals(); + assertEquals("10.89", calc.readScreen()); + } } From 4886920a74922263ffe4871800ba0dba55c7ff45 Mon Sep 17 00:00:00 2001 From: rosekroschel Date: Sat, 31 Oct 2020 14:25:17 +0100 Subject: [PATCH 5/5] 3. Test bug fix --- src/main/java/tdd/setup/Calculator.java | 30 ++++++++++++--------- src/test/java/tdd/setup/CalculatorTest.java | 7 +++-- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/src/main/java/tdd/setup/Calculator.java b/src/main/java/tdd/setup/Calculator.java index 960b42b..b55249a 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; @@ -12,32 +12,31 @@ public class Calculator { public String readScreen() { return screen; } + public void pressDigitKey(int digit) { if(digit > 9 || digit < 0) throw new IllegalArgumentException(); - isCleared = false; - if (isCleared){ - screen = "0"; - } else{ - screen = ""; - } - if(latestOperation.isEmpty()) { - screen = screen + digit; + screen += digit; + } else if(screen.contains(".")) { + screen += Integer.toString(digit); + System.out.println(latestValue); } else { - latestValue = Double.parseDouble(screen); screen = Integer.toString(digit); + System.out.println(latestValue); } } public void pressClearKey() { screen = "0"; - latestOperation = ""; + latestOperation = "0"; latestValue = 0.0; - isCleared = true; + } public void pressOperationKey(String operation) { latestOperation = operation; + latestValue = Double.parseDouble(screen); + screen = ""; } public void pressDotKey() { @@ -49,6 +48,8 @@ public void pressNegative() { } public void pressEquals() { + System.out.println(screen); + System.out.println(latestValue +", screen: " +screen + "operation: " + (latestValue * Double.parseDouble(screen))); var result = switch(latestOperation) { case "+" -> latestValue + Double.parseDouble(screen); case "-" -> latestValue - Double.parseDouble(screen); @@ -56,7 +57,10 @@ public void pressEquals() { case "/" -> latestValue / Double.parseDouble(screen); default -> throw new IllegalArgumentException(); }; - screen = Double.toString(result); + + screen = Double.toString(Math.round( 100.0 * result) / 100.0); if(screen.endsWith(".0")) screen = screen.substring(0,screen.length()-2); + latestOperation = ""; + } } diff --git a/src/test/java/tdd/setup/CalculatorTest.java b/src/test/java/tdd/setup/CalculatorTest.java index e6e4878..7028d75 100644 --- a/src/test/java/tdd/setup/CalculatorTest.java +++ b/src/test/java/tdd/setup/CalculatorTest.java @@ -6,6 +6,7 @@ @DisplayName("Retro calculator") class CalculatorTest { + @Test @DisplayName("should display result after adding two positive numbers") void calculatorCanDoTwoPlusTwo() { @@ -19,7 +20,7 @@ void calculatorCanDoTwoPlusTwo() { @Test @DisplayName("should display result after subtracting two positiv digits" ) - void calculatorCanDoTwom) { + void calculatorCanDoTwoMinusTwo() { Calculator calc = new Calculator(); calc.pressDigitKey(2); calc.pressOperationKey("-"); @@ -27,15 +28,17 @@ void calculatorCanDoTwoPlusTwo() { calc.pressEquals(); assertEquals("0", calc.readScreen()); } + @Test @DisplayName("should display a double digit") - void calculatorCanDisplayDigit() { + void calculatorCanDisplaySomething() { Calculator calc = new Calculator(); calc.pressDigitKey(3); assertEquals("3", calc.readScreen()); calc.pressClearKey(); assertEquals("0", calc.readScreen()); } + @Test @DisplayName("should display a double digit") void calculatorCanDisplayDigit() {