Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Assignment Finished #74

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
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/StringCalculatorTest.class
Binary file not shown.
67 changes: 66 additions & 1 deletion src/StringCalculator.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,74 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class StringCalculator {
public int add(String numbersStr) {
// Returns the sum of the numbers given in numbersStr
ArrayList<String> stringArray = new ArrayList<String>();
ArrayList<Integer> integerArray = new ArrayList<Integer>();
int result;

stringArray = getArrayFromString(numbersStr);
try {
integerArray = convertArrayList(stringArray);
} catch (StringCalculatorException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
result = calculateSum(integerArray);

// not yet implemented
return 0;
return result;
}

public ArrayList<String> getArrayFromString(String numbersStr){

if(numbersStr == "")
return new ArrayList<String>(Arrays.asList("0"));

String[] numbers = numbersStr.split(",|\\n", -1);
ArrayList<String> stringArray = new ArrayList<String>(Arrays.asList(numbers));

return stringArray;
}

public ArrayList<Integer> convertArrayList(ArrayList<String> stringArray) throws StringCalculatorException{

ArrayList<Integer> integerArray = new ArrayList<Integer>();

boolean numeric = true;
int number = 0;

for(String stringValue : stringArray) {

try {
number = Integer.parseInt(stringValue);
integerArray.add(number);
}catch(Exception e) {
numeric = false;
}

if(numeric == false) {
throw new StringCalculatorException();
}else if(number < 0) {
throw new StringCalculatorException();
}

}

return integerArray;
}

public int calculateSum(ArrayList<Integer> integerArray) {

int sum = 0;

for(int number : integerArray) {
sum += number;
}
return sum;
}


}
234 changes: 234 additions & 0 deletions tests/StringCalculatorTest.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,246 @@
import static org.junit.Assert.*;

import java.util.ArrayList;

import org.junit.Test;

public class StringCalculatorTest {

/*
@Test
public void test() {
fail("Not yet implemented");
}
*/

@Test
public void testGetArrayFromString_0_1() {
//Arrange
String numbersStr = "0,1";
ArrayList<String> numbers = new ArrayList<String>();
StringCalculator calc = new StringCalculator();
String[] expectedOutput = {"0", "1"};

//Act
numbers = calc.getArrayFromString(numbersStr);

//Assert
assertArrayEquals(expectedOutput, numbers.toArray());
}

@Test
public void testGetArrayFromString_1() {
//Arrange
String numbersStr = "1";
ArrayList<String> numbers = new ArrayList<String>();
StringCalculator calc = new StringCalculator();
String[] expectedOutput = {"1"};

//Act
numbers = calc.getArrayFromString(numbersStr);

//Assert
assertArrayEquals(expectedOutput, numbers.toArray());
}

@Test
public void testGetArrayFromString_EmptyString() {
//Arrange
String numbersStr = "";
ArrayList<String> numbers = new ArrayList<String>();
StringCalculator calc = new StringCalculator();
String[] expectedOutput = {"0"};

//Act
numbers = calc.getArrayFromString(numbersStr);

//Assert
assertArrayEquals(expectedOutput, numbers.toArray());
}

@Test
public void testGetArrayFromString_0_1_2_3_4_5_6() {
//Arrange
String numbersStr = "0,1,2,3,4,5,6";
ArrayList<String> numbers = new ArrayList<String>();
StringCalculator calc = new StringCalculator();
String[] expectedOutput = {"0", "1", "2", "3", "4", "5", "6"};

//Act
numbers = calc.getArrayFromString(numbersStr);

//Assert
assertArrayEquals(expectedOutput, numbers.toArray());
}

@Test
public void testConvertArray_0_1() {
//Arrange
ArrayList<String> stringArray = new ArrayList<String>();
stringArray.add("0");
stringArray.add("1");

StringCalculator calc = new StringCalculator();

ArrayList<Integer> integerArray = new ArrayList<Integer>();

ArrayList<Integer> expectedOutput = new ArrayList<Integer>();
expectedOutput.add(0);
expectedOutput.add(1);


//Act
try {
integerArray = calc.convertArrayList(stringArray);
} catch (StringCalculatorException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

//Assert
assertArrayEquals(expectedOutput.toArray(), integerArray.toArray());
}

@Test
public void testCalculateSum_3_4() {
//Arrange
ArrayList<Integer> integerArray = new ArrayList<Integer>();
integerArray.add(3);
integerArray.add(4);

StringCalculator calc = new StringCalculator();

int expectedSum = 7;

//Act
int result = calc.calculateSum(integerArray);

//Assert
assertEquals(expectedSum, result);
}

@Test
public void testCalculateSum_0_0() {
//Arrange
ArrayList<Integer> integerArray = new ArrayList<Integer>();
integerArray.add(0);
integerArray.add(0);

StringCalculator calc = new StringCalculator();

int expectedSum = 0;

//Act
int result = calc.calculateSum(integerArray);

//Assert
assertEquals(expectedSum, result);
}


@Test
public void testGetArrayFromString_NewLine() {
//Arrange
String numbersStr = "1\n2,3";
ArrayList<String> numbers = new ArrayList<String>();
StringCalculator calc = new StringCalculator();
String[] expectedOutput = {"1", "2", "3"};

//Act
numbers = calc.getArrayFromString(numbersStr);

//Assert
assertArrayEquals(expectedOutput, numbers.toArray());
}

@Test(expected = StringCalculatorException.class)
public void testConvertArray_Letter_StringCalculatorException() throws StringCalculatorException {
//Arrange
ArrayList<String> stringArray = new ArrayList<String>();
stringArray.add("0");
stringArray.add("a");

StringCalculator calc = new StringCalculator();

ArrayList<Integer> integerArray = new ArrayList<Integer>();

//Act
integerArray = calc.convertArrayList(stringArray);
}

@Test(expected = StringCalculatorException.class)
public void testConvertArray_DoubleValue_StringCalculatorException() throws StringCalculatorException {
//Arrange
ArrayList<String> stringArray = new ArrayList<String>();
stringArray.add("0");
stringArray.add("2.34");

StringCalculator calc = new StringCalculator();

ArrayList<Integer> integerArray = new ArrayList<Integer>();

//Act
integerArray = calc.convertArrayList(stringArray);
}


@Test(expected = StringCalculatorException.class)
public void testConvertArray_NegativeNumber_StringCalculatorException() throws StringCalculatorException {
//Arrange
ArrayList<String> stringArray = new ArrayList<String>();
stringArray.add("0");
stringArray.add("-1");

StringCalculator calc = new StringCalculator();

ArrayList<Integer> integerArray = new ArrayList<Integer>();

//Act
integerArray = calc.convertArrayList(stringArray);
}

@Test (expected = StringCalculatorException.class)
public void testInvalidInput_Comma_NewLine() throws StringCalculatorException{
//Arrange
String numbersStr = "1,\n";
ArrayList<String> stringArray = new ArrayList<String>();
StringCalculator calc = new StringCalculator();
ArrayList<Integer> integerArray = new ArrayList<Integer>();

//Act
stringArray = calc.getArrayFromString(numbersStr);
integerArray = calc.convertArrayList(stringArray);
}

@Test
public void testAdd_1_5_6_1_0() {
//Arrange
String numbersStr = "1,5,6,1,0";
int result;
StringCalculator calc = new StringCalculator();

//Act
result = calc.add(numbersStr);

//Assert
assertEquals(13, result);
}

@Test
public void testAdd_EmptyString() {
//Arrange
String numbersStr = "";
int result;
StringCalculator calc = new StringCalculator();

//Act
result = calc.add(numbersStr);

//Assert
assertEquals(0, result);
}




}