Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions app/src/main/java/htw/berlin/prog2/ha1/Calculator.java
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down Expand Up @@ -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";

}

}
50 changes: 48 additions & 2 deletions app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -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 {

Expand Down Expand Up @@ -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);
}

}