-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStringKataTest.java
More file actions
99 lines (82 loc) · 2.44 KB
/
Copy pathStringKataTest.java
File metadata and controls
99 lines (82 loc) · 2.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package com.hasid.tddkata;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
public class StringCalculatorTest
{
private void testAdd(final String input, final int expectedOutput) {
final StringCalculator calculator = new StringCalculator();
final int actualOutput = calculator.add(input);
assertEquals(expectedOutput, actualOutput);
}
@Test
public void emptyStringShouldReturnZero()
{
testAdd("", 0);
}
@Test
public void singleNumberShouldReturnTheNumberItself()
{
testAdd("5", 5);
}
@Test
public void twoNumbersShouldReturnTheirSum() {
testAdd("1,2", 3);
}
@Test
public void onlySpacesShouldReturnZero() {
testAdd(" ", 0);
}
@Test
public void singleNumberWithExtraSpacesShouldReturnTheNumber() {
testAdd(" 1 ", 1);
}
@Test
public void twoNumbersWithSpacesShouldReturnTheirSum() {
testAdd(" 1 , 2 ", 3);
}
@Test
public void moreThanTwoNumbersShouldReturnTheirSum() {
testAdd("1,1,1", 3);
testAdd("1,2,3", 6);
testAdd("1,1,1,1", 4);
}
@Test
public void numbersSeparatedByNewLineShouldReturnTheirSum() {
testAdd("1\n2\n3", 6);
testAdd("1\n2,3", 6);
}
@Test
public void customDelimiterInFirstLineShouldBeHonoured() {
testAdd("//;\n1;2", 3);
testAdd("//;\n1;2;3", 6);
testAdd("//*\n1*2", 3);
testAdd("//*\n1*2*3", 6);
}
@Test
public void negativeNumbersShouldThrowException() {
final StringCalculator calculator = new StringCalculator();
try {
calculator.add("1,-2,3,-4");
assertTrue(false);
} catch(Exception e) {
// expected to fail
assertTrue(e.getMessage().contains("-2") && e.getMessage().contains("-4"));
}
}
@Test
public void numbersGreaterThan1000ShouldBeIgnored() {
testAdd("1001,2", 2);
testAdd("//*\n1002*5", 5);
}
@Test
public void anyLengthSeparatorShouldBeAllowed() {
testAdd("//[***]\n1***2***3", 6);
testAdd("//[...]\n1...2...3", 6);
}
@Test
public void multipleSeparatorsShouldBeAllowed() {
testAdd("//[*][%]\n1*2%3", 6);
testAdd("//[**][%%]\n1**2%%3", 6);
}
}