1fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffinpackage junitparams;
2fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin
3fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffinimport static org.assertj.core.api.Assertions.assertThat;
4fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin
5fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffinimport java.util.Arrays;
6fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffinimport java.util.List;
7fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin
8fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffinimport junitparams.usage.person_example.PersonTest;
9fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffinimport junitparams.usage.person_example.PersonTest.Person;
10fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin
11fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffinimport org.junit.Test;
12fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffinimport org.junit.runner.RunWith;
13fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin
14fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin@SuppressWarnings("unused")
15fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin@RunWith(JUnitParamsRunner.class)
16fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffinpublic class MethodAnnotationArgumentTest {
17fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin
18fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    @Test
19fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    @Parameters(method = "return1")
20fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    public void testSingleMethodName(int number) {
21fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin        assertThat(number).isEqualTo(1);
22fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    }
23fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin
24fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    private Integer[] return1() {
25fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin        return new Integer[] { 1 };
26fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    }
27fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin
28fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    @Test
29fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    @Parameters(method = "return1,return2")
30fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    public void testMultipleMethodNames(int number) {
31fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin        assertThat(number)
32fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin                .isLessThanOrEqualTo(2)
33fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin                .isGreaterThanOrEqualTo(1);
34fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    }
35fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin
36fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    @Test
37fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    @Parameters(method = "return1, return2")
38fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    public void testMultipleMethodNamesWithWhitespaces(int number) {
39fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin        assertThat(number)
40fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin                .isLessThanOrEqualTo(2)
41fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin                .isGreaterThanOrEqualTo(1);
42fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    }
43fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin
44fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    private Integer[] return2() {
45fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin        return new Integer[] { 2 };
46fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    }
47fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin
48fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    @Test
49fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    @Parameters(source = PersonTest.class, method = "adultValues")
50fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    public void testSingleMethodFromDifferentClass(int age, boolean valid) {
51fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin        assertThat(new Person(age).isAdult()).isEqualTo(valid);
52fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    }
53fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin
54fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    @Test
55fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    @Parameters(method = "stringParamsWithNull")
56fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    public void shouldPassStringParamsWithNullFromMethod(String parameter) {
57fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin        // given
58fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin        List<String> acceptedParams = Arrays.asList("1", "2", "3", null);
59fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin
60fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin        // then
61fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin        assertThat(acceptedParams).contains(parameter);
62fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    }
63fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin
64fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    Object[] stringParamsWithNull() {
65fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin        return genericArray("1", "2", "3", null);
66fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    }
67fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin
68fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    @Test
69fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    @Parameters(method = "multiStringParams")
70fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    public void shouldPassMultiStringParams(String first, String second) {
71fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin        assertThat(first).isEqualTo(second);
72fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    }
73fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin
74fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    Object[] multiStringParams() {
75fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin        return genericArray(
76fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin                genericArray("test", "test"),
77fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin                genericArray("ble", "ble"));
78fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    }
79fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin
80fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    private static <T> T[] genericArray(T... elements) {
81fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin        return elements;
82fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin    }
83fd1f9491413fcdbfae3cbd43651db31fdabce41aPaul Duffin}
84