summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCedric Beust <cedric@beust.com>2014-02-27 10:02:46 -0800
committerCedric Beust <cedric@beust.com>2014-02-27 10:02:46 -0800
commit90fc11663190d5c4c6cc2a7ddae3868726fbfb52 (patch)
treebb763ba4610e3ef9ab2d8a1277affe3a39fa75c8
parentecd7bf5ed8717a2b04240e7eb44d887f485d0bf2 (diff)
parentaa87f5891a77dffdf24bc4fb1f766ec976b064c1 (diff)
downloadplatform_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.java5
-rw-r--r--src/test/java/com/beust/jcommander/JCommanderTest.java12
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)