11d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertpackage junitparams;
21d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
31d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport static org.assertj.core.api.Assertions.assertThat;
41d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
51d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.Arrays;
61d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.List;
71d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
81d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport junitparams.usage.person_example.PersonTest;
91d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport junitparams.usage.person_example.PersonTest.Person;
101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport org.junit.Test;
121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport org.junit.runner.RunWith;
131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert@SuppressWarnings("unused")
151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert@RunWith(JUnitParamsRunner.class)
161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertpublic class MethodAnnotationArgumentTest {
171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    @Test
190888a09821a98ac0680fad765217302858e70fa4Paul Duffin    @Parameters(method = "return1")
201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    public void testSingleMethodName(int number) {
211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        assertThat(number).isEqualTo(1);
221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    private Integer[] return1() {
251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        return new Integer[] { 1 };
261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    @Test
291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    @Parameters(method = "return1,return2")
301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    public void testMultipleMethodNames(int number) {
311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        assertThat(number)
320888a09821a98ac0680fad765217302858e70fa4Paul Duffin                .isLessThanOrEqualTo(2)
331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert                .isGreaterThanOrEqualTo(1);
341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    @Test
371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    @Parameters(method = "return1, return2")
381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    public void testMultipleMethodNamesWithWhitespaces(int number) {
391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        assertThat(number)
401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert                .isLessThanOrEqualTo(2)
411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert                .isGreaterThanOrEqualTo(1);
420888a09821a98ac0680fad765217302858e70fa4Paul Duffin    }
431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
440888a09821a98ac0680fad765217302858e70fa4Paul Duffin    private Integer[] return2() {
451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        return new Integer[] { 2 };
460888a09821a98ac0680fad765217302858e70fa4Paul Duffin    }
471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
480888a09821a98ac0680fad765217302858e70fa4Paul Duffin    @Test
491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    @Parameters(source = PersonTest.class, method = "adultValues")
500888a09821a98ac0680fad765217302858e70fa4Paul Duffin    public void testSingleMethodFromDifferentClass(int age, boolean valid) {
511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        assertThat(new Person(age).isAdult()).isEqualTo(valid);
520888a09821a98ac0680fad765217302858e70fa4Paul Duffin    }
531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
540888a09821a98ac0680fad765217302858e70fa4Paul Duffin    @Test
551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    @Parameters(method = "stringParamsWithNull")
561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    public void shouldPassStringParamsWithNullFromMethod(String parameter) {
571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        // given
581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        List<String> acceptedParams = Arrays.asList("1", "2", "3", null);
590888a09821a98ac0680fad765217302858e70fa4Paul Duffin
601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert        // then
610888a09821a98ac0680fad765217302858e70fa4Paul Duffin        assertThat(acceptedParams).contains(parameter);
621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
630888a09821a98ac0680fad765217302858e70fa4Paul Duffin
641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    Object[] stringParamsWithNull() {
650888a09821a98ac0680fad765217302858e70fa4Paul Duffin        return genericArray("1", "2", "3", null);
661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
670888a09821a98ac0680fad765217302858e70fa4Paul Duffin
681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    @Test
690888a09821a98ac0680fad765217302858e70fa4Paul Duffin    @Parameters(method = "multiStringParams")
701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    public void shouldPassMultiStringParams(String first, String second) {
710888a09821a98ac0680fad765217302858e70fa4Paul Duffin        assertThat(first).isEqualTo(second);
721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
730888a09821a98ac0680fad765217302858e70fa4Paul Duffin
741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    Object[] multiStringParams() {
750888a09821a98ac0680fad765217302858e70fa4Paul Duffin        return genericArray(
761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert                genericArray("test", "test"),
770888a09821a98ac0680fad765217302858e70fa4Paul Duffin                genericArray("ble", "ble"));
781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    }
790888a09821a98ac0680fad765217302858e70fa4Paul Duffin
801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert    private static <T> T[] genericArray(T... elements) {
810888a09821a98ac0680fad765217302858e70fa4Paul Duffin        return elements;
820888a09821a98ac0680fad765217302858e70fa4Paul Duffin    }
830888a09821a98ac0680fad765217302858e70fa4Paul Duffin}
840888a09821a98ac0680fad765217302858e70fa4Paul Duffin