@Test public void testArityForParameters_booleanFieldImplicitArity1() throws Exception { class ImplicitBoolField { @Parameters boolean boolSingleValue; } Range arity = Range.parameterArity(ImplicitBoolField.class.getDeclaredField("boolSingleValue")); assertEquals(Range.valueOf("1"), arity); assertEquals("1", arity.toString()); } @Test
@Test public void testArityForParameters_listFieldImplicitArity0_1() throws Exception { class Params { @Parameters(type = Integer.class) List<Integer> list; } Range arity = Range.parameterArity(Params.class.getDeclaredField("list")); assertEquals(Range.valueOf("0..1"), arity); assertEquals("0..1", arity.toString()); } @Test
@Test public void testArityForParameters_arrayFieldImplicitArity0_1() throws Exception { class Args { @Parameters File[] inputFiles; } Range arity = Range.parameterArity(Args.class.getDeclaredField("inputFiles")); assertEquals(Range.valueOf("0..1"), arity); assertEquals("0..1", arity.toString()); } @Test
@Test public void testArityForParameters_arrayFieldImplicitArity0_1() throws Exception { class Args { @Parameters File[] inputFiles; } Range arity = Range.parameterArity(Args.class.getDeclaredField("inputFiles")); assertEquals(Range.valueOf("0..1"), arity); assertEquals("0..1", arity.toString()); } @Test
@Test public void testArityForParameters_intFieldImplicitArity1() throws Exception { class ImplicitSingleField { @Parameters int intSingleValue; } Range arity = Range.parameterArity(ImplicitSingleField.class.getDeclaredField("intSingleValue")); assertEquals(Range.valueOf("1"), arity); assertEquals("1", arity.toString()); } @Test
@Test public void testArityForParameters_listFieldImplicitArity0_1() throws Exception { class Params { @Parameters(type = Integer.class) List<Integer> list; } Range arity = Range.parameterArity(Params.class.getDeclaredField("list")); assertEquals(Range.valueOf("0..1"), arity); assertEquals("0..1", arity.toString()); } @Test
@Test public void testArityForParameters_booleanFieldImplicitArity1() throws Exception { class ImplicitBoolField { @Parameters boolean boolSingleValue; } Range arity = Range.parameterArity(ImplicitBoolField.class.getDeclaredField("boolSingleValue")); assertEquals(Range.valueOf("1"), arity); assertEquals("1", arity.toString()); } @Test
static Range parameterCapacity(TypedMember member) { Range arity = parameterArity(member); if (!member.isMultiValue()) { return arity; } Range index = parameterIndex(member); return parameterCapacity(arity, index); } private static Range parameterCapacity(Range arity, Range index) {
@Test public void testParameterArityWithOptionMember() throws Exception { class ImplicitBoolField { @Option(names = "-x") boolean boolSingleValue; } Range arity = Range.parameterArity(ImplicitBoolField.class.getDeclaredField("boolSingleValue")); assertEquals(0, arity.max); assertEquals(0, arity.min); assertEquals(false, arity.isVariable); assertEquals("0", arity.toString()); }
/** Returns a new {@code Range} based on the {@link Parameters#arity()} annotation on the specified field, * or the field type's default arity if no arity was specified. * @param field the field whose Parameters annotation to inspect * @return a new {@code Range} based on the Parameters arity annotation on the specified field */ public static Range parameterArity(Field field) { return parameterArity(new TypedMember(field)); } private static Range parameterArity(TypedMember member) {
@Test public void testArityForParameters_intFieldImplicitArity1() throws Exception { class ImplicitSingleField { @Parameters int intSingleValue; } Range arity = Range.parameterArity(ImplicitSingleField.class.getDeclaredField("intSingleValue")); assertEquals(Range.valueOf("1"), arity); assertEquals("1", arity.toString()); } @Test
static Range parameterCapacity(IAnnotatedElement member) { Range arity = parameterArity(member); if (!member.isMultiValue()) { return arity; } Range index = parameterIndex(member); return parameterCapacity(arity, index); } private static Range parameterCapacity(Range arity, Range index) {
@Test public void testParameterArityWithOptionMember() throws Exception { class ImplicitBoolField { @Option(names = "-x") boolean boolSingleValue; } Range arity = Range.parameterArity(ImplicitBoolField.class.getDeclaredField("boolSingleValue")); assertEquals(0, arity.max); assertEquals(0, arity.min); assertEquals(false, arity.isVariable); assertEquals("0", arity.toString()); }
/** Returns a new {@code Range} based on the {@link Parameters#arity()} annotation on the specified field, * or the field type's default arity if no arity was specified. * @param field the field whose Parameters annotation to inspect * @return a new {@code Range} based on the Parameters arity annotation on the specified field */ public static Range parameterArity(Field field) { return parameterArity(new TypedMember(field)); } private static Range parameterArity(IAnnotatedElement member) {