@Test @Parameters({ "testdata" }) public void filterOutInJectedTypesFromOptionalValuesTest(XmlTest xmlTest, @Optional("optionaltestdata") String testdata) { JDK15AnnotationFinder finder = new JDK15AnnotationFinder(null); Method curMethod = new Object() {}.getClass().getEnclosingMethod(); FilterOutInJectedTypesResult filterOutResult = org.testng.internal.Parameters.filterOutInJectedTypesFromOptionalValues( curMethod.getParameterTypes(), finder.findOptionalValues(curMethod)); Assert.assertEquals(filterOutResult.getOptionalValues()[0], "optionaltestdata"); Assert.assertEquals(filterOutResult.getParameterTypes()[0], String.class); }
/** * Remove injected types from parameterTypes and optionalValues * * @param parameterTypes - The parameter types to be used * @param optionalValues - The optional values to be considered. * @return FilterOutInJectedTypesResult */ static FilterOutInJectedTypesResult filterOutInJectedTypesFromOptionalValues( Class<?>[] parameterTypes, String[] optionalValues) { List<Class<?>> typeList = Lists.newArrayList(parameterTypes); List<String> optionalValueList = Lists.newArrayList(optionalValues); Iterator<Class<?>> typeIterator = typeList.iterator(); Iterator<String> optionalIterator = optionalValueList.iterator(); while (typeIterator.hasNext()) { Class<?> parameterType = typeIterator.next(); optionalIterator.next(); if (INJECTED_TYPES.contains(parameterType)) { optionalIterator.remove(); typeIterator.remove(); } } return new FilterOutInJectedTypesResult( typeList.toArray(new Class<?>[0]), optionalValueList.toArray(new String[0])); }
FilterOutInJectedTypesResult filterOutResult = filterOutInJectedTypesFromOptionalValues(parameterTypes, optionalValues); optionalValues = filterOutResult.getOptionalValues(); parameterTypes = filterOutResult.getParameterTypes();
if (optionalValues.length != parameterNames.length) { FilterOutInJectedTypesResult filterOutResult = filterOutInJectedTypesFromOptionalValues(parameterTypes, optionalValues); optionalValues = filterOutResult.getOptionalValues(); parameterTypes = filterOutResult.getParameterTypes();
/** * Remove injected types from parameterTypes and optionalValues * @param parameterTypes * @param optionalValues * @return FilterOutInJectedTypesResult */ static FilterOutInJectedTypesResult filterOutInJectedTypesFromOptionalValues(Class<?>[] parameterTypes, String[] optionalValues) { List<Class<?>> typeList = Lists.newArrayList(parameterTypes); List<String> optionalValueList = Lists.newArrayList(optionalValues); Iterator<Class<?>> typeIterator = typeList.iterator(); Iterator<String> optionalIterator = optionalValueList.iterator(); while (typeIterator.hasNext()) { Class<?> parameterType = typeIterator.next(); optionalIterator.next(); if (INJECTED_TYPES.contains(parameterType)) { optionalIterator.remove(); typeIterator.remove(); } } return new FilterOutInJectedTypesResult(typeList.toArray(new Class<?>[typeList.size()]), optionalValueList.toArray(new String[optionalValueList.size()])); }
@Test @Parameters({"testdata"}) @SuppressWarnings("unused") public void filterOutInJectedTypesFromOptionalValuesTest( XmlTest xmlTest, @Optional("optionaltestdata") String testdata) { JDK15AnnotationFinder finder = new JDK15AnnotationFinder(null); Method curMethod = new Object() {}.getClass().getEnclosingMethod(); FilterOutInJectedTypesResult filterOutResult = org.testng.internal.Parameters.filterOutInJectedTypesFromOptionalValues( curMethod.getParameterTypes(), finder.findOptionalValues(curMethod)); Assert.assertEquals(filterOutResult.getOptionalValues()[0], "optionaltestdata"); Assert.assertEquals(filterOutResult.getParameterTypes()[0], String.class); } }