1 /*** 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 package org.apache.commons.cli; 18 19 import java.util.ArrayList; 20 import java.util.Collection; 21 22 import junit.framework.Test; 23 import junit.framework.TestCase; 24 import junit.framework.TestSuite; 25 26 /*** 27 * @author Rob Oxspring roxspring@apache.org 28 * @version $Revision: 544360 $ 29 */ 30 public class OptionsTest extends TestCase 31 { 32 33 public static Test suite() 34 { 35 return new TestSuite ( OptionsTest.class ); 36 } 37 38 public OptionsTest( String name ) 39 { 40 super( name ); 41 } 42 43 public void setUp() 44 { 45 } 46 47 public void tearDown() 48 { 49 } 50 51 public void testHelpOptions(){ 52 53 Option longOnly1 = OptionBuilder 54 .withLongOpt("long-only1") 55 .create(); 56 57 Option longOnly2 = OptionBuilder 58 .withLongOpt("long-only2") 59 .create(); 60 61 Option shortOnly1 = OptionBuilder 62 .create("1"); 63 64 Option shortOnly2 = OptionBuilder 65 .create("2"); 66 67 Option bothA = OptionBuilder 68 .withLongOpt("bothA") 69 .create("a"); 70 71 Option bothB = OptionBuilder 72 .withLongOpt("bothB") 73 .create("b"); 74 75 Options options = new Options(); 76 options.addOption(longOnly1); 77 options.addOption(longOnly2); 78 options.addOption(shortOnly1); 79 options.addOption(shortOnly2); 80 options.addOption(bothA); 81 options.addOption(bothB); 82 83 Collection allOptions = new ArrayList(); 84 allOptions.add(longOnly1); 85 allOptions.add(longOnly2); 86 allOptions.add(shortOnly1); 87 allOptions.add(shortOnly2); 88 allOptions.add(bothA); 89 allOptions.add(bothB); 90 91 Collection helpOptions = options.helpOptions(); 92 93 assertTrue("Everything in all should be in help",helpOptions.containsAll(allOptions)); 94 assertTrue("Everything in help should be in all",allOptions.containsAll(helpOptions)); 95 } 96 97 public void testMissingOptionException() throws ParseException { 98 Options options = new Options(); 99 options.addOption(OptionBuilder.isRequired().create("f")); 100 try { 101 new PosixParser().parse(options, new String[0]); 102 fail("Expected MissingOptionException to be thrown"); 103 } catch (MissingOptionException e) { 104 assertEquals("Missing required option: f", e.getMessage()); 105 } 106 } 107 108 public void testMissingOptionsException() throws ParseException { 109 Options options = new Options(); 110 options.addOption(OptionBuilder.isRequired().create("f")); 111 options.addOption(OptionBuilder.isRequired().create("x")); 112 try { 113 new PosixParser().parse(options, new String[0]); 114 fail("Expected MissingOptionException to be thrown"); 115 } catch (MissingOptionException e) { 116 assertEquals("Missing required options: fx", e.getMessage()); 117 } 118 } 119 120 } 121