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
17 changes: 11 additions & 6 deletions src/main/java/htw/berlin/prog2/ha1/Calculator.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,13 @@ public String readScreen() {
* @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 = "";
if (screen.length() < 9) {
screen = screen + digit;
}

screen = screen + digit;
}

/**
Expand Down Expand Up @@ -62,8 +64,12 @@ public void pressClearKey() {
public void pressBinaryOperationKey(String operation) {
latestValue = Double.parseDouble(screen);
latestOperation = operation;

}




/**
* Empfängt den Wert einer gedrückten unären Operationstaste, also eine der drei Operationen
* Quadratwurzel, Prozent, Inversion, welche nur einen Operanden benötigen.
Expand All @@ -81,9 +87,8 @@ public void pressUnaryOperationKey(String operation) {
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.equals("Infinity") ) screen = "Error";
if(screen.contains(".") && screen.length() > 11) screen = screen.substring(0, 10);;
}

/**
Expand Down
54 changes: 53 additions & 1 deletion src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -90,5 +90,57 @@ void testMultipleDecimalDots() {


//TODO hier weitere Tests erstellen
}

@Test
@DisplayName("should display result after subtracting two positive numbers")
void testPositiveSubtraction() {
Calculator calc = new Calculator();

calc.pressDigitKey(9);
calc.pressBinaryOperationKey("-");
calc.pressDigitKey(4);
calc.pressEqualsKey();

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

assertEquals(expected, actual);
}
@Test
@DisplayName("should limit input number to 9 digits")
void testInput() {
Calculator calc = new Calculator();

calc.pressDigitKey(9);
calc.pressDigitKey(9);
calc.pressDigitKey(9);
calc.pressDigitKey(9);
calc.pressDigitKey(9);
calc.pressDigitKey(9);
calc.pressDigitKey(9);
calc.pressDigitKey(9);
calc.pressDigitKey(9);
calc.pressDigitKey(9);


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

assertEquals(expected, actual);
}

@Test
@DisplayName("should display error when calculating inverse of zero")
void testInverse0zero() {
Calculator calc = new Calculator();

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

String expected = "Error"; // 1/0= Error
String actual = calc.readScreen();

assertEquals(expected, actual);
}

}