@Test public void testThatDefaultValuesAreHandled() throws CLIException { cli.addArgument(new TypedArgument<String>().setIndex(0).setArgName("1").setType(String.class) .setDefaultValue("hello").setRequired(false)); evaluated = cli.parse(Collections.singletonList("a")); assertThat((String) evaluated.getArgumentValue(0)).isEqualTo("a"); evaluated = cli.parse(Collections.emptyList()); assertThat((String) evaluated.getArgumentValue(0)).isEqualTo("hello"); }
@SuppressWarnings("unchecked") private static io.vertx.core.cli.Argument createArgument(Method method) { TypedArgument arg = new TypedArgument(); arg.setIndex(argument.index()); arg.setArgName(argument.argName()); arg.setRequired(argument.required()); arg.setDescription(description.value()); .setType(ReflectionUtils.getComponentType(method.getParameters()[0])) .setMultiValued(true); } else { final Class<?> type = method.getParameters()[0].getType(); arg.setType(type); arg.setHidden(true); arg.setConverter(ReflectionUtils.newInstance(convertedBy.value())); arg.setDefaultValue(defaultValue.value());
/** * Creates the value for the given argument from the given raw value. * * @param value the value * @return the created value */ public static <T> T create(String value, TypedArgument<T> argument) { Objects.requireNonNull(argument); if (value == null) { value = argument.getDefaultValue(); } if (value == null) { return null; } try { if (argument.getConverter() != null) { return Converters.create(value, argument.getConverter()); } else { return Converters.create(argument.getType(), value); } } catch (Exception e) { throw new InvalidValueException(argument, value, e); } }
/** * Creates a new instance of {@link TypedArgument} by copying the state of another {@link TypedArgument}. * * @param arg the copied argument */ public TypedArgument(TypedArgument<T> arg) { super(arg); this.type = arg.getType(); this.converter = arg.getConverter(); }
@Test(expected = CLIException.class) public void testThatArgumentWithTheSameIndexAreDetected() throws CLIException { cli.addArgument(new TypedArgument<String>().setIndex(0).setType(String.class)); cli.addArgument(new TypedArgument<String>().setIndex(0).setType(String.class)); evaluated = cli.parse(Arrays.asList("a", "b")); }
@Test(expected = CLIException.class) public void testThatArgumentWithTheSameIndexAreDetected() throws CLIException { cli.addArgument(new TypedArgument<String>().setIndex(0).setType(String.class)); cli.addArgument(new TypedArgument<String>().setIndex(0).setType(String.class)); evaluated = cli.parse(Arrays.asList("a", "b")); }
/** * Creates a new instance of {@link TypedArgument} by copying the state of another {@link TypedArgument}. * * @param arg the copied argument */ public TypedArgument(TypedArgument<T> arg) { super(arg); this.type = arg.getType(); this.converter = arg.getConverter(); }
@Test public void testThatConvertersAreHandled() throws CLIException { final TypedArgument<Person4> arg = new TypedArgument<Person4>() .setIndex(0).setArgName("person").setType(Person4.class) .setConverter(ReflectionUtils.newInstance(Person4Converter.class)) .setDefaultValue("Bill,Ballantine") .setRequired(false); cli.addArgument(arg); evaluated = cli.parse(Collections.singletonList("Bob,Morane")); Person4 person = evaluated.getArgumentValue("person"); assertThat(person.first).isEqualTo("Bob"); assertThat(person.last).isEqualTo("Morane"); evaluated = cli.parse(Collections.emptyList()); person = evaluated.getArgumentValue("person"); assertThat(person.first).isEqualTo("Bill"); assertThat(person.last).isEqualTo("Ballantine"); }
@SuppressWarnings("unchecked") private static io.vertx.core.cli.Argument createArgument(Method method) { TypedArgument arg = new TypedArgument(); arg.setIndex(argument.index()); arg.setArgName(argument.argName()); arg.setRequired(argument.required()); arg.setDescription(description.value()); .setType(ReflectionUtils.getComponentType(method.getParameters()[0])) .setMultiValued(true); } else { final Class<?> type = method.getParameters()[0].getType(); arg.setType(type); arg.setHidden(true); arg.setConverter(ReflectionUtils.newInstance(convertedBy.value())); arg.setDefaultValue(defaultValue.value());
/** * Creates the value for the given argument from the given raw value. * * @param value the value * @return the created value */ public static <T> T create(String value, TypedArgument<T> argument) { Objects.requireNonNull(argument); if (value == null) { value = argument.getDefaultValue(); } if (value == null) { return null; } try { if (argument.getConverter() != null) { return Converters.create(value, argument.getConverter()); } else { return Converters.create(argument.getType(), value); } } catch (Exception e) { throw new InvalidValueException(argument, value, e); } }
@Test public void testThatArgumentsAreOrdered() throws CLIException { cli.addArgument(new TypedArgument<String>().setIndex(1).setArgName("1").setType(String.class)); cli.addArgument(new TypedArgument<String>().setIndex(0).setArgName("2").setType(String.class)); cli.addArgument(new TypedArgument<String>().setIndex(2).setArgName("3").setType(String.class)); assertThat(cli.getArguments()).hasSize(3); evaluated = cli.parse(Arrays.asList("a", "b", "c")); Iterator<Argument> iterator = cli.getArguments().iterator(); assertThat(iterator.next().getArgName()).isEqualTo("2"); assertThat(iterator.next().getArgName()).isEqualTo("1"); assertThat(iterator.next().getArgName()).isEqualTo("3"); assertThat((String) evaluated.getArgumentValue("2")).isEqualTo("a"); assertThat((String) evaluated.getArgumentValue("1")).isEqualTo("b"); assertThat((String) evaluated.getArgumentValue("3")).isEqualTo("c"); }
@Test public void testThatMissingArgumentsAreDetected() throws CLIException { cli.addArgument(new TypedArgument<String>().setIndex(0).setType(String.class) .setRequired(true)); cli.addArgument(new TypedArgument<String>().setIndex(1).setType(String.class) .setRequired(true)); try { evaluated = cli.parse(Collections.emptyList()); fail("Missing Value Exception expected"); } catch (MissingValueException e) { // OK } try { evaluated = cli.parse(Collections.singletonList("a")); fail("Missing Value Exception expected"); } catch (MissingValueException e) { // OK } evaluated = cli.parse(Arrays.asList("a", "b")); }
@Test public void testThatInvalidValuesAsDefaultValueAreReported() throws CLIException { try { cli.addArgument(new TypedArgument<Integer>() .setIndex(0).setArgName("1").setType(Integer.class).setDefaultValue("a")); } catch (IllegalArgumentException e) { assertThat(e.getCause()).isInstanceOf(InvalidValueException.class); InvalidValueException cause = (InvalidValueException) e.getCause(); assertThat(cause.getArgument().getIndex()).isEqualTo(0); assertThat(cause.getArgument().getArgName()).isEqualTo("1"); assertThat(cause.getValue()).isEqualTo("a"); } }
@Test public void testMixedOfRequiredAnOptionalArguments() throws CLIException { cli.addArgument(new TypedArgument<String>().setIndex(0).setType(String.class) .setRequired(true)); cli.addArgument(new TypedArgument<String>().setIndex(1).setType(String.class) .setRequired(false)); try { evaluated = cli.parse(Collections.emptyList()); fail("Missing Value Exception expected"); } catch (MissingValueException e) { // OK } evaluated = cli.parse(Collections.singletonList("a")); assertThat((String) evaluated.getArgumentValue(0)).isEqualTo("a"); assertThat((String) evaluated.getArgumentValue(1)).isNull(); evaluated = cli.parse(Arrays.asList("a", "b")); assertThat((String) evaluated.getArgumentValue(0)).isEqualTo("a"); assertThat((String) evaluated.getArgumentValue(1)).isEqualTo("b"); }
@Test public void testThatInvalidValuesAreReported() throws CLIException { cli.addArgument(new TypedArgument<Integer>() .setIndex(0).setArgName("1").setType(Integer.class)); try { evaluated = cli.parse(Collections.singletonList("a")); evaluated.getArgumentValue(0); fail("Exception expected"); } catch (CLIException e) { assertThat(e).isInstanceOf(InvalidValueException.class); InvalidValueException cause = (InvalidValueException) e; assertThat(cause.getArgument().getIndex()).isEqualTo(0); assertThat(cause.getArgument().getArgName()).isEqualTo("1"); assertThat(cause.getValue()).isEqualTo("a"); } }
}; cli.addOptions(Arrays.asList(options)); cli.addArgument(new TypedArgument<String>().setType(String.class) .setArgName("verticle").setIndex(0).setRequired(false));
@Test public void testThatDefaultValuesAreHandled() throws CLIException { cli.addArgument(new TypedArgument<String>().setIndex(0).setArgName("1").setType(String.class) .setDefaultValue("hello").setRequired(false)); evaluated = cli.parse(Collections.singletonList("a")); assertThat((String) evaluated.getArgumentValue(0)).isEqualTo("a"); evaluated = cli.parse(Collections.emptyList()); assertThat((String) evaluated.getArgumentValue(0)).isEqualTo("hello"); }
@Test public void testThatConvertersAreHandled() throws CLIException { final TypedArgument<Person4> arg = new TypedArgument<Person4>() .setIndex(0).setArgName("person").setType(Person4.class) .setConverter(ReflectionUtils.newInstance(Person4Converter.class)) .setDefaultValue("Bill,Ballantine") .setRequired(false); cli.addArgument(arg); evaluated = cli.parse(Collections.singletonList("Bob,Morane")); Person4 person = evaluated.getArgumentValue("person"); assertThat(person.first).isEqualTo("Bob"); assertThat(person.last).isEqualTo("Morane"); evaluated = cli.parse(Collections.emptyList()); person = evaluated.getArgumentValue("person"); assertThat(person.first).isEqualTo("Bill"); assertThat(person.last).isEqualTo("Ballantine"); }
@Test public void testThatArgumentsAreOrdered() throws CLIException { cli.addArgument(new TypedArgument<String>().setIndex(1).setArgName("1").setType(String.class)); cli.addArgument(new TypedArgument<String>().setIndex(0).setArgName("2").setType(String.class)); cli.addArgument(new TypedArgument<String>().setIndex(2).setArgName("3").setType(String.class)); assertThat(cli.getArguments()).hasSize(3); evaluated = cli.parse(Arrays.asList("a", "b", "c")); Iterator<Argument> iterator = cli.getArguments().iterator(); assertThat(iterator.next().getArgName()).isEqualTo("2"); assertThat(iterator.next().getArgName()).isEqualTo("1"); assertThat(iterator.next().getArgName()).isEqualTo("3"); assertThat((String) evaluated.getArgumentValue("2")).isEqualTo("a"); assertThat((String) evaluated.getArgumentValue("1")).isEqualTo("b"); assertThat((String) evaluated.getArgumentValue("3")).isEqualTo("c"); }
@Test public void testThatMissingArgumentsAreDetected() throws CLIException { cli.addArgument(new TypedArgument<String>().setIndex(0).setType(String.class) .setRequired(true)); cli.addArgument(new TypedArgument<String>().setIndex(1).setType(String.class) .setRequired(true)); try { evaluated = cli.parse(Collections.emptyList()); fail("Missing Value Exception expected"); } catch (MissingValueException e) { // OK } try { evaluated = cli.parse(Collections.singletonList("a")); fail("Missing Value Exception expected"); } catch (MissingValueException e) { // OK } evaluated = cli.parse(Arrays.asList("a", "b")); }