diff options
Diffstat (limited to '3rdParty/jargs-1.0/src/test/java/jargs/gnu/test/CustomOptionTestCase.java')
-rw-r--r-- | 3rdParty/jargs-1.0/src/test/java/jargs/gnu/test/CustomOptionTestCase.java | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/3rdParty/jargs-1.0/src/test/java/jargs/gnu/test/CustomOptionTestCase.java b/3rdParty/jargs-1.0/src/test/java/jargs/gnu/test/CustomOptionTestCase.java new file mode 100644 index 0000000..336d162 --- /dev/null +++ b/3rdParty/jargs-1.0/src/test/java/jargs/gnu/test/CustomOptionTestCase.java @@ -0,0 +1,71 @@ +package gnu.jargs.test; + +import jargs.gnu.CmdLineParser; + +import java.text.DateFormat; +import java.text.ParseException; +import java.util.Calendar; +import java.util.Date; +import java.util.Locale; + +import junit.framework.TestCase; + +public class CustomOptionTestCase extends TestCase { + + public CustomOptionTestCase(String name) { + super(name); + } + + public void testCustomOption() throws Exception { + Calendar calendar = Calendar.getInstance(); + CmdLineParser parser = new CmdLineParser(); + CmdLineParser.Option date = + parser.addOption(new ShortDateOption('d', "date")); + + parser.parse(new String[]{"-d", "11/03/2003"}, Locale.UK); + Date d = (Date)parser.getOptionValue(date); + calendar.setTime(d); + assertEquals(11, calendar.get(Calendar.DAY_OF_MONTH)); + assertEquals(Calendar.MARCH, calendar.get(Calendar.MONTH)); + assertEquals(2003, calendar.get(Calendar.YEAR)); + + parser.parse(new String[]{"-d", "11/03/2003"}, Locale.US); + d = (Date)parser.getOptionValue(date); + calendar.setTime(d); + assertEquals(3, calendar.get(Calendar.DAY_OF_MONTH)); + assertEquals(Calendar.NOVEMBER, calendar.get(Calendar.MONTH)); + assertEquals(2003, calendar.get(Calendar.YEAR)); + } + + public void testIllegalCustomOption() throws Exception { + CmdLineParser parser = new CmdLineParser(); + CmdLineParser.Option date = + parser.addOption(new ShortDateOption('d', "date")); + try { + parser.parse(new String[]{"-d", "foobar"}, Locale.US); + fail("Expected IllegalOptionValueException"); + } + catch (CmdLineParser.IllegalOptionValueException e) { + //pass + } + } + + public static class ShortDateOption extends CmdLineParser.Option { + public ShortDateOption( char shortForm, String longForm ) { + super(shortForm, longForm, true); + } + protected Object parseValue( String arg, Locale locale ) + throws CmdLineParser.IllegalOptionValueException { + try { + DateFormat dateFormat = + DateFormat.getDateInstance(DateFormat.SHORT, locale); + return dateFormat.parse(arg); + } + catch (ParseException e) { + throw new CmdLineParser.IllegalOptionValueException(this, arg); + } + } + } + + +} |