/** * Constructs a menu wilt multiple groups and tests the behavior. */ @Test public void multipleGroups() { final Menu m = Menu.builder() .openGroup() .add(Option.builder("a").build(), list, dummyHandler()) .add(Option.builder("b").build(), list, dummyHandler()) .openGroup() .add(Option.builder("c").build(), list, dummyHandler()) .add(Option.builder("d").build(), list, dummyHandler()) .add(Option.builder("e").build(), list, dummyHandler()) .closeGroup() .addHelpOption("h", "help", "Print me") .build(); assertFalse(m.execute("-a", "-c").isPresent()); assertFalse(m.execute("-b", "-d").isPresent()); testFail(m, "a", CauseType.ALREADY_SELECTED, "-b", "-a"); testFail(m, "b", CauseType.ALREADY_SELECTED, "-d", "-a", "-b"); testFail(m, "c", CauseType.ALREADY_SELECTED, "-d", "-a", "-c"); }
/** * Closing a group with just one option is not allowed. */ @Test(expected = IllegalArgumentException.class) public void failGroup2() { Menu.builder() .openGroup() .add(Option.builder("v").build(), list, dummyHandler()) .closeGroup(); }
/** * Test for checking whether duplicate options are detected. */ @Test(expected = IllegalArgumentException.class) public void duplicateOptions() { final Object subject = new Object(); Menu .builder() .add(Option.builder("a").build(), subject, dummyHandler()) .add(Option.builder("aa", ArgumentParser.stringParser()) .longName("a") .build(), subject, CliTest.<Object, String>dummyArgHandler()); }
.add(Option.builder("x").build(), list, dummyHandler()) .add(Option.builder("y").build(), list, dummyHandler()) .add(Option.builder("z").build(), list, dummyHandler()) .closeGroup() .add(Option.builder("as", ArgumentParser.stringParser()).build(),