You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ba...@apache.org on 2008/03/22 04:08:35 UTC

svn commit: r639943 [14/17] - in /commons/proper/cli/trunk/src: java/org/apache/commons/cli2/ java/org/apache/commons/cli2/builder/ java/org/apache/commons/cli2/commandline/ java/org/apache/commons/cli2/option/ java/org/apache/commons/cli2/resource/ ja...

Modified: commons/proper/cli/trunk/src/test/org/apache/commons/cli2/option/GroupTest.java
URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/test/org/apache/commons/cli2/option/GroupTest.java?rev=639943&r1=639942&r2=639943&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/test/org/apache/commons/cli2/option/GroupTest.java (original)
+++ commons/proper/cli/trunk/src/test/org/apache/commons/cli2/option/GroupTest.java Fri Mar 21 20:08:23 2008
@@ -1 +1,440 @@
-/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.  See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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.option;import java.util.ArrayList;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.ListIterator;import java.util.Set;import org.ap
 ache.commons.cli2.DisplaySetting;import org.apache.commons.cli2.Group;import org.apache.commons.cli2.HelpLine;import org.apache.commons.cli2.Option;import org.apache.commons.cli2.OptionException;import org.apache.commons.cli2.WriteableCommandLine;import org.apache.commons.cli2.builder.DefaultOptionBuilder;import org.apache.commons.cli2.builder.GroupBuilder;import org.apache.commons.cli2.commandline.WriteableCommandLineImpl;/** * @author Rob Oxspring */public class GroupTest    extends GroupTestCase {    public static final Command COMMAND_START =        new Command("start", "Starts the server", null, false, null, null, 0);    public static final Command COMMAND_STOP =        new Command("stop", "Stops the server", null, false, null, null, 0);    public static final Command COMMAND_RESTART =        new Command("restart", "Stops and starts the server", null, false, null, null, 0);    public static final Command COMMAND_GRACEFUL =        new Command("graceful", "Restarts the se
 rver without interruption", null, false, null,                    null, 0);    public static Group buildApacheCommandGroup() {        final List options = new ArrayList();        options.add(COMMAND_GRACEFUL);        options.add(COMMAND_RESTART);        options.add(COMMAND_START);        options.add(COMMAND_STOP);        return new GroupImpl(options, "httpd-cmds", "The command to pass to the server", 1, 1);    }    public static Group buildApachectlGroup() {        final List options = new ArrayList();        options.add(DefaultOptionTest.buildHelpOption());        options.add(ParentTest.buildKParent());        return new GroupImpl(options, "apachectl", "Controls the apache http deamon", 0,                             Integer.MAX_VALUE);    }    public static Group buildAntGroup() {        final List options = new ArrayList();        options.add(DefaultOptionTest.buildHelpOption());        options.add(ArgumentTest.buildTargetsArgument());        return new GroupImpl(options,
  "ant", "The options for ant", 0, Integer.MAX_VALUE);    }    /*     * (non-Javadoc)     *     * @see org.apache.commons.cli2.GroupTestCase#testProcessAnonymousArguments()     */    public void testProcessAnonymousArguments()        throws OptionException {        final Group option = buildAntGroup();        final List args = list("compile,test", "dist");        final ListIterator iterator = args.listIterator();        final WriteableCommandLine commandLine = commandLine(option, args);        option.process(commandLine, iterator);        assertFalse(iterator.hasNext());        assertTrue(commandLine.hasOption("target"));        assertListContentsEqual(commandLine.getValues("target"), args);        assertListContentsEqual(list("compile", "test", "dist"), args);    }    /*     * (non-Javadoc)     *     * @see org.apache.commons.cli2.GroupTestCase#testProcessOptions()     */    public void testProcessOptions()        throws OptionException {        final Group option = buildApa
 chectlGroup();        final List args = list("-?", "-k");        final ListIterator iterator = args.listIterator();        final WriteableCommandLine commandLine = commandLine(option, args);        option.process(commandLine, iterator);        assertFalse(iterator.hasNext());        assertTrue(commandLine.hasOption("--help"));        assertTrue(commandLine.hasOption("-k"));        assertFalse(commandLine.hasOption("start"));        assertListContentsEqual(list("--help", "-k"), args);    }    /*     * (non-Javadoc)     *     * @see org.apache.commons.cli2.OptionTestCase#testCanProcess()     */    public void testCanProcess() {        final Group option = buildApacheCommandGroup();        assertTrue(option.canProcess(new WriteableCommandLineImpl(option, null), "start"));    }    public void testCanProcess_BadMatch() {        final Group option = buildApacheCommandGroup();        assertFalse(option.canProcess(new WriteableCommandLineImpl(option, null), "begin"));    }    public
  void testCanProcess_NullMatch() {        final Group option = buildApacheCommandGroup();        assertFalse(option.canProcess(new WriteableCommandLineImpl(option, null), (String) null));    }    /*     * (non-Javadoc)     *     * @see org.apache.commons.cli2.OptionTestCase#testPrefixes()     */    public void testPrefixes() {        final Group option = buildApachectlGroup();        assertContentsEqual(list("-", "--"), option.getPrefixes());    }    /*     * (non-Javadoc)     *     * @see org.apache.commons.cli2.OptionTestCase#testProcess()     */    public void testProcess()        throws OptionException {        final Group option = buildAntGroup();        final List args = list("--help", "compile,test", "dist");        final ListIterator iterator = args.listIterator();        final WriteableCommandLine commandLine = commandLine(option, args);        option.process(commandLine, iterator);        assertFalse(iterator.hasNext());        assertTrue(commandLine.hasOption("-?"
 ));        assertListContentsEqual(list("compile", "test", "dist"), commandLine.getValues("target"));    }    public void testProcess_Nested()        throws OptionException {        final Group option = buildApachectlGroup();        final List args = list("-h", "-k", "graceful");        final ListIterator iterator = args.listIterator();        final WriteableCommandLine commandLine = commandLine(option, args);        option.process(commandLine, iterator);        assertFalse(iterator.hasNext());        assertTrue(commandLine.hasOption("-?"));        assertTrue(commandLine.hasOption("-k"));        assertTrue(commandLine.hasOption("graceful"));        assertFalse(commandLine.hasOption("stop"));        assertTrue(commandLine.getValues("start").isEmpty());        assertListContentsEqual(list("--help", "-k", "graceful"), args);    }    /*     * (non-Javadoc)     *     * @see org.apache.commons.cli2.OptionTestCase#testTriggers()     */    public void testTriggers() {        final G
 roup option = buildApachectlGroup();        assertContentsEqual(list("--help", "-?", "-h", "-k"), option.getTriggers());    }    /*     * (non-Javadoc)     *     * @see org.apache.commons.cli2.OptionTestCase#testValidate()     */    public void testValidate()        throws OptionException {        final Group option = buildApacheCommandGroup();        final WriteableCommandLine commandLine = commandLine(option, list());        commandLine.addOption(COMMAND_RESTART);        option.validate(commandLine);    }    public void testValidate_UnexpectedOption() {        final Group option = buildApacheCommandGroup();        final WriteableCommandLine commandLine = commandLine(option, list());        commandLine.addOption(COMMAND_RESTART);        commandLine.addOption(COMMAND_GRACEFUL);        try {            option.validate(commandLine);            fail("Too many options");        } catch (OptionException uoe) {            assertEquals(option, uoe.getOption());        }    }    pub
 lic void testValidate_MissingOption() {        final Group option = buildApacheCommandGroup();        final WriteableCommandLine commandLine = commandLine(option, list());        try {            option.validate(commandLine);            fail("Missing an option");        } catch (OptionException moe) {            assertEquals(option, moe.getOption());        }    }    public void testValidate_RequiredChild()        throws OptionException {        final Option required =            new DefaultOptionBuilder().withLongName("required").withRequired(true).create();        final Option optional =            new DefaultOptionBuilder().withLongName("optional").withRequired(false).create();        final Group group =            new GroupBuilder().withOption(required).withOption(optional).withMinimum(1).create();        WriteableCommandLine commandLine;        commandLine = commandLine(group, list());        try {            group.validate(commandLine);            fail("Missing option 
 'required'");        } catch (OptionException moe) {            assertEquals(required, moe.getOption());        }        commandLine = commandLine(group, list());        commandLine.addOption(optional);        try {            group.validate(commandLine);            fail("Missing option 'required'");        } catch (OptionException moe) {            assertEquals(required, moe.getOption());        }        commandLine = commandLine(group, list());        commandLine.addOption(required);        group.validate(commandLine);    }    /*     * (non-Javadoc)     *     * @see org.apache.commons.cli2.OptionTestCase#testAppendUsage()     */    public void testAppendUsage() {        final Option option = buildApacheCommandGroup();        final StringBuffer buffer = new StringBuffer();        final Set settings = new HashSet(DisplaySetting.ALL);        //settings.remove(DisplaySetting.DISPLAY_ARGUMENT_NUMBERED);        option.appendUsage(buffer, settings, null);        assertEquals("htt
 pd-cmds (graceful|restart|start|stop)", buffer.toString());    }    public void testAppendUsage_NoOptional() {        final Option option = buildApacheCommandGroup();        final StringBuffer buffer = new StringBuffer();        final Set settings = new HashSet(DisplaySetting.ALL);        settings.remove(DisplaySetting.DISPLAY_OPTIONAL);        option.appendUsage(buffer, settings, null);        assertEquals("httpd-cmds (graceful|restart|start|stop)", buffer.toString());    }    public void testAppendUsage_NoExpand() {        final Option option = buildApacheCommandGroup();        final StringBuffer buffer = new StringBuffer();        final Set settings = new HashSet(DisplaySetting.ALL);        settings.remove(DisplaySetting.DISPLAY_GROUP_EXPANDED);        option.appendUsage(buffer, settings, null);        assertEquals("httpd-cmds", buffer.toString());    }    public void testAppendUsage_NoExpandOrName() {        final Option option = buildApacheCommandGroup();        final S
 tringBuffer buffer = new StringBuffer();        final Set settings = new HashSet(DisplaySetting.ALL);        settings.remove(DisplaySetting.DISPLAY_GROUP_EXPANDED);        settings.remove(DisplaySetting.DISPLAY_GROUP_NAME);        option.appendUsage(buffer, settings, null);        assertEquals("httpd-cmds", buffer.toString());    }    public void testAppendUsage_NoName() {        final Option option = buildApacheCommandGroup();        final StringBuffer buffer = new StringBuffer();        final Set settings = new HashSet(DisplaySetting.ALL);        settings.remove(DisplaySetting.DISPLAY_GROUP_NAME);        option.appendUsage(buffer, settings, null);        assertEquals("graceful|restart|start|stop", buffer.toString());    }    public void testAppendUsage_WithArgs() {        final Option option = buildAntGroup();        final StringBuffer buffer = new StringBuffer();        final Set settings = new HashSet(DisplaySetting.ALL);        settings.remove(DisplaySetting.DISPLAY_GRO
 UP_OUTER);        option.appendUsage(buffer, settings, null);        assertEquals("[ant (--help (-?,-h)) [<target1> [<target2> ...]]]", buffer.toString());    }    /*     * (non-Javadoc)     *     * @see org.apache.commons.cli2.OptionTestCase#testGetPreferredName()     */    public void testGetPreferredName() {        final Option option = buildAntGroup();        assertEquals("ant", option.getPreferredName());    }    /*     * (non-Javadoc)     *     * @see org.apache.commons.cli2.OptionTestCase#testGetDescription()     */    public void testGetDescription() {        final Option option = buildApachectlGroup();        assertEquals("Controls the apache http deamon", option.getDescription());    }    /*     * (non-Javadoc)     *     * @see org.apache.commons.cli2.OptionTestCase#testHelpLines()     */    public void testHelpLines() {        final Option option = buildApacheCommandGroup();        final List lines = option.helpLines(0, DisplaySetting.ALL, null);        final Iter
 ator i = lines.iterator();        final HelpLine line1 = (HelpLine) i.next();        assertEquals(0, line1.getIndent());        assertEquals(option, line1.getOption());        final HelpLine line2 = (HelpLine) i.next();        assertEquals(1, line2.getIndent());        assertEquals(COMMAND_GRACEFUL, line2.getOption());        final HelpLine line3 = (HelpLine) i.next();        assertEquals(1, line3.getIndent());        assertEquals(COMMAND_RESTART, line3.getOption());        final HelpLine line4 = (HelpLine) i.next();        assertEquals(1, line4.getIndent());        assertEquals(COMMAND_START, line4.getOption());        final HelpLine line5 = (HelpLine) i.next();        assertEquals(1, line5.getIndent());        assertEquals(COMMAND_STOP, line5.getOption());        assertFalse(i.hasNext());    }    /*     * (non-Javadoc)     *     * @see org.apache.commons.cli2.OptionTestCase#testHelpLines()     */    public void testHelpLines_NoExpanded() {        final Option option = buil
 dApacheCommandGroup();        final Set settings = new HashSet(DisplaySetting.ALL);        settings.remove(DisplaySetting.DISPLAY_GROUP_EXPANDED);        final List lines = option.helpLines(0, settings, null);        final Iterator i = lines.iterator();        final HelpLine line1 = (HelpLine) i.next();        assertEquals(0, line1.getIndent());        assertEquals(option, line1.getOption());        assertFalse(i.hasNext());    }    /*     * (non-Javadoc)     *     * @see org.apache.commons.cli2.OptionTestCase#testHelpLines()     */    public void testHelpLines_NoName() {        final Option option = buildApacheCommandGroup();        final Set settings = new HashSet(DisplaySetting.ALL);        settings.remove(DisplaySetting.DISPLAY_GROUP_NAME);        final List lines = option.helpLines(0, settings, null);        final Iterator i = lines.iterator();        final HelpLine line2 = (HelpLine) i.next();        assertEquals(1, line2.getIndent());        assertEquals(COMMAND_GRACE
 FUL, line2.getOption());        final HelpLine line3 = (HelpLine) i.next();        assertEquals(1, line3.getIndent());        assertEquals(COMMAND_RESTART, line3.getOption());        final HelpLine line4 = (HelpLine) i.next();        assertEquals(1, line4.getIndent());        assertEquals(COMMAND_START, line4.getOption());        final HelpLine line5 = (HelpLine) i.next();        assertEquals(1, line5.getIndent());        assertEquals(COMMAND_STOP, line5.getOption());        assertFalse(i.hasNext());    }}
\ No newline at end of file
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.option;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Set;
+
+import org.apache.commons.cli2.DisplaySetting;
+import org.apache.commons.cli2.Group;
+import org.apache.commons.cli2.HelpLine;
+import org.apache.commons.cli2.Option;
+import org.apache.commons.cli2.OptionException;
+import org.apache.commons.cli2.WriteableCommandLine;
+import org.apache.commons.cli2.builder.DefaultOptionBuilder;
+import org.apache.commons.cli2.builder.GroupBuilder;
+import org.apache.commons.cli2.commandline.WriteableCommandLineImpl;
+
+/**
+ * @author Rob Oxspring
+ */
+public class GroupTest
+    extends GroupTestCase {
+    public static final Command COMMAND_START =
+        new Command("start", "Starts the server", null, false, null, null, 0);
+    public static final Command COMMAND_STOP =
+        new Command("stop", "Stops the server", null, false, null, null, 0);
+    public static final Command COMMAND_RESTART =
+        new Command("restart", "Stops and starts the server", null, false, null, null, 0);
+    public static final Command COMMAND_GRACEFUL =
+        new Command("graceful", "Restarts the server without interruption", null, false, null,
+                    null, 0);
+
+    public static Group buildApacheCommandGroup() {
+        final List options = new ArrayList();
+        options.add(COMMAND_GRACEFUL);
+        options.add(COMMAND_RESTART);
+        options.add(COMMAND_START);
+        options.add(COMMAND_STOP);
+
+        return new GroupImpl(options, "httpd-cmds", "The command to pass to the server", 1, 1);
+    }
+
+    public static Group buildApachectlGroup() {
+        final List options = new ArrayList();
+        options.add(DefaultOptionTest.buildHelpOption());
+        options.add(ParentTest.buildKParent());
+
+        return new GroupImpl(options, "apachectl", "Controls the apache http deamon", 0,
+                             Integer.MAX_VALUE);
+    }
+
+    public static Group buildAntGroup() {
+        final List options = new ArrayList();
+        options.add(DefaultOptionTest.buildHelpOption());
+        options.add(ArgumentTest.buildTargetsArgument());
+
+        return new GroupImpl(options, "ant", "The options for ant", 0, Integer.MAX_VALUE);
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.commons.cli2.GroupTestCase#testProcessAnonymousArguments()
+     */
+    public void testProcessAnonymousArguments()
+        throws OptionException {
+        final Group option = buildAntGroup();
+        final List args = list("compile,test", "dist");
+        final ListIterator iterator = args.listIterator();
+        final WriteableCommandLine commandLine = commandLine(option, args);
+        option.process(commandLine, iterator);
+
+        assertFalse(iterator.hasNext());
+        assertTrue(commandLine.hasOption("target"));
+        assertListContentsEqual(commandLine.getValues("target"), args);
+        assertListContentsEqual(list("compile", "test", "dist"), args);
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.commons.cli2.GroupTestCase#testProcessOptions()
+     */
+    public void testProcessOptions()
+        throws OptionException {
+        final Group option = buildApachectlGroup();
+        final List args = list("-?", "-k");
+        final ListIterator iterator = args.listIterator();
+        final WriteableCommandLine commandLine = commandLine(option, args);
+        option.process(commandLine, iterator);
+
+        assertFalse(iterator.hasNext());
+        assertTrue(commandLine.hasOption("--help"));
+        assertTrue(commandLine.hasOption("-k"));
+        assertFalse(commandLine.hasOption("start"));
+        assertListContentsEqual(list("--help", "-k"), args);
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.commons.cli2.OptionTestCase#testCanProcess()
+     */
+    public void testCanProcess() {
+        final Group option = buildApacheCommandGroup();
+        assertTrue(option.canProcess(new WriteableCommandLineImpl(option, null), "start"));
+    }
+
+    public void testCanProcess_BadMatch() {
+        final Group option = buildApacheCommandGroup();
+        assertFalse(option.canProcess(new WriteableCommandLineImpl(option, null), "begin"));
+    }
+
+    public void testCanProcess_NullMatch() {
+        final Group option = buildApacheCommandGroup();
+        assertFalse(option.canProcess(new WriteableCommandLineImpl(option, null), (String) null));
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.commons.cli2.OptionTestCase#testPrefixes()
+     */
+    public void testPrefixes() {
+        final Group option = buildApachectlGroup();
+        assertContentsEqual(list("-", "--"), option.getPrefixes());
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.commons.cli2.OptionTestCase#testProcess()
+     */
+    public void testProcess()
+        throws OptionException {
+        final Group option = buildAntGroup();
+        final List args = list("--help", "compile,test", "dist");
+        final ListIterator iterator = args.listIterator();
+        final WriteableCommandLine commandLine = commandLine(option, args);
+        option.process(commandLine, iterator);
+
+        assertFalse(iterator.hasNext());
+        assertTrue(commandLine.hasOption("-?"));
+        assertListContentsEqual(list("compile", "test", "dist"), commandLine.getValues("target"));
+    }
+
+    public void testProcess_Nested()
+        throws OptionException {
+        final Group option = buildApachectlGroup();
+        final List args = list("-h", "-k", "graceful");
+        final ListIterator iterator = args.listIterator();
+        final WriteableCommandLine commandLine = commandLine(option, args);
+        option.process(commandLine, iterator);
+
+        assertFalse(iterator.hasNext());
+        assertTrue(commandLine.hasOption("-?"));
+        assertTrue(commandLine.hasOption("-k"));
+        assertTrue(commandLine.hasOption("graceful"));
+        assertFalse(commandLine.hasOption("stop"));
+        assertTrue(commandLine.getValues("start").isEmpty());
+        assertListContentsEqual(list("--help", "-k", "graceful"), args);
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.commons.cli2.OptionTestCase#testTriggers()
+     */
+    public void testTriggers() {
+        final Group option = buildApachectlGroup();
+        assertContentsEqual(list("--help", "-?", "-h", "-k"), option.getTriggers());
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.commons.cli2.OptionTestCase#testValidate()
+     */
+    public void testValidate()
+        throws OptionException {
+        final Group option = buildApacheCommandGroup();
+        final WriteableCommandLine commandLine = commandLine(option, list());
+
+        commandLine.addOption(COMMAND_RESTART);
+
+        option.validate(commandLine);
+    }
+
+    public void testValidate_UnexpectedOption() {
+        final Group option = buildApacheCommandGroup();
+        final WriteableCommandLine commandLine = commandLine(option, list());
+
+        commandLine.addOption(COMMAND_RESTART);
+        commandLine.addOption(COMMAND_GRACEFUL);
+
+        try {
+            option.validate(commandLine);
+            fail("Too many options");
+        } catch (OptionException uoe) {
+            assertEquals(option, uoe.getOption());
+        }
+    }
+
+    public void testValidate_MissingOption() {
+        final Group option = buildApacheCommandGroup();
+        final WriteableCommandLine commandLine = commandLine(option, list());
+
+        try {
+            option.validate(commandLine);
+            fail("Missing an option");
+        } catch (OptionException moe) {
+            assertEquals(option, moe.getOption());
+        }
+    }
+
+    public void testValidate_RequiredChild()
+        throws OptionException {
+        final Option required =
+            new DefaultOptionBuilder().withLongName("required").withRequired(true).create();
+        final Option optional =
+            new DefaultOptionBuilder().withLongName("optional").withRequired(false).create();
+        final Group group =
+            new GroupBuilder().withOption(required).withOption(optional).withMinimum(1).create();
+
+        WriteableCommandLine commandLine;
+
+        commandLine = commandLine(group, list());
+
+        try {
+            group.validate(commandLine);
+            fail("Missing option 'required'");
+        } catch (OptionException moe) {
+            assertEquals(required, moe.getOption());
+        }
+
+        commandLine = commandLine(group, list());
+        commandLine.addOption(optional);
+
+        try {
+            group.validate(commandLine);
+            fail("Missing option 'required'");
+        } catch (OptionException moe) {
+            assertEquals(required, moe.getOption());
+        }
+
+        commandLine = commandLine(group, list());
+        commandLine.addOption(required);
+        group.validate(commandLine);
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.commons.cli2.OptionTestCase#testAppendUsage()
+     */
+    public void testAppendUsage() {
+        final Option option = buildApacheCommandGroup();
+        final StringBuffer buffer = new StringBuffer();
+        final Set settings = new HashSet(DisplaySetting.ALL);
+
+        //settings.remove(DisplaySetting.DISPLAY_ARGUMENT_NUMBERED);
+        option.appendUsage(buffer, settings, null);
+
+        assertEquals("httpd-cmds (graceful|restart|start|stop)", buffer.toString());
+    }
+
+    public void testAppendUsage_NoOptional() {
+        final Option option = buildApacheCommandGroup();
+        final StringBuffer buffer = new StringBuffer();
+        final Set settings = new HashSet(DisplaySetting.ALL);
+        settings.remove(DisplaySetting.DISPLAY_OPTIONAL);
+        option.appendUsage(buffer, settings, null);
+
+        assertEquals("httpd-cmds (graceful|restart|start|stop)", buffer.toString());
+    }
+
+    public void testAppendUsage_NoExpand() {
+        final Option option = buildApacheCommandGroup();
+        final StringBuffer buffer = new StringBuffer();
+        final Set settings = new HashSet(DisplaySetting.ALL);
+        settings.remove(DisplaySetting.DISPLAY_GROUP_EXPANDED);
+        option.appendUsage(buffer, settings, null);
+
+        assertEquals("httpd-cmds", buffer.toString());
+    }
+
+    public void testAppendUsage_NoExpandOrName() {
+        final Option option = buildApacheCommandGroup();
+        final StringBuffer buffer = new StringBuffer();
+        final Set settings = new HashSet(DisplaySetting.ALL);
+        settings.remove(DisplaySetting.DISPLAY_GROUP_EXPANDED);
+        settings.remove(DisplaySetting.DISPLAY_GROUP_NAME);
+        option.appendUsage(buffer, settings, null);
+
+        assertEquals("httpd-cmds", buffer.toString());
+    }
+
+    public void testAppendUsage_NoName() {
+        final Option option = buildApacheCommandGroup();
+        final StringBuffer buffer = new StringBuffer();
+        final Set settings = new HashSet(DisplaySetting.ALL);
+        settings.remove(DisplaySetting.DISPLAY_GROUP_NAME);
+        option.appendUsage(buffer, settings, null);
+
+        assertEquals("graceful|restart|start|stop", buffer.toString());
+    }
+
+    public void testAppendUsage_WithArgs() {
+        final Option option = buildAntGroup();
+        final StringBuffer buffer = new StringBuffer();
+        final Set settings = new HashSet(DisplaySetting.ALL);
+        settings.remove(DisplaySetting.DISPLAY_GROUP_OUTER);
+        option.appendUsage(buffer, settings, null);
+
+        assertEquals("[ant (--help (-?,-h)) [<target1> [<target2> ...]]]", buffer.toString());
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.commons.cli2.OptionTestCase#testGetPreferredName()
+     */
+    public void testGetPreferredName() {
+        final Option option = buildAntGroup();
+        assertEquals("ant", option.getPreferredName());
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.commons.cli2.OptionTestCase#testGetDescription()
+     */
+    public void testGetDescription() {
+        final Option option = buildApachectlGroup();
+        assertEquals("Controls the apache http deamon", option.getDescription());
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.commons.cli2.OptionTestCase#testHelpLines()
+     */
+    public void testHelpLines() {
+        final Option option = buildApacheCommandGroup();
+        final List lines = option.helpLines(0, DisplaySetting.ALL, null);
+        final Iterator i = lines.iterator();
+
+        final HelpLine line1 = (HelpLine) i.next();
+        assertEquals(0, line1.getIndent());
+        assertEquals(option, line1.getOption());
+
+        final HelpLine line2 = (HelpLine) i.next();
+        assertEquals(1, line2.getIndent());
+        assertEquals(COMMAND_GRACEFUL, line2.getOption());
+
+        final HelpLine line3 = (HelpLine) i.next();
+        assertEquals(1, line3.getIndent());
+        assertEquals(COMMAND_RESTART, line3.getOption());
+
+        final HelpLine line4 = (HelpLine) i.next();
+        assertEquals(1, line4.getIndent());
+        assertEquals(COMMAND_START, line4.getOption());
+
+        final HelpLine line5 = (HelpLine) i.next();
+        assertEquals(1, line5.getIndent());
+        assertEquals(COMMAND_STOP, line5.getOption());
+
+        assertFalse(i.hasNext());
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.commons.cli2.OptionTestCase#testHelpLines()
+     */
+    public void testHelpLines_NoExpanded() {
+        final Option option = buildApacheCommandGroup();
+        final Set settings = new HashSet(DisplaySetting.ALL);
+        settings.remove(DisplaySetting.DISPLAY_GROUP_EXPANDED);
+
+        final List lines = option.helpLines(0, settings, null);
+        final Iterator i = lines.iterator();
+
+        final HelpLine line1 = (HelpLine) i.next();
+        assertEquals(0, line1.getIndent());
+        assertEquals(option, line1.getOption());
+
+        assertFalse(i.hasNext());
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.commons.cli2.OptionTestCase#testHelpLines()
+     */
+    public void testHelpLines_NoName() {
+        final Option option = buildApacheCommandGroup();
+        final Set settings = new HashSet(DisplaySetting.ALL);
+        settings.remove(DisplaySetting.DISPLAY_GROUP_NAME);
+
+        final List lines = option.helpLines(0, settings, null);
+        final Iterator i = lines.iterator();
+
+        final HelpLine line2 = (HelpLine) i.next();
+        assertEquals(1, line2.getIndent());
+        assertEquals(COMMAND_GRACEFUL, line2.getOption());
+
+        final HelpLine line3 = (HelpLine) i.next();
+        assertEquals(1, line3.getIndent());
+        assertEquals(COMMAND_RESTART, line3.getOption());
+
+        final HelpLine line4 = (HelpLine) i.next();
+        assertEquals(1, line4.getIndent());
+        assertEquals(COMMAND_START, line4.getOption());
+
+        final HelpLine line5 = (HelpLine) i.next();
+        assertEquals(1, line5.getIndent());
+        assertEquals(COMMAND_STOP, line5.getOption());
+
+        assertFalse(i.hasNext());
+    }
+}

Modified: commons/proper/cli/trunk/src/test/org/apache/commons/cli2/option/GroupTestCase.java
URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/test/org/apache/commons/cli2/option/GroupTestCase.java?rev=639943&r1=639942&r2=639943&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/test/org/apache/commons/cli2/option/GroupTestCase.java (original)
+++ commons/proper/cli/trunk/src/test/org/apache/commons/cli2/option/GroupTestCase.java Fri Mar 21 20:08:23 2008
@@ -1 +1,31 @@
-/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.  See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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.option;import org.apache.commons.cli2.OptionException;/** * @author Rob Oxspring */public abstract class GroupTestCase    extends OptionTestCase {    public abstract void 
 testProcessOptions()        throws OptionException;    public abstract void testProcessAnonymousArguments()        throws OptionException;}
\ No newline at end of file
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.option;
+
+import org.apache.commons.cli2.OptionException;
+
+/**
+ * @author Rob Oxspring
+ */
+public abstract class GroupTestCase
+    extends OptionTestCase {
+    public abstract void testProcessOptions()
+        throws OptionException;
+
+    public abstract void testProcessAnonymousArguments()
+        throws OptionException;
+}

Modified: commons/proper/cli/trunk/src/test/org/apache/commons/cli2/option/NestedGroupTest.java
URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/test/org/apache/commons/cli2/option/NestedGroupTest.java?rev=639943&r1=639942&r2=639943&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/test/org/apache/commons/cli2/option/NestedGroupTest.java (original)
+++ commons/proper/cli/trunk/src/test/org/apache/commons/cli2/option/NestedGroupTest.java Fri Mar 21 20:08:23 2008
@@ -1 +1,192 @@
-/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.  See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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.option;import org.apache.commons.cli2.CLITestCase;import org.apache.commons.cli2.CommandLine;import org.apache.commons.cli2.Group;import org.apache.commons.cli2.OptionExc
 eption;import org.apache.commons.cli2.builder.ArgumentBuilder;import org.apache.commons.cli2.builder.DefaultOptionBuilder;import org.apache.commons.cli2.builder.GroupBuilder;import org.apache.commons.cli2.commandline.Parser;import org.apache.commons.cli2.util.HelpFormatter;import java.io.BufferedReader;import java.io.IOException;import java.io.PrintWriter;import java.io.StringReader;import java.io.StringWriter;import java.util.ArrayList;import java.util.List;/** * Test to exercise nested groups developed to demonstrate bug 32533 */public class NestedGroupTest extends CLITestCase {    final static DefaultOptionBuilder obuilder = new DefaultOptionBuilder();    final static ArgumentBuilder abuilder = new ArgumentBuilder();    final static GroupBuilder gbuilder = new GroupBuilder();    static Group buildActionGroup() {        return gbuilder.withName("Action").withDescription("Action")                       .withMinimum(1).withMaximum(1)                       .withOption(obuilde
 r.withId(5).withShortName("e")                                           .withLongName("encrypt")                                           .withDescription("Encrypt input")                                           .create())                       .withOption(obuilder.withId(6).withShortName("d")                                           .withLongName("decrypt")                                           .withDescription("Decrypt input")                                           .create()).create();    }    static Group buildAlgorithmGroup() {        return gbuilder.withName("Algorithm")                       .withDescription("Encryption Algorithm").withMaximum(1)                       .withOption(obuilder.withId(0).withShortName("b")                                           .withLongName("blowfish")                                           .withDescription("Blowfish").create())                       .withOption(obuilder.withId(1).withShortName("3")                        
                    .withLongName("3DES")                                           .withDescription("Triple DES")                                           .create()).create();    }    static Group buildInputGroup() {        return gbuilder.withName("Input").withDescription("Input").withMinimum(1)                       .withMaximum(1)                       .withOption(obuilder.withId(2).withShortName("f")                                           .withLongName("file")                                           .withDescription("Input file")                                           .withArgument(abuilder.withName(                    "file").withMinimum(1).withMaximum(1).create()).create())                       .withOption(obuilder.withId(3).withShortName("s")                                           .withLongName("string")                                           .withDescription("Input string")                                           .withArgument(abuilder.withName(    
                 "string").withMinimum(1).withMaximum(1).create()).create())                       .create();    }    static Group buildEncryptionServiceGroup(Group[] nestedGroups) {        gbuilder.withName("encryptionService")                .withOption(obuilder.withId(4).withShortName("h")                                    .withLongName("help")                                    .withDescription("Print this message")                                    .create()).withOption(obuilder.withShortName(                "k").withLongName("key").withDescription("Encryption key")                                                                  .create());        for (int i = 0; i < nestedGroups.length; i++) {            gbuilder.withOption(nestedGroups[i]);        }        return gbuilder.create();    }    public void testNestedGroup()        throws OptionException {        final String[] args = {                "-eb",                "--file",                "/tmp/filename.txt"     
        };        Group[] nestedGroups = {                buildActionGroup(),                buildAlgorithmGroup(),                buildInputGroup()            };        Parser parser = new Parser();        parser.setGroup(buildEncryptionServiceGroup(nestedGroups));        CommandLine commandLine = parser.parse(args);        assertTrue("/tmp/filename.txt".equals(commandLine.getValue("-f")));        assertTrue(commandLine.hasOption("-e"));        assertTrue(commandLine.hasOption("-b"));        assertFalse(commandLine.hasOption("-d"));    }    public void testNestedGroupHelp() {        Group[] nestedGroups = {                buildActionGroup(),                buildAlgorithmGroup(),                buildInputGroup()            };        HelpFormatter helpFormatter = new HelpFormatter();        helpFormatter.setGroup(buildEncryptionServiceGroup(nestedGroups));        final StringWriter out = new StringWriter();        helpFormatter.setPrintWriter(new PrintWriter(out));        try 
 {            helpFormatter.print();            final BufferedReader bufferedReader = new BufferedReader(new StringReader(                        out.toString()));            final String[] expected = new String[] {                    "Usage:                                                                          ",                    " [-h -k -e|-d -b|-3 -f <file>|-s <string>]                                      ",                    "encryptionService                                                               ",                    "  -h (--help)               Print this message                                  ",                    "  -k (--key)                Encryption key                                      ",                    "  Action                    Action                                              ",                    "    -e (--encrypt)          Encrypt input                                       ",                    "    -d (--decrypt)          Decry
 pt input                                       ",                    "  Algorithm                 Encryption Algorithm                                ",                    "    -b (--blowfish)         Blowfish                                            ",                    "    -3 (--3DES)             Triple DES                                          ",                    "  Input                     Input                                               ",                    "    -f (--file) file        Input file                                          ",                    "    -s (--string) string    Input string                                        "                };            List actual = new ArrayList(expected.length);            String input;            while ((input = bufferedReader.readLine()) != null) {                actual.add(input);            }            // Show they are the same number of lines            assertEquals("Help text lines should be " + ex
 pected.length,                actual.size(), expected.length);            for (int i = 0; i < expected.length; i++) {                if (!expected[i].equals(actual.get(i))) {                    for (int x = 0; x < expected.length; i++) {                        System.out.println("   " + expected[i]);                        System.out.println((expected[i].equals(actual.get(i))                            ? "== "                            : "!= ") + actual.get(i));                    }                }                assertEquals(expected[i], actual.get(i));            }        }        catch (IOException e) {            fail(e.getLocalizedMessage());        }    }}
\ No newline at end of file
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.option;
+
+import org.apache.commons.cli2.CLITestCase;
+import org.apache.commons.cli2.CommandLine;
+import org.apache.commons.cli2.Group;
+import org.apache.commons.cli2.OptionException;
+import org.apache.commons.cli2.builder.ArgumentBuilder;
+import org.apache.commons.cli2.builder.DefaultOptionBuilder;
+import org.apache.commons.cli2.builder.GroupBuilder;
+import org.apache.commons.cli2.commandline.Parser;
+import org.apache.commons.cli2.util.HelpFormatter;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringReader;
+import java.io.StringWriter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * Test to exercise nested groups developed to demonstrate bug 32533
+ */
+public class NestedGroupTest extends CLITestCase {
+    final static DefaultOptionBuilder obuilder = new DefaultOptionBuilder();
+    final static ArgumentBuilder abuilder = new ArgumentBuilder();
+    final static GroupBuilder gbuilder = new GroupBuilder();
+
+    static Group buildActionGroup() {
+        return gbuilder.withName("Action").withDescription("Action")
+                       .withMinimum(1).withMaximum(1)
+                       .withOption(obuilder.withId(5).withShortName("e")
+                                           .withLongName("encrypt")
+                                           .withDescription("Encrypt input")
+                                           .create())
+                       .withOption(obuilder.withId(6).withShortName("d")
+                                           .withLongName("decrypt")
+                                           .withDescription("Decrypt input")
+                                           .create()).create();
+    }
+
+    static Group buildAlgorithmGroup() {
+        return gbuilder.withName("Algorithm")
+                       .withDescription("Encryption Algorithm").withMaximum(1)
+                       .withOption(obuilder.withId(0).withShortName("b")
+                                           .withLongName("blowfish")
+                                           .withDescription("Blowfish").create())
+                       .withOption(obuilder.withId(1).withShortName("3")
+                                           .withLongName("3DES")
+                                           .withDescription("Triple DES")
+                                           .create()).create();
+    }
+
+    static Group buildInputGroup() {
+        return gbuilder.withName("Input").withDescription("Input").withMinimum(1)
+                       .withMaximum(1)
+                       .withOption(obuilder.withId(2).withShortName("f")
+                                           .withLongName("file")
+                                           .withDescription("Input file")
+                                           .withArgument(abuilder.withName(
+                    "file").withMinimum(1).withMaximum(1).create()).create())
+                       .withOption(obuilder.withId(3).withShortName("s")
+                                           .withLongName("string")
+                                           .withDescription("Input string")
+                                           .withArgument(abuilder.withName(
+                    "string").withMinimum(1).withMaximum(1).create()).create())
+                       .create();
+    }
+
+    static Group buildEncryptionServiceGroup(Group[] nestedGroups) {
+        gbuilder.withName("encryptionService")
+                .withOption(obuilder.withId(4).withShortName("h")
+                                    .withLongName("help")
+                                    .withDescription("Print this message")
+                                    .create()).withOption(obuilder.withShortName(
+                "k").withLongName("key").withDescription("Encryption key")
+                                                                  .create());
+
+        for (int i = 0; i < nestedGroups.length; i++) {
+            gbuilder.withOption(nestedGroups[i]);
+        }
+
+        return gbuilder.create();
+    }
+
+    public void testNestedGroup()
+        throws OptionException {
+        final String[] args = {
+                "-eb",
+                "--file",
+                "/tmp/filename.txt"
+            };
+
+        Group[] nestedGroups = {
+                buildActionGroup(),
+                buildAlgorithmGroup(),
+                buildInputGroup()
+            };
+
+        Parser parser = new Parser();
+        parser.setGroup(buildEncryptionServiceGroup(nestedGroups));
+
+        CommandLine commandLine = parser.parse(args);
+
+        assertTrue("/tmp/filename.txt".equals(commandLine.getValue("-f")));
+        assertTrue(commandLine.hasOption("-e"));
+        assertTrue(commandLine.hasOption("-b"));
+        assertFalse(commandLine.hasOption("-d"));
+    }
+
+    public void testNestedGroupHelp() {
+        Group[] nestedGroups = {
+                buildActionGroup(),
+                buildAlgorithmGroup(),
+                buildInputGroup()
+            };
+
+        HelpFormatter helpFormatter = new HelpFormatter();
+        helpFormatter.setGroup(buildEncryptionServiceGroup(nestedGroups));
+
+        final StringWriter out = new StringWriter();
+        helpFormatter.setPrintWriter(new PrintWriter(out));
+
+        try {
+            helpFormatter.print();
+
+            final BufferedReader bufferedReader = new BufferedReader(new StringReader(
+                        out.toString()));
+            final String[] expected = new String[] {
+                    "Usage:                                                                          ",
+                    " [-h -k -e|-d -b|-3 -f <file>|-s <string>]                                      ",
+                    "encryptionService                                                               ",
+                    "  -h (--help)               Print this message                                  ",
+                    "  -k (--key)                Encryption key                                      ",
+                    "  Action                    Action                                              ",
+                    "    -e (--encrypt)          Encrypt input                                       ",
+                    "    -d (--decrypt)          Decrypt input                                       ",
+                    "  Algorithm                 Encryption Algorithm                                ",
+                    "    -b (--blowfish)         Blowfish                                            ",
+                    "    -3 (--3DES)             Triple DES                                          ",
+                    "  Input                     Input                                               ",
+                    "    -f (--file) file        Input file                                          ",
+                    "    -s (--string) string    Input string                                        "
+                };
+
+            List actual = new ArrayList(expected.length);
+            String input;
+
+            while ((input = bufferedReader.readLine()) != null) {
+                actual.add(input);
+            }
+
+            // Show they are the same number of lines
+            assertEquals("Help text lines should be " + expected.length,
+                actual.size(), expected.length);
+
+            for (int i = 0; i < expected.length; i++) {
+                if (!expected[i].equals(actual.get(i))) {
+                    for (int x = 0; x < expected.length; i++) {
+                        System.out.println("   " + expected[i]);
+                        System.out.println((expected[i].equals(actual.get(i))
+                            ? "== "
+                            : "!= ") + actual.get(i));
+                    }
+                }
+
+                assertEquals(expected[i], actual.get(i));
+            }
+        }
+        catch (IOException e) {
+            fail(e.getLocalizedMessage());
+        }
+    }
+}

Modified: commons/proper/cli/trunk/src/test/org/apache/commons/cli2/option/OptionTestCase.java
URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/test/org/apache/commons/cli2/option/OptionTestCase.java?rev=639943&r1=639942&r2=639943&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/test/org/apache/commons/cli2/option/OptionTestCase.java (original)
+++ commons/proper/cli/trunk/src/test/org/apache/commons/cli2/option/OptionTestCase.java Fri Mar 21 20:08:23 2008
@@ -1 +1,55 @@
-/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.  See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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.option;import java.util.List;import org.apache.commons.cli2.CLITestCase;import org.apache.commons.cli2.Option;import org.apache.commons.cli2.OptionException;import org.ap
 ache.commons.cli2.WriteableCommandLine;import org.apache.commons.cli2.commandline.WriteableCommandLineImpl;/** * @author Rob Oxspring */public abstract class OptionTestCase extends CLITestCase {    public static WriteableCommandLine commandLine(        final Option option,        final List args) {        return new WriteableCommandLineImpl(option, args);    }    public abstract void testTriggers();    public abstract void testPrefixes();    public abstract void testCanProcess();    public abstract void testProcess() throws OptionException;    public abstract void testValidate() throws OptionException;    public abstract void testAppendUsage() throws OptionException;    public abstract void testGetPreferredName();    public abstract void testGetDescription();    public abstract void testHelpLines();}
\ No newline at end of file
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.option;
+
+import java.util.List;
+
+import org.apache.commons.cli2.CLITestCase;
+import org.apache.commons.cli2.Option;
+import org.apache.commons.cli2.OptionException;
+import org.apache.commons.cli2.WriteableCommandLine;
+import org.apache.commons.cli2.commandline.WriteableCommandLineImpl;
+
+/**
+ * @author Rob Oxspring
+ */
+public abstract class OptionTestCase extends CLITestCase {
+
+    public static WriteableCommandLine commandLine(
+        final Option option,
+        final List args) {
+        return new WriteableCommandLineImpl(option, args);
+    }
+
+    public abstract void testTriggers();
+
+    public abstract void testPrefixes();
+
+    public abstract void testCanProcess();
+
+    public abstract void testProcess() throws OptionException;
+
+    public abstract void testValidate() throws OptionException;
+
+    public abstract void testAppendUsage() throws OptionException;
+
+    public abstract void testGetPreferredName();
+
+    public abstract void testGetDescription();
+
+    public abstract void testHelpLines();
+}