@Override public TypedArgument<T> setRequired(boolean required) { super.setRequired(required); return this; }
case "required": if (member.getValue() instanceof Boolean) { obj.setRequired((Boolean)member.getValue());
@Test public void testUsageComputationWhenUsingNotRequiredArgument() { final CLI cli = CLI.create("test") .addArgument(new Argument().setArgName("foo").setRequired(false)); StringBuilder builder = new StringBuilder(); cli.usage(builder); assertThat(builder.toString()) .contains("test [foo]"); }
@Test public void testCommandLineValidationWhenValid() { final CLI cli = CLI.create("test") .addArgument(new Argument().setArgName("foo").setRequired(true)); CommandLine commandLine = cli.parse(Collections.singletonList("foo")); assertThat(commandLine.isValid()).isTrue(); }
@Test public void testCommandLineValidationWhenInvalidWithValidationDisabled() { final CLI cli = CLI.create("test") .addArgument(new Argument().setArgName("foo").setRequired(true)); CommandLine commandLine = cli.parse(Collections.<String>emptyList(), false); assertThat(commandLine.isValid()).isEqualTo(false); }
@Test public void testUsageComputationWhenUsingRequiredOptionAndArgument() { final CLI cli = CLI.create("test") .addOption(new Option().setLongName("file").setShortName("f").setDescription("a file").setRequired(true)) .addArgument(new Argument().setArgName("foo").setDescription("foo").setRequired(true)); StringBuilder builder = new StringBuilder(); cli.usage(builder); assertThat(builder.toString()) .contains("test -f <value> foo") .contains(" -f,--file <value> a file") .contains("<foo> foo"); }
@Test(expected = MissingValueException.class) public void testCommandLineValidationWhenInvalid() { final CLI cli = CLI.create("test") .addArgument(new Argument().setArgName("foo").setRequired(true)); cli.parse(Collections.<String>emptyList()); }
@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. } }
@Override public TypedArgument<T> setRequired(boolean required) { super.setRequired(required); return this; }
case "required": if (member.getValue() instanceof Boolean) { obj.setRequired((Boolean)member.getValue());
@Test public void testUsageComputationWhenUsingNotRequiredArgument() { final CLI cli = CLI.create("test") .addArgument(new Argument().setArgName("foo").setRequired(false)); StringBuilder builder = new StringBuilder(); cli.usage(builder); assertThat(builder.toString()) .contains("test [foo]"); }
@Test public void testCommandLineValidationWhenValid() { final CLI cli = CLI.create("test") .addArgument(new Argument().setArgName("foo").setRequired(true)); CommandLine commandLine = cli.parse(Collections.singletonList("foo")); assertThat(commandLine.isValid()).isTrue(); }
@Test public void testCommandLineValidationWhenInvalidWithValidationDisabled() { final CLI cli = CLI.create("test") .addArgument(new Argument().setArgName("foo").setRequired(true)); CommandLine commandLine = cli.parse(Collections.<String>emptyList(), false); assertThat(commandLine.isValid()).isEqualTo(false); }
@Test public void testUsageComputationWhenUsingRequiredOptionAndArgument() { final CLI cli = CLI.create("test") .addOption(new Option().setLongName("file").setShortName("f").setDescription("a file").setRequired(true)) .addArgument(new Argument().setArgName("foo").setDescription("foo").setRequired(true)); StringBuilder builder = new StringBuilder(); cli.usage(builder); assertThat(builder.toString()) .contains("test -f <value> foo") .contains(" -f,--file <value> a file") .contains("<foo> foo"); }
@Test(expected = MissingValueException.class) public void testCommandLineValidationWhenInvalid() { final CLI cli = CLI.create("test") .addArgument(new Argument().setArgName("foo").setRequired(true)); cli.parse(Collections.<String>emptyList()); }
@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. } }