You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@opennlp.apache.org by au...@apache.org on 2012/01/22 11:52:53 UTC

svn commit: r1234481 - in /incubator/opennlp/trunk/opennlp-tools/src: main/java/opennlp/tools/cmdline/ArgumentParser.java test/java/opennlp/tools/cmdline/ArgumentParserTest.java

Author: autayeu
Date: Sun Jan 22 10:52:53 2012
New Revision: 1234481

URL: http://svn.apache.org/viewvc?rev=1234481&view=rev
Log:
OPENNLP-418: ArgumentParser didn't account for interfaces with all optional arguments.

Modified:
    incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/ArgumentParser.java
    incubator/opennlp/trunk/opennlp-tools/src/test/java/opennlp/tools/cmdline/ArgumentParserTest.java

Modified: incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/ArgumentParser.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/ArgumentParser.java?rev=1234481&r1=1234480&r2=1234481&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/ArgumentParser.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/main/java/opennlp/tools/cmdline/ArgumentParser.java Sun Jan 22 10:52:53 2012
@@ -321,9 +321,9 @@ public class ArgumentParser {
    * @return null, if arguments are valid or error message otherwise
    */
   public static <T> String validateArgumentsLoudly(String args[], Class<T>... argProxyInterfaces) {
-    // number of parameters must be at least 2 and always be even
-    if (args.length < 2 || args.length % 2 != 0) {
-      return "Number of parameters must be at least 2 and always be even";
+    // number of parameters must be always be even
+    if (args.length % 2 != 0) {
+      return "Number of parameters must be always be even";
     }
 
     int argumentCount = 0;

Modified: incubator/opennlp/trunk/opennlp-tools/src/test/java/opennlp/tools/cmdline/ArgumentParserTest.java
URL: http://svn.apache.org/viewvc/incubator/opennlp/trunk/opennlp-tools/src/test/java/opennlp/tools/cmdline/ArgumentParserTest.java?rev=1234481&r1=1234480&r2=1234481&view=diff
==============================================================================
--- incubator/opennlp/trunk/opennlp-tools/src/test/java/opennlp/tools/cmdline/ArgumentParserTest.java (original)
+++ incubator/opennlp/trunk/opennlp-tools/src/test/java/opennlp/tools/cmdline/ArgumentParserTest.java Sun Jan 22 10:52:53 2012
@@ -58,22 +58,26 @@ public class ArgumentParserTest {
     ArgumentParser.createUsage(InvalidReturnType.class);
   }
   
-  interface SimpleArguments {
+  interface SimpleArguments extends AllOptionalArguments {
     
     @ParameterDescription(valueName = "charset", description = "a charset encoding")
     String getEncoding();
     
+    @OptionalParameter
+    Integer getCutoff();
+  }
+
+  interface AllOptionalArguments {
+
     @ParameterDescription(valueName = "num")
     @OptionalParameter(defaultValue = "100")
     Integer getIterations();
-    
-    @OptionalParameter
-    Integer getCutoff();
-    
+
     @ParameterDescription(valueName = "true|false")
     @OptionalParameter(defaultValue = "true")
     Boolean getAlphaNumOpt();
   }
+
   
   @Test
   public void testSimpleArguments() {
@@ -95,7 +99,31 @@ public class ArgumentParserTest {
     assertFalse(ArgumentParser.validateArguments(argsString.split(" "), SimpleArguments.class));
     ArgumentParser.parse(argsString.split(" "), SimpleArguments.class);
   }
-  
+
+  @Test
+  public void testAllOptionalArgumentsOneArgument() {
+    String argsString = "-alphaNumOpt false";
+
+    assertTrue(ArgumentParser.validateArguments(argsString.split(" "), AllOptionalArguments.class));
+    ArgumentParser.parse(argsString.split(" "), AllOptionalArguments.class);
+  }
+
+  @Test
+  public void testAllOptionalArgumentsZeroArguments() {
+    String[] args = {};
+
+    assertTrue(ArgumentParser.validateArguments(args, AllOptionalArguments.class));
+    ArgumentParser.parse(args, AllOptionalArguments.class);
+  }
+
+  @Test(expected = IllegalArgumentException.class)
+  public void testAllOptionalArgumentsExtraArgument() {
+    String argsString = "-encoding UTF-8";
+
+    assertFalse(ArgumentParser.validateArguments(argsString.split(" "), AllOptionalArguments.class));
+    ArgumentParser.parse(argsString.split(" "), AllOptionalArguments.class);
+  }
+
   @Test
   public void testSimpleArgumentsUsage() {