1 package junitparams.usage; 2 3 import java.util.Arrays; 4 import java.util.Date; 5 import java.util.Iterator; 6 import java.util.List; 7 8 import org.junit.Ignore; 9 import org.junit.Test; 10 import org.junit.runner.RunWith; 11 12 import junitparams.FileParameters; 13 import junitparams.JUnitParamsRunner; 14 import junitparams.Parameters; 15 import junitparams.ParametersReaderProvidersTest; 16 import junitparams.ParamsConverterTest; 17 import junitparams.converters.Param; 18 import junitparams.custom.combined.CombinedParameters; 19 import junitparams.mappers.CsvWithHeaderMapper; 20 import junitparams.naming.TestCaseName; 21 import junitparams.usage.person_example.PersonMapper; 22 import junitparams.usage.person_example.PersonTest; 23 import junitparams.usage.person_example.PersonType; 24 25 import static junitparams.JUnitParamsRunner.*; 26 import static org.assertj.core.api.Assertions.*; 27 28 @RunWith(JUnitParamsRunner.class) 29 public class SamplesOfUsageTest { 30 31 @Test 32 @Parameters({"AAA,1", "BBB,2"}) paramsInAnnotation(String p1, Integer p2)33 public void paramsInAnnotation(String p1, Integer p2) { } 34 35 @Test 36 @Parameters({"AAA|1", "BBB|2"}) paramsInAnnotationPipeSeparated(String p1, Integer p2)37 public void paramsInAnnotationPipeSeparated(String p1, Integer p2) { } 38 39 @Test 40 @Parameters paramsInDefaultMethod(String p1, Integer p2)41 public void paramsInDefaultMethod(String p1, Integer p2) { } parametersForParamsInDefaultMethod()42 private Object parametersForParamsInDefaultMethod() { 43 return new Object[]{new Object[]{"AAA", 1}, new Object[]{"BBB", 2}}; 44 } 45 46 @Test 47 @Parameters(method = "named1") paramsInNamedMethod(String p1, Integer p2)48 public void paramsInNamedMethod(String p1, Integer p2) { } named1()49 private Object named1() { 50 return new Object[]{"AAA", 1}; 51 } 52 53 @Test 54 @Parameters(method = "named2,named3") paramsInMultipleMethods(String p1, Integer p2)55 public void paramsInMultipleMethods(String p1, Integer p2) { } named2()56 private Object named2() { 57 return new Object[]{"AAA", 1}; 58 } named3()59 private Object named3() { 60 return new Object[]{"BBB", 2}; 61 } 62 63 @Test 64 @Parameters(method = "named4") paramsWithVarargs(String... args)65 public void paramsWithVarargs(String... args) { 66 assertThat(args).isEqualTo(new String[]{"AAA", "BBB"}); 67 } named4()68 private Object named4() { return new Object[]{new String[]{"AAA", "BBB"}}; } 69 70 @Test 71 @Parameters(source = ParametersReaderProvidersTest.OneIntegerProvider.class) paramsFromExternalClass(int integer)72 public void paramsFromExternalClass(int integer) { } 73 74 @Test 75 @Parameters paramsInCollection(String p1)76 public void paramsInCollection(String p1) { } parametersForParamsInCollection()77 private List<String> parametersForParamsInCollection() { return Arrays.asList("a"); } 78 79 @Test 80 @Parameters paramsInIterator(String p1)81 public void paramsInIterator(String p1) { } parametersForParamsInIterator()82 private Iterator<String> parametersForParamsInIterator() { return Arrays.asList("a").iterator(); } 83 84 @Test 85 @Parameters({"SOME_VALUE", "OTHER_VALUE"}) enumsAsParamInAnnotation(PersonType person)86 public void enumsAsParamInAnnotation(PersonType person) { } 87 88 @Test 89 @Parameters enumsAsParamsInMethod(PersonType person)90 public void enumsAsParamsInMethod(PersonType person) { } parametersForEnumsAsParamsInMethod()91 private PersonType[] parametersForEnumsAsParamsInMethod() { return (PersonType[]) new PersonType[] {PersonType.SOME_VALUE}; } 92 93 @Test 94 @Parameters(source = PersonType.class) enumAsSource(PersonType personType)95 public void enumAsSource(PersonType personType) { 96 } 97 98 @Test 99 @Parameters wrapParamsWithConstructor(PersonTest.Person person)100 public void wrapParamsWithConstructor(PersonTest.Person person) { } parametersForWrapParamsWithConstructor()101 private Object parametersForWrapParamsWithConstructor() { 102 return new Object[]{new Object[]{"first", 1}, new Object[]{"second", 2}}; 103 } 104 105 // Android-changed: does not work when run on device as it does not have access to the file 106 @Ignore 107 @Test 108 @FileParameters("src/test/resources/test.csv") loadParamsFromCsv(int age, String name)109 public void loadParamsFromCsv(int age, String name) { } 110 111 // Android-changed: does not work when run on device as it does not have access to the file 112 @Ignore 113 @Test 114 @FileParameters(value = "src/test/resources/test.csv", mapper = PersonMapper.class) loadParamsFromAnyFile(PersonTest.Person person)115 public void loadParamsFromAnyFile(PersonTest.Person person) { } 116 117 @Test 118 @FileParameters("classpath:test.csv") loadParamsFromClasspath(int age, String name)119 public void loadParamsFromClasspath(int age, String name) { } 120 121 @Test 122 @FileParameters(value = "classpath:with_header.csv", mapper = CsvWithHeaderMapper.class) loadParamsFromCsvWithHeader(int id, String name)123 public void loadParamsFromCsvWithHeader(int id, String name) { } 124 125 @Test 126 @Parameters({ "01.12.2012" }) convertParams(@aramconverter = ParamsConverterTest.SimpleDateConverter.class) Date date)127 public void convertParams(@Param(converter = ParamsConverterTest.SimpleDateConverter.class) Date date) {} 128 129 @Test 130 @Parameters("please\\, escape commas if you use it here and don't want your parameters to be splitted") commasInParametersUsage(String phrase)131 public void commasInParametersUsage(String phrase) { } 132 133 // Android-changed: CTS and AndroidJUnitRunner rely on specific format to test names, changing 134 // them will prevent CTS and AndroidJUnitRunner from working properly; see b/36541809 135 @Ignore 136 @Test 137 @Parameters({ "1,1", "2,2", "3,6" }) 138 @TestCaseName("factorial({0}) = {1}") customNamesForTestCase(int argument, int result)139 public void customNamesForTestCase(int argument, int result) { } 140 141 // Android-changed: CTS and AndroidJUnitRunner rely on specific format to test names, changing 142 // them will prevent CTS and AndroidJUnitRunner from working properly; see b/36541809 143 @Ignore 144 @Test 145 @Parameters({ "value1, value2", "value3, value4" }) 146 @TestCaseName("[{index}] {method}: {params}") predefinedMacroForTestCaseNames(String param1, String param2)147 public void predefinedMacroForTestCaseNames(String param1, String param2) { } 148 mixedParameters()149 public Object mixedParameters() { 150 boolean booleanValue = true; 151 int[] primitiveArray = {1, 2, 3}; 152 String stringValue = "Test"; 153 String[] stringArray = {"one", "two", null}; 154 return $( 155 $(booleanValue, primitiveArray, stringValue, stringArray) 156 ); 157 } 158 159 // Android-changed: CTS and AndroidJUnitRunner rely on specific format to test names, changing 160 // them will prevent CTS and AndroidJUnitRunner from working properly; see b/36541809 161 @Ignore 162 @Test 163 @Parameters(method = "mixedParameters") 164 @TestCaseName("{0}, {1}, {2}, {3}") usageOfMultipleTypesOfParameters( boolean booleanValue, int[] primitiveArray, String stringValue, String[] stringArray)165 public void usageOfMultipleTypesOfParameters( 166 boolean booleanValue, int[] primitiveArray, String stringValue, String[] stringArray) { 167 } 168 169 @Test 170 @CombinedParameters({"AAA,BBB", "1|2"}) combineParamsInAnnotation(String p1, Integer p2)171 public void combineParamsInAnnotation(String p1, Integer p2) {} 172 173 } 174