diff options
author | Cedric Beust <cedric@beust.com> | 2014-02-27 10:02:46 -0800 |
---|---|---|
committer | Cedric Beust <cedric@beust.com> | 2014-02-27 10:02:46 -0800 |
commit | 90fc11663190d5c4c6cc2a7ddae3868726fbfb52 (patch) | |
tree | bb763ba4610e3ef9ab2d8a1277affe3a39fa75c8 | |
parent | ecd7bf5ed8717a2b04240e7eb44d887f485d0bf2 (diff) | |
parent | aa87f5891a77dffdf24bc4fb1f766ec976b064c1 (diff) | |
download | platform_external_jcommander-90fc11663190d5c4c6cc2a7ddae3868726fbfb52.tar.gz platform_external_jcommander-90fc11663190d5c4c6cc2a7ddae3868726fbfb52.tar.bz2 platform_external_jcommander-90fc11663190d5c4c6cc2a7ddae3868726fbfb52.zip |
Merge pull request #185 from Kloudtek/master
Fixes #184 Bug in enum parsing
-rw-r--r-- | src/main/java/com/beust/jcommander/JCommander.java | 5 | ||||
-rw-r--r-- | src/test/java/com/beust/jcommander/JCommanderTest.java | 12 |
2 files changed, 12 insertions, 5 deletions
diff --git a/src/main/java/com/beust/jcommander/JCommander.java b/src/main/java/com/beust/jcommander/JCommander.java index a763bc1..08efd8b 100644 --- a/src/main/java/com/beust/jcommander/JCommander.java +++ b/src/main/java/com/beust/jcommander/JCommander.java @@ -1256,9 +1256,8 @@ public class JCommander { if (converterClass != null && converterClass.isEnum()) { try { result = Enum.valueOf((Class<? extends Enum>) converterClass, value); - if (result == null) { - result = Enum.valueOf((Class<? extends Enum>) converterClass, value.toUpperCase()); - } + } catch ( IllegalArgumentException e ) { + result = Enum.valueOf((Class<? extends Enum>) converterClass, value.toUpperCase()); } catch (Exception e) { throw new ParameterException("Invalid value for " + optionName + " parameter. Allowed values:" + EnumSet.allOf((Class<? extends Enum>) converterClass)); diff --git a/src/test/java/com/beust/jcommander/JCommanderTest.java b/src/test/java/com/beust/jcommander/JCommanderTest.java index be9a7ea..63964ae 100644 --- a/src/test/java/com/beust/jcommander/JCommanderTest.java +++ b/src/test/java/com/beust/jcommander/JCommanderTest.java @@ -596,12 +596,20 @@ public class JCommanderTest { JCommander jc = new JCommander(args, argv); Assert.assertEquals(args.choice, ArgsEnum.ChoiceType.ONE); - + List<ChoiceType> expected = Arrays.asList(ChoiceType.ONE, ChoiceType.Two); Assert.assertEquals(expected, args.choices); Assert.assertEquals(jc.getParameters().get(0).getDescription(), "Options: " + EnumSet.allOf((Class<? extends Enum>) ArgsEnum.ChoiceType.class)); - + + } + + public void enumArgsCaseInsensitive() { + ArgsEnum args = new ArgsEnum(); + String[] argv = { "-choice", "one"}; + JCommander jc = new JCommander(args, argv); + + Assert.assertEquals(args.choice, ArgsEnum.ChoiceType.ONE); } @Test(expectedExceptions = ParameterException.class) |