package no.priv.garshol.duke.utils; import org.junit.Before; import org.junit.Test; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.fail; public class CommandLineParserTest { private CommandLineParser parser; @Before public void setup() { parser = new CommandLineParser(); } @Test public void testEmpty() { String[] args = parser.parse(new String[] {}); assertEquals(0, args.length); } @Test public void testEmpty2() { parser.registerOption(new CommandLineParser.BooleanOption("test", 't')); String[] args = parser.parse(new String[] {}); assertEquals(false, parser.getOptionState("test")); assertEquals(0, args.length); } @Test public void testSingleArgument() { String[] args = parser.parse(new String[] { "foo" }); StringUtilsTest.assertEqual(new String[]{"foo"}, args); } @Test public void testSingleBooleanOption() { parser.registerOption(new CommandLineParser.BooleanOption("test", 't')); String[] args = parser.parse(new String[] { "--test", "foo" }); assertEquals(true, parser.getOptionState("test")); StringUtilsTest.assertEqual(new String[] { "foo" }, args); } @Test public void testSingleBooleanShortOption() { parser.registerOption(new CommandLineParser.BooleanOption("test", 't')); String[] args = parser.parse(new String[] { "-t", "foo" }); assertEquals(true, parser.getOptionState("test")); StringUtilsTest.assertEqual(new String[] { "foo" }, args); } @Test public void testSingleStringOption() { parser.registerOption(new CommandLineParser.StringOption("test", 't')); String[] args = parser.parse(new String[] { "--test=bar", "foo" }); assertEquals("bar", parser.getOptionValue("test")); StringUtilsTest.assertEqual(new String[] { "foo" }, args); } @Test public void testSingleStringShortOption() { parser.registerOption(new CommandLineParser.StringOption("test", 't')); String[] args = parser.parse(new String[] { "-t=bar", "foo" }); assertEquals("bar", parser.getOptionValue("test")); StringUtilsTest.assertEqual(new String[] { "foo" }, args); } @Test public void testUnknownOption() { try { parser.parse(new String[] { "-t", "foo" }); fail("didn't catch unregistered option"); } catch (CommandLineParser.CommandLineParserException e) { } } @Test public void testNotEnoughArguments() { parser.setMinimumArguments(1); try { parser.parse(new String[] { }); fail("didn't catch required missing argument"); } catch (CommandLineParser.CommandLineParserException e) { } } @Test public void testNotEnoughArguments2() { parser.setMinimumArguments(1); try { parser.parse(new String[] { "-t" }); fail("didn't catch required missing argument"); } catch (CommandLineParser.CommandLineParserException e) { } } @Test public void testNoValue() { parser.registerOption(new CommandLineParser.StringOption("test", 't')); try { parser.parse(new String[] { "-t" }); fail("didn't catch required missing value"); } catch (CommandLineParser.CommandLineParserException e) { } } @Test public void testLongShortConfusion() { parser.registerOption(new CommandLineParser.BooleanOption("test", 't')); try { parser.parse(new String[] { "-to" }); fail("didn't catch long name for short option"); } catch (CommandLineParser.CommandLineParserException e) { } } @Test public void testParamsAfterFile() { // test for issue 90 parser.registerOption(new CommandLineParser.BooleanOption("test", 't')); try { parser.parse(new String[] { "config", "--test" }); fail("didn't catch parameter after file parameter"); } catch (CommandLineParser.CommandLineParserException e) { } } @Test public void testTooManyArguments() { parser.setMaximumArguments(1); try { parser.parse(new String[] { "foo", "bar" }); fail("didn't catch too many arguments"); } catch (CommandLineParser.CommandLineParserException e) { } } }