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")



Reply via email to