void testFail(String failingOptionName, CauseType causeType, String... args) { testFail(menu, failingOptionName, causeType, args); }
/** * 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"); }
/** * 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()); }
/** * 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(); }
.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(),
/** * Test for unrecognized command. */ @Test public void testUnrecognizedCommand() { testFail(menu, CauseType.UNRECOGNIZED_COMMAND, "---a"); }
/** * Test for unexpected argument. */ @Test public void testUnexpectedArgument() { testFail(menu, "x", CauseType.UNEXPECTED_ARG, "-x", "T"); }
/** * Test for various inputs of threads. */ @Test public void testThreads() { testFail(menu, "t", CauseType.MISSING_ARG, "--threads"); testFail(menu, "t", CauseType.INVALID_ARG_FORMAT, "-t", "x", "-s", "1"); testFail(menu, "t", CauseType.HANDLER_FAILURE, IllegalArgumentException.class, "-t", "0", "-s", "1"); assertEquals(1, testSuccess("-t 1").numThreads); assertEquals(10, testSuccess("-t 10").numThreads); }
/** * Test for various inputs of batches. */ @Test public void testBatches() { testFail(menu, "b", CauseType.MISSING_ARG, "--batches"); testFail(menu, "b", CauseType.INVALID_ARG_FORMAT, "-b", "x", "-s", "1"); testFail(menu, "b", CauseType.HANDLER_FAILURE, IllegalArgumentException.class, "-b", "0", "-s", "1"); assertEquals(1, testSuccess("-b 1").numBatches); assertEquals(10, testSuccess("-b 10").numBatches); }
/** * Test for various inputs of repetitions. */ @Test public void testRepetitions() { testFail(menu, "r", CauseType.MISSING_ARG, "--repetitions"); testFail(menu, "r", CauseType.INVALID_ARG_FORMAT, "-r", "x", "-s", "1"); testFail(menu, "r", CauseType.HANDLER_FAILURE, IllegalArgumentException.class, "-r", "0", "-s", "1"); assertEquals(1, testSuccess("-r 1").repetitions); assertEquals(10, testSuccess("-r 10").repetitions); }
/** * Test for various inputs of repetitions. */ @Test public void testSeedRepetitions() { testFail(menu, "sr", CauseType.MISSING_ARG, "--seed-repetitions"); testFail(menu, "sr", CauseType.INVALID_ARG_FORMAT, "-sr", "x", "-s", "1"); testFail(menu, "sr", CauseType.HANDLER_FAILURE, IllegalArgumentException.class, "-sr", "0", "-s", "1"); assertEquals(1, testSuccess("-sr 1").seedRepetitions); assertEquals(10, testSuccess("-sr 10").seedRepetitions); }
/** * Test the warmup option. */ @Test public void testWarmup() { assertThat(menu.execute("-w", "123")).isAbsent(); assertThat(builder.warmupPeriodMs).isEqualTo(123); testFail(menu, "w", CauseType.HANDLER_FAILURE, "-w", "-9"); } }
/** * Tests whether string parsing is correct. */ @Test public void testStringArgType() { assertTrue(list.isEmpty()); assertFalse(menu.execute("-asl", "hello world", "bye").isPresent()); assertEquals(asList("hello world", "bye"), list); testFail("asl", CauseType.MISSING_ARG, "-asl"); assertEquals(asList("hello world", "bye"), list); assertFalse(menu.execute("-as", "hello again").isPresent()); assertEquals(asList("hello world", "bye", "hello again"), list); testFail("as", CauseType.MISSING_ARG, "-as"); }