diff options
author | Yannick Menager <ymenager@kloudtek.com> | 2014-02-27 14:22:28 +0000 |
---|---|---|
committer | Yannick Menager <ymenager@kloudtek.com> | 2014-02-27 14:22:28 +0000 |
commit | aa87f5891a77dffdf24bc4fb1f766ec976b064c1 (patch) | |
tree | bb763ba4610e3ef9ab2d8a1277affe3a39fa75c8 | |
parent | ecd7bf5ed8717a2b04240e7eb44d887f485d0bf2 (diff) | |
download | jcommander-aa87f5891a77dffdf24bc4fb1f766ec976b064c1.tar.gz |
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) |