1package junitparams;
2
3import static org.assertj.core.api.Assertions.assertThat;
4
5import java.util.*;
6
7import org.junit.*;
8import org.junit.runner.*;
9
10import junitparams.usage.person_example.*;
11
12@RunWith(JUnitParamsRunner.class)
13public class CastingParamsTest {
14
15    @Test
16    @Parameters
17    public void wrapWithTypeBySingleArgConstructor(PersonTest.Person person) {
18        assertThat(person.getAge()).isGreaterThan(0);
19    }
20    List<Integer> parametersForWrapWithTypeBySingleArgConstructor() {
21        return Arrays.asList(1, 2);
22    }
23
24    @Test
25    @Parameters
26    public void wrapWithTypeByMultiArgConstructor(PersonTest.Person person) {
27        assertThat(person.getAge()).isGreaterThan(0);
28    }
29    Object parametersForWrapWithTypeByMultiArgConstructor() {
30        return new Object[]{new Object[]{"first", 1}, new Object[]{"second", 2}};
31    }
32
33    @Test
34    @Parameters
35    public void cartoonCharacters(PersonTest.Person character) {
36        assertThat(character.getName()).isIn("Tarzan", "Jane");
37        assertThat(character.getAge()).isIn(0, 20);
38    }
39
40    private List<?> parametersForCartoonCharacters() {
41        return Arrays.asList(
42                new Object[]{"Tarzan", 0},
43                new Object[]{"Jane", 20}
44            );
45    }
46
47    @Test
48    @Parameters(method = "strings")
49    public void stringArrayFromMethod(String... values) {
50        assertThat(values).containsOnlyOnce("1", "2");
51    }
52    private Object strings() {
53        return new Object[]{new Object[]{"1", "2"}, new Object[]{"2", "1"}};
54    }
55
56    @Test
57    @Parameters({"a,b", "b,a"})
58    public void stringArrayFromAnnotation(String... values) {
59        assertThat(values).containsOnlyOnce("a","b");
60    }
61
62}
63