示例#1
0
  public void testSatisfyAllMethodArgumentList() throws Exception {

    class A {
      @Command
      public void main(@Argument(name = "args") List<String> args) {}
    }
    CommandDescriptor<Instance<A>> cmd = CommandFactory.DEFAULT.create(A.class);

    //
    Tester<A> tester = new Tester<A>(cmd, "a", Mode.INVOKE);
    tester.assertArgument("args", "a");
    tester.assertEnd(Event.Stop.Done.class, 1);

    //
    tester = new Tester<A>(cmd, "a ", Mode.INVOKE);
    tester.assertArgument("args", "a");
    tester.assertSeparator();
    tester.assertEnd(Event.Stop.Done.class, 2);

    //
    tester = new Tester<A>(cmd, "a b", Mode.INVOKE);
    tester.assertArgument("args", "a", "b");
    tester.assertEnd(Event.Stop.Done.class, 3);

    //
    tester = new Tester<A>(cmd, "a b ", Mode.INVOKE);
    tester.assertArgument("args", "a", "b");
    tester.assertSeparator();
    tester.assertEnd(Event.Stop.Done.class, 4);
  }
示例#2
0
  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);
  }
示例#3
0
  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);
  }
示例#4
0
  public void testSatisfyAllRequiredMethodArguments() 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", Mode.INVOKE);
    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);
  }
示例#5
0
  public void testSatisfyAllDoubleDash() throws Exception {

    class A {
      @Command
      public void main(@Option(names = "o") String o, @Argument(name = "arg") String arg) {}
    }
    CommandDescriptor<Instance<A>> cmd = CommandFactory.DEFAULT.create(A.class);

    //
    Tester<A> tester = new Tester<A>(cmd, "--", Mode.INVOKE);
    tester.assertEnd(Event.Stop.Done.class, 2);

    //
    tester = new Tester<A>(cmd, "-- ", Mode.INVOKE);
    tester.assertSeparator();
    tester.assertEnd(Event.Stop.Done.class, 3);

    //
    tester = new Tester<A>(cmd, "-- foo", Mode.INVOKE);
    tester.assertSeparator();
    tester.assertArgument("arg", "foo");
    tester.assertEnd(Event.Stop.Done.class, 6);
  }