From da8cbbba2cb5ae9013d679b89a95ce097f4ba620 Mon Sep 17 00:00:00 2001 From: s0579111 Date: Tue, 23 Apr 2024 12:46:49 +0200 Subject: [PATCH 1/5] =?UTF-8?q?Teilaufgabe=201=20-=20gr=C3=BCner=20Test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../htw/berlin/prog2/ha1/CalculatorTest.java | 16 +++++++++++++++- 1 file changed, 15 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 ddff0daf..90bd554f 100644 --- a/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java +++ b/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java @@ -89,6 +89,20 @@ void testMultipleDecimalDots() { } - //TODO hier weitere Tests erstellen +//Teilaufgabe 1 + @Test + @DisplayName("should display result after pressing the clear key once") + void testPressClearKeyOnce() { + Calculator calc = new Calculator(); + + calc.pressDigitKey(5); + calc.pressClearKey(); + + String expected = "0"; + String actual = calc.readScreen(); + + assertEquals(expected, actual); + } + } From 5d63707c45e603648acdc443a78c912a51057068 Mon Sep 17 00:00:00 2001 From: s0579111 Date: Tue, 23 Apr 2024 12:47:26 +0200 Subject: [PATCH 2/5] Teilaufgabe 2 - roter Test --- .../htw/berlin/prog2/ha1/CalculatorTest.java | 37 +++++++++++++++++++ 1 file changed, 37 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 90bd554f..1c55c166 100644 --- a/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java +++ b/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java @@ -101,6 +101,43 @@ void testPressClearKeyOnce() { String expected = "0"; String actual = calc.readScreen(); + assertEquals(expected, actual); + } +//Teilaufgabe 2 + @Test + @DisplayName("should display error when trying to invert zero") + void testInvertingZero() { + Calculator calc = new Calculator(); + + calc.pressDigitKey(0); + calc.pressUnaryOperationKey("1/x"); + + String expected = "Error"; + String actual = calc.readScreen(); + + assertEquals(expected, actual); + } + + @Test + @DisplayName("should display error when exceeding maximum screen capacity") + void testMaxScreenCapacity() { + Calculator calc = new Calculator(); + + calc.pressDigitKey(1); + calc.pressDigitKey(2); + calc.pressDigitKey(3); + calc.pressDigitKey(4); + calc.pressDigitKey(5); + calc.pressDigitKey(6); + calc.pressDigitKey(7); + calc.pressDigitKey(8); + calc.pressDigitKey(9); + calc.pressDigitKey(0); + calc.pressDigitKey(1); // sollte ignoriert werden + + String expected = "1234567890"; + String actual = calc.readScreen(); + assertEquals(expected, actual); } From 98d7fbc0e5e3ab286ac58d7464152585e80ba1f1 Mon Sep 17 00:00:00 2001 From: s0579111 Date: Tue, 23 Apr 2024 13:02:22 +0200 Subject: [PATCH 3/5] =?UTF-8?q?Bugfix=20f=C3=BCr=20Teilaufgabe=203,=20Test?= =?UTF-8?q?:=20Maximale=20Bildschirmkapazit=C3=A4t?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/htw/berlin/prog2/ha1/Calculator.java | 2 ++ 1 file changed, 2 insertions(+) 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 84c04f21..3c1f80cf 100644 --- a/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java +++ b/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java @@ -33,7 +33,9 @@ public void pressDigitKey(int digit) { if(screen.equals("0") || latestValue == Double.parseDouble(screen)) screen = ""; + if (screen.length() < 10) { //limit to 10 digits screen = screen + digit; + } } /** From c906485370bdb6fb310c63327e2f550a8e7917fd Mon Sep 17 00:00:00 2001 From: s0579111 Date: Tue, 23 Apr 2024 13:13:43 +0200 Subject: [PATCH 4/5] =?UTF-8?q?Bugfix=20f=C3=BCr=20Teilaufgabe=203=20-=20I?= =?UTF-8?q?nversion=20von=20Null?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/htw/berlin/prog2/ha1/Calculator.java | 4 +++- 1 file changed, 3 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 3c1f80cf..6beaf40d 100644 --- a/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java +++ b/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java @@ -33,7 +33,7 @@ public void pressDigitKey(int digit) { if(screen.equals("0") || latestValue == Double.parseDouble(screen)) screen = ""; - if (screen.length() < 10) { //limit to 10 digits + if (screen.length() < 10) { //Durch Hinzufügen der Bedingung if (screen.length() < 10) stellen wir sicher, dass Ziffern nur dann dem Bildschirm hinzugefügt werden, wenn die maximale Länge noch nicht erreicht ist. screen = screen + digit; } } @@ -76,6 +76,8 @@ public void pressBinaryOperationKey(String operation) { public void pressUnaryOperationKey(String operation) { latestValue = Double.parseDouble(screen); latestOperation = operation; + if (latestValue == 0 && operation.equals("1/x")) { //Hinzufügen der Bedingung if (latestValue == 0 && operation.equals("1/x")) überprüfen wir, ob der zu invertierende Wert Null ist. In diesem Fall setzen wir den Bildschirm auf "Error". + screen = "Error"; var result = switch(operation) { case "√" -> Math.sqrt(Double.parseDouble(screen)); case "%" -> Double.parseDouble(screen) / 100; From 063085bbf6836458b242d04ac184cf0ddc772013 Mon Sep 17 00:00:00 2001 From: s0579111 Date: Tue, 23 Apr 2024 13:21:46 +0200 Subject: [PATCH 5/5] Fehler Behebung Bugfix Teilaufgabe 3 --- .../java/htw/berlin/prog2/ha1/Calculator.java | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 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 6beaf40d..fc09d0f2 100644 --- a/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java +++ b/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java @@ -76,20 +76,21 @@ public void pressBinaryOperationKey(String operation) { public void pressUnaryOperationKey(String operation) { latestValue = Double.parseDouble(screen); latestOperation = operation; - if (latestValue == 0 && operation.equals("1/x")) { //Hinzufügen der Bedingung if (latestValue == 0 && operation.equals("1/x")) überprüfen wir, ob der zu invertierende Wert Null ist. In diesem Fall setzen wir den Bildschirm auf "Error". + if (latestValue == 0 && operation.equals("1/x")) { //Durch Hinzufügen der Bedingung if (latestValue == 0 && operation.equals("1/x")) überprüfen wir, ob der zu invertierende Wert Null ist. In diesem Fall setzen wir den Bildschirm auf "Error". screen = "Error"; - var result = switch(operation) { - case "√" -> Math.sqrt(Double.parseDouble(screen)); - case "%" -> Double.parseDouble(screen) / 100; - case "1/x" -> 1 / Double.parseDouble(screen); - default -> throw new IllegalArgumentException(); - }; - screen = Double.toString(result); - if(screen.equals("NaN")) screen = "Error"; - if(screen.contains(".") && screen.length() > 11) screen = screen.substring(0, 10); - + } else { + var result = switch(operation) { + case "√" -> Math.sqrt(Double.parseDouble(screen)); + case "%" -> Double.parseDouble(screen) / 100; + case "1/x" -> 1 / Double.parseDouble(screen); + default -> throw new IllegalArgumentException(); + }; + screen = Double.toString(result); + if(screen.equals("NaN")) screen = "Error"; + if(screen.contains(".") && screen.length() > 11) screen = screen.substring(0, 10); + } } - + /** * Empfängt den Befehl der gedrückten Dezimaltrennzeichentaste, im Englischen üblicherweise "." * Fügt beim ersten Mal Drücken dem aktuellen Bildschirminhalt das Trennzeichen auf der rechten