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
Binary file modified bin/StringCalculator.class
Binary file not shown.
Binary file modified bin/StringCalculatorException.class
Binary file not shown.
Binary file modified bin/StringCalculatorTest.class
Binary file not shown.
58 changes: 55 additions & 3 deletions src/StringCalculator.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,61 @@

public class StringCalculator {
public int add(String numbersStr) {
public int add(String numbersStr) throws StringCalculatorException {
// Returns the sum of the numbers given in numbersStr
int sum = 0;
int[] newNumbersInt = invalidNegtive(numbersStr);

// not yet implemented
return 0;
if(newNumbersInt.length == 0){
return 0;
}

for(int i=0; i<newNumbersInt.length; i++){
sum = sum + newNumbersInt[i];
}

return sum;

}

public String handleNewLines(String numberStr){
String newString = numberStr.replaceAll("\n", ",");
return newString;
}

public int counterSpliter(String newString){
int count = 0;

for(int i=0;i<newString.length(); i++){
if(newString.charAt(i) == ','){
count++;
}
}
return count;
}

public int[] invalidNegtive(String numbersStr) throws StringCalculatorException{
String numberStr = handleNewLines(numbersStr);
int count1 = counterSpliter(numberStr);
String[] newString = numberStr.split(",");
int[] numbersInt = new int[newString.length];

try{
for(int i=0; i< numbersInt.length; i++){
int integer = Integer.parseInt(newString[i]);

if(integer<0){
throw new StringCalculatorException("Negtive number!");
}

if(count1 != (numbersInt.length - 1)){
throw new StringCalculatorException("invalid!");
}
numbersInt[i] = integer;
}
}catch(NumberFormatException e){
throw new StringCalculatorException("invalid!");
}

return numbersInt;
}
}
3 changes: 3 additions & 0 deletions src/StringCalculatorException.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@

public class StringCalculatorException extends Exception {
public StringCalculatorException(String message){
super(message);
}

}
97 changes: 95 additions & 2 deletions tests/StringCalculatorTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,101 @@
public class StringCalculatorTest {

@Test
public void test() {
fail("Not yet implemented");
public void testReturn_Sum_1_2() throws StringCalculatorException {
//Arrange
StringCalculator cal = new StringCalculator();
//Act
int sum = cal.add("1,2");
assertEquals(3, sum);

}

@Test
public void testReturn_Sum_0() throws StringCalculatorException {
//Arrange
StringCalculator cal = new StringCalculator();
//Act
int sum = cal.add("0");
assertEquals(0, sum);
}

@Test
public void testReturn_Sum_1_2_3() throws StringCalculatorException {
//Arrange
StringCalculator cal = new StringCalculator();
//Act
int sum = cal.add("1,2,3");
assertEquals(6, sum);

}

@Test
public void testHandle_NewLine_1_2() throws StringCalculatorException{
//Arrange
StringCalculator cal = new StringCalculator();
//Act
String str = cal.handleNewLines("1\n2");
assertEquals("1,2", str);
}

@Test
public void testHandle_NewLine_1_2_3() throws StringCalculatorException{
//Arrange
StringCalculator cal = new StringCalculator();
//Act
String str = cal.handleNewLines("1,2\n3");
assertEquals("1,2,3", str);
}

@Test(expected = StringCalculatorException.class)
public void testInvalidNegtive_Invalid1() throws StringCalculatorException{
//Arrange
StringCalculator cal = new StringCalculator();
//Act
int[] numbers = cal.invalidNegtive("1,2\n");
}

@Test(expected = StringCalculatorException.class)
public void testInvalidNegtive_Negtive() throws StringCalculatorException{
//Arrange
StringCalculator cal = new StringCalculator();
//Act
int[] numbers = cal.invalidNegtive("-1");
}

@Test(expected = StringCalculatorException.class)
public void testInvalidNegtive_Invalid() throws StringCalculatorException{
//Arrange
StringCalculator cal = new StringCalculator();
//Act
int[] numbers = cal.invalidNegtive("abc");
}


@Test(expected = StringCalculatorException.class)
public void testInvalidNegtive_1_2_a() throws StringCalculatorException{
//Arrange
StringCalculator cal = new StringCalculator();
//Act
int[] sum = cal.invalidNegtive("1,2,a");
}


@Test(expected = StringCalculatorException.class)
public void testInvalidNegtive_1_2_valid() throws StringCalculatorException{
//Arrange
StringCalculator cal = new StringCalculator();
//Act
int[] sum = cal.invalidNegtive("1,2,#");
}


@Test(expected = StringCalculatorException.class)
public void testInvalidNegtive_1_invalid() throws StringCalculatorException{
//Arrange
StringCalculator cal = new StringCalculator();
//Act
int[] sum = cal.invalidNegtive("1,\n");
}

}