diff --git a/src/main/java/com/lmax/simpledsl/internal/RepeatingParamValues.java b/src/main/java/com/lmax/simpledsl/internal/RepeatingParamValues.java index d067145..50df28f 100644 --- a/src/main/java/com/lmax/simpledsl/internal/RepeatingParamValues.java +++ b/src/main/java/com/lmax/simpledsl/internal/RepeatingParamValues.java @@ -53,7 +53,7 @@ public DslArg[] getParams() private List getValues(final String name) { - if (name == null || stream(dslArgs).noneMatch(arg -> arg.getName().equals(name.toLowerCase()))) + if (name == null || stream(dslArgs).noneMatch(arg -> arg.getName().equalsIgnoreCase(name))) { throw new IllegalArgumentException(String.format("Parameter %s does not exist in this repeating group", name)); } diff --git a/src/test/java/com/lmax/simpledsl/internal/DslParamsParserTest.java b/src/test/java/com/lmax/simpledsl/internal/DslParamsParserTest.java index ca51a9f..1beb369 100644 --- a/src/test/java/com/lmax/simpledsl/internal/DslParamsParserTest.java +++ b/src/test/java/com/lmax/simpledsl/internal/DslParamsParserTest.java @@ -646,7 +646,7 @@ public void shouldMatchAllowedValuesCaseInsensitivelyAndReturnValuesUsingTheCase { final String[] args = {"a: value", "myGroup: joe", "myValue: a"}; final DslArg[] parameters = { - new RequiredArg("a"), + new RequiredArg("A"), new RepeatingArgGroup( new RequiredArg("myGroup").setAllowedValues("Joe", "Jenny"), new RequiredArg("myValue").setAllowedValues("A", "B")) @@ -659,8 +659,8 @@ public void shouldMatchAllowedValuesCaseInsensitivelyAndReturnValuesUsingTheCase assertEquals("value", params.value("a")); final RepeatingGroup[] groups = params.valuesAsGroup("myGroup"); assertEquals(1, groups.length); - assertEquals("Joe", groups[0].value("myGroup")); - assertEquals("A", groups[0].value("myValue")); + assertEquals("Joe", groups[0].values("myGroup")[0]); + assertEquals("A", groups[0].values("myValue")[0]); } @Test diff --git a/src/test/java/com/lmax/simpledsl/internal/RepeatingParamValuesTest.java b/src/test/java/com/lmax/simpledsl/internal/RepeatingParamValuesTest.java index 8a5f11b..b731e52 100755 --- a/src/test/java/com/lmax/simpledsl/internal/RepeatingParamValuesTest.java +++ b/src/test/java/com/lmax/simpledsl/internal/RepeatingParamValuesTest.java @@ -150,4 +150,18 @@ void shouldThrowExceptionWhenAttemptToGetValueButContainsMultiple() assertEquals("values() should be used when multiple values are allowed", exception.getMessage()); } + + @Test + public void shouldRetrieveValueCaseWithACaseInsensitiveKey() + { + final RequiredArg requiredArg = new RequiredArg("foo"); + final OptionalArg otherArg = new OptionalArg("bar"); + final Map> values = new HashMap<>(); + values.put("foo", Collections.singletonList("")); + values.put("bar", Collections.singletonList("123")); + final RepeatingParamValues params = new RepeatingParamValues(asList(requiredArg, otherArg).toArray(new DslArg[0]), values); + + assertTrue(params.hasValue("Bar")); + assertEquals("123", params.value("BAR")); + } }