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
67 changes: 49 additions & 18 deletions src/main/java/htw/berlin/prog2/ha1/Calculator.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,26 @@

/**
* Eine Klasse, die das Verhalten des Online Taschenrechners imitiert, welcher auf
* https://www.online-calculator.com/ aufgerufen werden kann (ohne die Memory-Funktionen)
* ....https://www.online-calculator...com/ aufgerufen werden kann (ohne die Memory-Funktionen)
* und dessen Bildschirm bis zu zehn Ziffern plus einem Dezimaltrennzeichen darstellen kann.
* Enthält mit Absicht noch diverse Bugs oder unvollständige Funktionen.
*/
public class Calculator {

//s
private String screen = "0";

private double latestValue;

private String latestOperation = "";
private boolean clearkey = false;

/**
* @return den aktuellen Bildschirminhalt als String
*/
public String readScreen() {
return screen;
}

// internet candela no funciona
/**
* 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.
Expand All @@ -36,18 +37,36 @@ public void pressDigitKey(int digit) {
screen = screen + digit;
}

// /**
// * Empfängt den Befehl der C- bzw. CE-Taste (Clear bzw. Clear Entry).
// * Einmaliges Drücken der Taste löscht die zuvor eingegebenen Ziffern auf dem Bildschirm
// * so dass "0" angezeigt wird, jedoch ohne zuvor zwischengespeicherte Werte zu löschen.
// * Wird daraufhin noch einmal die Taste gedrückt, dann werden auch zwischengespeicherte
// * Werte sowie der aktuelle Operationsmodus zurückgesetzt, so dass der Rechner wieder
// * im Ursprungszustand ist.
// */


/**
* Empfängt den Befehl der C- bzw. CE-Taste (Clear bzw. Clear Entry).
* Einmaliges Drücken der Taste löscht die zuvor eingegebenen Ziffern auf dem Bildschirm
* so dass "0" angezeigt wird, jedoch ohne zuvor zwischengespeicherte Werte zu löschen.
* Wird daraufhin noch einmal die Taste gedrückt, dann werden auch zwischengespeicherte
* Werte sowie der aktuelle Operationsmodus zurückgesetzt, so dass der Rechner wieder
* im Ursprungszustand ist.
* Clears the display.
* First press = only the display is reset to "0"
* Second press = everything is reset. no more values saved.
*/
public void pressClearKey() {
screen = "0";
latestOperation = "";
latestValue = 0.0;
//screen = "0";
//latestOperation = "";
//latestValue = 0.0;

if (!clearkey) {
screen = "0";
clearkey = true;
} else {
screen = "0";
latestOperation = "";
latestValue = 0.0;
clearkey =false;

}
}

/**
Expand Down Expand Up @@ -97,15 +116,27 @@ public void pressDotKey() {
if(!screen.contains(".")) screen = screen + ".";
}

// /**
// * Empfängt den Befehl der gedrückten Vorzeichenumkehrstaste ("+/-").
// * Zeigt der Bildschirm einen positiven Wert an, so wird ein "-" links angehängt, der Bildschirm
// * aktualisiert und die Inhalt fortan als negativ interpretiert.
// * Zeigt der Bildschirm bereits einen negativen Wert mit führendem Minus an, dann wird dieses
// * entfernt und der Inhalt fortan als positiv interpretiert.
//*/

/**
* Empfängt den Befehl der gedrückten Vorzeichenumkehrstaste ("+/-").
* Zeigt der Bildschirm einen positiven Wert an, so wird ein "-" links angehängt, der Bildschirm
* aktualisiert und die Inhalt fortan als negativ interpretiert.
* Zeigt der Bildschirm bereits einen negativen Wert mit führendem Minus an, dann wird dieses
* entfernt und der Inhalt fortan als positiv interpretiert.
* if the number is positive, a minus sign comes to the front
* If the number is negative, the minus sign will be removed.
* if the display shows 0, the value remains. no changes
*/


public void pressNegativeKey() {
screen = screen.startsWith("-") ? screen.substring(1) : "-" + screen;
//screen = screen.startsWith("-") ? screen.substring(1) : "-" + screen;
if (screen.equals("0")) {
return;
}
screen = screen.startsWith("-") ? screen.substring(1) : "-" + screen;
}

/**
Expand Down
31 changes: 30 additions & 1 deletion src/test/java/htw/berlin/prog2/ha1/CalculatorTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,37 @@ void testMultipleDecimalDots() {

assertEquals(expected, actual);
}
@Test
@DisplayName("should change the sign from positive to negative")
void firstGreenTest() {
Calculator calc = new Calculator();
calc.pressDigitKey(1);
calc.pressNegativeKey();

assertEquals("-1",calc.readScreen());
}
@Test
@DisplayName("should not exist a -0")
void firstRedTest() {
Calculator calc = new Calculator();

calc.pressNegativeKey();

assertEquals("0" , calc.readScreen());
}

//TODO hier weitere Tests erstellen
@Test
@DisplayName("the clearkey should not clear all saved digitkeys.")
void secondRedTest() {
Calculator calc = new Calculator();
calc.pressDigitKey(1);
calc.pressBinaryOperationKey("+");
calc.pressDigitKey(1);
calc.pressClearKey();
calc.pressDigitKey(2);
calc.pressEqualsKey();

assertEquals("3", calc.readScreen());
}
}