Kalle Stenflo
13 years ago
4 changed files with 217 additions and 6 deletions
@ -0,0 +1,211 @@ |
|||||||
|
package com.jayway.jsonpath; |
||||||
|
|
||||||
|
import org.hamcrest.Matchers; |
||||||
|
import org.junit.Test; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
import static org.hamcrest.Matchers.*; |
||||||
|
import static org.junit.Assert.assertThat; |
||||||
|
|
||||||
|
/** |
||||||
|
* test defined in http://jsonpath.googlecode.com/svn/trunk/tests/jsonpath-test-js.html
|
||||||
|
*/ |
||||||
|
public class ComplianceTests { |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Test |
||||||
|
public void test_one() throws Exception { |
||||||
|
|
||||||
|
String json = "{ a: \"a\",\n" + |
||||||
|
" b: \"b\",\n" + |
||||||
|
" \"c d\": \"e\" \n" + |
||||||
|
" }"; |
||||||
|
|
||||||
|
assertThat(JsonPath.<String>read(json, "$.a"), is(equalTo("a"))); |
||||||
|
assertThat(JsonPath.<List<String>>read(json, "$.*"), hasItems("a", "b", "e")); |
||||||
|
assertThat(JsonPath.<List<String>>read(json, "$['*']"), hasItems("a", "b", "e")); |
||||||
|
|
||||||
|
//assertThat(JsonPath.<String>read(json, "$['a']"), is(equalTo("a"))); //high
|
||||||
|
//assertThat(JsonPath.<String>read(json, "$.'c d'"), is(equalTo("e"))); //low
|
||||||
|
//assertThat(JsonPath.<List<String>>read(json, "$[*]"), hasItems("a", "b", "e")); //low
|
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test_two() throws Exception { |
||||||
|
String json = "[ 1, \"2\", 3.14, true, null ]"; |
||||||
|
|
||||||
|
assertThat(JsonPath.<Integer>read(json, "$[0]"), is(equalTo(1))); |
||||||
|
assertThat(JsonPath.<Integer>read(json, "$[4]"), is(equalTo(null))); |
||||||
|
assertThat(JsonPath.<List<Comparable>>read(json, "$[*]"), hasItems((Comparable)new Integer(1), (Comparable)new String("2"), (Comparable)new Double(3.14), (Comparable)new Boolean(true), null)); |
||||||
|
assertThat(JsonPath.<Boolean>read(json, "$[-1:]"), is(equalTo(null))); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test_three() throws Exception { |
||||||
|
String json = "{ points: [\n" + |
||||||
|
" { id: \"i1\", x: 4, y: -5 },\n" + |
||||||
|
" { id: \"i2\", x: -2, y: 2, z: 1 },\n" + |
||||||
|
" { id: \"i3\", x: 8, y: 3 },\n" + |
||||||
|
" { id: \"i4\", x: -6, y: -1 },\n" + |
||||||
|
" { id: \"i5\", x: 0, y: 2, z: 1 },\n" + |
||||||
|
" { id: \"i6\", x: 1, y: 4 }\n" + |
||||||
|
" ]\n" + |
||||||
|
" }"; |
||||||
|
|
||||||
|
assertThat(JsonPath.<Map<String, Comparable>>read(json, "$.points[1]"), allOf( |
||||||
|
Matchers.<String, Comparable>hasEntry("id", "i2"), |
||||||
|
Matchers.<String, Comparable>hasEntry("x", -2), |
||||||
|
Matchers.<String, Comparable>hasEntry("y", 2), |
||||||
|
Matchers.<String, Comparable>hasEntry("z", 1) |
||||||
|
)); |
||||||
|
|
||||||
|
assertThat(JsonPath.<Integer>read(json, "$.points[4].x"), equalTo(0)); |
||||||
|
|
||||||
|
assertThat(JsonPath.<List<Integer>>read(json, "$.points[?(@.id = 'i4')].x"), hasItem(-6)); |
||||||
|
|
||||||
|
assertThat(JsonPath.<List<Integer>>read(json, "$.points[*].x"), hasItems(4, -2, 8, -6, 0, 1)); |
||||||
|
|
||||||
|
assertThat(JsonPath.<List<String>>read(json, "$.points[?(@.z)].id"), hasItems("i2", "i5")); |
||||||
|
|
||||||
|
assertThat(JsonPath.<String>read(json, "$.points[(@.length-1)].id"), equalTo("i6")); |
||||||
|
|
||||||
|
//assertThat(JsonPath.<List<Integer>>read(json, "$['points'][?(@.x * @.x + @.y * @.y > 50)].id"), hasItems(?)); //low
|
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test_four() throws Exception { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* |
||||||
|
--one |
||||||
|
{ "o": { a: "a", |
||||||
|
b: "b", |
||||||
|
"c d": "e" |
||||||
|
}, |
||||||
|
"p": [ "$.a", |
||||||
|
"$['a']", |
||||||
|
"$.'c d'", |
||||||
|
"$.*", |
||||||
|
"$['*']" , |
||||||
|
"$[*]" |
||||||
|
] |
||||||
|
}, |
||||||
|
--two |
||||||
|
{ "o": [ 1, "2", 3.14, true, null ], |
||||||
|
"p": [ "$[0]", |
||||||
|
"$[4]", |
||||||
|
"$[*]", |
||||||
|
"$[-1:]" |
||||||
|
] |
||||||
|
}, |
||||||
|
--three |
||||||
|
{ "o": { points: [ |
||||||
|
{ id: "i1", x: 4, y: -5 }, |
||||||
|
{ id: "i2", x: -2, y: 2, z: 1 }, |
||||||
|
{ id: "i3", x: 8, y: 3 }, |
||||||
|
{ id: "i4", x: -6, y: -1 }, |
||||||
|
{ id: "i5", x: 0, y: 2, z: 1 }, |
||||||
|
{ id: "i6", x: 1, y: 4 } |
||||||
|
] |
||||||
|
}, |
||||||
|
"p": [ "$.points[1]", |
||||||
|
"$.points[4].x", |
||||||
|
"$.points[?(@.id=='i4')].x", |
||||||
|
"$.points[*].x", |
||||||
|
"$['points'][?(@.x*@.x+@.y*@.y > 50)].id", |
||||||
|
"$.points[?(@.z)].id", |
||||||
|
"$.points[(@.length-1)].id" |
||||||
|
] |
||||||
|
}, |
||||||
|
--four |
||||||
|
{ "o": { "menu": { |
||||||
|
"header": "SVG Viewer", |
||||||
|
"items": [ |
||||||
|
{"id": "Open"}, |
||||||
|
{"id": "OpenNew", "label": "Open New"}, |
||||||
|
null, |
||||||
|
{"id": "ZoomIn", "label": "Zoom In"}, |
||||||
|
{"id": "ZoomOut", "label": "Zoom Out"}, |
||||||
|
{"id": "OriginalView", "label": "Original View"}, |
||||||
|
null, |
||||||
|
{"id": "Quality"}, |
||||||
|
{"id": "Pause"}, |
||||||
|
{"id": "Mute"}, |
||||||
|
null, |
||||||
|
{"id": "Find", "label": "Find..."}, |
||||||
|
{"id": "FindAgain", "label": "Find Again"}, |
||||||
|
{"id": "Copy"}, |
||||||
|
{"id": "CopyAgain", "label": "Copy Again"}, |
||||||
|
{"id": "CopySVG", "label": "Copy SVG"}, |
||||||
|
{"id": "ViewSVG", "label": "View SVG"}, |
||||||
|
{"id": "ViewSource", "label": "View Source"}, |
||||||
|
{"id": "SaveAs", "label": "Save As"}, |
||||||
|
null, |
||||||
|
{"id": "Help"}, |
||||||
|
{"id": "About", "label": "About Adobe CVG Viewer..."} |
||||||
|
] |
||||||
|
} |
||||||
|
}, |
||||||
|
"p": [ "$.menu.items[?(@ && @.id && !@.label)].id", |
||||||
|
"$.menu.items[?(@ && @.label && /SVG/.test(@.label))].id", |
||||||
|
"$.menu.items[?(!@)]", |
||||||
|
"$..[0]" |
||||||
|
] |
||||||
|
}, |
||||||
|
--five |
||||||
|
{ "o": { a: [1,2,3,4], |
||||||
|
b: [5,6,7,8] |
||||||
|
}, |
||||||
|
"p": [ "$..[0]", |
||||||
|
"$..[-1:]", |
||||||
|
"$..[?(@%2==0)]" |
||||||
|
] |
||||||
|
}, |
||||||
|
{ "o": { lin: {color:"red", x:2, y:3}, |
||||||
|
cir: {color:"blue", x:5, y:2, r:1 }, |
||||||
|
arc: {color:"green", x:2, y:4, r:2, phi0:30, dphi:120 }, |
||||||
|
pnt: {x:0, y:7 } |
||||||
|
}, |
||||||
|
"p": [ "$.'?(@.color)'.x", |
||||||
|
"$['lin','cir'].color" |
||||||
|
] |
||||||
|
}, |
||||||
|
{ "o": { lin: {color:"red", x:2, y:3}, |
||||||
|
cir: {color:"blue", x:5, y:2, r:1 }, |
||||||
|
arc: {color:"green", x:2, y:4, r:2, phi0:30, dphi:120 }, |
||||||
|
pnt: {x:0, y:7 } |
||||||
|
}, |
||||||
|
"p": [ "$.'?(@.color)'.x", |
||||||
|
"$['lin','arc'].color" |
||||||
|
] |
||||||
|
}, |
||||||
|
{ "o": { text: [ "hello", "world2.0"] }, |
||||||
|
"p": [ "$.text[?(@.length > 5)]", |
||||||
|
"$.text[?(@.charAt(0) == 'h')]" |
||||||
|
] |
||||||
|
}, |
||||||
|
{ "o": { a: { a:2, b:3 }, |
||||||
|
b: { a:4, b:5 }, |
||||||
|
c: { a: { a:6, b:7}, c:8} |
||||||
|
}, |
||||||
|
"p": [ "$..a" |
||||||
|
] |
||||||
|
}, |
||||||
|
{ "o": { a: [ { a:5, '@':2, '$':3 }, // issue 7: resolved by escaping the '@' character
|
||||||
|
{ a:6, '@':3, '$':4 }, // in a JSONPath expression.
|
||||||
|
{ a:7, '@':4, '$':5 } |
||||||
|
] |
||||||
|
}, |
||||||
|
"p": [ "$.a[?(@['\\@']==3)]", |
||||||
|
"$.a[?(@['$']==5)]" |
||||||
|
] |
||||||
|
} |
||||||
|
*/ |
||||||
|
} |
Loading…
Reference in new issue