// 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 junit.framework.TestCase;
public class CommandLineTest extends TestCase {
private CommandLine options;
public void testSimpleParsing() throws Exception {
assertTrue(createOptionsAndParse("", ""));
assertFalse(createOptionsAndParse("", "blah"));
}
public void testOneRequiredArgument() throws Exception {
assertFalse(createOptionsAndParse("arg1", ""));
assertTrue(createOptionsAndParse("arg1", "blah"));
assertEquals("blah", options.getArgument("arg1"));
}
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"));
}
public void testOneSimpleOption() throws Exception {
assertTrue(createOptionsAndParse("[-opt1]", ""));
assertFalse(options.hasOption("opt1"));
assertTrue(createOptionsAndParse("[-opt1]", "-opt1"));
assertTrue(options.hasOption("opt1"));
}
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);
}
public void testInvalidOption() throws Exception {
assertFalse(createOptionsAndParse("", "-badArg"));
}
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);
}
}