commit 66038ddcc53282bf49701589022376b0e260341c
Author: Mauro Talevi <[email protected]>
AuthorDate: Tue, 20 May 2014 08:30:13 +0200
Commit: Mauro Talevi <[email protected]>
CommitDate: Tue, 20 May 2014 08:30:44 +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")