From 35f3d57f7a2ba77f7b3bd06eeb0afc541e73d3c0 Mon Sep 17 00:00:00 2001 From: vasilios-k Date: Thu, 29 Oct 2020 16:31:16 +0100 Subject: [PATCH 1/5] 1. green test --- src/test/java/tdd/setup/CalculatorTest.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/test/java/tdd/setup/CalculatorTest.java b/src/test/java/tdd/setup/CalculatorTest.java index 3bf16e9..4bea8a9 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 substracting two positive numbers") + void calculatorCanDoFiveMinusTwo() { + Calculator calc = new Calculator(); + calc.pressDigitKey(5); + calc.pressOperationKey("-"); + calc.pressDigitKey(2); + calc.pressEquals(); + assertEquals("3", calc.readScreen()); + } +} \ No newline at end of file From 3bfb6a00d8b26de18343bb5f9c8d1ad31da610fd Mon Sep 17 00:00:00 2001 From: vasilios-k Date: Thu, 29 Oct 2020 16:32:46 +0100 Subject: [PATCH 2/5] 1. red 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 4bea8a9..cbefdc5 100644 --- a/src/test/java/tdd/setup/CalculatorTest.java +++ b/src/test/java/tdd/setup/CalculatorTest.java @@ -27,4 +27,15 @@ void calculatorCanDoFiveMinusTwo() { calc.pressEquals(); assertEquals("3", calc.readScreen()); } + + @Test + @DisplayName("should display the point number correctly") + void calculatorCanDoNumbersWithDots() { + Calculator calc = new Calculator(); + calc.pressDigitKey(5); + calc.pressDotKey(); + calc.pressDigitKey(2); + calc.pressDotKey(); + assertEquals("5.2", calc.readScreen()); + } } \ No newline at end of file From 440a9345f642c73c12633f39898daf0a256a67d4 Mon Sep 17 00:00:00 2001 From: vasilios-k Date: Thu, 29 Oct 2020 16:36:49 +0100 Subject: [PATCH 3/5] bugfix for 1. red test --- src/main/java/tdd/setup/Calculator.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/main/java/tdd/setup/Calculator.java b/src/main/java/tdd/setup/Calculator.java index 171f6d6..3f60410 100644 --- a/src/main/java/tdd/setup/Calculator.java +++ b/src/main/java/tdd/setup/Calculator.java @@ -13,13 +13,17 @@ public String readScreen() { return screen; } public void pressDigitKey(int digit) { - if(digit > 9 || digit < 0) throw new IllegalArgumentException(); - if(latestOperation.isEmpty()) { - screen = screen + digit; + if (digit > 9 || digit < 0) throw new IllegalArgumentException(); + if (screen.equals("0")) { + screen = String.valueOf(digit); } else { - latestValue = Double.parseDouble(screen); - screen = Integer.toString(digit); + if (latestOperation.isEmpty()) { + screen = screen + digit; + } else { + latestValue = Double.parseDouble(screen); + screen = Integer.toString(digit); + } } } @@ -34,7 +38,9 @@ public void pressOperationKey(String operation) { } public void pressDotKey() { - if(!screen.endsWith(".")) screen = screen + "."; + + if(!screen.contains(".")) screen = screen +"."; + } public void pressNegative() { From 5a49012d506438c7fcbba346730c78e67a480334 Mon Sep 17 00:00:00 2001 From: vasilios-k Date: Thu, 29 Oct 2020 16:37:54 +0100 Subject: [PATCH 4/5] s2. red test --- src/test/java/tdd/setup/CalculatorTest.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/test/java/tdd/setup/CalculatorTest.java b/src/test/java/tdd/setup/CalculatorTest.java index cbefdc5..5f36b2c 100644 --- a/src/test/java/tdd/setup/CalculatorTest.java +++ b/src/test/java/tdd/setup/CalculatorTest.java @@ -38,4 +38,21 @@ void calculatorCanDoNumbersWithDots() { calc.pressDotKey(); assertEquals("5.2", calc.readScreen()); } + + @Test + @DisplayName("should calculate with multiple numbers") + void calculatorCanDoMultipleCalculations(){ + Calculator calc = new Calculator(); + calc.pressDigitKey(2); + calc.pressDotKey(); + calc.pressDigitKey(4); + calc.pressOperationKey("+"); + calc.pressDigitKey(5); + calc.pressOperationKey("-"); + calc.pressDigitKey(3); + calc.pressEquals(); + assertEquals("4.4", calc.readScreen()); + + + } } \ No newline at end of file From fb2ea2f129c6cdeac287ec7d8bc9f850a5c7d515 Mon Sep 17 00:00:00 2001 From: vasilios-k Date: Thu, 29 Oct 2020 16:39:15 +0100 Subject: [PATCH 5/5] bugfix for 2. red test --- src/main/java/tdd/setup/Calculator.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/tdd/setup/Calculator.java b/src/main/java/tdd/setup/Calculator.java index 3f60410..903fb87 100644 --- a/src/main/java/tdd/setup/Calculator.java +++ b/src/main/java/tdd/setup/Calculator.java @@ -33,8 +33,23 @@ public void pressClearKey() { latestValue = 0.0; } - public void pressOperationKey(String operation) { + public void pressOperationKey(String operation) { + if(!latestOperation.isEmpty()){ + latestValue = switch (latestOperation) { + case "+" -> latestValue + Double.parseDouble(screen); + case "-" -> latestValue - Double.parseDouble(screen); + case "x" -> latestValue * Double.parseDouble(screen); + case "/" -> latestValue / Double.parseDouble(screen); + default -> throw new IllegalArgumentException(); + }; + screen = Double.toString(latestValue); + if (screen.endsWith(".0")) screen = screen.substring(0, screen.length() - 2); + }else{ + latestValue = Double.parseDouble(screen); + } + latestOperation = operation; + } public void pressDotKey() {