.values()); for (final Set<Option> group : menu.groups) { openGroup(); for (final Option option : group) { final OptionParser exec = menu.optionMap.get(option
/** * Creates the default {@link com.github.rinde.rinsim.cli.Menu.Builder} for * creating the {@link Menu} instances. * @param builder The {@link FileProvider.Builder} that should be controlled * via CLI. * @return The new menu builder. */ public static Menu createDefaultMenu( FileProvider.Builder builder) { final Map<String, Path> pathMap = createPathMap(builder); final Menu.Builder cliBuilder = Menu.builder() .addHelpOption("h", "help", "Print this message") .add(createAddOption(), builder, ADD) .add(createFilterOption(builder), builder, FILTER); if (!pathMap.isEmpty()) { cliBuilder .openGroup() .add(createIncludeOption(pathMap, builder), builder, new IncludeHandler(pathMap)) .add(createExcludeOption(pathMap, builder), builder, new ExcludeHandler(pathMap)) .closeGroup(); } return cliBuilder.build(); }
/** * Creates the default {@link com.github.rinde.rinsim.cli.Menu.Builder} for * creating the {@link Menu} instances. * @param builder The {@link FileProvider.Builder} that should be controlled * via CLI. * @return The new menu builder. */ public static Menu createDefaultMenu( FileProvider.Builder builder) { final Map<String, Path> pathMap = createPathMap(builder); final Menu.Builder cliBuilder = Menu.builder() .addHelpOption("h", "help", "Print this message") .add(createAddOption(), builder, ADD) .add(createFilterOption(builder), builder, FILTER); if (!pathMap.isEmpty()) { cliBuilder .openGroup() .add(createIncludeOption(pathMap, builder), builder, new IncludeHandler(pathMap)) .add(createExcludeOption(pathMap, builder), builder, new ExcludeHandler(pathMap)) .closeGroup(); } return cliBuilder.build(); }
.openGroup() .add(Option.builder("x").build(), list, dummyHandler()) .add(Option.builder("y").build(), list, dummyHandler())
.header("RinSim Experiment command line interface.") .footer("For more information see http://github.com/rinde/RinSim") .openGroup() .add(createBatchesOpt(builder), builder, IntHandlers.BATCHES) .add(createThreadsOpt(builder), builder, IntHandlers.THREADS) .openGroup() .add(createIncludeOpt(cfgMap), builder, new IncludeHandler(cfgMap)) .add(createExcludeOpt(cfgMap), builder, new ExcludeHandler(cfgMap)) .openGroup() .add(createLocalOpt(builder), builder, NoArgHandlers.LOCAL) .add(createJppfOpt(builder), builder, NoArgHandlers.DISTRIBUTED)
.header("RinSim Experiment command line interface.") .footer("For more information see http://github.com/rinde/RinSim") .openGroup() .add(createBatchesOpt(builder), builder, IntHandlers.BATCHES) .add(createThreadsOpt(builder), builder, IntHandlers.THREADS) .openGroup() .add(createIncludeOpt(cfgMap), builder, new IncludeHandler(cfgMap)) .add(createExcludeOpt(cfgMap), builder, new ExcludeHandler(cfgMap)) .openGroup() .add(createLocalOpt(builder), builder, NoArgHandlers.LOCAL) .add(createJppfOpt(builder), builder, NoArgHandlers.DISTRIBUTED)
/** * 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"); }
/** * Help option in group is not allowed. */ @Test(expected = IllegalStateException.class) public void failHelpOption() { Menu.builder() .openGroup() .addHelpOption("h", "help", "Hello"); }
/** * Check for group building. */ @Test(expected = IllegalStateException.class) public void testAddSubMenuInvalidGroup() { Menu.builder().openGroup().addSubMenu("short", "long", menu); }
/** * 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(); }
/** * Closing an empty group is not allowed. */ @Test(expected = IllegalArgumentException.class) public void failGroup1() { Menu.builder().openGroup().closeGroup(); }