From a3b2684b6f84d7b2ebc246939bdfd2e8ead84a75 Mon Sep 17 00:00:00 2001 From: Dmytro Kostiuchenko Date: Sun, 26 May 2013 00:18:57 +0300 Subject: [PATCH] Support for Boolean values in ExpressionEvaluator --- .../filter/eval/ExpressionEvaluator.java | 9 +++++++++ .../jayway/jsonpath/ExpressionEvalTest.java | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+) 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")); + + } }