diff --git a/bin/StringCalculator.class b/bin/StringCalculator.class index a937b0c..2879614 100644 Binary files a/bin/StringCalculator.class and b/bin/StringCalculator.class differ diff --git a/bin/StringCalculatorTest.class b/bin/StringCalculatorTest.class index d44b83f..053abfb 100644 Binary files a/bin/StringCalculatorTest.class and b/bin/StringCalculatorTest.class differ diff --git a/src/StringCalculator.java b/src/StringCalculator.java index 487916b..1d4c076 100644 --- a/src/StringCalculator.java +++ b/src/StringCalculator.java @@ -1,9 +1,31 @@ public class StringCalculator { - public int add(String numbersStr) { - // Returns the sum of the numbers given in numbersStr + public int add(String numbersStr) throws StringCalculatorException { + int total = 0; + int list = 0; - // not yet implemented - return 0; + if (numbersStr.length()==0) { + return 0; + } + else { + + while (list < numbersStr.length()) { + char character = numbersStr.charAt(list); + if (character !=',' && character !='\n') { + if (Character.isDigit(character) == true) { + total+= Character.getNumericValue(character); + } else { + throw new StringCalculatorException(); + } + } else { + if (numbersStr.length() > (list + 1) && + Character.isDigit(numbersStr.charAt(list + 1)) == false) { + throw new StringCalculatorException(); + } + } + list++; + } + return total; + } } } diff --git a/tests/StringCalculatorTest.java b/tests/StringCalculatorTest.java index 4ec9afe..e9b852c 100644 --- a/tests/StringCalculatorTest.java +++ b/tests/StringCalculatorTest.java @@ -3,10 +3,59 @@ import org.junit.Test; public class StringCalculatorTest { - + + @Test + public void testOneNumber() throws StringCalculatorException{ + StringCalculator calculator = new StringCalculator(); + // Assert + assertEquals(1,calculator.add("1")); + } + @Test - public void test() { - fail("Not yet implemented"); + public void testTwoNumbers() throws StringCalculatorException{ + StringCalculator calculator = new StringCalculator(); + // Assert + assertEquals(3,calculator.add("1,2")); + assertEquals(6,calculator.add("4,2")); + assertEquals(6,calculator.add("4\n2")); + } + + @Test + public void testManyNumbers2() throws StringCalculatorException{ + StringCalculator calculator = new StringCalculator(); + // Assert + assertEquals(23,calculator.add("4,5,6,8")); -} + } + + @Test + public void testZero() throws StringCalculatorException{ + StringCalculator calculator = new StringCalculator(); + // Assert + assertEquals(0, calculator.add("")); + } + @Test + public void testNewLine() throws StringCalculatorException { + StringCalculator calculator = new StringCalculator(); + + assertEquals(6, calculator.add("1\n2,3")); + assertEquals(22, calculator.add("4,5\n6,7")); + assertEquals(18, calculator.add("1,8\n9")); + } + + @Test (expected = StringCalculatorException.class) + public void testWrongValues() throws StringCalculatorException{ + StringCalculator calculator = new StringCalculator(); + calculator.add("1234"); + calculator.add(",,,,,1"); + calculator.add("1,"); + calculator.add("t"); + } + @Test (expected = StringCalculatorException.class) + public void testhNegativeNumbers() throws StringCalculatorException { + StringCalculator calculator = new StringCalculator(); + + calculator.add("-3,-4"); + } +} \ No newline at end of file