@Test public void testMatchedPositionalsByIndex() { class App { @Option(names = "-x") String x; @Parameters(index = "0", arity = "0..1") int index0 = -1; @Parameters(index = "1", arity = "0..1") int index1 = -1; @Parameters(index = "2", arity = "0..1") int index2 = -1; } CommandLine cmd = new CommandLine(new App()); ParseResult parseResult = cmd.parseArgs("-x", "xval", "0", "1"); List<PositionalParamSpec> all = cmd.getCommandSpec().positionalParameters(); assertEquals(3, all.size()); List<PositionalParamSpec> foundFirst = parseResult.matchedPositionals(0); assertEquals(1, foundFirst.size()); assertSame(all.get(0), foundFirst.get(0)); assertSame(parseResult.matchedPositional(0), foundFirst.get(0)); List<PositionalParamSpec> foundSecond = parseResult.matchedPositionals(1); assertEquals(1, foundSecond.size()); assertSame(all.get(1), foundSecond.get(0)); assertSame(parseResult.matchedPositional(1), foundSecond.get(0)); List<PositionalParamSpec> foundThird = parseResult.matchedPositionals(2); assertEquals(0, foundThird.size()); }
@Test public void testMatchedPositionals_ReturnsOnlyMatchedPositionals() { class App { @Option(names = "-x") String x; @Parameters(index = "0", arity = "0..1") int index0 = -1; @Parameters(index = "1", arity = "0..1") int index1 = -1; @Parameters(index = "2", arity = "0..1") int index2 = -1; } CommandLine cmd = new CommandLine(new App()); ParseResult parseResult = cmd.parseArgs("-x", "xval", "0", "1"); List<PositionalParamSpec> all = cmd.getCommandSpec().positionalParameters(); assertEquals(3, all.size()); List<PositionalParamSpec> found = parseResult.matchedPositionals(); assertEquals(2, found.size()); assertSame(all.get(0), found.get(0)); assertSame(all.get(1), found.get(1)); assertSame(parseResult.matchedPositional(0), found.get(0)); assertSame(parseResult.matchedPositional(1), found.get(1)); assertNull(parseResult.matchedPositional(2)); }
assertEquals(args[i], result.matchedPositional(i).stringValues().get(i));
assertTrue(subResult.hasMatchedPositional(2)); assertFalse(subResult.hasMatchedPositional(3)); assertEquals("1", subResult.matchedPositional(0).stringValues().get(0)); assertEquals("2", subResult.matchedPositional(1).stringValues().get(1)); assertEquals("3", subResult.matchedPositional(2).stringValues().get(2));
assertEquals(args[i], result.matchedPositional(i).stringValues().get(i));
@Test public void testMatchedPositionalsByIndex() { class App { @Option(names = "-x") String x; @Parameters(index = "0", arity = "0..1") int index0 = -1; @Parameters(index = "1", arity = "0..1") int index1 = -1; @Parameters(index = "2", arity = "0..1") int index2 = -1; } CommandLine cmd = new CommandLine(new App()); ParseResult parseResult = cmd.parseArgs("-x", "xval", "0", "1"); List<PositionalParamSpec> all = cmd.getCommandSpec().positionalParameters(); assertEquals(3, all.size()); List<PositionalParamSpec> foundFirst = parseResult.matchedPositionals(0); assertEquals(1, foundFirst.size()); assertSame(all.get(0), foundFirst.get(0)); assertSame(parseResult.matchedPositional(0), foundFirst.get(0)); List<PositionalParamSpec> foundSecond = parseResult.matchedPositionals(1); assertEquals(1, foundSecond.size()); assertSame(all.get(1), foundSecond.get(0)); assertSame(parseResult.matchedPositional(1), foundSecond.get(0)); List<PositionalParamSpec> foundThird = parseResult.matchedPositionals(2); assertEquals(0, foundThird.size()); }
@Test public void testMatchedPositionals_ReturnsOnlyMatchedPositionals() { class App { @Option(names = "-x") String x; @Parameters(index = "0", arity = "0..1") int index0 = -1; @Parameters(index = "1", arity = "0..1") int index1 = -1; @Parameters(index = "2", arity = "0..1") int index2 = -1; } CommandLine cmd = new CommandLine(new App()); ParseResult parseResult = cmd.parseArgs("-x", "xval", "0", "1"); List<PositionalParamSpec> all = cmd.getCommandSpec().positionalParameters(); assertEquals(3, all.size()); List<PositionalParamSpec> found = parseResult.matchedPositionals(); assertEquals(2, found.size()); assertSame(all.get(0), found.get(0)); assertSame(all.get(1), found.get(1)); assertSame(parseResult.matchedPositional(0), found.get(0)); assertSame(parseResult.matchedPositional(1), found.get(1)); assertNull(parseResult.matchedPositional(2)); }
@Test public void testParseResetsRawAndOriginalStringValues() { CommandSpec spec = CommandSpec.create() .addOption(OptionSpec.builder("-x").type(String.class).build()) .addPositional(PositionalParamSpec.builder().build()); CommandLine cmd = new CommandLine(spec); ParseResult parseResult = cmd.parseArgs("-x", "XVAL", "POSITIONAL"); assertEquals("XVAL", parseResult.matchedOption('x').getValue()); assertEquals(Arrays.asList("XVAL"), parseResult.matchedOption('x').stringValues()); assertEquals(Arrays.asList("XVAL"), parseResult.matchedOption('x').originalStringValues()); assertEquals("POSITIONAL", parseResult.matchedPositional(0).getValue()); assertEquals(Arrays.asList("POSITIONAL"), parseResult.matchedPositional(0).stringValues()); assertEquals(Arrays.asList("POSITIONAL"), parseResult.matchedPositional(0).originalStringValues()); ParseResult parseResult2 = cmd.parseArgs("-x", "222", "$$$$"); assertEquals("222", parseResult2.matchedOption('x').getValue()); assertEquals(Arrays.asList("222"), parseResult2.matchedOption('x').stringValues()); assertEquals(Arrays.asList("222"), parseResult2.matchedOption('x').originalStringValues()); assertEquals("$$$$", parseResult2.matchedPositional(0).getValue()); assertEquals(Arrays.asList("$$$$"), parseResult2.matchedPositional(0).stringValues()); assertEquals(Arrays.asList("$$$$"), parseResult2.matchedPositional(0).originalStringValues()); }
@Test public void testRawPositionalValue_ReturnsNullForNonMatchedPosition() { class App { @Parameters(index = "0", arity = "0..1") int index0 = -1; @Parameters(index = "1", arity = "0..1") int index1 = -1; @Parameters(index = "2", arity = "0..1") int index2 = -1; } CommandLine cmd = new CommandLine(new App()); ParseResult parseResult = cmd.parseArgs("0", "1"); assertEquals("0", parseResult.matchedPositional(0).stringValues().get(0)); assertEquals("1", parseResult.matchedPositional(1).stringValues().get(0)); assertNull(parseResult.matchedPositional(2)); assertNull(parseResult.matchedPositional(3)); }
@Test public void testMatchedPositional_ReturnsNullForNonMatchedPosition() { class App { @Parameters(index = "0", arity = "0..1") int index0 = -1; @Parameters(index = "1", arity = "0..1") int index1 = -1; @Parameters(index = "2", arity = "0..1") int index2 = -1; } CommandLine cmd = new CommandLine(new App()); ParseResult parseResult = cmd.parseArgs("0", "1"); assertNotNull(parseResult.matchedPositional(0)); assertNotNull(parseResult.matchedPositional(1)); assertNull(parseResult.matchedPositional(2)); assertNull(parseResult.matchedPositional(3)); }
/** Returns the command line argument value of the positional parameter at the specified position, converted to the {@linkplain PositionalParamSpec#type() type} of the positional parameter, or the specified default value if no positional parameter was matched at that position. */ public <T> T matchedPositionalValue(int position, T defaultValue) { return matchedPositionalValue(matchedPositional(position), defaultValue); } /** Returns the command line argument value of the specified positional parameter, converted to the {@linkplain PositionalParamSpec#type() type} of the positional parameter, or the specified default value if the specified positional parameter is {@code null}. */
/** Returns whether a positional parameter was matched at the specified position. */ public boolean hasMatchedPositional(int position) { return matchedPositional(position) != null; } /** Returns whether the specified positional parameter was matched on the command line. */
assertTrue(subResult.hasMatchedPositional(2)); assertFalse(subResult.hasMatchedPositional(3)); assertEquals("1", subResult.matchedPositional(0).stringValues().get(0)); assertEquals("2", subResult.matchedPositional(1).stringValues().get(1)); assertEquals("3", subResult.matchedPositional(2).stringValues().get(2));
@Test public void testParseResetsRawAndOriginalStringValues() { CommandSpec spec = CommandSpec.create() .addOption(OptionSpec.builder("-x").type(String.class).build()) .addPositional(PositionalParamSpec.builder().build()); CommandLine cmd = new CommandLine(spec); ParseResult parseResult = cmd.parseArgs("-x", "XVAL", "POSITIONAL"); assertEquals("XVAL", parseResult.matchedOption('x').getValue()); assertEquals(Arrays.asList("XVAL"), parseResult.matchedOption('x').stringValues()); assertEquals(Arrays.asList("XVAL"), parseResult.matchedOption('x').originalStringValues()); assertEquals("POSITIONAL", parseResult.matchedPositional(0).getValue()); assertEquals(Arrays.asList("POSITIONAL"), parseResult.matchedPositional(0).stringValues()); assertEquals(Arrays.asList("POSITIONAL"), parseResult.matchedPositional(0).originalStringValues()); ParseResult parseResult2 = cmd.parseArgs("-x", "222", "$$$$"); assertEquals("222", parseResult2.matchedOption('x').getValue()); assertEquals(Arrays.asList("222"), parseResult2.matchedOption('x').stringValues()); assertEquals(Arrays.asList("222"), parseResult2.matchedOption('x').originalStringValues()); assertEquals("$$$$", parseResult2.matchedPositional(0).getValue()); assertEquals(Arrays.asList("$$$$"), parseResult2.matchedPositional(0).stringValues()); assertEquals(Arrays.asList("$$$$"), parseResult2.matchedPositional(0).originalStringValues()); }
@Test public void testMatchedPositional_ReturnsNullForNonMatchedPosition() { class App { @Parameters(index = "0", arity = "0..1") int index0 = -1; @Parameters(index = "1", arity = "0..1") int index1 = -1; @Parameters(index = "2", arity = "0..1") int index2 = -1; } CommandLine cmd = new CommandLine(new App()); ParseResult parseResult = cmd.parseArgs("0", "1"); assertNotNull(parseResult.matchedPositional(0)); assertNotNull(parseResult.matchedPositional(1)); assertNull(parseResult.matchedPositional(2)); assertNull(parseResult.matchedPositional(3)); }
/** Returns whether a positional parameter was matched at the specified position. */ public boolean hasMatchedPositional(int position) { return matchedPositional(position) != null; } /** Returns whether the specified positional parameter was matched on the command line. */
/** Returns the command line argument value of the positional parameter at the specified position, converted to the {@linkplain PositionalParamSpec#type() type} of the positional parameter, or the specified default value if no positional parameter was matched at that position. */ public <T> T matchedPositionalValue(int position, T defaultValue) { return matchedPositionalValue(matchedPositional(position), defaultValue); } /** Returns the command line argument value of the specified positional parameter, converted to the {@linkplain PositionalParamSpec#type() type} of the positional parameter, or the specified default value if the specified positional parameter is {@code null}. */
@Test public void testRawPositionalValue_ReturnsNullForNonMatchedPosition() { class App { @Parameters(index = "0", arity = "0..1") int index0 = -1; @Parameters(index = "1", arity = "0..1") int index1 = -1; @Parameters(index = "2", arity = "0..1") int index2 = -1; } CommandLine cmd = new CommandLine(new App()); ParseResult parseResult = cmd.parseArgs("0", "1"); assertEquals("0", parseResult.matchedPositional(0).stringValues().get(0)); assertEquals("1", parseResult.matchedPositional(1).stringValues().get(0)); assertNull(parseResult.matchedPositional(2)); assertNull(parseResult.matchedPositional(3)); }