From 557eb72d23880d5deb339bbf4e60bbb97f68b0af Mon Sep 17 00:00:00 2001 From: Kalle Stenflo Date: Mon, 5 Mar 2012 12:02:20 +0100 Subject: [PATCH] don't accept single '=' in array eval. --- .../jsonpath/internal/filter/ArrayEvalFilter.java | 2 +- .../internal/filter/eval/ExpressionEvaluator.java | 8 ++++---- .../java/com/jayway/jsonpath/ExpressionEvalTest.java | 6 ++---- .../test/java/com/jayway/jsonpath/JsonPathTest.java | 12 ++++++------ 4 files changed, 13 insertions(+), 15 deletions(-) diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/filter/ArrayEvalFilter.java b/json-path/src/main/java/com/jayway/jsonpath/internal/filter/ArrayEvalFilter.java index 616a2fa3..b4d1cad1 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/internal/filter/ArrayEvalFilter.java +++ b/json-path/src/main/java/com/jayway/jsonpath/internal/filter/ArrayEvalFilter.java @@ -36,7 +36,7 @@ public class ArrayEvalFilter extends Filter { @Override public Object filter(Object obj, JsonProvider jsonProvider) { - //[?(@.isbn = 10)] + //[?(@.isbn == 10)] List src = jsonProvider.toList(obj); List result = jsonProvider.createList(); 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 91928bcc..6374a2df 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 @@ -28,7 +28,7 @@ public class ExpressionEvaluator { Long a = (Long) actual; Long e = Long.parseLong(expected.trim()); - if ("=".equals(comparator) || "==".equals(comparator)) { + if ("==".equals(comparator)) { return a.longValue() == e.longValue(); } else if ("!=".equals(comparator) || "<>".equals(comparator)) { return a.longValue() != e.longValue(); @@ -45,7 +45,7 @@ public class ExpressionEvaluator { Integer a = (Integer) actual; Integer e = Integer.parseInt(expected.trim()); - if ("=".equals(comparator)) { + if ("==".equals(comparator)) { return a.intValue() == e.intValue(); } else if ("!=".equals(comparator) || "<>".equals(comparator)) { return a.intValue() != e.intValue(); @@ -63,7 +63,7 @@ public class ExpressionEvaluator { Double a = (Double) actual; Double e = Double.parseDouble(expected.trim()); - if ("=".equals(comparator) || "==".equals(comparator)) { + if ("==".equals(comparator)) { return a.doubleValue() == e.doubleValue(); } else if ("!=".equals(comparator) || "<>".equals(comparator)) { return a.doubleValue() != e.doubleValue(); @@ -87,7 +87,7 @@ public class ExpressionEvaluator { expected = expected.substring(0, expected.length()-1); } - if ("=".equals(comparator) || "==".equals(comparator)) { + if ("==".equals(comparator)) { return a.equals(expected); } else if ("!=".equals(comparator) || "<>".equals(comparator)) { return !a.equals(expected); 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 13c1a5b5..8ee09297 100644 --- a/json-path/src/test/java/com/jayway/jsonpath/ExpressionEvalTest.java +++ b/json-path/src/test/java/com/jayway/jsonpath/ExpressionEvalTest.java @@ -17,7 +17,6 @@ public class ExpressionEvalTest { @Test public void long_eval() throws Exception { - assertTrue(ExpressionEvaluator.eval(1L, "=", "1")); assertTrue(ExpressionEvaluator.eval(1L, "==", "1")); assertTrue(ExpressionEvaluator.eval(2L, "!=", "1")); assertTrue(ExpressionEvaluator.eval(2L, ">", "1")); @@ -30,14 +29,13 @@ public class ExpressionEvalTest { assertFalse(ExpressionEvaluator.eval(1, ">=", "2")); assertFalse(ExpressionEvaluator.eval(2, "<", "1")); assertFalse(ExpressionEvaluator.eval(2, "<=", "1")); - assertFalse(ExpressionEvaluator.eval(1, "=", "2")); + assertFalse(ExpressionEvaluator.eval(1, "==", "2")); assertFalse(ExpressionEvaluator.eval(1, "!=", "1")); } @Test public void double_eval() throws Exception { - assertTrue(ExpressionEvaluator.eval(1D, "=", "1")); assertTrue(ExpressionEvaluator.eval(1D, "==", "1")); assertTrue(ExpressionEvaluator.eval(2D, "!=", "1")); assertTrue(ExpressionEvaluator.eval(2D, ">", "1")); @@ -50,7 +48,7 @@ public class ExpressionEvalTest { assertFalse(ExpressionEvaluator.eval(1D, ">=", "2")); assertFalse(ExpressionEvaluator.eval(2D, "<", "1")); assertFalse(ExpressionEvaluator.eval(2D, "<=", "1")); - assertFalse(ExpressionEvaluator.eval(1D, "=", "2")); + assertFalse(ExpressionEvaluator.eval(1D, "==", "2")); assertFalse(ExpressionEvaluator.eval(1D, "!=", "1")); } diff --git a/json-path/src/test/java/com/jayway/jsonpath/JsonPathTest.java b/json-path/src/test/java/com/jayway/jsonpath/JsonPathTest.java index 75b1896d..cd29b706 100644 --- a/json-path/src/test/java/com/jayway/jsonpath/JsonPathTest.java +++ b/json-path/src/test/java/com/jayway/jsonpath/JsonPathTest.java @@ -77,7 +77,7 @@ public class JsonPathTest { @Test public void array_start_expands() throws Exception { //assertThat(JsonPath.>read(ARRAY_EXPAND, "$[?(@.parent = 'ONE')].child.name"), hasItems("NAME_ONE")); - assertThat(JsonPath.>read(ARRAY_EXPAND, "$[?(@['parent'] = 'ONE')].child.name"), hasItems("NAME_ONE")); + assertThat(JsonPath.>read(ARRAY_EXPAND, "$[?(@['parent'] == 'ONE')].child.name"), hasItems("NAME_ONE")); } @Test @@ -102,7 +102,7 @@ public class JsonPathTest { @Test public void filter_an_array() throws Exception { - List matches = JsonPath.read(ARRAY, "$.[?(@.value = 1)]"); + List matches = JsonPath.read(ARRAY, "$.[?(@.value == 1)]"); assertEquals(1, matches.size()); System.out.println(matches); @@ -231,22 +231,22 @@ public class JsonPathTest { @Test public void dot_in_predicate_works() throws Exception { - assertThat(JsonPath.>read(PRODUCT_JSON, "$.product[?(@.version='4.0')].codename"), hasItems("Montreal")); + assertThat(JsonPath.>read(PRODUCT_JSON, "$.product[?(@.version=='4.0')].codename"), hasItems("Montreal")); } @Test public void dots_in_predicate_works() throws Exception { - assertThat(JsonPath.>read(PRODUCT_JSON, "$.product[?(@.attr.with.dot='A')].codename"), hasItems("Seattle")); + assertThat(JsonPath.>read(PRODUCT_JSON, "$.product[?(@.attr.with.dot=='A')].codename"), hasItems("Seattle")); } @Test public void all_books_with_category_reference() throws Exception { - assertThat(JsonPath.>read(DOCUMENT, "$..book[?(@.category='reference')].title"), hasItems("Sayings of the Century")); - assertThat(JsonPath.>read(DOCUMENT, "$.store.book[?(@.category='reference')].title"), hasItems("Sayings of the Century")); + assertThat(JsonPath.>read(DOCUMENT, "$..book[?(@.category=='reference')].title"), hasItems("Sayings of the Century")); + assertThat(JsonPath.>read(DOCUMENT, "$.store.book[?(@.category=='reference')].title"), hasItems("Sayings of the Century")); }