summaryrefslogtreecommitdiff
path: root/3rdParty/jargs-1.0/src/test/java/jargs/gnu/test/CmdLineParserTestCase.java
diff options
context:
space:
mode:
Diffstat (limited to '3rdParty/jargs-1.0/src/test/java/jargs/gnu/test/CmdLineParserTestCase.java')
-rw-r--r--3rdParty/jargs-1.0/src/test/java/jargs/gnu/test/CmdLineParserTestCase.java252
1 files changed, 252 insertions, 0 deletions
diff --git a/3rdParty/jargs-1.0/src/test/java/jargs/gnu/test/CmdLineParserTestCase.java b/3rdParty/jargs-1.0/src/test/java/jargs/gnu/test/CmdLineParserTestCase.java
new file mode 100644
index 0000000..aa8d3d4
--- /dev/null
+++ b/3rdParty/jargs-1.0/src/test/java/jargs/gnu/test/CmdLineParserTestCase.java
@@ -0,0 +1,252 @@
+package gnu.jargs.test;
+
+import jargs.gnu.CmdLineParser;
+
+import java.util.Enumeration;
+import java.util.Locale;
+import java.util.Vector;
+
+import junit.framework.TestCase;
+
+public class CmdLineParserTestCase extends TestCase {
+
+ public CmdLineParserTestCase(String name) {
+ super(name);
+ }
+
+ public void testStandardOptions() throws Exception {
+ CmdLineParser parser = new CmdLineParser();
+ CmdLineParser.Option verbose = parser.addBooleanOption('v', "verbose");
+ CmdLineParser.Option size = parser.addIntegerOption('s', "size");
+ CmdLineParser.Option name = parser.addStringOption('n', "name");
+ CmdLineParser.Option fraction = parser.addDoubleOption('f', "fraction");
+ CmdLineParser.Option missing = parser.addBooleanOption('m', "missing");
+ CmdLineParser.Option careful = parser.addBooleanOption("careful");
+ CmdLineParser.Option bignum = parser.addLongOption('b', "bignum");
+ assertEquals(null, parser.getOptionValue(size));
+ Long longValue = new Long(new Long(Integer.MAX_VALUE).longValue() + 1);
+ parser.parse(new String[] { "-v", "--size=100", "-b",
+ longValue.toString(), "-n", "foo", "-f", "0.1", "rest" },
+ Locale.US);
+ assertEquals(null, parser.getOptionValue(missing));
+ assertEquals(Boolean.TRUE, parser.getOptionValue(verbose));
+ assertEquals(100, ((Integer) parser.getOptionValue(size)).intValue());
+ assertEquals("foo", parser.getOptionValue(name));
+ assertEquals(longValue, parser.getOptionValue(bignum));
+ assertEquals(0.1, ((Double) parser.getOptionValue(fraction))
+ .doubleValue(), 0.1e-6);
+ assertArrayEquals(new String[]{"rest"}, parser.getRemainingArgs());
+ }
+
+
+ public void testDefaults() throws Exception {
+ CmdLineParser parser = new CmdLineParser();
+ CmdLineParser.Option boolean1 = parser.addBooleanOption("boolean1");
+ CmdLineParser.Option boolean2 = parser.addBooleanOption("boolean2");
+ CmdLineParser.Option boolean3 = parser.addBooleanOption("boolean3");
+ CmdLineParser.Option boolean4 = parser.addBooleanOption("boolean4");
+ CmdLineParser.Option boolean5 = parser.addBooleanOption("boolean5");
+
+ CmdLineParser.Option int1 = parser.addIntegerOption("int1");
+ CmdLineParser.Option int2 = parser.addIntegerOption("int2");
+ CmdLineParser.Option int3 = parser.addIntegerOption("int3");
+ CmdLineParser.Option int4 = parser.addIntegerOption("int4");
+
+ CmdLineParser.Option string1 = parser.addStringOption("string1");
+ CmdLineParser.Option string2 = parser.addStringOption("string2");
+ CmdLineParser.Option string3 = parser.addStringOption("string3");
+ CmdLineParser.Option string4 = parser.addStringOption("string4");
+
+ parser.parse(new String[] {
+ "--boolean1", "--boolean2",
+ "--int1=42", "--int2=42",
+ "--string1=Hello", "--string2=Hello",
+ });
+
+ assertEquals(Boolean.TRUE, parser.getOptionValue(boolean1));
+ assertEquals(Boolean.TRUE,
+ parser.getOptionValue(boolean2, Boolean.FALSE));
+ assertEquals(null, parser.getOptionValue(boolean3));
+ assertEquals(Boolean.FALSE,
+ parser.getOptionValue(boolean4, Boolean.FALSE));
+ assertEquals(Boolean.TRUE,
+ parser.getOptionValue(boolean5, Boolean.TRUE));
+
+ Integer forty_two = new Integer(42);
+ Integer thirty_six = new Integer(36);
+
+ assertEquals(forty_two, parser.getOptionValue(int1));
+ assertEquals(forty_two, parser.getOptionValue(int2, thirty_six));
+ assertEquals(null, parser.getOptionValue(int3));
+ assertEquals(thirty_six, parser.getOptionValue(int4, thirty_six));
+
+ assertEquals("Hello", parser.getOptionValue(string1));
+ assertEquals("Hello", parser.getOptionValue(string2, "Goodbye"));
+ assertEquals(null, parser.getOptionValue(string3));
+ assertEquals("Goodbye", parser.getOptionValue(string4, "Goodbye"));
+ }
+
+
+ public void testMultipleUses() throws Exception {
+ CmdLineParser parser = new CmdLineParser();
+ CmdLineParser.Option verbose = parser.addBooleanOption('v', "verbose");
+ CmdLineParser.Option foo = parser.addBooleanOption('f', "foo");
+ CmdLineParser.Option bar = parser.addBooleanOption('b', "bar");
+
+ parser.parse(new String[] {
+ "--foo", "-v", "-v", "--verbose", "-v", "-b", "rest"
+ });
+
+ int verbosity = 0;
+ while (true) {
+ Boolean b = (Boolean)parser.getOptionValue(verbose);
+
+ if (b == null) {
+ break;
+ }
+
+ if (b == Boolean.TRUE) {
+ verbosity++;
+ }
+ else {
+ assertEquals(Boolean.FALSE, b);
+ verbosity--;
+ }
+ }
+
+ assertEquals(4, verbosity);
+ }
+
+
+ public void testCombinedFlags() throws Exception {
+ CmdLineParser parser = new CmdLineParser();
+ CmdLineParser.Option alt = parser.addBooleanOption('a', "alt");
+ CmdLineParser.Option debug = parser.addBooleanOption('d', "debug");
+ CmdLineParser.Option verbose = parser.addBooleanOption('v', "verbose");
+ parser.parse(new String[] {
+ "-dv"
+ });
+
+ assertEquals(null, parser.getOptionValue(alt));
+ assertEquals(Boolean.TRUE, parser.getOptionValue(debug));
+ assertEquals(Boolean.TRUE, parser.getOptionValue(verbose));
+ }
+
+
+ public void testExplictlyTerminatedOptions() throws Exception {
+ CmdLineParser parser = new CmdLineParser();
+ CmdLineParser.Option alt = parser.addBooleanOption('a', "alt");
+ CmdLineParser.Option debug = parser.addBooleanOption('d', "debug");
+ CmdLineParser.Option verbose = parser.addBooleanOption('v', "verbose");
+ CmdLineParser.Option fraction = parser.addDoubleOption('f', "fraction");
+ parser.parse(new String[] {
+ "-a", "hello", "-d", "-f", "10", "--", "goodbye", "-v", "welcome",
+ "-f", "-10"
+ });
+
+ assertEquals(Boolean.TRUE, parser.getOptionValue(alt));
+ assertEquals(Boolean.TRUE, parser.getOptionValue(debug));
+ assertEquals(null, parser.getOptionValue(verbose));
+ assertEquals(new Double(10), parser.getOptionValue(fraction));
+
+ assertArrayEquals(
+ new String[]{"hello", "goodbye", "-v", "welcome", "-f", "-10"},
+ parser.getRemainingArgs());
+ }
+
+
+ public void testGetOptionValues() throws Exception {
+ CmdLineParser parser = new CmdLineParser();
+ CmdLineParser.Option verbose = parser.addBooleanOption('v', "verbose");
+ CmdLineParser.Option foo = parser.addBooleanOption('f', "foo");
+ CmdLineParser.Option bar = parser.addBooleanOption('b', "bar");
+
+ parser.parse(new String[] {
+ "--foo", "-v", "-v", "--verbose", "-v", "-b", "rest"
+ });
+
+ int verbosity = 0;
+ Vector v = parser.getOptionValues(verbose);
+ Enumeration e = v.elements();
+ while (e.hasMoreElements()) {
+ Boolean b = (Boolean)e.nextElement();
+
+ if (b == Boolean.TRUE) {
+ verbosity++;
+ }
+ else {
+ assertEquals(Boolean.FALSE, b);
+ verbosity--;
+ }
+ }
+
+ assertEquals(4, verbosity);
+ }
+
+
+ public void testBadFormat() throws Exception {
+ CmdLineParser parser = new CmdLineParser();
+ CmdLineParser.Option size = parser.addIntegerOption('s', "size");
+ try {
+ parser.parse(new String[] { "--size=blah" });
+ fail("Expected IllegalOptionValueException");
+ } catch (CmdLineParser.IllegalOptionValueException e) {
+ // pass
+ }
+ }
+
+ public void testResetBetweenParse() throws Exception {
+ CmdLineParser parser = new CmdLineParser();
+ CmdLineParser.Option verbose = parser.addBooleanOption('v', "verbose");
+ parser.parse(new String[] { "-v" });
+ assertEquals(Boolean.TRUE, parser.getOptionValue(verbose));
+ parser.parse(new String[] {});
+ assertEquals(null, parser.getOptionValue(verbose));
+ }
+
+ public void testLocale() throws Exception {
+ CmdLineParser parser = new CmdLineParser();
+ CmdLineParser.Option fraction = parser.addDoubleOption('f', "fraction");
+ parser.parse(new String[] { "--fraction=0.2" }, Locale.US);
+ assertEquals(0.2, ((Double) parser.getOptionValue(fraction))
+ .doubleValue(), 0.1e-6);
+ parser.parse(new String[] { "--fraction=0,2" }, Locale.GERMANY);
+ assertEquals(0.2, ((Double) parser.getOptionValue(fraction))
+ .doubleValue(), 0.1e-6);
+ }
+
+ public void testDetachedOption() throws Exception {
+ CmdLineParser parser = new CmdLineParser();
+ CmdLineParser.Option detached = new CmdLineParser.Option.BooleanOption(
+ 'v', "verbose");
+ assertEquals(null, parser.getOptionValue(detached));
+ try {
+ parser.parse(new String[] { "-v" });
+ fail("UnknownOptionException expected");
+ } catch (CmdLineParser.UnknownOptionException e) {
+ // pass
+ }
+ assertEquals(null, parser.getOptionValue(detached));
+ }
+
+ public void testMissingValueForStringOption() throws Exception {
+ CmdLineParser parser = new CmdLineParser();
+ parser.addBooleanOption('v', "verbose");
+ parser.addStringOption('c', "config");
+
+ try {
+ parser.parse(new String[] {"-v", "-c"});
+ fail();
+ } catch (CmdLineParser.IllegalOptionValueException e) {
+ }
+ }
+
+ private void assertArrayEquals(Object[] expected, Object[] actual) {
+ assertNotNull(actual);
+ assertEquals(expected.length, actual.length);
+ for (int i = 0; i < expected.length; ++i) {
+ assertEquals(expected[i], actual[i]);
+ }
+ }
+
+}