You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by jk...@apache.org on 2002/09/10 23:35:58 UTC
cvs commit: jakarta-commons/cli/src/test/org/apache/commons/cli ValueTest.java
jkeyes 2002/09/10 14:35:57
Modified: cli/src/java/org/apache/commons/cli Option.java
OptionBuilder.java
cli/src/test/org/apache/commons/cli ValueTest.java
Log:
support for Options with optional argument values
Revision Changes Path
1.13 +0 -3 jakarta-commons/cli/src/java/org/apache/commons/cli/Option.java
Index: Option.java
===================================================================
RCS file: /home/cvs/jakarta-commons/cli/src/java/org/apache/commons/cli/Option.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- Option.java 1 Sep 2002 22:54:56 -0000 1.12
+++ Option.java 10 Sep 2002 21:35:57 -0000 1.13
@@ -314,9 +314,6 @@
* an optional argument.
*/
public void setOptionalArg( boolean optionalArg ) {
- if( optionalArg ) {
- this.numberOfArgs = 1;
- }
this.optionalArg = optionalArg;
}
1.9 +48 -21 jakarta-commons/cli/src/java/org/apache/commons/cli/OptionBuilder.java
Index: OptionBuilder.java
===================================================================
RCS file: /home/cvs/jakarta-commons/cli/src/java/org/apache/commons/cli/OptionBuilder.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- OptionBuilder.java 9 Sep 2002 19:48:13 -0000 1.8
+++ OptionBuilder.java 10 Sep 2002 21:35:57 -0000 1.9
@@ -234,6 +234,33 @@
* @return the OptionBuilder instance
*/
public static OptionBuilder hasOptionalArg( ) {
+ instance.numberOfArgs = 1;
+ instance.optionalArg = true;
+ return instance;
+ }
+
+ /**
+ * <p>The next Option can have an unlimited number of
+ * optional arguments.</p>
+ *
+ * @return the OptionBuilder instance
+ */
+ public static OptionBuilder hasOptionalArgs( ) {
+ instance.numberOfArgs = Option.UNLIMITED_VALUES;
+ instance.optionalArg = true;
+ return instance;
+ }
+
+ /**
+ * <p>The next Option can have the specified number of
+ * optional arguments.</p>
+ *
+ * @param numArgs - the maximum number of optional arguments
+ * the next Option created can have.
+ * @return the OptionBuilder instance
+ */
+ public static OptionBuilder hasOptionalArgs( int numArgs ) {
+ instance.numberOfArgs = numArgs;
instance.optionalArg = true;
return instance;
}
@@ -277,6 +304,24 @@
}
/**
+ * <p>Create an Option using the current settings</p>
+ *
+ * @return the Option instance
+ * @throws IllegalArgumentException if <code>longOpt</code> has
+ * not been set.
+ * @see Option.
+ */
+ public static Option create()
+ throws IllegalArgumentException
+ {
+ if( longopt == null ) {
+ throw new IllegalArgumentException( "must specify longopt" );
+ }
+
+ return create( " " );
+ }
+
+ /**
* <p>Create an Option using the current settings and with
* the specified Option <code>char</code>.</p>
*
@@ -304,23 +349,5 @@
// return the Option instance
return option;
- }
-
- /**
- * <p>Create an Option using the current settings</p>
- *
- * @return the Option instance
- * @throws IllegalArgumentException if <code>longOpt</code> has
- * not been set.
- * @see Option.
- */
- public static Option create()
- throws IllegalArgumentException
- {
- if( longopt == null ) {
- throw new IllegalArgumentException( "must specify longopt" );
- }
-
- return create( " " );
}
}
1.4 +178 -12 jakarta-commons/cli/src/test/org/apache/commons/cli/ValueTest.java
Index: ValueTest.java
===================================================================
RCS file: /home/cvs/jakarta-commons/cli/src/test/org/apache/commons/cli/ValueTest.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ValueTest.java 4 Jul 2002 22:32:12 -0000 1.3
+++ ValueTest.java 10 Sep 2002 21:35:57 -0000 1.4
@@ -19,17 +19,11 @@
public static Test suite() {
return new TestSuite(ValueTest.class);
- /*
- TestSuite suite = new TestSuite();
-
- suite.addTest( new ValueTest("testLongNoArg") );
-
- return suite;
- */
}
private CommandLine _cl = null;
-
+ private CommandLine _clOptional = null;
+ private Options opts = new Options();
public ValueTest(String name)
{
@@ -38,7 +32,6 @@
public void setUp()
{
- Options opts = new Options();
opts.addOption("a",
false,
"toggle -a");
@@ -57,10 +50,32 @@
true,
"set -d");
+ opts.addOption( OptionBuilder.hasOptionalArg()
+ .create( 'e') );
+
+ opts.addOption( OptionBuilder.hasOptionalArg()
+ .withLongOpt( "fish" )
+ .create( ) );
+
+ opts.addOption( OptionBuilder.hasOptionalArgs()
+ .withLongOpt( "gravy" )
+ .create( ) );
+
+ opts.addOption( OptionBuilder.hasOptionalArgs( 2 )
+ .withLongOpt( "hide" )
+ .create( ) );
+
+ opts.addOption( OptionBuilder.hasOptionalArgs( 2 )
+ .create( 'i' ) );
+
+ opts.addOption( OptionBuilder.hasOptionalArgs( )
+ .create( 'j' ) );
+
String[] args = new String[] { "-a",
- "-b", "foo",
- "--c",
- "--d", "bar" };
+ "-b", "foo",
+ "--c",
+ "--d", "bar"
+ };
try
{
@@ -102,5 +117,156 @@
assertTrue( _cl.hasOption("d") );
assertNotNull( _cl.getOptionValue("d") );
assertEquals( _cl.getOptionValue("d"), "bar");
+ }
+
+ public void testShortOptionalArgNoValue()
+ {
+ String[] args = new String[] { "-e"
+ };
+ try
+ {
+ CommandLineParser parser = CommandLineParserFactory.newParser();
+ CommandLine cmd = parser.parse(opts,args);
+ assertTrue( cmd.hasOption("e") );
+ assertNull( cmd.getOptionValue("e") );
+ }
+ catch (ParseException e)
+ {
+ fail("Cannot setUp() CommandLine: " + e.toString());
+ }
+ }
+
+ public void testShortOptionalArgValue()
+ {
+ String[] args = new String[] { "-e", "everything"
+ };
+ try
+ {
+ CommandLineParser parser = CommandLineParserFactory.newParser();
+ CommandLine cmd = parser.parse(opts,args);
+ assertTrue( cmd.hasOption("e") );
+ assertEquals( "everything", cmd.getOptionValue("e") );
+ }
+ catch (ParseException e)
+ {
+ fail("Cannot setUp() CommandLine: " + e.toString());
+ }
+ }
+
+ public void testLongOptionalNoValue()
+ {
+ String[] args = new String[] { "--fish"
+ };
+ try
+ {
+ CommandLineParser parser = CommandLineParserFactory.newParser();
+ CommandLine cmd = parser.parse(opts,args);
+ assertTrue( cmd.hasOption("fish") );
+ assertNull( cmd.getOptionValue("fish") );
+ }
+ catch (ParseException e)
+ {
+ fail("Cannot setUp() CommandLine: " + e.toString());
+ }
+ }
+
+ public void testLongOptionalArgValue()
+ {
+ String[] args = new String[] { "--fish", "face"
+ };
+ try
+ {
+ CommandLineParser parser = CommandLineParserFactory.newParser();
+ CommandLine cmd = parser.parse(opts,args);
+ assertTrue( cmd.hasOption("fish") );
+ assertEquals( "face", cmd.getOptionValue("fish") );
+ }
+ catch (ParseException e)
+ {
+ fail("Cannot setUp() CommandLine: " + e.toString());
+ }
+ }
+
+ public void testShortOptionalArgValues()
+ {
+ String[] args = new String[] { "-j", "ink", "idea"
+ };
+ try
+ {
+ CommandLineParser parser = CommandLineParserFactory.newParser();
+ CommandLine cmd = parser.parse(opts,args);
+ assertTrue( cmd.hasOption("j") );
+ assertEquals( "ink", cmd.getOptionValue("j") );
+ assertEquals( "ink", cmd.getOptionValues("j")[0] );
+ assertEquals( "idea", cmd.getOptionValues("j")[1] );
+ assertEquals( cmd.getArgs().length, 0 );
+ }
+ catch (ParseException e)
+ {
+ fail("Cannot setUp() CommandLine: " + e.toString());
+ }
+ }
+
+ public void testLongOptionalArgValues()
+ {
+ String[] args = new String[] { "--gravy", "gold", "garden"
+ };
+ try
+ {
+ CommandLineParser parser = CommandLineParserFactory.newParser();
+ CommandLine cmd = parser.parse(opts,args);
+ assertTrue( cmd.hasOption("gravy") );
+ assertEquals( "gold", cmd.getOptionValue("gravy") );
+ assertEquals( "gold", cmd.getOptionValues("gravy")[0] );
+ assertEquals( "garden", cmd.getOptionValues("gravy")[1] );
+ assertEquals( cmd.getArgs().length, 0 );
+ }
+ catch (ParseException e)
+ {
+ fail("Cannot setUp() CommandLine: " + e.toString());
+ }
+ }
+
+ public void testShortOptionalNArgValues()
+ {
+ String[] args = new String[] { "-i", "ink", "idea", "isotope", "ice"
+ };
+ try
+ {
+ CommandLineParser parser = CommandLineParserFactory.newParser();
+ CommandLine cmd = parser.parse(opts,args);
+ assertTrue( cmd.hasOption("i") );
+ assertEquals( "ink", cmd.getOptionValue("i") );
+ assertEquals( "ink", cmd.getOptionValues("i")[0] );
+ assertEquals( "idea", cmd.getOptionValues("i")[1] );
+ assertEquals( cmd.getArgs().length, 2 );
+ assertEquals( "isotope", cmd.getArgs()[0] );
+ assertEquals( "ice", cmd.getArgs()[1] );
+ }
+ catch (ParseException e)
+ {
+ fail("Cannot setUp() CommandLine: " + e.toString());
+ }
+ }
+
+ public void testLongOptionalNArgValues()
+ {
+ String[] args = new String[] { "--hide", "house", "hair", "head"
+ };
+ try
+ {
+ CommandLineParser parser = CommandLineParserFactory.newParser();
+ CommandLine cmd = parser.parse(opts,args);
+ assertTrue( cmd.hasOption("hide") );
+ assertEquals( "house", cmd.getOptionValue("hide") );
+ assertEquals( "house", cmd.getOptionValues("hide")[0] );
+ assertEquals( "hair", cmd.getOptionValues("hide")[1] );
+ assertEquals( cmd.getArgs().length, 1 );
+ assertEquals( "head", cmd.getArgs()[0] );
+ }
+ catch (ParseException e)
+ {
+ fail("Cannot setUp() CommandLine: " + e.toString());
+ }
}
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>