@Override public void set(Object o, Object[] args, Object value) throws InvocationException { binding.set(o, args, value); } }
@Override protected void addParameter(ParameterDescriptor parameter) throws IntrospectionException, NullPointerException, IllegalArgumentException { super.addParameter(parameter); }
public void testClassArgument() throws Exception { class A { @Argument(name = "arg") String arg; } CommandDescriptor<Instance<A>> cmd = CommandFactory.DEFAULT.create(A.class); // Tester<A> tester = new Tester<A>(cmd, "a"); tester.assertArgument("arg", "a"); tester.assertEnd(Event.Stop.Done.class, 1); // tester = new Tester<A>(cmd, "a b"); tester.assertArgument("arg", "a"); tester.assertSeparator(); tester.assertEnd(Event.Stop.Unresolved.TooManyArguments.class, 2); }
public void testImplicitSubordinateOption() throws Exception { class A { @Command public void main(@Option(names = "o") String o) {} } CommandDescriptor<Instance<A>> cmd = CommandFactory.DEFAULT.create(A.class); // Tester<A> tester = new Tester<A>(cmd, "-o foo"); tester.assertOption("o", "foo"); tester.assertEnd(Event.Stop.Done.class, 6); }
private void assertIndent(String expected, String s) throws IOException { StringBuilder sb = Util.indent("_", s, new StringBuilder()); assertEquals(expected, sb.toString()); } }
public void testMethod() throws Exception { class A { @Command void m() { } @Command void dummy() { } } // new Test(A.class, "m").assertMethod("m").assertDone(); }
public void testEmpty() throws Exception { class A { } new Test(A.class, "").assertDone(); new Test(A.class, "-foo").assertDone("-foo"); new Test(A.class, "foo").assertDone("foo"); }
public void testIndent() throws Exception { assertIndent("", ""); assertIndent("_a", "a"); assertIndent("_a", " a"); assertIndent("\n_a", "\na"); assertIndent("\n_a", "\n a"); assertIndent("\n\n_a", "\n\na"); assertIndent("\n_a\n_b", "\n a\n b"); }
public void assertDone() { assertDone(""); } }
public void testMixedMethodArguments() throws Exception { class A { @Command public void main(@Argument(name = "arg1") List<String> arg1, @Argument(name = "arg2") String arg2) {} } CommandDescriptor<Instance<A>> cmd = CommandFactory.DEFAULT.create(A.class); // Tester<A> tester = new Tester<A>(cmd, "a"); tester.assertArgument("arg1", "a"); tester.assertEnd(Event.Stop.Done.class, 1); // tester = new Tester<A>(cmd, "a b"); tester.assertArgument("arg1", "a", "b"); tester.assertEnd(Event.Stop.Done.class, 3); }
public void testMethodOption() throws Exception { class A { @Command public void main(@Option(names = "o") String o) {} } CommandDescriptor<Instance<A>> cmd = CommandFactory.DEFAULT.create(A.class); // Tester<A> tester = new Tester<A>(cmd, "-o"); tester.assertOption("o"); tester.assertEnd(Event.Stop.Done.class, 2); tester = new Tester<A>(cmd, "-o a"); tester.assertOption("o", "a"); tester.assertEnd(Event.Stop.Done.class, 4); tester = new Tester<A>(cmd, "-o a b"); tester.assertOption("o", "a"); tester.assertSeparator(); tester.assertEnd(Event.Stop.Unresolved.TooManyArguments.class, 5); }
@Override public void set(Object o, Object[] args, Object value) throws InvocationException { binding.set(o, args, value); } }
public void testMethodArgument() throws Exception { class A { @Command public void main(@Argument(name = "arg") String arg) {} } CommandDescriptor<Instance<A>> cmd = CommandFactory.DEFAULT.create(A.class); // Tester<A> tester = new Tester<A>(cmd, "a"); tester.assertArgument("arg", "a"); tester.assertEnd(Event.Stop.Done.class, 1); // tester = new Tester<A>(cmd, "a b"); tester.assertArgument("arg", "a"); tester.assertSeparator(); tester.assertEnd(Event.Stop.Unresolved.TooManyArguments.class, 2); }
public void testSatisfyAllMethodArguments() throws Exception { class A { @Command public void main(@Argument(name = "arg1") String arg1, @Argument(name = "arg2") String arg2) {} } CommandDescriptor<Instance<A>> cmd = CommandFactory.DEFAULT.create(A.class); // Tester<A> tester = new Tester<A>(cmd, "a", Mode.INVOKE); tester.assertArgument("arg1", "a"); tester.assertEnd(Event.Stop.Done.class, 1); // tester = new Tester<A>(cmd, "a b", Mode.INVOKE); tester.assertArgument("arg1", "a"); tester.assertSeparator(); tester.assertArgument("arg2", "b"); tester.assertEnd(Event.Stop.Done.class, 3); }
public void testSatisfyAllMethodArgument() throws Exception { class A { @Command public void main(@Argument(name = "arg") String arg) {} } CommandDescriptor<Instance<A>> cmd = CommandFactory.DEFAULT.create(A.class); // Tester<A> tester = new Tester<A>(cmd, "a", Mode.INVOKE); tester.assertArgument("arg", "a"); tester.assertEnd(Event.Stop.Done.class, 1); // tester = new Tester<A>(cmd, "a b", Mode.INVOKE); tester.assertArgument("arg", "a"); tester.assertSeparator(); tester.assertEnd(Event.Stop.Done.class, 2); }
public void testRequiredMethodArguments() throws Exception { class A { @Command public void main(@Required @Argument(name = "arg1") String arg1, @Required @Argument(name = "arg2") String arg2) {} } CommandDescriptor<Instance<A>> cmd = CommandFactory.DEFAULT.create(A.class); // Tester<A> tester = new Tester<A>(cmd, "a"); tester.assertArgument("arg1", "a"); tester.assertEnd(Event.Stop.Done.class, 1); // tester = new Tester<A>(cmd, "a b"); tester.assertArgument("arg1", "a"); tester.assertSeparator(); tester.assertArgument("arg2", "b"); tester.assertEnd(Event.Stop.Done.class, 3); }