diff --git a/json-path/src/test/java/com/jayway/jsonpath/FilterTest.java b/json-path/src/test/java/com/jayway/jsonpath/FilterTest.java index 77cd22ca..2ee3a0e2 100644 --- a/json-path/src/test/java/com/jayway/jsonpath/FilterTest.java +++ b/json-path/src/test/java/com/jayway/jsonpath/FilterTest.java @@ -1,5 +1,7 @@ package com.jayway.jsonpath; +import net.minidev.json.parser.JSONParser; + import org.junit.Test; import java.util.Collections; @@ -382,5 +384,41 @@ public class FilterTest { assertEquals(1, res.get(0).intValue()); } + + @Test + public void filters_can_contain_json_path_expressions() throws Exception { + Object doc = JsonModel.model(DOCUMENT).getJsonObject(); + + assertTrue(filter(where("$.store..price").gt(10)).accept(doc)); + assertFalse(filter(where("$.store..price").gte(100)).accept(doc)); + assertTrue(filter(where("$.store..category").ne("fiction")).accept(doc)); + assertFalse(filter(where("$.store.bicycle.color").ne("red")).accept(doc)); + assertTrue(filter(where("$.store.bicycle.color").ne("blue")).accept(doc)); + assertTrue(filter(where("$.store..color").exists(true)).accept(doc)); + assertFalse(filter(where("$.store..flavor").exists(true)).accept(doc)); + assertTrue(filter(where("$.store..color").regex(Pattern.compile("^r.d$"))).accept(doc)); + assertTrue(filter(where("$.store..color").type(String.class)).accept(doc)); + assertTrue(filter(where("$.store..price").is(12.99)).accept(doc)); + assertFalse(filter(where("$.store..price").is(13.99)).accept(doc)); + + } + + @Test + public void collection_based_filters_cannot_be_applied_to_multi_level_expressions(){ + + try{ + where("$.store.*").size(4); + fail("This should have thrown an exception"); + } catch(IllegalArgumentException e){ + + } + + try{ + where("$.store.*").in("foo"); + fail("This should have thrown an exception"); + } catch(IllegalArgumentException e){ + + } + } }