From 7ac72b0cc38e957098dffe802c9962b623daf166 Mon Sep 17 00:00:00 2001 From: Julius Date: Sun, 26 Apr 2026 20:57:18 +0200 Subject: [PATCH 1/5] =?UTF-8?q?test=20f=C3=BCr=20gleichheitszeichen=20ohne?= =?UTF-8?q?=20operator=20soll=20nichts=20ver=C3=A4ndern?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../htw/berlin/prog2/ha1/CalculatorTest.java | 17 ++++++++++++++--- 1 file changed, 14 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..eab28e7 100644 --- a/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java +++ b/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java @@ -1,10 +1,9 @@ package htw.berlin.prog2.ha1; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.assertEquals; - @DisplayName("Retro calculator") class CalculatorTest { @@ -89,6 +88,18 @@ void testMultipleDecimalDots() { } - //TODO hier weitere Tests erstellen + @Test + @DisplayName("soll bei Gleich ohne Operation nichts verändern") + void testEqualsWithoutOperation(){ + Calculator calc = new Calculator(); + + calc.pressDigitKey(5); + calc.pressEqualsKey(); + + String expected = "5"; + String actual = calc.readScreen(); + + assertEquals(expected, actual); + } } From d510002f1e3b3076797d4f87fdbb0058d8834b26 Mon Sep 17 00:00:00 2001 From: Julius Date: Sun, 26 Apr 2026 21:11:16 +0200 Subject: [PATCH 2/5] =?UTF-8?q?test=20f=C3=BCr=20clear?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../htw/berlin/prog2/ha1/CalculatorTest.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java b/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java index eab28e7..cf7de8e 100644 --- a/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java +++ b/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java @@ -101,5 +101,23 @@ void testEqualsWithoutOperation(){ assertEquals(expected, actual); } + + @Test + @DisplayName("c soll nur aktuelle Eingabe löschen") + void testPressClearKey(){ + Calculator calc = new Calculator(); + + + calc.pressDigitKey(8); + calc.pressBinaryOperationKey("+"); + calc.pressDigitKey(2); + calc.pressClearKey(); + calc.pressEqualsKey(); + + String expected = "8"; + String actual = calc.readScreen(); + + assertEquals(expected, actual); + } } From c3bcc24bd070deebd486e1689da1151d8eef2c24 Mon Sep 17 00:00:00 2001 From: Julius Date: Sun, 26 Apr 2026 21:21:05 +0200 Subject: [PATCH 3/5] =?UTF-8?q?test=20f=C3=BCr=20toggle=20negative?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/htw/berlin/prog2/ha1/CalculatorTest.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java b/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java index cf7de8e..16016a9 100644 --- a/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java +++ b/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java @@ -119,5 +119,20 @@ void testPressClearKey(){ assertEquals(expected, actual); } + + @Test + @DisplayName("soll Vorzeichen zweimal umkehren") + void testToggleNegative(){ + Calculator calc = new Calculator(); + + calc.pressDigitKey(7); + calc.pressNegativeKey(); + calc.pressNegativeKey(); + + String expected = "7"; + String actual = calc.readScreen(); + + assertEquals(expected, actual); + } } From 937d9cf1d4c4b850aa04db5cf3365ce1223632c3 Mon Sep 17 00:00:00 2001 From: Julius Date: Sun, 26 Apr 2026 22:10:33 +0200 Subject: [PATCH 4/5] fix equal key no operation --- src/main/java/htw/berlin/prog2/ha1/Calculator.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/htw/berlin/prog2/ha1/Calculator.java b/src/main/java/htw/berlin/prog2/ha1/Calculator.java index 84c04f2..03cf0fa 100644 --- a/src/main/java/htw/berlin/prog2/ha1/Calculator.java +++ b/src/main/java/htw/berlin/prog2/ha1/Calculator.java @@ -118,6 +118,9 @@ public void pressNegativeKey() { * und das Ergebnis direkt angezeigt. */ public void pressEqualsKey() { + if(latestOperation.equals("")){ + return; + } var result = switch(latestOperation) { case "+" -> latestValue + Double.parseDouble(screen); case "-" -> latestValue - Double.parseDouble(screen); From c368c60e63bab63b7b80610930a83d1925448b1d Mon Sep 17 00:00:00 2001 From: Julius Date: Sun, 26 Apr 2026 22:33:03 +0200 Subject: [PATCH 5/5] fix clear --- .../java/htw/berlin/prog2/ha1/Calculator.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/main/java/htw/berlin/prog2/ha1/Calculator.java b/src/main/java/htw/berlin/prog2/ha1/Calculator.java index 03cf0fa..5d86e29 100644 --- a/src/main/java/htw/berlin/prog2/ha1/Calculator.java +++ b/src/main/java/htw/berlin/prog2/ha1/Calculator.java @@ -14,6 +14,8 @@ public class Calculator { private String latestOperation = ""; + private boolean clearKeyPressedLast = false; + /** * @return den aktuellen Bildschirminhalt als String */ @@ -29,6 +31,7 @@ public String readScreen() { * @param digit Die Ziffer, deren Taste gedrückt wurde */ public void pressDigitKey(int digit) { + clearKeyPressedLast = false; if(digit > 9 || digit < 0) throw new IllegalArgumentException(); if(screen.equals("0") || latestValue == Double.parseDouble(screen)) screen = ""; @@ -45,9 +48,12 @@ public void pressDigitKey(int digit) { * im Ursprungszustand ist. */ public void pressClearKey() { + if(clearKeyPressedLast){ + latestOperation = ""; + latestValue = 0.0; + } screen = "0"; - latestOperation = ""; - latestValue = 0.0; + clearKeyPressedLast = true; } /** @@ -60,6 +66,7 @@ public void pressClearKey() { * @param operation "+" für Addition, "-" für Substraktion, "x" für Multiplikation, "/" für Division */ public void pressBinaryOperationKey(String operation) { + clearKeyPressedLast = false; latestValue = Double.parseDouble(screen); latestOperation = operation; } @@ -72,6 +79,7 @@ public void pressBinaryOperationKey(String operation) { * @param operation "√" für Quadratwurzel, "%" für Prozent, "1/x" für Inversion */ public void pressUnaryOperationKey(String operation) { + clearKeyPressedLast = false; latestValue = Double.parseDouble(screen); latestOperation = operation; var result = switch(operation) { @@ -94,6 +102,7 @@ public void pressUnaryOperationKey(String operation) { * Beim zweimaligem Drücken, oder wenn bereits ein Trennzeichen angezeigt wird, passiert nichts. */ public void pressDotKey() { + clearKeyPressedLast = false; if(!screen.contains(".")) screen = screen + "."; } @@ -105,6 +114,7 @@ public void pressDotKey() { * entfernt und der Inhalt fortan als positiv interpretiert. */ public void pressNegativeKey() { + clearKeyPressedLast = false; screen = screen.startsWith("-") ? screen.substring(1) : "-" + screen; } @@ -118,6 +128,7 @@ public void pressNegativeKey() { * und das Ergebnis direkt angezeigt. */ public void pressEqualsKey() { + clearKeyPressedLast = false; if(latestOperation.equals("")){ return; }