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
| package ch.itninja.labs.basicexercises;
import ch.itninja.labs.util.ItNinjaOutput;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class AgeCalculatorTest {
@ParameterizedTest
@CsvSource({
"1, 1, 9, 1973, 22, 7, 2025, 623",
"2, 15, 4, 2008, 8, 8, 2025, 209",
})
void givenNumbers_whenCalled_thenOutputAsExpected(int lab, int dayOfBirth, int monthOfBirth, int yearOfBirth,
int dayOfToday, int monthOfToday, int yearOfToday,
int monthsExpected) {
// GIVEN
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
PrintStream originalOut = System.out;
System.setOut(new PrintStream(outputStream));
AgeCalculator.dayOfBirth = dayOfBirth;
AgeCalculator.monthOfBirth = monthOfBirth;
AgeCalculator.yearOfBirth = yearOfBirth;
AgeCalculator.dayOfToday = dayOfToday;
AgeCalculator.monthOfToday = monthOfToday;
AgeCalculator.yearOfToday = yearOfToday;
String expectedResult = String.format("Ich bin am %02d.%02d.%04d geboren und heute am %02d.%02d.%04d %d Monate alt.",
dayOfBirth, monthOfBirth, yearOfBirth,
dayOfToday, monthOfToday, yearOfToday,
monthsExpected);
try {
// WHEN
AgeCalculator.ageInMonths();
} finally {
System.setOut(originalOut);
}
// THEN
String output = outputStream.toString().trim();
assertEquals(expectedResult, output, "Output is not as expected");
// For documentation
String input = String.format(
"AgeCalculator.dayOfBirth = %d;\n" +
"AgeCalculator.monthOfBirth = %d;\n" +
"AgeCalculator.yearOfBirth = %d;\n" +
"AgeCalculator.dayOfToday = %d;\n" +
"AgeCalculator.monthOfToday = %d;\n" +
"AgeCalculator.yearOfToday = %d;\n" +
"\n" +
"AgeCalculator.ageInMonths();",
dayOfBirth,
monthOfBirth,
yearOfBirth,
dayOfToday,
monthOfToday,
yearOfToday
);
ItNinjaOutput.PrintItNinjaOutput("AgeInMonths"+lab, input, output);
}
}
|