From 069a88adfbf3363d6169b148cabbf56aa41da90e Mon Sep 17 00:00:00 2001 From: NguyenKieuTrang05 Date: Tue, 14 Oct 2025 13:07:20 +0200 Subject: [PATCH 1/9] probe --- src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java b/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java index ddff0da..f997d95 100644 --- a/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java +++ b/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java @@ -78,11 +78,11 @@ void testMultipleDecimalDots() { calc.pressDigitKey(1); calc.pressDotKey(); - calc.pressDigitKey(7); - calc.pressDotKey(); calc.pressDigitKey(8); + calc.pressDotKey(); + calc.pressDigitKey(7); - String expected = "1.78"; + String expected = "1.87"; String actual = calc.readScreen(); assertEquals(expected, actual); @@ -90,5 +90,6 @@ void testMultipleDecimalDots() { //TODO hier weitere Tests erstellen + } From 98df1b08bdfdf4e665e5cbb3b53aede50e4d0074 Mon Sep 17 00:00:00 2001 From: NguyenKieuTrang05 Date: Tue, 14 Oct 2025 13:16:39 +0200 Subject: [PATCH 2/9] probe1 --- src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java b/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java index f997d95..1840957 100644 --- a/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java +++ b/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java @@ -78,11 +78,11 @@ void testMultipleDecimalDots() { calc.pressDigitKey(1); calc.pressDotKey(); - calc.pressDigitKey(8); - calc.pressDotKey(); calc.pressDigitKey(7); + calc.pressDotKey(); + calc.pressDigitKey(8); - String expected = "1.87"; + String expected = "1.78"; String actual = calc.readScreen(); assertEquals(expected, actual); From 256482d289dec97efcf26eca5d4e5ff378a7dc4f Mon Sep 17 00:00:00 2001 From: NguyenKieuTrang05 Date: Tue, 14 Oct 2025 22:33:06 +0200 Subject: [PATCH 3/9] =?UTF-8?q?gr=C3=BCner=20Test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/htw/berlin/prog2/ha1/CalculatorTest.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java b/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java index 1840957..3caa2f0 100644 --- a/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java +++ b/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java @@ -87,6 +87,20 @@ void testMultipleDecimalDots() { assertEquals(expected, actual); } + @Test + @DisplayName("should display result after calculating the percentage") + void testPercentage() { + Calculator calc = new Calculator(); + + calc.pressDigitKey(1); + calc.pressDigitKey(0); + calc.pressUnaryOperationKey("%"); + + String expected = "0.1"; + String actual = calc.readScreen(); + assertEquals(expected, actual); + } + //TODO hier weitere Tests erstellen From c28cc9f2c0042cdba966d8e97708245fc65ea394 Mon Sep 17 00:00:00 2001 From: NguyenKieuTrang05 Date: Mon, 20 Oct 2025 10:51:34 +0200 Subject: [PATCH 4/9] =?UTF-8?q?neuer=20gr=C3=BCner=20Test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/htw/berlin/prog2/ha1/CalculatorTest.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java b/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java index 3caa2f0..971cd1f 100644 --- a/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java +++ b/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java @@ -88,21 +88,20 @@ void testMultipleDecimalDots() { assertEquals(expected, actual); } @Test - @DisplayName("should display result after calculating the percentage") - void testPercentage() { + @DisplayName("should change sign to postive when pressing negative key twice") + void testChangeOfSign() { Calculator calc = new Calculator(); calc.pressDigitKey(1); - calc.pressDigitKey(0); - calc.pressUnaryOperationKey("%"); + calc.pressDigitKey(6); + calc.pressNegativeKey(); + calc.pressNegativeKey(); - String expected = "0.1"; + String expected = "16"; String actual = calc.readScreen(); assertEquals(expected, actual); } - - //TODO hier weitere Tests erstellen } From e4a661f69d82c40e23010872b02cd6646443fc7e Mon Sep 17 00:00:00 2001 From: NguyenKieuTrang05 Date: Thu, 23 Oct 2025 00:23:59 +0200 Subject: [PATCH 5/9] 1. rote Test --- .../java/htw/berlin/prog2/ha1/Calculator.java | 19 +++++++++++--- .../htw/berlin/prog2/ha1/CalculatorTest.java | 26 ++++++++++++++++++- 2 files changed, 41 insertions(+), 4 deletions(-) diff --git a/src/main/java/htw/berlin/prog2/ha1/Calculator.java b/src/main/java/htw/berlin/prog2/ha1/Calculator.java index 84c04f2..06e100c 100644 --- a/src/main/java/htw/berlin/prog2/ha1/Calculator.java +++ b/src/main/java/htw/berlin/prog2/ha1/Calculator.java @@ -14,6 +14,7 @@ public class Calculator { private String latestOperation = ""; + private boolean wasClearedOnce = false; /** * @return den aktuellen Bildschirminhalt als String */ @@ -31,11 +32,14 @@ public String readScreen() { public void pressDigitKey(int digit) { if(digit > 9 || digit < 0) throw new IllegalArgumentException(); + wasClearedOnce = false; + if(screen.equals("0") || latestValue == Double.parseDouble(screen)) screen = ""; screen = screen + digit; } + /** * Empfängt den Befehl der C- bzw. CE-Taste (Clear bzw. Clear Entry). * Einmaliges Drücken der Taste löscht die zuvor eingegebenen Ziffern auf dem Bildschirm @@ -45,10 +49,19 @@ public void pressDigitKey(int digit) { * im Ursprungszustand ist. */ public void pressClearKey() { - screen = "0"; - latestOperation = ""; - latestValue = 0.0; + screen = "0"; + latestOperation = ""; + latestValue = 0.0; + wasClearedOnce = false; + } + public double getLatestValue() { + return latestValue; + } + public String getLatestOperation() { + return latestOperation; + } + /** * Empfängt den Wert einer gedrückten binären Operationstaste, also eine der vier Operationen diff --git a/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java b/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java index 971cd1f..4f36e38 100644 --- a/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java +++ b/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java @@ -87,6 +87,8 @@ void testMultipleDecimalDots() { assertEquals(expected, actual); } + //TODO hier weitere Tests erstellen + @Test @DisplayName("should change sign to postive when pressing negative key twice") void testChangeOfSign() { @@ -101,8 +103,30 @@ void testChangeOfSign() { String actual = calc.readScreen(); assertEquals(expected, actual); } + + @Test + @DisplayName("should reset the calculator after pressing clear twice") + void testDoubleClearResetCalculator() { + Calculator calc = new Calculator(); - //TODO hier weitere Tests erstellen + calc.pressDigitKey(4); + calc.pressBinaryOperationKey("+"); + calc.pressDigitKey(2); + calc.pressDigitKey(3); + calc.pressEqualsKey(); + + calc.pressClearKey(); + assertEquals(27, calc.getLatestValue()); + assertEquals("+", calc.getLatestOperation()); + + calc.pressClearKey(); + String expected = "0"; + String actual = calc.readScreen(); + assertEquals(0, calc.getLatestValue()); + assertEquals("", calc.getLatestOperation()); + assertEquals(expected, actual); + + } } From 5b8c4d763818a1777b7eeb5c134509684fa1e43f Mon Sep 17 00:00:00 2001 From: NguyenKieuTrang05 Date: Thu, 23 Oct 2025 00:26:02 +0200 Subject: [PATCH 6/9] 1. Bugfix --- src/main/java/htw/berlin/prog2/ha1/Calculator.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/htw/berlin/prog2/ha1/Calculator.java b/src/main/java/htw/berlin/prog2/ha1/Calculator.java index 06e100c..9c5d4d6 100644 --- a/src/main/java/htw/berlin/prog2/ha1/Calculator.java +++ b/src/main/java/htw/berlin/prog2/ha1/Calculator.java @@ -49,10 +49,16 @@ public void pressDigitKey(int digit) { * im Ursprungszustand ist. */ public void pressClearKey() { + if (!wasClearedOnce) { + screen = "0"; + wasClearedOnce = true; + } else { screen = "0"; latestOperation = ""; latestValue = 0.0; wasClearedOnce = false; + } + } public double getLatestValue() { @@ -142,5 +148,6 @@ public void pressEqualsKey() { if(screen.equals("Infinity")) screen = "Error"; if(screen.endsWith(".0")) screen = screen.substring(0,screen.length()-2); if(screen.contains(".") && screen.length() > 11) screen = screen.substring(0, 10); + latestValue = result; } } From 127de814af9402bccad37a04dea5179b621b5f8a Mon Sep 17 00:00:00 2001 From: NguyenKieuTrang05 Date: Thu, 23 Oct 2025 20:26:06 +0200 Subject: [PATCH 7/9] 2. roter Test --- .../java/htw/berlin/prog2/ha1/Calculator.java | 3 +++ .../htw/berlin/prog2/ha1/CalculatorTest.java | 17 +++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/main/java/htw/berlin/prog2/ha1/Calculator.java b/src/main/java/htw/berlin/prog2/ha1/Calculator.java index 9c5d4d6..f5ecc4a 100644 --- a/src/main/java/htw/berlin/prog2/ha1/Calculator.java +++ b/src/main/java/htw/berlin/prog2/ha1/Calculator.java @@ -15,6 +15,8 @@ public class Calculator { private String latestOperation = ""; private boolean wasClearedOnce = false; + + /** * @return den aktuellen Bildschirminhalt als String */ @@ -137,6 +139,7 @@ public void pressNegativeKey() { * und das Ergebnis direkt angezeigt. */ public void pressEqualsKey() { + var result = switch(latestOperation) { case "+" -> latestValue + Double.parseDouble(screen); case "-" -> latestValue - Double.parseDouble(screen); diff --git a/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java b/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java index 4f36e38..ed7b238 100644 --- a/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java +++ b/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java @@ -103,6 +103,22 @@ void testChangeOfSign() { String actual = calc.readScreen(); assertEquals(expected, actual); } + @Test + @DisplayName("should do nothing when equals key is pressed without prior operation") + void testEqualsKeyWithoutOperation() { + Calculator calc = new Calculator(); + + calc.pressDigitKey(1); + calc.pressDigitKey(4); + calc.pressDigitKey(9); + calc.pressEqualsKey(); + + String expected = "149"; + String actual = calc.readScreen(); + + assertEquals(expected, actual); + } + @Test @DisplayName("should reset the calculator after pressing clear twice") @@ -128,5 +144,6 @@ void testDoubleClearResetCalculator() { } + } From 930eb82faf465085e55af641dd2299c05337165f Mon Sep 17 00:00:00 2001 From: NguyenKieuTrang05 Date: Thu, 23 Oct 2025 20:26:24 +0200 Subject: [PATCH 8/9] 2. roter Test --- src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java b/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java index ed7b238..4f59425 100644 --- a/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java +++ b/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java @@ -119,7 +119,7 @@ void testEqualsKeyWithoutOperation() { assertEquals(expected, actual); } - + @Test @DisplayName("should reset the calculator after pressing clear twice") void testDoubleClearResetCalculator() { From 3af80f4b890db34521a6409be682fa9101ece1fd Mon Sep 17 00:00:00 2001 From: NguyenKieuTrang05 Date: Thu, 23 Oct 2025 20:34:59 +0200 Subject: [PATCH 9/9] 2. Bugfix --- src/main/java/htw/berlin/prog2/ha1/Calculator.java | 4 ++++ src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java | 4 +--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/htw/berlin/prog2/ha1/Calculator.java b/src/main/java/htw/berlin/prog2/ha1/Calculator.java index f5ecc4a..bfffe67 100644 --- a/src/main/java/htw/berlin/prog2/ha1/Calculator.java +++ b/src/main/java/htw/berlin/prog2/ha1/Calculator.java @@ -140,6 +140,10 @@ public void pressNegativeKey() { */ public void pressEqualsKey() { + if (latestOperation.isEmpty()) { + return; + } + var result = switch(latestOperation) { case "+" -> latestValue + Double.parseDouble(screen); case "-" -> latestValue - Double.parseDouble(screen); diff --git a/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java b/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java index 4f59425..2b9e84c 100644 --- a/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java +++ b/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java @@ -118,10 +118,8 @@ void testEqualsKeyWithoutOperation() { assertEquals(expected, actual); } - - @Test - @DisplayName("should reset the calculator after pressing clear twice") + @DisplayName("should only clear screen on first press and reset memory on second press") void testDoubleClearResetCalculator() { Calculator calc = new Calculator();