diff --git a/pom.xml b/pom.xml
index f4d0ad5..a1988ad 100644
--- a/pom.xml
+++ b/pom.xml
@@ -94,5 +94,15 @@
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 10
+ 10
+
+
+
diff --git a/src/main/java/com/serenitydojo/Exceptions/IllegalMathsOperatorException.java b/src/main/java/com/serenitydojo/Exceptions/IllegalMathsOperatorException.java
new file mode 100644
index 0000000..a5f6202
--- /dev/null
+++ b/src/main/java/com/serenitydojo/Exceptions/IllegalMathsOperatorException.java
@@ -0,0 +1,7 @@
+package com.serenitydojo.Exceptions;
+
+public class IllegalMathsOperatorException extends RuntimeException {
+ public IllegalMathsOperatorException(String message) {
+ super(message);
+ }
+}
diff --git a/src/main/java/com/serenitydojo/calculator/Calculator.java b/src/main/java/com/serenitydojo/calculator/Calculator.java
index 8e88bf0..78c2f53 100644
--- a/src/main/java/com/serenitydojo/calculator/Calculator.java
+++ b/src/main/java/com/serenitydojo/calculator/Calculator.java
@@ -1,7 +1,43 @@
package com.serenitydojo.calculator;
+import com.serenitydojo.Exceptions.IllegalMathsOperatorException;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
public class Calculator {
public int evaluate(String expression) {
- return 0;
+ List splittedExpression = Arrays.stream(expression.split(" ")).collect(Collectors.toList());
+ List operands = List.of("1","2","3","4","5","6","7","8","9","0");
+
+ int expressionTotal =0;
+ String operand ="+";
+
+ if (expression.isEmpty()) {
+ return 0;
+ }
+ for(String character : splittedExpression) {
+ if (!operands.contains(character)) {
+ operand = character;
+ } else {
+ expressionTotal = calculateOperation(expressionTotal, operand, character);
+ }
+ }
+ return expressionTotal;
+ }
+
+ private int calculateOperation(int total, String operand, String token) {
+ switch (operand) {
+ case "+":
+ return total + Integer.parseInt(token);
+ case "-":
+ return total - Integer.parseInt(token);
+ case "*":
+ return total * Integer.parseInt(token);
+ default:
+ throw new IllegalMathsOperatorException(operand + "Does not exist");
+ }
}
}
+
diff --git a/src/test/java/com/serenitydojo/calculator/WhenDoingMaths.java b/src/test/java/com/serenitydojo/calculator/WhenDoingMaths.java
index eac4b31..44c4b5e 100644
--- a/src/test/java/com/serenitydojo/calculator/WhenDoingMaths.java
+++ b/src/test/java/com/serenitydojo/calculator/WhenDoingMaths.java
@@ -1,5 +1,6 @@
package com.serenitydojo.calculator;
+import com.serenitydojo.Exceptions.IllegalMathsOperatorException;
import org.apache.commons.lang3.StringUtils;
import org.junit.Test;
@@ -13,38 +14,38 @@ public void shouldReturnZeroForAnEmptyString() {
assertThat(calculator.evaluate("")).isEqualTo(0);
}
-// @Test(expected = IllegalMathsOperatorException.class)
-// public void shouldReportNonSupportedOperations() {
-// calculator.evaluate("1 ^ 2");
-// }
-//
-// @Test
-// public void shouldReturnTheValueOfASingleNumber() {
-// assertThat(calculator.evaluate("1")).isEqualTo(1);
-// }
-//
-// @Test
-// public void shouldAddTwoNumbers() {
-// assertThat(calculator.evaluate("1 + 1")).isEqualTo(2);
-// }
-//
-// @Test
-// public void shouldAddThreeNumbers() {
-// assertThat(calculator.evaluate("1 + 2 + 3")).isEqualTo(6);
-// }
-//
-// @Test
-// public void shouldAlsoSubtract() {
-// assertThat(calculator.evaluate("10 - 6")).isEqualTo(4);
-// }
-//
-// @Test
-// public void shouldAddAndSubtract() {
-// assertThat(calculator.evaluate("10 + 5 - 6")).isEqualTo(9);
-// }
-//
-// @Test
-// public void shouldMultiplyNumbers() {
-// assertThat(calculator.evaluate("10 * 5")).isEqualTo(50);
-// }
+ @Test(expected = IllegalMathsOperatorException.class)
+ public void shouldReportNonSupportedOperations() {
+ calculator.evaluate("1 ^ 2");
+ }
+
+ @Test
+ public void shouldReturnTheValueOfASingleNumber() {
+ assertThat(calculator.evaluate("1")).isEqualTo(1);
+ }
+
+ @Test
+ public void shouldAddTwoNumbers() throws IllegalMathsOperatorException {
+ assertThat(calculator.evaluate("1 + 1")).isEqualTo(2);
+ }
+
+ @Test
+ public void shouldAddThreeNumbers() {
+ assertThat(calculator.evaluate("1 + 2 + 3")).isEqualTo(6);
+ }
+
+ @Test
+ public void shouldAlsoSubtract() {
+ assertThat(calculator.evaluate("10 - 6")).isEqualTo(4);
+ }
+
+ @Test
+ public void shouldAddAndSubtract() {
+ assertThat(calculator.evaluate("10 + 5 - 6")).isEqualTo(9);
+ }
+
+ @Test
+ public void shouldMultiplyNumbers() {
+ assertThat(calculator.evaluate("10 * 5")).isEqualTo(50);
+ }
}