Skip to content
Open

ha1 #117

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
15 changes: 12 additions & 3 deletions app/src/main/java/htw/berlin/prog2/ha1/Calculator.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,21 @@ public String readScreen() {
/**
* Empfängt den Wert einer gedrückten Zifferntaste. Da man nur eine Taste auf einmal
* 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.
* Führt dazu, dass die gerade gedrückte Ziffer auf dem Bildschirm angezeigt
* oder rechts an die zuvor gedrückte Ziffer angehängt angezeigt wird, wenn 8 oder
* weniger Ziffern auf dem Bildschirm zu sehen sind.
* @param digit Die Ziffer, deren Taste gedrückt wurde
*/
public void pressDigitKey(int digit) {
if(digit > 9 || digit < 0) throw new IllegalArgumentException();

if(screen.equals("0") || latestValue == Double.parseDouble(screen)) screen = "";

screen = screen + digit;
if(screen.length() == 9){

}else {
screen = screen + digit;
}
}

/**
Expand Down Expand Up @@ -81,6 +86,7 @@ public void pressUnaryOperationKey(String operation) {
default -> throw new IllegalArgumentException();
};
screen = Double.toString(result);
if(screen.equals("Infinity")) screen = "Error";
if(screen.equals("NaN")) screen = "Error";
if(screen.contains(".") && screen.length() > 11) screen = screen.substring(0, 10);

Expand Down Expand Up @@ -130,4 +136,7 @@ public void pressEqualsKey() {
if(screen.endsWith(".0")) screen = screen.substring(0,screen.length()-2);
if(screen.contains(".") && screen.length() > 11) screen = screen.substring(0, 10);
}



}
52 changes: 52 additions & 0 deletions app/src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,58 @@ void testMultipleDecimalDots() {
assertEquals(expected, actual);
}

@Test
@DisplayName("should display result after inverting a number")
void testInvertingANumber() {
Calculator calc = new Calculator();

calc.pressDigitKey(4);
calc.pressUnaryOperationKey("1/x");

String expected = "0.25";
String actual = calc.readScreen();

assertEquals(expected, actual);
}

@Test
@DisplayName("should prohibit inversion of 0")
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 not add another digit to screen when nine numbers are on screen")
void testDontAllow10thDigit() {
Calculator calc = new Calculator();

calc.pressDigitKey(1);
calc.pressDigitKey(1);
calc.pressDigitKey(1);
calc.pressDigitKey(1);
calc.pressDigitKey(1);
calc.pressDigitKey(1);
calc.pressDigitKey(1);
calc.pressDigitKey(1);
calc.pressDigitKey(1);
calc.pressDigitKey(1);



String expected = "111111111";
String actual = calc.readScreen();

assertEquals(expected, actual);

}

//TODO hier weitere Tests erstellen
}
Expand Down