From c3e82032813e50d4879051b25d9216686cebe4d8 Mon Sep 17 00:00:00 2001 From: Iljadut <121857275+Iljadut@users.noreply.github.com> Date: Mon, 22 Apr 2024 14:36:39 +0200 Subject: [PATCH 1/7] test --- .../java/htw/berlin/prog2/ha1/Calculator.java | 4 +- .../htw/berlin/prog2/ha1/CalculatorTest.java | 86 +++++++++++++++++++ 2 files changed, 89 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 84c04f21..bde58088 100644 --- a/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java +++ b/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java @@ -128,6 +128,8 @@ public void pressEqualsKey() { screen = Double.toString(result); 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); + if(screen.contains(".") && screen.length() > 11) screen = screen.substring(0, 10) + latestValue = result; + } } 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..8f0153d1 100644 --- a/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java +++ b/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java @@ -90,5 +90,91 @@ void testMultipleDecimalDots() { //TODO hier weitere Tests erstellen + + @Test + @DisplayName("should display result after subtracting two positive multi-digit numbers") + void testNegativeAddition() { + Calculator calc = new Calculator(); + + calc.pressDigitKey(4); + calc.pressDigitKey(0); + calc.pressBinaryOperationKey("-"); + calc.pressDigitKey(2); + calc.pressDigitKey(0); + calc.pressEqualsKey(); + + String expected = "20"; + String actual = calc.readScreen(); + + assertEquals(expected, actual); + } + @Test + @DisplayName("should display result after subtracting two positive multi-digit numbers but the second number is bigger that the first one") + void testNegativeResult() { + Calculator calc = new Calculator(); + + calc.pressDigitKey(2); + calc.pressDigitKey(0); + calc.pressBinaryOperationKey("-"); + calc.pressDigitKey(2); + calc.pressDigitKey(5); + calc.pressEqualsKey(); + + String expected = "-5"; + String actual = calc.readScreen(); + + assertEquals(expected, actual); + } + + @Test + @DisplayName("should display result after subtracting two positive multi-digit numbers but repeatedly pressing equal button") + void testNegativeResult() { + Calculator calc = new Calculator(); + + calc.pressDigitKey(2); + calc.pressDigitKey(0); + calc.pressBinaryOperationKey("-"); + calc.pressDigitKey(2); + calc.pressEqualsKey(); + calc.pressEqualsKey(); + + String expected = "16"; + String actual = calc.readScreen(); + + assertEquals(expected, actual); + } + + @Test + @DisplayName("should display zero after multiplying a number with zero") + void testNegativeResult() { + Calculator calc = new Calculator(); + + calc.pressDigitKey(2); + calc.pressDigitKey(0); + calc.pressBinaryOperationKey("*"); + calc.pressDigitKey(0); + calc.pressEqualsKey(); + + String expected = "0"; + String actual = calc.readScreen(); + + assertEquals(expected, actual); + } + @Test + @DisplayName("should redo the operation after pressing equals key again with +") + void testEqualButton() { + Calculator calc = new Calculator(); + + calc.pressDigitKey(10); + calc.pressBinaryOperationKey("+"); + calc.pressDigitKey(5); + calc.pressEqualsKey(); + calc.pressEqualsKey(); + + String expected = "20"; + String actual = calc.readScreen(); + + assertEquals(expected, actual); + } } From 3dbe2d72e74f2d6997762f21317f4b6089ee8f89 Mon Sep 17 00:00:00 2001 From: Iljadut <121857275+Iljadut@users.noreply.github.com> Date: Mon, 22 Apr 2024 17:34:43 +0200 Subject: [PATCH 2/7] =?UTF-8?q?Erster=20gr=C3=BCner=20Test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/htw/berlin/prog2/ha1/Calculator.java | 27 ++++---- .../htw/berlin/prog2/ha1/CalculatorTest.java | 69 ------------------- 2 files changed, 14 insertions(+), 82 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 bde58088..dabf3d8d 100644 --- a/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java +++ b/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java @@ -26,12 +26,13 @@ public String readScreen() { * drücken kann muss der Wert positiv und einstellig sein und zwischen 0 und 9 liegen. * Führt in jedem Fall dazu, dass die gerade gedrückte Ziffer auf dem Bildschirm angezeigt * oder rechts an die zuvor gedrückte Ziffer angehängt angezeigt wird. + * * @param digit Die Ziffer, deren Taste gedrückt wurde */ public void pressDigitKey(int digit) { - if(digit > 9 || digit < 0) throw new IllegalArgumentException(); + if (digit > 9 || digit < 0) throw new IllegalArgumentException(); - if(screen.equals("0") || latestValue == Double.parseDouble(screen)) screen = ""; + if (screen.equals("0") || latestValue == Double.parseDouble(screen)) screen = ""; screen = screen + digit; } @@ -57,9 +58,10 @@ 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. + * * @param operation "+" für Addition, "-" für Substraktion, "x" für Multiplikation, "/" für Division */ - public void pressBinaryOperationKey(String operation) { + public void pressBinaryOperationKey(String operation) { latestValue = Double.parseDouble(screen); latestOperation = operation; } @@ -69,20 +71,21 @@ public void pressBinaryOperationKey(String operation) { * Quadratwurzel, Prozent, Inversion, welche nur einen Operanden benötigen. * Beim Drücken der Taste wird direkt die Operation auf den aktuellen Zahlenwert angewendet und * der Bildschirminhalt mit dem Ergebnis aktualisiert. + * * @param operation "√" für Quadratwurzel, "%" für Prozent, "1/x" für Inversion */ public void pressUnaryOperationKey(String operation) { latestValue = Double.parseDouble(screen); latestOperation = operation; - var result = switch(operation) { + 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); + if (screen.equals("NaN")) screen = "Error"; + if (screen.contains(".") && screen.length() > 11) screen = screen.substring(0, 10); } @@ -94,7 +97,7 @@ public void pressUnaryOperationKey(String operation) { * Beim zweimaligem Drücken, oder wenn bereits ein Trennzeichen angezeigt wird, passiert nichts. */ public void pressDotKey() { - if(!screen.contains(".")) screen = screen + "."; + if (!screen.contains(".")) screen = screen + "."; } /** @@ -118,7 +121,7 @@ public void pressNegativeKey() { * und das Ergebnis direkt angezeigt. */ public void pressEqualsKey() { - var result = switch(latestOperation) { + var result = switch (latestOperation) { case "+" -> latestValue + Double.parseDouble(screen); case "-" -> latestValue - Double.parseDouble(screen); case "x" -> latestValue * Double.parseDouble(screen); @@ -126,10 +129,8 @@ public void pressEqualsKey() { default -> throw new IllegalArgumentException(); }; screen = Double.toString(result); - 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; - + 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); } } 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 8f0153d1..607d0726 100644 --- a/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java +++ b/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java @@ -106,75 +106,6 @@ void testNegativeAddition() { String expected = "20"; String actual = calc.readScreen(); - assertEquals(expected, actual); - } - @Test - @DisplayName("should display result after subtracting two positive multi-digit numbers but the second number is bigger that the first one") - void testNegativeResult() { - Calculator calc = new Calculator(); - - calc.pressDigitKey(2); - calc.pressDigitKey(0); - calc.pressBinaryOperationKey("-"); - calc.pressDigitKey(2); - calc.pressDigitKey(5); - calc.pressEqualsKey(); - - String expected = "-5"; - String actual = calc.readScreen(); - - assertEquals(expected, actual); - } - - @Test - @DisplayName("should display result after subtracting two positive multi-digit numbers but repeatedly pressing equal button") - void testNegativeResult() { - Calculator calc = new Calculator(); - - calc.pressDigitKey(2); - calc.pressDigitKey(0); - calc.pressBinaryOperationKey("-"); - calc.pressDigitKey(2); - calc.pressEqualsKey(); - calc.pressEqualsKey(); - - String expected = "16"; - String actual = calc.readScreen(); - - assertEquals(expected, actual); - } - - @Test - @DisplayName("should display zero after multiplying a number with zero") - void testNegativeResult() { - Calculator calc = new Calculator(); - - calc.pressDigitKey(2); - calc.pressDigitKey(0); - calc.pressBinaryOperationKey("*"); - calc.pressDigitKey(0); - calc.pressEqualsKey(); - - String expected = "0"; - String actual = calc.readScreen(); - - assertEquals(expected, actual); - } - @Test - @DisplayName("should redo the operation after pressing equals key again with +") - void testEqualButton() { - Calculator calc = new Calculator(); - - calc.pressDigitKey(10); - calc.pressBinaryOperationKey("+"); - calc.pressDigitKey(5); - calc.pressEqualsKey(); - calc.pressEqualsKey(); - - String expected = "20"; - String actual = calc.readScreen(); - assertEquals(expected, actual); } } - From 8f629cc7f9758b24459fc6420180d23dd757d4de Mon Sep 17 00:00:00 2001 From: Iljadut <121857275+Iljadut@users.noreply.github.com> Date: Mon, 22 Apr 2024 17:36:49 +0200 Subject: [PATCH 3/7] Erster roter Test --- .../htw/berlin/prog2/ha1/CalculatorTest.java | 17 +++++++++++++++++ 1 file changed, 17 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 607d0726..a4fcf33e 100644 --- a/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java +++ b/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java @@ -108,4 +108,21 @@ void testNegativeAddition() { assertEquals(expected, actual); } + + @Test + @DisplayName("should display error when dividing by zero") + void testMultiplicationByZero() { + Calculator calc = new Calculator(); + + calc.pressDigitKey(7); + calc.pressBinaryOperationKey("*"); + calc.pressDigitKey(0); + calc.pressEqualsKey(); + + String expected = "0"; + String actual = calc.readScreen(); + + assertEquals(expected, actual); + } + } From f079d86560361501c9e9ebadfee426bef4551dfe Mon Sep 17 00:00:00 2001 From: Iljadut <121857275+Iljadut@users.noreply.github.com> Date: Mon, 22 Apr 2024 17:39:05 +0200 Subject: [PATCH 4/7] bugfix erster roter Test --- app/src/main/java/htw/berlin/prog2/ha1/Calculator.java | 2 +- app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java | 3 +-- 2 files changed, 2 insertions(+), 3 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 dabf3d8d..5e14622c 100644 --- a/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java +++ b/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java @@ -126,7 +126,7 @@ public void pressEqualsKey() { case "-" -> latestValue - Double.parseDouble(screen); case "x" -> latestValue * Double.parseDouble(screen); case "/" -> latestValue / Double.parseDouble(screen); - default -> throw new IllegalArgumentException(); + default -> Double.parseDouble(screen); }; screen = Double.toString(result); if (screen.equals("Infinity")) screen = "Error"; 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 a4fcf33e..8dff69de 100644 --- a/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java +++ b/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java @@ -110,7 +110,7 @@ void testNegativeAddition() { } @Test - @DisplayName("should display error when dividing by zero") + @DisplayName("should display 0 when dividing by zero") void testMultiplicationByZero() { Calculator calc = new Calculator(); @@ -124,5 +124,4 @@ void testMultiplicationByZero() { assertEquals(expected, actual); } - } From fe19c24e69d9c7c643935bc2113e0526a07af6cb Mon Sep 17 00:00:00 2001 From: Iljadut <121857275+Iljadut@users.noreply.github.com> Date: Thu, 25 Apr 2024 19:54:35 +0200 Subject: [PATCH 5/7] zweiter roter Test --- .../htw/berlin/prog2/ha1/CalculatorTest.java | 19 ++++++++++++++++++- 1 file changed, 18 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 8dff69de..a48dc09e 100644 --- a/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java +++ b/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java @@ -108,14 +108,30 @@ void testNegativeAddition() { assertEquals(expected, actual); } + @Test + @DisplayName("should display result after clearing and performing new operation") + void testClearKey() { + Calculator calc = new Calculator(); + + calc.pressDigitKey(3); + calc.pressBinaryOperationKey("x"); + calc.pressDigitKey(2); + calc.pressClearKey(); + calc.pressDigitKey(1); + calc.pressEqualsKey(); + String expected = "3"; + String actual = calc.readScreen(); + + assertEquals(expected, actual); + } @Test @DisplayName("should display 0 when dividing by zero") void testMultiplicationByZero() { Calculator calc = new Calculator(); calc.pressDigitKey(7); - calc.pressBinaryOperationKey("*"); + calc.pressBinaryOperationKey("x"); calc.pressDigitKey(0); calc.pressEqualsKey(); @@ -125,3 +141,4 @@ void testMultiplicationByZero() { assertEquals(expected, actual); } } + From b1a47a469308368b4654e4811078649b134e5b03 Mon Sep 17 00:00:00 2001 From: Iljadut <121857275+Iljadut@users.noreply.github.com> Date: Thu, 25 Apr 2024 19:55:59 +0200 Subject: [PATCH 6/7] bugfix zweiter roter Test --- app/src/main/java/htw/berlin/prog2/ha1/Calculator.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 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 5e14622c..5e475119 100644 --- a/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java +++ b/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java @@ -46,9 +46,8 @@ public void pressDigitKey(int digit) { * im Ursprungszustand ist. */ public void pressClearKey() { - screen = "0"; - latestOperation = ""; - latestValue = 0.0; + screen = "" + latestValue; + latestValue = Double.parseDouble(screen); } /** @@ -134,3 +133,5 @@ public void pressEqualsKey() { if (screen.contains(".") && screen.length() > 11) screen = screen.substring(0, 10); } } + + From b1de97a8914f9fffbd7cd07f81e18d82f843a96b Mon Sep 17 00:00:00 2001 From: Iljadut <121857275+Iljadut@users.noreply.github.com> Date: Mon, 29 Apr 2024 15:18:57 +0200 Subject: [PATCH 7/7] neuer PR --- app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 a48dc09e..a346f838 100644 --- a/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java +++ b/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java @@ -93,7 +93,7 @@ void testMultipleDecimalDots() { @Test @DisplayName("should display result after subtracting two positive multi-digit numbers") - void testNegativeAddition() { + void testSubtracting() { Calculator calc = new Calculator(); calc.pressDigitKey(4); @@ -126,7 +126,7 @@ void testClearKey() { assertEquals(expected, actual); } @Test - @DisplayName("should display 0 when dividing by zero") + @DisplayName("should display 0 when multiplying by zero") void testMultiplicationByZero() { Calculator calc = new Calculator(); @@ -142,3 +142,4 @@ void testMultiplicationByZero() { } } +//Test