@Override public TypedArgument<T> setIndex(int index) { super.setIndex(index); return this; }
case "index": if (member.getValue() instanceof Number) { obj.setIndex(((Number)member.getValue()).intValue());
@Test(expected = CLIException.class) public void testThatNonUniqueArgumentIndexAreDetected() { CLI cli = new DefaultCLI().setName("test"); cli.addArgument(new Argument().setIndex(0)); cli.addArgument(new Argument().setIndex(1)); cli.addArgument(new Argument().setIndex(1)); // conflict cli.parse(Arrays.asList("a", "b", "c")); }
@Test public void testWithMultipleArgumentReceivingSingleValues() { CLI cli = new DefaultCLI().setName("test"); cli.addArgument(new Argument().setIndex(0)); cli.addArgument(new Argument().setIndex(1).setMultiValued(true)); CommandLine cl = cli.parse(Arrays.asList("a", "b")); assertThat((String) cl.getArgumentValue(0)).isEqualTo("a"); assertThat(cl.getArgumentValues(1)).containsExactly("b"); assertThat((String) cl.getArgumentValue(1)).isEqualTo("b"); }
@Test(expected = CLIException.class) public void testThatOnlyTheLastArgumentCanBeMultivalued() { CLI cli = new DefaultCLI().setName("test"); cli.addArgument(new Argument().setIndex(0)); cli.addArgument(new Argument().setIndex(1).setMultiValued(true)); cli.addArgument(new Argument().setIndex(2)); cli.parse(Arrays.asList("a", "b", "c", "d")); }
@Test public void testWithArgumentReceivingMultipleValues() { CLI cli = new DefaultCLI().setName("test"); cli.addArgument(new Argument().setIndex(0).setArgName("arg").setDescription("argument1")); cli.addArgument(new Argument().setIndex(1).setMultiValued(true).setArgName("m").setDescription("multiple arg")); CommandLine cl = cli.parse(Arrays.asList("a", "b", "c")); assertThat((String) cl.getArgumentValue(0)).isEqualTo("a"); assertThat(cl.getArgumentValues(1)).containsExactly("b", "c"); assertThat((String) cl.getArgumentValue(1)).isEqualTo("b"); StringBuilder builder = new StringBuilder(); cli.usage(builder); assertThat(builder.toString()).contains("test arg m..."); }
for (Argument argument : cli.getArguments()) { if (argument.getIndex() == -1) { argument.setIndex(current); current++; } else {
@Test(expected = CLIException.class) public void testThatOnlyOneArgumentCanBeMultivalued() { CLI cli = new DefaultCLI().setName("test"); cli.addArgument(new Argument().setIndex(0)); cli.addArgument(new Argument().setIndex(1).setMultiValued(true)); cli.addArgument(new Argument().setIndex(2).setMultiValued(true)); cli.parse(Arrays.asList("a", "b", "c", "d")); }
@Test public void testUsageComputationWithSeveralArguments() { final CLI cli = CLI.create("test") .addOption(new Option().setLongName("file").setShortName("f").setDescription("a file").setRequired(true)) .addArgument(new Argument().setIndex(0).setArgName("foo").setDescription("foo")) .addArgument(new Argument().setIndex(1)) .addArgument(new Argument().setIndex(2).setArgName("bar").setDescription("bar")); StringBuilder builder = new StringBuilder(); cli.usage(builder); assertThat(builder.toString()) .contains("test -f <value> foo value bar") .contains(" -f,--file <value> a file") .contains("<foo> foo") .contains("<value>") .contains("<bar> bar"); }
@Test public void testWithMultipleRequiredArgument() { CLI cli = new DefaultCLI().setName("test"); cli.addArgument(new Argument().setIndex(0)); cli.addArgument(new Argument().setIndex(1).setMultiValued(true).setRequired(true)); CommandLine cl = cli.parse(Arrays.asList("a", "b", "c")); assertThat((String) cl.getArgumentValue(0)).isEqualTo("a"); assertThat(cl.getArgumentValues(1)).containsExactly("b", "c"); assertThat((String) cl.getArgumentValue(1)).isEqualTo("b"); cl = cli.parse(Arrays.asList("a", "b")); assertThat((String) cl.getArgumentValue(0)).isEqualTo("a"); assertThat(cl.getArgumentValues(1)).containsExactly("b"); assertThat((String) cl.getArgumentValue(1)).isEqualTo("b"); try { cli.parse(Collections.singletonList("a")); fail("required argument not fultilled"); } catch (MissingValueException e) { // OK. } }
@Test public void testUsageComputationWithHiddenArguments() { final CLI cli = CLI.create("test") .addOption(new Option().setLongName("file").setShortName("f").setDescription("a file").setRequired(true)) .addArgument(new Argument().setIndex(0).setArgName("foo").setDescription("foo")) .addArgument(new Argument().setIndex(1)) .addArgument(new Argument().setIndex(2).setArgName("bar").setDescription("bar").setHidden(true)); StringBuilder builder = new StringBuilder(); cli.usage(builder); assertThat(builder.toString()) .contains("test -f <value> foo value") .contains(" -f,--file <value> a file") .contains("<foo> foo") .contains("<value>") .doesNotContain("bar"); }
@Test public void testThatArgumentIndexCanBeGeneratedWithPartiallyNumberedArguments() { CLI cli = new DefaultCLI().setName("test"); cli.addArgument(new Argument()); cli.addArgument(new Argument().setIndex(1)); cli.addArgument(new Argument().setMultiValued(true)); CommandLine line = cli.parse(Arrays.asList("a", "b", "c", "d")); assertThat((String) line.getArgumentValue(0)).isEqualToIgnoringCase("a"); assertThat((String) line.getArgumentValue(1)).isEqualToIgnoringCase("b"); assertThat(line.getArgumentValues(2)).containsExactly("c", "d"); }
@Override public TypedArgument<T> setIndex(int index) { super.setIndex(index); return this; }
addArgument(new Argument().setIndex(0).setArgName("http-url").setDescription("the HTTP uri to get"));
@Test(expected = CLIException.class) public void testThatNonUniqueArgumentIndexAreDetected() { CLI cli = new DefaultCLI().setName("test"); cli.addArgument(new Argument().setIndex(0)); cli.addArgument(new Argument().setIndex(1)); cli.addArgument(new Argument().setIndex(1)); // conflict cli.parse(Arrays.asList("a", "b", "c")); }
@Test public void testWithMultipleArgumentReceivingSingleValues() { CLI cli = new DefaultCLI().setName("test"); cli.addArgument(new Argument().setIndex(0)); cli.addArgument(new Argument().setIndex(1).setMultiValued(true)); CommandLine cl = cli.parse(Arrays.asList("a", "b")); assertThat((String) cl.getArgumentValue(0)).isEqualTo("a"); assertThat(cl.getArgumentValues(1)).containsExactly("b"); assertThat((String) cl.getArgumentValue(1)).isEqualTo("b"); }
@Test(expected = CLIException.class) public void testThatOnlyTheLastArgumentCanBeMultivalued() { CLI cli = new DefaultCLI().setName("test"); cli.addArgument(new Argument().setIndex(0)); cli.addArgument(new Argument().setIndex(1).setMultiValued(true)); cli.addArgument(new Argument().setIndex(2)); cli.parse(Arrays.asList("a", "b", "c", "d")); }
@Test public void testWithArgumentReceivingMultipleValues() { CLI cli = new DefaultCLI().setName("test"); cli.addArgument(new Argument().setIndex(0).setArgName("arg").setDescription("argument1")); cli.addArgument(new Argument().setIndex(1).setMultiValued(true).setArgName("m").setDescription("multiple arg")); CommandLine cl = cli.parse(Arrays.asList("a", "b", "c")); assertThat((String) cl.getArgumentValue(0)).isEqualTo("a"); assertThat(cl.getArgumentValues(1)).containsExactly("b", "c"); assertThat((String) cl.getArgumentValue(1)).isEqualTo("b"); StringBuilder builder = new StringBuilder(); cli.usage(builder); assertThat(builder.toString()).contains("test arg m..."); }
@Test(expected = CLIException.class) public void testThatOnlyOneArgumentCanBeMultivalued() { CLI cli = new DefaultCLI().setName("test"); cli.addArgument(new Argument().setIndex(0)); cli.addArgument(new Argument().setIndex(1).setMultiValued(true)); cli.addArgument(new Argument().setIndex(2).setMultiValued(true)); cli.parse(Arrays.asList("a", "b", "c", "d")); }
@Test public void testThatArgumentIndexCanBeGeneratedWithPartiallyNumberedArguments() { CLI cli = new DefaultCLI().setName("test"); cli.addArgument(new Argument()); cli.addArgument(new Argument().setIndex(1)); cli.addArgument(new Argument().setMultiValued(true)); CommandLine line = cli.parse(Arrays.asList("a", "b", "c", "d")); assertThat((String) line.getArgumentValue(0)).isEqualToIgnoringCase("a"); assertThat((String) line.getArgumentValue(1)).isEqualToIgnoringCase("b"); assertThat(line.getArgumentValues(2)).containsExactly("c", "d"); }