Return-Path: Delivered-To: apmail-jakarta-commons-dev-archive@www.apache.org Received: (qmail 70485 invoked from network); 13 Sep 2005 22:43:09 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 13 Sep 2005 22:43:09 -0000 Received: (qmail 24871 invoked by uid 500); 13 Sep 2005 22:43:08 -0000 Delivered-To: apmail-jakarta-commons-dev-archive@jakarta.apache.org Received: (qmail 24337 invoked by uid 500); 13 Sep 2005 22:43:06 -0000 Mailing-List: contact commons-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Help: List-Post: List-Id: "Jakarta Commons Developers List" Reply-To: "Jakarta Commons Developers List" Delivered-To: mailing list commons-dev@jakarta.apache.org Received: (qmail 24324 invoked by uid 500); 13 Sep 2005 22:43:06 -0000 Received: (qmail 24321 invoked by uid 99); 13 Sep 2005 22:43:06 -0000 X-ASF-Spam-Status: No, hits=-9.8 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.29) with SMTP; Tue, 13 Sep 2005 15:43:05 -0700 Received: (qmail 70450 invoked by uid 65534); 13 Sep 2005 22:43:05 -0000 Message-ID: <20050913224305.70449.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit 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 -0000 To: commons-cvs@jakarta.apache.org From: jkeyes@apache.org X-Mailer: svnmailer-1.0.5 X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N 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