commit 167e6bcf2b6be544dc21742547feb56140734b19 Author: Mauro Talevi <mauro.tal...@aquilonia.org> AuthorDate: Tue, 20 May 2014 08:30:13 +0200 Commit: Mauro Talevi <mauro.tal...@aquilonia.org> CommitDate: Tue, 20 May 2014 08:30:13 +0200
JBEHAVE-1019: Allow BooleanConverter to accept Boolean.TYPE and return false for unknown values. diff --git a/jbehave-core/src/main/java/org/jbehave/core/steps/ParameterConverters.java b/jbehave-core/src/main/java/org/jbehave/core/steps/ParameterConverters.java index 40b7e07..28be319 100755 --- a/jbehave-core/src/main/java/org/jbehave/core/steps/ParameterConverters.java +++ b/jbehave-core/src/main/java/org/jbehave/core/steps/ParameterConverters.java @@ -489,13 +489,17 @@ public class ParameterConverters { public boolean accept(Type type) { if (type instanceof Class<?>) { - return Boolean.class.isAssignableFrom((Class<?>) type); + return Boolean.class.isAssignableFrom((Class<?>) type) || Boolean.TYPE.isAssignableFrom((Class<?>) type); } return false; } public Object convertValue(String value, Type type) { + try { return BooleanUtils.toBoolean(value, trueValue, falseValue); + } catch (IllegalArgumentException e) { + return false; + } } } diff --git a/jbehave-core/src/test/java/org/jbehave/core/steps/ParameterConvertersBehaviour.java b/jbehave-core/src/test/java/org/jbehave/core/steps/ParameterConvertersBehaviour.java index b6bb185..872c1a2 100755 --- a/jbehave-core/src/test/java/org/jbehave/core/steps/ParameterConvertersBehaviour.java +++ b/jbehave-core/src/test/java/org/jbehave/core/steps/ParameterConvertersBehaviour.java @@ -482,11 +482,27 @@ public class ParameterConvertersBehaviour { @Test public void shouldConvertBoolean() throws IntrospectionException { ParameterConverter converter = new BooleanConverter(); + assertThat(converter.accept(Boolean.TYPE), equalTo(true)); assertThat(converter.accept(Boolean.class), equalTo(true)); assertThat(converter.accept(WrongType.class), is(false)); assertThat(converter.accept(mock(Type.class)), is(false)); Type type = SomeSteps.methodFor("aMethodWithBoolean").getGenericParameterTypes()[0]; assertThat((Boolean) converter.convertValue("true", type), is(true)); + assertThat((Boolean) converter.convertValue("false", type), is(false)); + assertThat((Boolean) converter.convertValue("whatever", type), is(false)); + } + + @Test + public void shouldConvertBooleanWithCustomValues() throws IntrospectionException { + ParameterConverter converter = new BooleanConverter("ON", "OFF"); + assertThat(converter.accept(Boolean.TYPE), equalTo(true)); + assertThat(converter.accept(Boolean.class), equalTo(true)); + assertThat(converter.accept(WrongType.class), is(false)); + assertThat(converter.accept(mock(Type.class)), is(false)); + Type type = SomeSteps.methodFor("aMethodWithBoolean").getGenericParameterTypes()[0]; + assertThat((Boolean) converter.convertValue("ON", type), is(true)); + assertThat((Boolean) converter.convertValue("OFF", type), is(false)); + assertThat((Boolean) converter.convertValue("whatever", type), is(false)); } @SuppressWarnings("unchecked")