diff --git a/src/main/java/tdd/setup/Calculator.java b/src/main/java/tdd/setup/Calculator.java
index 171f6d6..480f4e1 100644
--- a/src/main/java/tdd/setup/Calculator.java
+++ b/src/main/java/tdd/setup/Calculator.java
@@ -1,10 +1,12 @@
package tdd.setup;
+
// behaviour inspired by https://www.online-calculator.com/
public class Calculator {
private String screen = "0";
+
private double latestValue;
private String latestOperation = "";
@@ -18,8 +20,12 @@ public void pressDigitKey(int digit) {
if(latestOperation.isEmpty()) {
screen = screen + digit;
} else {
- latestValue = Double.parseDouble(screen);
- screen = Integer.toString(digit);
+ if (latestValue == 0) {
+ latestValue = Double.parseDouble(screen);
+ screen = "0";
+ }
+ screen = screen + digit;
+
}
}
@@ -34,11 +40,12 @@ public void pressOperationKey(String operation) {
}
public void pressDotKey() {
- if(!screen.endsWith(".")) screen = screen + ".";
+ if(!screen.contains(".")) screen = screen + ".";
}
public void pressNegative() {
screen = screen.startsWith("-") ? screen.substring(1) : "-" + screen;
+
}
public void pressEquals() {
@@ -47,6 +54,8 @@ public void pressEquals() {
case "-" -> latestValue - Double.parseDouble(screen);
case "x" -> latestValue * Double.parseDouble(screen);
case "/" -> latestValue / Double.parseDouble(screen);
+ case "" -> latestValue = Double.parseDouble(screen);
+ //case "" -> latestValue Double.parseDouble(screen);
default -> throw new IllegalArgumentException();
};
screen = Double.toString(result);
diff --git a/src/main/main.iml b/src/main/main.iml
new file mode 100644
index 0000000..2185ddd
--- /dev/null
+++ b/src/main/main.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/test/java/tdd/setup/CalculatorTest.java b/src/test/java/tdd/setup/CalculatorTest.java
index 3bf16e9..36edc6f 100644
--- a/src/test/java/tdd/setup/CalculatorTest.java
+++ b/src/test/java/tdd/setup/CalculatorTest.java
@@ -16,4 +16,72 @@ void calculatorCanDoTwoPlusTwo() {
calc.pressEquals();
assertEquals("4", calc.readScreen());
}
-}
+
+ @Test
+ @DisplayName("mein test1")
+ void calculatorCanDoTwoMinusTwo() {
+ Calculator calc = new Calculator();
+ calc.pressDigitKey(2);
+ calc.pressOperationKey("-");
+ calc.pressDigitKey(2);
+ calc.pressEquals();
+ assertEquals("0", calc.readScreen());
+ }
+
+ @Test
+ @DisplayName("mein test2")
+ void calculatorCanDoEightyPlusTwenty() {
+ Calculator calc = new Calculator();
+ calc.pressDigitKey(8);
+ calc.pressDigitKey(0);
+ calc.pressOperationKey("+");
+ calc.pressDigitKey(2);
+ calc.pressDigitKey(0);
+ calc.pressEquals();
+ assertEquals("100", calc.readScreen());
+ }
+
+ @Test
+ @DisplayName("mein test3")
+ void calculatorCanDoJustTwo() {
+ Calculator calc = new Calculator();
+ calc.pressDigitKey(2);
+ calc.pressEquals();
+ assertEquals("2", calc.readScreen());
+ }
+
+ @Test
+ @DisplayName("mein test4")
+ void calculatorCanDoClear() {
+ Calculator calc = new Calculator();
+ calc.pressDigitKey(2);
+ calc.pressOperationKey("-");
+ calc.pressDigitKey(3);
+ calc.pressClearKey();
+ assertEquals("0", calc.readScreen());
+ }
+
+ @Test
+ @DisplayName("mein test5")
+ void calculatorCanDoNegative() {
+ Calculator calc = new Calculator();
+ calc.pressNegative();
+ calc.pressDigitKey(2);
+ calc.pressEquals();
+ assertEquals("-2", calc.readScreen());
+ }
+
+ @Test
+ @DisplayName("mein test6")
+ void calculatorCanDot() {
+ Calculator calc = new Calculator();
+ calc.pressDigitKey(0);
+ calc.pressDotKey();
+ calc.pressDigitKey(2);
+ calc.pressDotKey();
+ calc.pressEquals();
+ assertEquals("0.2", calc.readScreen());
+ }
+
+ }
+
diff --git a/src/test/test.iml b/src/test/test.iml
new file mode 100644
index 0000000..9077291
--- /dev/null
+++ b/src/test/test.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file