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..6cbca41e 100644 --- a/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java +++ b/app/src/main/java/htw/berlin/prog2/ha1/Calculator.java @@ -6,6 +6,7 @@ * und dessen Bildschirm bis zu zehn Ziffern plus einem Dezimaltrennzeichen darstellen kann. * Enthält mit Absicht noch diverse Bugs oder unvollständige Funktionen. */ +//Kardeena Kameran public class Calculator { private String screen = "0"; @@ -118,16 +119,23 @@ public void pressNegativeKey() { * und das Ergebnis direkt angezeigt. */ public void pressEqualsKey() { + if (latestOperation.isEmpty()) { + return; + } var result = switch(latestOperation) { case "+" -> latestValue + Double.parseDouble(screen); case "-" -> latestValue - Double.parseDouble(screen); case "x" -> latestValue * Double.parseDouble(screen); case "/" -> latestValue / Double.parseDouble(screen); 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); + if(screen.equals("-0")) screen= "0"; + } + } 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..2eb0b519 100644 --- a/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java +++ b/app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java @@ -4,7 +4,7 @@ import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; - +//Kardeena Kameran @DisplayName("Retro calculator") class CalculatorTest { @@ -90,5 +90,51 @@ void testMultipleDecimalDots() { //TODO hier weitere Tests erstellen -} + @Test + @DisplayName("Zeigt das Ergebnis einer Zahl die von einer anderen subtrahiert wird.") + void testMinus() { + Calculator calc = new Calculator(); + + calc.pressDigitKey(1); + calc.pressDigitKey(0); + calc.pressBinaryOperationKey("-"); + calc.pressDigitKey(5); + calc.pressEqualsKey(); + + String expected = "5"; + String actual = calc.readScreen(); + assertEquals(expected, actual); + } + @Test + @DisplayName("Zeigt statt einer -0 immer eine 0 an") + void testNegativNull() { + Calculator calc = new Calculator(); + + calc.pressDigitKey(0); + calc.pressNegativeKey(); + calc.pressBinaryOperationKey("+"); + calc.pressDigitKey(0); + calc.pressNegativeKey(); + calc.pressEqualsKey(); + + String expected = "0"; + String actual = calc.readScreen(); + + assertEquals(expected, actual); + } + @Test + @DisplayName("die eingegebene zahl soll nach dem Gleichzeichen wiedergegeben werden") + void dreiGleich() { + Calculator calc = new Calculator(); + + calc.pressDigitKey(3); + calc.pressEqualsKey(); + + String expected = "3"; + String actual = calc.readScreen(); + + assertEquals(expected, actual); + } + +}