diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/filter/eval/ExpressionEvaluator.java b/json-path/src/main/java/com/jayway/jsonpath/internal/filter/eval/ExpressionEvaluator.java index 36bf57c8..e6077537 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/internal/filter/eval/ExpressionEvaluator.java +++ b/json-path/src/main/java/com/jayway/jsonpath/internal/filter/eval/ExpressionEvaluator.java @@ -90,6 +90,15 @@ public class ExpressionEvaluator { } else if ("!=".equals(comparator) || "<>".equals(comparator)) { return !a.equals(expected); } + } else if (actual instanceof Boolean) { + + Boolean a = (Boolean) actual; + Boolean e = Boolean.valueOf(expected); + if ("==".equals(comparator)) { + return a.equals(e); + } else if ("!=".equals(comparator) || "<>".equals(comparator)) { + return !a.equals(e); + } } return false; diff --git a/json-path/src/test/java/com/jayway/jsonpath/ExpressionEvalTest.java b/json-path/src/test/java/com/jayway/jsonpath/ExpressionEvalTest.java index 8ee09297..be23e647 100644 --- a/json-path/src/test/java/com/jayway/jsonpath/ExpressionEvalTest.java +++ b/json-path/src/test/java/com/jayway/jsonpath/ExpressionEvalTest.java @@ -60,5 +60,23 @@ public class ExpressionEvalTest { } + @Test + public void boolean_eval() throws Exception { + + assertTrue(ExpressionEvaluator.eval(true, "==", "true")); + assertTrue(ExpressionEvaluator.eval(false, "==", "false")); + assertTrue(ExpressionEvaluator.eval(true, "!=", "false")); + assertTrue(ExpressionEvaluator.eval(true, "<>", "false")); + assertTrue(ExpressionEvaluator.eval(false, "!=", "true")); + assertTrue(ExpressionEvaluator.eval(false, "<>", "true")); + + assertFalse(ExpressionEvaluator.eval(true, "==", "false")); + assertFalse(ExpressionEvaluator.eval(false, "==", "true")); + assertFalse(ExpressionEvaluator.eval(true, "!=", "true")); + assertFalse(ExpressionEvaluator.eval(true, "<>", "true")); + assertFalse(ExpressionEvaluator.eval(false, "!=", "false")); + assertFalse(ExpressionEvaluator.eval(false, "<>", "false")); + + } }