/** * Empty long name is not allowed. */ @Test(expected = IllegalArgumentException.class) public void testAddSubMenuInvalidLongName() { Menu.builder().addSubMenu("short", "", menu); }
/** * Empty short name is not allowed. */ @Test(expected = IllegalArgumentException.class) public void testAddSubMenuInvalidShortName() { Menu.builder().addSubMenu("", "long", menu); }
/** * Check for group building. */ @Test(expected = IllegalStateException.class) public void testAddSubMenuInvalidGroup() { Menu.builder().openGroup().addSubMenu("short", "long", menu); }
/** * Closing an empty group is not allowed. */ @Test(expected = IllegalArgumentException.class) public void failGroup1() { Menu.builder().openGroup().closeGroup(); }
/** * Help option in group is not allowed. */ @Test(expected = IllegalStateException.class) public void failHelpOption() { Menu.builder() .openGroup() .addHelpOption("h", "help", "Hello"); }
/** * Tests correct parsing of enum. */ @Test public void testEnum() { final List<TestEnum> consumer = new ArrayList<>(); final Menu m = Menu.builder() .addHelpOption("h", "help", "Hi") .add(Option.builder("e", ArgumentParser.enumParser("testenum", TestEnum.class)).build(), consumer, new AddToListHandler<TestEnum>()) .build(); m.execute("-e", "A"); assertThat(consumer) .containsExactly(TestEnum.A); consumer.clear(); m.execute("-e", "B"); assertThat(consumer) .containsExactly(TestEnum.B); consumer.clear(); testFail(m, "e", CauseType.INVALID_ARG_FORMAT, "-e", "a"); testFail(m, "e", CauseType.INVALID_ARG_FORMAT, "-e", "NON_EXISTING_ENUM"); assertThat(consumer).isEmpty(); }
/** * Test for adding an entire sub menu. */ @Test public void testAddSubMenu() { final Menu m = Menu.builder() .addSubMenu("l", "list.", menu) .addHelpOption("d", "delp", "Help") .build(); // help options are not copied assertFalse(m.containsOption("h")); assertFalse(m.containsOption("lh")); assertEquals(m.getOptionNames().size(), menu.getOptionNames().size()); }
final List<List<TestEnum>> consumer = new ArrayList<>(); final Menu m = Menu .builder() .addHelpOption("h", "help", "Hi") .add(Option.builder("e",
/** * 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(); }
/** * 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()); }
public void testPrefixedIntList() { final List<String> consumer = new ArrayList<>(); final Menu m = Menu.builder() .addHelpOption("h", "help", "Hi") .add(Option.builder("i", ArgumentParser.prefixedIntList("t")).build(),
final Map<String, MASConfiguration> cfgMap = createConfigMap(builder); final Menu.Builder menuBuilder = Menu.builder(); menuBuilder .commandLineSyntax("java -jar jarname.jar <options>")
final Map<String, MASConfiguration> cfgMap = createConfigMap(builder); final Menu.Builder menuBuilder = Menu.builder(); menuBuilder .commandLineSyntax("java -jar jarname.jar <options>")
/** * Test for setting a custom help formatter. */ @Test public void testCustomHelpFormatter() { final HelpFormatter defaultFormatter = DefaultHelpFormatter.INSTANCE; final HelpFormatter customFormatter = new DummyHelpFormatter(); final Menu m = Menu.builder() .addHelpOption("h", "help", "help") .commandLineSyntax("") .helpFormatter(customFormatter) .build(); assertEquals(" -h,--help help\n", defaultFormatter.format(m)); assertEquals("[h, help]", customFormatter.format(m)); assertNotEquals(defaultFormatter.format(m), m.printHelp()); assertEquals(customFormatter.format(m), m.printHelp()); }
menu = Menu.builder() .add(Option.builder("a", ArgumentParser.longParser()).build(), list,
/** * 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"); }