// Copyright (C) 2003-2009 by Object Mentor, Inc. All rights reserved. // Released under the terms of the CPL Common Public License version 1.0. package util; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import org.junit.Test; public class CommandLineTest { private CommandLine options; @Test public void testSimpleParsing() throws Exception { assertTrue(createOptionsAndParse("", "")); assertFalse(createOptionsAndParse("", "blah")); } @Test public void testOneRequiredArgument() throws Exception { assertFalse(createOptionsAndParse("arg1", "")); assertTrue(createOptionsAndParse("arg1", "blah")); assertEquals("blah", options.getArgument("arg1")); } @Test public void testThreeRequiredArguments() throws Exception { assertTrue(createOptionsAndParse("arg1 arg2 arg3", "tic tac toe")); assertEquals("tic", options.getArgument("arg1")); assertEquals("tac", options.getArgument("arg2")); assertEquals("toe", options.getArgument("arg3")); } @Test public void testOneSimpleOption() throws Exception { assertTrue(createOptionsAndParse("[-opt1]", "")); assertFalse(options.hasOption("opt1")); assertTrue(createOptionsAndParse("[-opt1]", "-opt1")); assertTrue(options.hasOption("opt1")); } @Test public void testOptionWithArgument() throws Exception { assertFalse(createOptionsAndParse("[-opt1 arg]", "-opt1")); assertTrue(createOptionsAndParse("[-opt1 arg]", "-opt1 blah")); assertTrue(options.hasOption("opt1")); String argument = options.getOptionArgument("opt1", "arg"); assertNotNull(argument); assertEquals("blah", argument); } @Test public void testMultipleOptions(){ options = new CommandLine("[-opt1 arg]"); String[] args = new Option().split("-opt1 blah"); assertTrue(options.parse(args)); options.hasOption("opt1"); assertEquals("blah", options.getOptionArgument("opt1", "arg")); } @Test public void testInvalidOption() throws Exception { assertFalse(createOptionsAndParse("", "-badArg")); } @Test public void testCombo() throws Exception { String descriptor = "[-opt1 arg1 arg2] [-opt2 arg1] [-opt3] arg1 arg2"; assertFalse(createOptionsAndParse(descriptor, "")); assertFalse(createOptionsAndParse(descriptor, "a")); assertFalse(createOptionsAndParse(descriptor, "-opt1 a b c")); assertFalse(createOptionsAndParse(descriptor, "-opt2 a b")); assertFalse(createOptionsAndParse(descriptor, "-opt2 -opt3 a b")); assertFalse(createOptionsAndParse(descriptor, "-opt1 a -opt2 b -opt3 c d")); assertFalse(createOptionsAndParse(descriptor, "-opt1 a b -opt2 c -opt3 d e f")); assertTrue(createOptionsAndParse(descriptor, "a b")); assertTrue(createOptionsAndParse(descriptor, "-opt3 a b")); assertTrue(createOptionsAndParse(descriptor, "-opt2 a b c")); assertTrue(createOptionsAndParse(descriptor, "-opt1 a b c d")); assertTrue(createOptionsAndParse(descriptor, "-opt1 a b -opt2 c d e")); assertTrue(createOptionsAndParse(descriptor, "-opt1 a b -opt2 c -opt3 d e")); assertTrue(options.hasOption("opt1")); assertEquals("a", options.getOptionArgument("opt1", "arg1")); assertEquals("b", options.getOptionArgument("opt1", "arg2")); assertTrue(options.hasOption("opt2")); assertEquals("c", options.getOptionArgument("opt2", "arg1")); assertTrue(options.hasOption("opt3")); assertEquals("d", options.getArgument("arg1")); assertEquals("e", options.getArgument("arg2")); } private boolean createOptionsAndParse(String validOptions, String enteredOptions) { options = new CommandLine(validOptions); String[] args = new Option().split(enteredOptions); return options.parse(args); } }