commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jke...@apache.org
Subject svn commit: r280699 - in /jakarta/commons/proper/cli/trunk/src: java/org/apache/commons/cli2/builder/ java/org/apache/commons/cli2/option/ java/org/apache/commons/cli2/resource/ test/org/apache/commons/cli2/builder/ test/org/apache/commons/cli2/option/
Date Tue, 13 Sep 2005 22:43:04 GMT
Author: jkeyes
Date: Tue Sep 13 15:42:46 2005
New Revision: 280699

URL: http://svn.apache.org/viewcvs?rev=280699&view=rev
Log:
- added ArgumentBuilder test 

Added:
    jakarta/commons/proper/cli/trunk/src/test/org/apache/commons/cli2/builder/ArgumentBuilderTest.java
Modified:
    jakarta/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/ArgumentBuilder.java
    jakarta/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/ArgumentImpl.java
    jakarta/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/resource/CLIMessageBundle_en_US.properties
    jakarta/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/resource/ResourceConstants.java
    jakarta/commons/proper/cli/trunk/src/test/org/apache/commons/cli2/option/ParentTest.java

Modified: jakarta/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/ArgumentBuilder.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/ArgumentBuilder.java?rev=280699&r1=280698&r2=280699&view=diff
==============================================================================
--- jakarta/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/ArgumentBuilder.java
(original)
+++ jakarta/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/builder/ArgumentBuilder.java
Tue Sep 13 15:42:46 2005
@@ -20,6 +20,8 @@
 
 import org.apache.commons.cli2.Argument;
 import org.apache.commons.cli2.option.ArgumentImpl;
+import org.apache.commons.cli2.resource.ResourceConstants;
+import org.apache.commons.cli2.resource.ResourceHelper;
 import org.apache.commons.cli2.validation.Validator;
 
 /**
@@ -27,6 +29,9 @@
  */
 public class ArgumentBuilder {
 
+	/** i18n */
+	private final static ResourceHelper resources = ResourceHelper.getResourceHelper();
+	
     /** name of the argument. Used for display and lookups in CommandLine */
     private String name;
 
@@ -118,6 +123,12 @@
      * @return this ArgumentBuilder
      */
     public final ArgumentBuilder withName(final String newName) {
+    	if (newName == null) {
+    		throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_NAME));
+    	}
+    	if ("".equals(newName)) {
+    		throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_EMPTY_NAME));
+    	}
         this.name = newName;
         return this;
     }
@@ -142,6 +153,9 @@
      * @return this ArgumentBuilder
      */
     public final ArgumentBuilder withMinimum(final int newMinimum) {
+    	if (newMinimum < 0) {
+    		throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NEGATIVE_MINIMUM));
+    	}
         this.minimum = newMinimum;
         return this;
     }
@@ -153,6 +167,9 @@
      * @return this ArgumentBuilder
      */
     public final ArgumentBuilder withMaximum(final int newMaximum) {
+    	if (newMaximum < 0) {
+    		throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NEGATIVE_MAXIMUM));
+    	}
         this.maximum = newMaximum;
         return this;
     }
@@ -197,6 +214,9 @@
      * @return this ArgumentBuilder
      */
     public final ArgumentBuilder withValidator(final Validator newValidator) {
+    	if (newValidator == null) {
+    		throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_VALIDATOR));
+    	}
         this.validator = newValidator;
         return this;
     }
@@ -210,7 +230,12 @@
      * @return this ArgumentBuilder
      */
     public final ArgumentBuilder withConsumeRemaining(final String newConsumeRemaining) {
-
+    	if (newConsumeRemaining == null) {
+    		throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_CONSUME_REMAINING));
+    	} 
+    	if ( "".equals(newConsumeRemaining)) {
+    		throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_EMPTY_CONSUME_REMAINING));
+    	}
         this.consumeRemaining = newConsumeRemaining;
         return this;
     }
@@ -222,6 +247,10 @@
      * @return this ArgumentBuilder
      */
     public final ArgumentBuilder withDefault(final Object defaultValue) {
+    	if (defaultValue == null) {
+    		throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_DEFAULT));
+    	}
+    	
         if (this.defaultValues == null) {
             this.defaultValues = new ArrayList(1);
         }
@@ -236,6 +265,9 @@
      * @return this ArgumentBuilder
      */
     public final ArgumentBuilder withDefaults(final List newDefaultValues) {
+    	if (newDefaultValues == null) {
+    		throw new IllegalArgumentException(resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_DEFAULTS));
+    	}
         this.defaultValues = newDefaultValues;
         return this;
     }

Modified: jakarta/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/ArgumentImpl.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/ArgumentImpl.java?rev=280699&r1=280698&r2=280699&view=diff
==============================================================================
--- jakarta/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/ArgumentImpl.java
(original)
+++ jakarta/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/option/ArgumentImpl.java
Tue Sep 13 15:42:46 2005
@@ -62,7 +62,7 @@
     private final int minimum;
     private final int maximum;
     private final char initialSeparator;
-    private final char subsequentSepatator;
+    private final char subsequentSeparator;
     private final boolean subsequentSplit;
     private final Validator validator;
     private final String consumeRemaining;
@@ -112,7 +112,7 @@
         this.minimum = minimum;
         this.maximum = maximum;
         this.initialSeparator = initialSeparator;
-        this.subsequentSepatator = subsequentSeparator;
+        this.subsequentSeparator = subsequentSeparator;
         this.subsequentSplit = subsequentSeparator != NUL;
         this.validator = validator;
         this.consumeRemaining = consumeRemaining;
@@ -162,7 +162,7 @@
             // should we split the string up?
             else if (subsequentSplit) {
                 final StringTokenizer values =
-                    new StringTokenizer(allValues, String.valueOf(subsequentSepatator));
+                    new StringTokenizer(allValues, String.valueOf(subsequentSeparator));
 
                 arguments.remove();
 
@@ -206,10 +206,26 @@
         return this.initialSeparator;
     }
 
+    public char getSubsequentSeparator() {
+        return this.subsequentSeparator;
+    }
+
     public Set getTriggers() {
         return Collections.EMPTY_SET;
     }
 
+    public String getConsumeRemaining() {
+    	return this.consumeRemaining;
+    }
+    
+    public List getDefaultValues() {
+    	return this.defaultValues;
+    }
+    
+    public Validator getValidator() {
+    	return this.validator;
+    }
+    
     public void validate(final WriteableCommandLine commandLine)
         throws OptionException {
         validate(commandLine, this);

Modified: jakarta/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/resource/CLIMessageBundle_en_US.properties
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/resource/CLIMessageBundle_en_US.properties?rev=280699&r1=280698&r2=280699&view=diff
==============================================================================
--- jakarta/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/resource/CLIMessageBundle_en_US.properties
(original)
+++ jakarta/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/resource/CLIMessageBundle_en_US.properties
Tue Sep 13 15:42:46 2005
@@ -45,3 +45,13 @@
 Unexpected.token = Unexpected {0} while processing
 Missing.option = Missing option
 Cannot.burst = Could not burst "{0}" while processing 
+
+ArgumentBuilder.null.consume.remaining = Cannot use 'null' as the consume remaining token.
+ArgumentBuilder.empty.consume.remaining = Cannot use an empty string as the consume remaining
token.
+ArgumentBuilder.null.defaults = Cannot use 'null' defaults.
+ArgumentBuilder.null.default = Cannot use 'null' default.
+ArgumentBuilder.negative.maximum = Cannot use a negative maximum value.
+ArgumentBuilder.negative.minimum = Cannot use a negative minimum value.
+ArgumentBuilder.null.name = Cannot use 'null' as a name.
+ArgumentBuilder.empty.name = Cannot use an empty string as a name.
+ArgumentBuilder.null.validator = Cannot use 'null' as a validator.

Modified: jakarta/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/resource/ResourceConstants.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/resource/ResourceConstants.java?rev=280699&r1=280698&r2=280699&view=diff
==============================================================================
--- jakarta/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/resource/ResourceConstants.java
(original)
+++ jakarta/commons/proper/cli/trunk/src/java/org/apache/commons/cli2/resource/ResourceConstants.java
Tue Sep 13 15:42:46 2005
@@ -54,4 +54,14 @@
     public static final String HELPFORMATTER_GUTTER_TOO_LONG = "HelpFormatter.gutter.too.long";
     public static final String HELPFORMATTER_WIDTH_TOO_NARROW = "HelpFormatter.width.too.narrow";
     public static final String ENUM_ILLEGAL_VALUE = "Enum.illegal.value";
+    public static final String ARGUMENT_BUILDER_NULL_CONSUME_REMAINING = "ArgumentBuilder.null.consume.remaining";
+    public static final String ARGUMENT_BUILDER_EMPTY_CONSUME_REMAINING = "ArgumentBuilder.empty.consume.remaining";
+    public static final String ARGUMENT_BUILDER_NULL_DEFAULT = "ArgumentBuilder.null.default";
+    public static final String ARGUMENT_BUILDER_NULL_DEFAULTS = "ArgumentBuilder.null.defaults";
+    public static final String ARGUMENT_BUILDER_NEGATIVE_MAXIMUM = "ArgumentBuilder.negative.maximum";
+    public static final String ARGUMENT_BUILDER_NEGATIVE_MINIMUM = "ArgumentBuilder.negative.minimum";
+    public static final String ARGUMENT_BUILDER_NULL_NAME = "ArgumentBuilder.null.name";
+    public static final String ARGUMENT_BUILDER_EMPTY_NAME = "ArgumentBuilder.empty.name";
+    public static final String ARGUMENT_BUILDER_NULL_VALIDATOR = "ArgumentBuilder.null.validator";
+
 }

Added: jakarta/commons/proper/cli/trunk/src/test/org/apache/commons/cli2/builder/ArgumentBuilderTest.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/cli/trunk/src/test/org/apache/commons/cli2/builder/ArgumentBuilderTest.java?rev=280699&view=auto
==============================================================================
--- jakarta/commons/proper/cli/trunk/src/test/org/apache/commons/cli2/builder/ArgumentBuilderTest.java
(added)
+++ jakarta/commons/proper/cli/trunk/src/test/org/apache/commons/cli2/builder/ArgumentBuilderTest.java
Tue Sep 13 15:42:46 2005
@@ -0,0 +1,251 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.cli2.builder;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.apache.commons.cli2.option.ArgumentImpl;
+import org.apache.commons.cli2.resource.ResourceConstants;
+import org.apache.commons.cli2.resource.ResourceHelper;
+import org.apache.commons.cli2.validation.DateValidator;
+import org.apache.commons.cli2.validation.Validator;
+
+public class ArgumentBuilderTest
+    extends TestCase {
+    private static final ResourceHelper resources = ResourceHelper.getResourceHelper();
+    private ArgumentBuilder argumentBuilder;
+
+    /*
+     * @see TestCase#setUp()
+     */
+    protected void setUp()
+        throws Exception {
+        this.argumentBuilder = new ArgumentBuilder();
+    }
+
+    public void testConsumeRemaining() {
+        this.argumentBuilder.withConsumeRemaining("--");
+        this.argumentBuilder.withName("arg");
+
+        ArgumentImpl arg = (ArgumentImpl) this.argumentBuilder.create();
+
+        assertEquals("incorrect consume remaining token", "--", arg.getConsumeRemaining());
+    }
+
+    public void testNullConsumeRemaining() {
+        try {
+            this.argumentBuilder.withConsumeRemaining(null);
+            fail("cannot use null consume remaining token");
+        } catch (IllegalArgumentException exp) {
+            assertEquals("wrong exception message",
+                         resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_CONSUME_REMAINING),
+                         exp.getMessage());
+        }
+    }
+
+    public void testEmptyConsumeRemaining() {
+        try {
+            this.argumentBuilder.withConsumeRemaining("");
+            fail("cannot use empty string consume remaining token");
+        } catch (IllegalArgumentException exp) {
+            assertEquals("wrong exception message",
+                         resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_EMPTY_CONSUME_REMAINING),
+                         exp.getMessage());
+        }
+    }
+
+    public void testDefault() {
+        this.argumentBuilder.withDefault("defaultString");
+        this.argumentBuilder.withName("arg");
+
+        ArgumentImpl arg = (ArgumentImpl) this.argumentBuilder.create();
+
+        assertEquals("incorrect number of default values", 1, arg.getDefaultValues().size());
+        assertEquals("incorrect default value", "defaultString", arg.getDefaultValues().get(0));
+    }
+
+    public void testDefaultX2() {
+        this.argumentBuilder.withDefault("defaultString1");
+        this.argumentBuilder.withDefault("defaultString2");
+        this.argumentBuilder.withName("arg");
+
+        ArgumentImpl arg = (ArgumentImpl) this.argumentBuilder.create();
+
+        assertEquals("incorrect number of default values", 2, arg.getDefaultValues().size());
+        assertEquals("incorrect default value-1", "defaultString1", arg.getDefaultValues().get(0));
+        assertEquals("incorrect default value-2", "defaultString2", arg.getDefaultValues().get(1));
+    }
+
+    public void testNullDefault() {
+        try {
+            this.argumentBuilder.withDefault(null);
+            fail("cannot use null default");
+        } catch (IllegalArgumentException exp) {
+            assertEquals("wrong exception message",
+                         resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_DEFAULT),
+                         exp.getMessage());
+        }
+    }
+
+    public void testDefaults() {
+        final List defaults = new ArrayList();
+        defaults.add("one");
+        defaults.add("two");
+
+        this.argumentBuilder.withDefaults(defaults);
+        this.argumentBuilder.withName("arg");
+
+        ArgumentImpl arg = (ArgumentImpl) this.argumentBuilder.create();
+
+        assertEquals("incorrect number of default values", 2, arg.getDefaultValues().size());
+        assertEquals("incorrect default value-1", "one", arg.getDefaultValues().get(0));
+        assertEquals("incorrect default value-2", "two", arg.getDefaultValues().get(1));
+        assertEquals("incorrect default values list", defaults, arg.getDefaultValues());
+
+    }
+
+    public void testNullDefaults() {
+        try {
+            this.argumentBuilder.withDefaults(null);
+            fail("cannot use null defaults");
+        } catch (IllegalArgumentException exp) {
+            assertEquals("wrong exception message",
+                         resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_DEFAULTS),
+                         exp.getMessage());
+        }
+    }
+
+    public void testId() {
+        this.argumentBuilder.withId(1);
+        this.argumentBuilder.withName("arg");
+
+        ArgumentImpl arg = (ArgumentImpl) this.argumentBuilder.create();
+
+        assertEquals("incorrect id", 1, arg.getId());
+    }
+
+    public void testInitialSeparator() {
+        this.argumentBuilder.withInitialSeparator(',');
+        this.argumentBuilder.withName("arg");
+
+        ArgumentImpl arg = (ArgumentImpl) this.argumentBuilder.create();
+
+        assertEquals("incorrect initial separator", ',', arg.getInitialSeparator());
+    }
+
+    public void testMaximum() {
+        this.argumentBuilder.withMaximum(1);
+        this.argumentBuilder.withName("arg");
+
+        ArgumentImpl arg = (ArgumentImpl) this.argumentBuilder.create();
+
+        assertEquals("incorrect maximum", 1, arg.getMaximum());
+    }
+
+    public void testNegativeMaximum() {
+        try {
+            this.argumentBuilder.withMaximum(-1);
+            fail("cannot use negative maximum");
+        } catch (IllegalArgumentException exp) {
+            assertEquals("wrong exception message",
+                         resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NEGATIVE_MAXIMUM),
+                         exp.getMessage());
+        }
+    }
+
+    public void testMinimum() {
+        this.argumentBuilder.withMinimum(1);
+        this.argumentBuilder.withName("arg");
+
+        ArgumentImpl arg = (ArgumentImpl) this.argumentBuilder.create();
+
+        assertEquals("incorrect maximum", 1, arg.getMinimum());
+    }
+
+    public void testNegativeMinimum() {
+        try {
+            this.argumentBuilder.withMinimum(-1);
+            fail("cannot use negative minimum");
+        } catch (IllegalArgumentException exp) {
+            assertEquals("wrong exception message",
+                         resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NEGATIVE_MINIMUM),
+                         exp.getMessage());
+        }
+    }
+
+    public void testName() {
+        this.argumentBuilder.withName("arg");
+
+        ArgumentImpl arg = (ArgumentImpl) this.argumentBuilder.create();
+
+        assertEquals("incorrect preferred name", "arg", arg.getPreferredName());
+    }
+
+    public void testNullName() {
+        try {
+            this.argumentBuilder.withName(null);
+            fail("cannot use null name");
+        } catch (IllegalArgumentException exp) {
+            assertEquals("wrong exception message",
+                         resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_NAME),
+                         exp.getMessage());
+        }
+    }
+
+    public void testEmptyName() {
+        try {
+            this.argumentBuilder.withName("");
+            fail("cannot use empty name");
+        } catch (IllegalArgumentException exp) {
+            assertEquals("wrong exception message",
+                         resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_EMPTY_NAME),
+                         exp.getMessage());
+        }
+    }
+
+    public void testSubsequentSeparator() {
+        this.argumentBuilder.withSubsequentSeparator(':');
+        this.argumentBuilder.withName("arg");
+
+        ArgumentImpl arg = (ArgumentImpl) this.argumentBuilder.create();
+
+        assertEquals("incorrect subsequent separator", ':', arg.getSubsequentSeparator());
+    }
+
+    public void testValidator() {
+        Validator validator = DateValidator.getDateInstance();
+        this.argumentBuilder.withValidator(validator);
+        this.argumentBuilder.withName("arg");
+
+        ArgumentImpl arg = (ArgumentImpl) this.argumentBuilder.create();
+
+        assertEquals("incorrect validator", validator, arg.getValidator());
+    }
+
+    public void testNullValidator() {
+        try {
+            this.argumentBuilder.withValidator(null);
+            fail("cannot use null validator");
+        } catch (IllegalArgumentException exp) {
+            assertEquals("wrong exception message",
+                         resources.getMessage(ResourceConstants.ARGUMENT_BUILDER_NULL_VALIDATOR),
+                         exp.getMessage());
+        }
+    }
+}

Modified: jakarta/commons/proper/cli/trunk/src/test/org/apache/commons/cli2/option/ParentTest.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/cli/trunk/src/test/org/apache/commons/cli2/option/ParentTest.java?rev=280699&r1=280698&r2=280699&view=diff
==============================================================================
--- jakarta/commons/proper/cli/trunk/src/test/org/apache/commons/cli2/option/ParentTest.java
(original)
+++ jakarta/commons/proper/cli/trunk/src/test/org/apache/commons/cli2/option/ParentTest.java
Tue Sep 13 15:42:46 2005
@@ -391,6 +391,25 @@
         assertFalse(i.hasNext());
     }
 
+    public void testNullPreferredName() {
+        try {
+        	new CommandBuilder().create();
+        } catch (IllegalStateException exp) {
+        	assertEquals(ResourceHelper.getResourceHelper().getMessage(ResourceConstants.OPTION_NO_NAME),
exp.getMessage());
+        }
+    }
+
+    public void testRequired() {
+    	Command cmd = new CommandBuilder().withRequired(true).withName("blah").create();
+    	assertTrue("cmd is not required", cmd.isRequired());
+    	assertEquals("id is incorrect", 0, cmd.getId());
+    }
+
+    public void testID() {
+    	Command cmd = new CommandBuilder().withId('c').withName("blah").create();
+    	assertEquals("id is incorrect", 'c', cmd.getId());
+    }
+
     public void testGetId() {
         assertEquals('h', DefaultOptionTest.buildHelpOption().getId());
         assertEquals('X', DefaultOptionTest.buildXOption().getId());



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Mime
View raw message