| /** |
| * 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.cli; |
| |
| import java.util.Arrays; |
| import java.util.Properties; |
| |
| import junit.framework.TestCase; |
| |
| public class ValueTest extends TestCase |
| { |
| private CommandLine _cl = null; |
| private Options opts = new Options(); |
| |
| public void setUp() throws Exception |
| { |
| opts.addOption("a", false, "toggle -a"); |
| opts.addOption("b", true, "set -b"); |
| opts.addOption("c", "c", false, "toggle -c"); |
| opts.addOption("d", "d", true, "set -d"); |
| |
| opts.addOption(OptionBuilder.hasOptionalArg().create('e')); |
| opts.addOption(OptionBuilder.hasOptionalArg().withLongOpt("fish").create()); |
| opts.addOption(OptionBuilder.hasOptionalArgs().withLongOpt("gravy").create()); |
| opts.addOption(OptionBuilder.hasOptionalArgs(2).withLongOpt("hide").create()); |
| opts.addOption(OptionBuilder.hasOptionalArgs(2).create('i')); |
| opts.addOption(OptionBuilder.hasOptionalArgs().create('j')); |
| opts.addOption(OptionBuilder.hasArgs().withValueSeparator(',').create('k')); |
| |
| String[] args = new String[] { "-a", |
| "-b", "foo", |
| "--c", |
| "--d", "bar" |
| }; |
| |
| Parser parser = new PosixParser(); |
| _cl = parser.parse(opts,args); |
| } |
| |
| public void testShortNoArg() |
| { |
| assertTrue( _cl.hasOption("a") ); |
| assertNull( _cl.getOptionValue("a") ); |
| } |
| |
| public void testShortWithArg() |
| { |
| assertTrue( _cl.hasOption("b") ); |
| assertNotNull( _cl.getOptionValue("b") ); |
| assertEquals( _cl.getOptionValue("b"), "foo"); |
| } |
| |
| public void testLongNoArg() |
| { |
| assertTrue( _cl.hasOption("c") ); |
| assertNull( _cl.getOptionValue("c") ); |
| } |
| |
| public void testLongWithArg() |
| { |
| assertTrue( _cl.hasOption("d") ); |
| assertNotNull( _cl.getOptionValue("d") ); |
| assertEquals( _cl.getOptionValue("d"), "bar"); |
| } |
| |
| public void testShortOptionalArgNoValue() throws Exception |
| { |
| String[] args = new String[] { "-e" }; |
| |
| Parser parser = new PosixParser(); |
| CommandLine cmd = parser.parse(opts,args); |
| assertTrue( cmd.hasOption("e") ); |
| assertNull( cmd.getOptionValue("e") ); |
| } |
| |
| public void testShortOptionalArgValue() throws Exception |
| { |
| String[] args = new String[] { "-e", "everything" }; |
| |
| Parser parser = new PosixParser(); |
| CommandLine cmd = parser.parse(opts,args); |
| assertTrue( cmd.hasOption("e") ); |
| assertEquals( "everything", cmd.getOptionValue("e") ); |
| } |
| |
| public void testLongOptionalNoValue() throws Exception |
| { |
| String[] args = new String[] { "--fish" }; |
| |
| Parser parser = new PosixParser(); |
| CommandLine cmd = parser.parse(opts,args); |
| assertTrue( cmd.hasOption("fish") ); |
| assertNull( cmd.getOptionValue("fish") ); |
| } |
| |
| public void testLongOptionalArgValue() throws Exception |
| { |
| String[] args = new String[] { "--fish", "face" }; |
| |
| Parser parser = new PosixParser(); |
| CommandLine cmd = parser.parse(opts,args); |
| assertTrue( cmd.hasOption("fish") ); |
| assertEquals( "face", cmd.getOptionValue("fish") ); |
| } |
| |
| public void testShortOptionalArgValues() throws Exception |
| { |
| String[] args = new String[] { "-j", "ink", "idea" }; |
| |
| Parser parser = new PosixParser(); |
| CommandLine cmd = parser.parse(opts,args); |
| assertTrue( cmd.hasOption("j") ); |
| assertEquals( "ink", cmd.getOptionValue("j") ); |
| assertEquals( "ink", cmd.getOptionValues("j")[0] ); |
| assertEquals( "idea", cmd.getOptionValues("j")[1] ); |
| assertEquals( cmd.getArgs().length, 0 ); |
| } |
| |
| public void testLongOptionalArgValues() throws Exception |
| { |
| String[] args = new String[] { "--gravy", "gold", "garden" }; |
| |
| Parser parser = new PosixParser(); |
| CommandLine cmd = parser.parse(opts,args); |
| assertTrue( cmd.hasOption("gravy") ); |
| assertEquals( "gold", cmd.getOptionValue("gravy") ); |
| assertEquals( "gold", cmd.getOptionValues("gravy")[0] ); |
| assertEquals( "garden", cmd.getOptionValues("gravy")[1] ); |
| assertEquals( cmd.getArgs().length, 0 ); |
| } |
| |
| public void testShortOptionalNArgValues() throws Exception |
| { |
| String[] args = new String[] { "-i", "ink", "idea", "isotope", "ice" }; |
| |
| Parser parser = new PosixParser(); |
| CommandLine cmd = parser.parse(opts,args); |
| assertTrue( cmd.hasOption("i") ); |
| assertEquals( "ink", cmd.getOptionValue("i") ); |
| assertEquals( "ink", cmd.getOptionValues("i")[0] ); |
| assertEquals( "idea", cmd.getOptionValues("i")[1] ); |
| assertEquals( cmd.getArgs().length, 2 ); |
| assertEquals( "isotope", cmd.getArgs()[0] ); |
| assertEquals( "ice", cmd.getArgs()[1] ); |
| } |
| |
| public void testLongOptionalNArgValues() throws Exception |
| { |
| String[] args = new String[] { |
| "--hide", "house", "hair", "head" |
| }; |
| |
| Parser parser = new PosixParser(); |
| |
| CommandLine cmd = parser.parse(opts,args); |
| assertTrue( cmd.hasOption("hide") ); |
| assertEquals( "house", cmd.getOptionValue("hide") ); |
| assertEquals( "house", cmd.getOptionValues("hide")[0] ); |
| assertEquals( "hair", cmd.getOptionValues("hide")[1] ); |
| assertEquals( cmd.getArgs().length, 1 ); |
| assertEquals( "head", cmd.getArgs()[0] ); |
| } |
| |
| public void testPropertyOptionSingularValue() throws Exception |
| { |
| Properties properties = new Properties(); |
| properties.setProperty( "hide", "seek" ); |
| |
| Parser parser = new PosixParser(); |
| |
| CommandLine cmd = parser.parse(opts, null, properties); |
| assertTrue( cmd.hasOption("hide") ); |
| assertEquals( "seek", cmd.getOptionValue("hide") ); |
| assertTrue( !cmd.hasOption("fake") ); |
| } |
| |
| public void testPropertyOptionFlags() throws Exception |
| { |
| Properties properties = new Properties(); |
| properties.setProperty( "a", "true" ); |
| properties.setProperty( "c", "yes" ); |
| properties.setProperty( "e", "1" ); |
| |
| Parser parser = new PosixParser(); |
| |
| CommandLine cmd = parser.parse(opts, null, properties); |
| assertTrue( cmd.hasOption("a") ); |
| assertTrue( cmd.hasOption("c") ); |
| assertTrue( cmd.hasOption("e") ); |
| |
| |
| properties = new Properties(); |
| properties.setProperty( "a", "false" ); |
| properties.setProperty( "c", "no" ); |
| properties.setProperty( "e", "0" ); |
| |
| cmd = parser.parse(opts, null, properties); |
| assertTrue( !cmd.hasOption("a") ); |
| assertTrue( !cmd.hasOption("c") ); |
| assertTrue( !cmd.hasOption("e") ); |
| |
| |
| properties = new Properties(); |
| properties.setProperty( "a", "TRUE" ); |
| properties.setProperty( "c", "nO" ); |
| properties.setProperty( "e", "TrUe" ); |
| |
| cmd = parser.parse(opts, null, properties); |
| assertTrue( cmd.hasOption("a") ); |
| assertTrue( !cmd.hasOption("c") ); |
| assertTrue( cmd.hasOption("e") ); |
| |
| |
| properties = new Properties(); |
| properties.setProperty( "a", "just a string" ); |
| properties.setProperty( "e", "" ); |
| |
| cmd = parser.parse(opts, null, properties); |
| assertTrue( !cmd.hasOption("a") ); |
| assertTrue( !cmd.hasOption("c") ); |
| assertTrue( !cmd.hasOption("e") ); |
| } |
| |
| public void testPropertyOptionMultipleValues() throws Exception |
| { |
| Properties properties = new Properties(); |
| properties.setProperty( "k", "one,two" ); |
| |
| Parser parser = new PosixParser(); |
| |
| String[] values = new String[] { |
| "one", "two" |
| }; |
| |
| CommandLine cmd = parser.parse(opts, null, properties); |
| assertTrue( cmd.hasOption("k") ); |
| assertTrue( Arrays.equals( values, cmd.getOptionValues('k') ) ); |
| } |
| |
| public void testPropertyOverrideValues() throws Exception |
| { |
| String[] args = new String[] { |
| "-j", |
| "found", |
| "-i", |
| "ink" |
| }; |
| |
| Properties properties = new Properties(); |
| properties.setProperty( "j", "seek" ); |
| |
| Parser parser = new PosixParser(); |
| CommandLine cmd = parser.parse(opts, args, properties); |
| assertTrue( cmd.hasOption("j") ); |
| assertEquals( "found", cmd.getOptionValue("j") ); |
| assertTrue( cmd.hasOption("i") ); |
| assertEquals( "ink", cmd.getOptionValue("i") ); |
| assertTrue( !cmd.hasOption("fake") ); |
| } |
| |
| } |