From 46602f4e5e7f30f2bae3a02b0e77438afdd85f82 Mon Sep 17 00:00:00 2001 From: Phil Date: Sun, 3 Nov 2024 20:51:10 +0100 Subject: [PATCH 1/5] green testPositiveSubtraction --- .../htw/berlin/prog2/ha1/CalculatorTest.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java b/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java index ddff0da..49092f7 100644 --- a/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java +++ b/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java @@ -88,7 +88,22 @@ void testMultipleDecimalDots() { assertEquals(expected, actual); } + @Test + @DisplayName("should display result after subtract two positive multi-digit numbers") + void testPositiveSubtraction() { + Calculator calc = new Calculator(); - //TODO hier weitere Tests erstellen + calc.pressDigitKey(5); + calc.pressDigitKey(0); + calc.pressBinaryOperationKey("-"); + calc.pressDigitKey(2); + calc.pressDigitKey(0); + calc.pressEqualsKey(); + + String expected = "30"; + String actual = calc.readScreen(); + + assertEquals(expected, actual); + } } From d45a9f3931107bea54fecfe8037ae1d0e9536939 Mon Sep 17 00:00:00 2001 From: Phil Date: Sun, 3 Nov 2024 22:56:53 +0100 Subject: [PATCH 2/5] red testCalculateThreeNumbers --- .../java/htw/berlin/prog2/ha1/Calculator.java | 3 ++- .../htw/berlin/prog2/ha1/CalculatorTest.java | 24 ++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java b/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java index 84c04f2..47e5894 100644 --- a/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java +++ b/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java @@ -118,7 +118,7 @@ public void pressNegativeKey() { * und das Ergebnis direkt angezeigt. */ public void pressEqualsKey() { - var result = switch(latestOperation) { + double result = switch(latestOperation) { case "+" -> latestValue + Double.parseDouble(screen); case "-" -> latestValue - Double.parseDouble(screen); case "x" -> latestValue * Double.parseDouble(screen); @@ -130,4 +130,5 @@ public void pressEqualsKey() { if(screen.endsWith(".0")) screen = screen.substring(0,screen.length()-2); if(screen.contains(".") && screen.length() > 11) screen = screen.substring(0, 10); } + } diff --git a/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java b/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java index 49092f7..63481fd 100644 --- a/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java +++ b/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java @@ -89,7 +89,7 @@ void testMultipleDecimalDots() { } @Test - @DisplayName("should display result after subtract two positive multi-digit numbers") + @DisplayName("should display result after subtracting two positive multi-digit numbers") void testPositiveSubtraction() { Calculator calc = new Calculator(); @@ -105,5 +105,27 @@ void testPositiveSubtraction() { assertEquals(expected, actual); } + + @Test + @DisplayName("should display result after calculating three positive multi-digit numbers") + void testCalculateThreeNumbers() { + Calculator calc = new Calculator(); + + calc.pressDigitKey(7); + calc.pressDigitKey(7); + calc.pressBinaryOperationKey("-"); + calc.pressDigitKey(7); + calc.pressDigitKey(9); + calc.pressBinaryOperationKey("+"); + calc.pressDigitKey(8); + calc.pressDigitKey(0); + calc.pressEqualsKey(); + + String expected = "78"; + String actual = calc.readScreen(); + + assertEquals(expected, actual); + } + } From aa3bec0eb1ae048c3ce28adb18d2d73b64010162 Mon Sep 17 00:00:00 2001 From: Phil Date: Sun, 3 Nov 2024 23:04:25 +0100 Subject: [PATCH 3/5] (fix) green testCalculateThreeNumbers --- app/src/main/java/htw/berlin/prog2/ha1/Calculator.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java b/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java index 47e5894..fee5f2c 100644 --- a/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java +++ b/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java @@ -31,7 +31,7 @@ public String readScreen() { public void pressDigitKey(int digit) { if(digit > 9 || digit < 0) throw new IllegalArgumentException(); - if(screen.equals("0") || latestValue == Double.parseDouble(screen)) screen = ""; + if(screen.equals("0")) screen = ""; screen = screen + digit; } @@ -57,11 +57,17 @@ public void pressClearKey() { * Rechner in den passenden Operationsmodus versetzt. * Beim zweiten Drücken nach Eingabe einer weiteren Zahl wird direkt des aktuelle Zwischenergebnis * auf dem Bildschirm angezeigt. Falls hierbei eine Division durch Null auftritt, wird "Error" angezeigt. + * Diese Methode ermöglicht es dem Benutzer, mehrere aufeinanderfolgende Berechnungen durchzuführen, + * indem sie das Zwischenergebnis berechnet, bevor eine neue Operation eingegeben wird. * @param operation "+" für Addition, "-" für Substraktion, "x" für Multiplikation, "/" für Division */ public void pressBinaryOperationKey(String operation) { + if (!latestOperation.isEmpty()) { + pressEqualsKey(); + } latestValue = Double.parseDouble(screen); latestOperation = operation; + screen = "0"; } /** From f535e8b61f574e7779f8a1d92ebe63d2b94689e8 Mon Sep 17 00:00:00 2001 From: Phil Date: Sun, 3 Nov 2024 23:19:31 +0100 Subject: [PATCH 4/5] red testPercentageCalculation --- .../htw/berlin/prog2/ha1/CalculatorTest.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java b/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java index 63481fd..f018b15 100644 --- a/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java +++ b/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java @@ -127,5 +127,21 @@ void testCalculateThreeNumbers() { assertEquals(expected, actual); } + @Test + @DisplayName("should display percentage of a multi-digit number") + void testPercentageCalculation() { + Calculator calc = new Calculator(); + + calc.pressDigitKey(2); + calc.pressDigitKey(0); + calc.pressDigitKey(0); + calc.pressUnaryOperationKey("%"); + + String expected = "2"; + String actual = calc.readScreen(); + + assertEquals(expected, actual); + } + } From 9edc7ab360d5a4c5cfecdcb851a2de08da974cfe Mon Sep 17 00:00:00 2001 From: Phil Date: Sun, 3 Nov 2024 23:20:46 +0100 Subject: [PATCH 5/5] (fix) green testPercentageCalculation --- app/src/main/java/htw/berlin/prog2/ha1/Calculator.java | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java b/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java index fee5f2c..706fc7a 100644 --- a/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java +++ b/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java @@ -88,6 +88,7 @@ public void pressUnaryOperationKey(String operation) { }; screen = Double.toString(result); if(screen.equals("NaN")) screen = "Error"; + if(screen.endsWith(".0")) screen = screen.substring(0, screen.length() - 2); if(screen.contains(".") && screen.length() > 11) screen = screen.substring(0, 10); }