package junitparams.usage; import java.util.Arrays; import java.util.Date; import java.util.Iterator; import java.util.List; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import junitparams.FileParameters; import junitparams.JUnitParamsRunner; import junitparams.Parameters; import junitparams.ParametersReaderProvidersTest; import junitparams.ParamsConverterTest; import junitparams.converters.Param; import junitparams.custom.combined.CombinedParameters; import junitparams.mappers.CsvWithHeaderMapper; import junitparams.naming.TestCaseName; import junitparams.usage.person_example.PersonMapper; import junitparams.usage.person_example.PersonTest; import junitparams.usage.person_example.PersonType; import static junitparams.JUnitParamsRunner.*; import static org.assertj.core.api.Assertions.*; @RunWith(JUnitParamsRunner.class) public class SamplesOfUsageTest { @Test @Parameters({"AAA,1", "BBB,2"}) public void paramsInAnnotation(String p1, Integer p2) { } @Test @Parameters({"AAA|1", "BBB|2"}) public void paramsInAnnotationPipeSeparated(String p1, Integer p2) { } @Test @Parameters public void paramsInDefaultMethod(String p1, Integer p2) { } private Object parametersForParamsInDefaultMethod() { return new Object[]{new Object[]{"AAA", 1}, new Object[]{"BBB", 2}}; } @Test @Parameters(method = "named1") public void paramsInNamedMethod(String p1, Integer p2) { } private Object named1() { return new Object[]{"AAA", 1}; } @Test @Parameters(method = "named2,named3") public void paramsInMultipleMethods(String p1, Integer p2) { } private Object named2() { return new Object[]{"AAA", 1}; } private Object named3() { return new Object[]{"BBB", 2}; } @Test @Parameters(method = "named4") public void paramsWithVarargs(String... args) { assertThat(args).isEqualTo(new String[]{"AAA", "BBB"}); } private Object named4() { return new Object[]{new String[]{"AAA", "BBB"}}; } @Test @Parameters(source = ParametersReaderProvidersTest.OneIntegerProvider.class) public void paramsFromExternalClass(int integer) { } @Test @Parameters public void paramsInCollection(String p1) { } private List<String> parametersForParamsInCollection() { return Arrays.asList("a"); } @Test @Parameters public void paramsInIterator(String p1) { } private Iterator<String> parametersForParamsInIterator() { return Arrays.asList("a").iterator(); } @Test @Parameters({"SOME_VALUE", "OTHER_VALUE"}) public void enumsAsParamInAnnotation(PersonType person) { } @Test @Parameters public void enumsAsParamsInMethod(PersonType person) { } private PersonType[] parametersForEnumsAsParamsInMethod() { return (PersonType[]) new PersonType[] {PersonType.SOME_VALUE}; } @Test @Parameters(source = PersonType.class) public void enumAsSource(PersonType personType) { } @Test @Parameters public void wrapParamsWithConstructor(PersonTest.Person person) { } private Object parametersForWrapParamsWithConstructor() { return new Object[]{new Object[]{"first", 1}, new Object[]{"second", 2}}; } // Android-changed: does not work when run on device as it does not have access to the file @Ignore @Test @FileParameters("src/test/resources/test.csv") public void loadParamsFromCsv(int age, String name) { } // Android-changed: does not work when run on device as it does not have access to the file @Ignore @Test @FileParameters(value = "src/test/resources/test.csv", mapper = PersonMapper.class) public void loadParamsFromAnyFile(PersonTest.Person person) { } @Test @FileParameters("classpath:test.csv") public void loadParamsFromClasspath(int age, String name) { } @Test @FileParameters(value = "classpath:with_header.csv", mapper = CsvWithHeaderMapper.class) public void loadParamsFromCsvWithHeader(int id, String name) { } @Test @Parameters({ "01.12.2012" }) public void convertParams(@Param(converter = ParamsConverterTest.SimpleDateConverter.class) Date date) {} @Test @Parameters("please\\, escape commas if you use it here and don't want your parameters to be splitted") public void commasInParametersUsage(String phrase) { } // Android-changed: CTS and AndroidJUnitRunner rely on specific format to test names, changing // them will prevent CTS and AndroidJUnitRunner from working properly; see b/36541809 @Ignore @Test @Parameters({ "1,1", "2,2", "3,6" }) @TestCaseName("factorial({0}) = {1}") public void customNamesForTestCase(int argument, int result) { } // Android-changed: CTS and AndroidJUnitRunner rely on specific format to test names, changing // them will prevent CTS and AndroidJUnitRunner from working properly; see b/36541809 @Ignore @Test @Parameters({ "value1, value2", "value3, value4" }) @TestCaseName("[{index}] {method}: {params}") public void predefinedMacroForTestCaseNames(String param1, String param2) { } public Object mixedParameters() { boolean booleanValue = true; int[] primitiveArray = {1, 2, 3}; String stringValue = "Test"; String[] stringArray = {"one", "two", null}; return $( $(booleanValue, primitiveArray, stringValue, stringArray) ); } // Android-changed: CTS and AndroidJUnitRunner rely on specific format to test names, changing // them will prevent CTS and AndroidJUnitRunner from working properly; see b/36541809 @Ignore @Test @Parameters(method = "mixedParameters") @TestCaseName("{0}, {1}, {2}, {3}") public void usageOfMultipleTypesOfParameters( boolean booleanValue, int[] primitiveArray, String stringValue, String[] stringArray) { } @Test @CombinedParameters({"AAA,BBB", "1|2"}) public void combineParamsInAnnotation(String p1, Integer p2) {} }