@Test public void testPositionalClearCustomSetterBeforeParse() { CommandSpec cmd = CommandSpec.create(); final List<Object> values = new ArrayList<Object>(); ISetter setter = new ISetter() { public <T> T set(T value) { values.add(value); return null; } }; cmd.add(PositionalParamSpec.builder().type(String.class).setter(setter).build()); CommandLine cl = new CommandLine(cmd); assertTrue(values.isEmpty()); cl.parseArgs("1"); assertEquals(2, values.size()); assertEquals(null, values.get(0)); assertEquals("1", values.get(1)); values.clear(); cl.parseArgs("2"); assertEquals(2, values.size()); assertEquals(null, values.get(0)); assertEquals("2", values.get(1)); }
@Test public void testArgSpecSetter2WrapNonPicocliException() { final Exception expected = new Exception("boom"); ISetter setter = new ISetter() { public <T> T set(T value) throws Exception { throw expected; } }; PositionalParamSpec positional = PositionalParamSpec.builder().setter(setter).build(); try { positional.setValue("abc"); } catch (CommandLine.PicocliException ex) { assertSame(expected, ex.getCause()); } }
@Test public void testArgSpecSetterWrapNonPicocliException() { final Exception expected = new Exception("boom"); ISetter setter = new ISetter() { public <T> T set(T value) throws Exception { throw expected; } }; PositionalParamSpec positional = PositionalParamSpec.builder().setter(setter).build(); try { positional.setValue("abc"); } catch (CommandLine.PicocliException ex) { assertSame(expected, ex.getCause()); } }
@Test public void testPositionalClearCustomSetterBeforeParse() { CommandSpec cmd = CommandSpec.create(); final List<Object> values = new ArrayList<Object>(); ISetter setter = new ISetter() { public <T> T set(T value) { values.add(value); return null; } }; cmd.add(PositionalParamSpec.builder().type(String.class).setter(setter).build()); CommandLine cl = new CommandLine(cmd); assertTrue(values.isEmpty()); cl.parseArgs("1"); assertEquals(2, values.size()); assertEquals(null, values.get(0)); assertEquals("1", values.get(1)); values.clear(); cl.parseArgs("2"); assertEquals(2, values.size()); assertEquals(null, values.get(0)); assertEquals("2", values.get(1)); }
@Test public void testArgSpecSetter2WrapNonPicocliException() { final Exception expected = new Exception("boom"); ISetter setter = new ISetter() { public <T> T set(T value) throws Exception { throw expected; } }; PositionalParamSpec positional = PositionalParamSpec.builder().setter(setter).build(); try { positional.setValue("abc"); } catch (CommandLine.PicocliException ex) { assertSame(expected, ex.getCause()); } }
@Test public void testArgSpecSetterRethrowsPicocliException() { final CommandLine.PicocliException expected = new CommandLine.PicocliException("boom"); ISetter setter = new ISetter() { public <T> T set(T value) throws Exception { throw expected; } }; PositionalParamSpec positional = PositionalParamSpec.builder().setter(setter).build(); try { positional.setValue("abc"); } catch (CommandLine.PicocliException ex) { assertSame(expected, ex); } }
@Test public void testArgSpecSetterWrapNonPicocliException() { final Exception expected = new Exception("boom"); ISetter setter = new ISetter() { public <T> T set(T value) throws Exception { throw expected; } }; PositionalParamSpec positional = PositionalParamSpec.builder().setter(setter).build(); try { positional.setValue("abc"); } catch (CommandLine.PicocliException ex) { assertSame(expected, ex.getCause()); } }
@Test public void testArgSpecSetValueCallsSetter() { final Object[] newVal = new Object[1]; ISetter setter = new ISetter() { public <T> T set(T value) { newVal[0] = value; return null; } }; PositionalParamSpec positional = PositionalParamSpec.builder().setter(setter).build(); positional.setValue("abc"); assertEquals("abc", newVal[0]); }
@SuppressWarnings("deprecation") @Test public void testArgSpecSetValueWithCommandLineCallsSetter() { final Object[] newVal = new Object[1]; ISetter setter = new ISetter() { public <T> T set(T value) { newVal[0] = value; return null; } }; PositionalParamSpec positional = PositionalParamSpec.builder().setter(setter).build(); positional.setValue("abc", new CommandLine(CommandLine.Model.CommandSpec.create())); assertEquals("abc", newVal[0]); }
@Test public void testArgSpecSetterRethrowsPicocliException() { final CommandLine.PicocliException expected = new CommandLine.PicocliException("boom"); ISetter setter = new ISetter() { public <T> T set(T value) throws Exception { throw expected; } }; PositionalParamSpec positional = PositionalParamSpec.builder().setter(setter).build(); try { positional.setValue("abc"); } catch (CommandLine.PicocliException ex) { assertSame(expected, ex); } }
@SuppressWarnings("deprecation") @Test public void testArgSpecSetValueWithCommandLineCallsSetter() { final Object[] newVal = new Object[1]; ISetter setter = new ISetter() { public <T> T set(T value) { newVal[0] = value; return null; } }; PositionalParamSpec positional = PositionalParamSpec.builder().setter(setter).build(); positional.setValue("abc", new CommandLine(CommandLine.Model.CommandSpec.create())); assertEquals("abc", newVal[0]); }
@Test public void testArgSpecSetValueCallsSetter() { final Object[] newVal = new Object[1]; ISetter setter = new ISetter() { public <T> T set(T value) { newVal[0] = value; return null; } }; PositionalParamSpec positional = PositionalParamSpec.builder().setter(setter).build(); positional.setValue("abc"); assertEquals("abc", newVal[0]); }