mirror of
https://github.com/stleary/JSON-java.git
synced 2025-08-03 11:25:30 -04:00
111 lines
2.6 KiB
Java
111 lines
2.6 KiB
Java
package org.json.junit;
|
|
|
|
import static org.junit.Assert.assertSame;
|
|
|
|
import org.json.JSONObject;
|
|
import org.json.JSONPointer;
|
|
import org.json.JSONPointerException;
|
|
import org.json.JSONTokener;
|
|
import org.junit.Test;
|
|
|
|
public class JSONPointerTest {
|
|
|
|
private static final JSONObject document;
|
|
|
|
// = new JSONObject("{"
|
|
// + "\"foo\": [\"bar\", \"baz\"], "
|
|
// + "\"\": 0,"
|
|
// + "\"a/b\": 1,"
|
|
// + "\"c%d\": 2,"
|
|
// + "\"e^f\": 3,"
|
|
// + "\"g|h\": 4,"
|
|
// + "\"i\\\\j\": 5,"
|
|
// + "\"k\\\\\\\"l\": 6,"
|
|
// + "\" \": 7,"
|
|
// + "\"m~n\": 8"
|
|
// + "}");
|
|
|
|
static {
|
|
document = new JSONObject(new JSONTokener(
|
|
JSONPointerTest.class.getResourceAsStream("/org/json/junit/jsonpointer-testdoc.json")));
|
|
}
|
|
|
|
private Object query(String pointer) {
|
|
return new JSONPointer(pointer).queryFrom(document);
|
|
}
|
|
|
|
@Test
|
|
public void emptyPointer() {
|
|
assertSame(document, query(""));
|
|
}
|
|
|
|
@Test(expected = NullPointerException.class)
|
|
public void nullPointer() {
|
|
new JSONPointer(null);
|
|
}
|
|
|
|
@Test
|
|
public void objectPropertyQuery() {
|
|
assertSame(document.get("foo"), query("/foo"));
|
|
}
|
|
|
|
@Test
|
|
public void arrayIndexQuery() {
|
|
assertSame(document.getJSONArray("foo").get(0), query("/foo/0"));
|
|
}
|
|
|
|
@Test(expected = JSONPointerException.class)
|
|
public void stringPropOfArrayFailure() {
|
|
query("/foo/bar");
|
|
}
|
|
|
|
@Test
|
|
public void queryByEmptyKey() {
|
|
assertSame(document.get(""), query("/"));
|
|
}
|
|
|
|
@Test
|
|
public void slashEscaping() {
|
|
assertSame(document.get("a/b"), query("/a~1b"));
|
|
}
|
|
|
|
@Test
|
|
public void tildeEscaping() {
|
|
assertSame(document.get("m~n"), query("/m~0n"));
|
|
}
|
|
|
|
@Test
|
|
public void backslashEscaping() {
|
|
assertSame(document.get("i\\j"), query("/i\\\\j"));
|
|
}
|
|
|
|
@Test
|
|
public void quotationEscaping() {
|
|
assertSame(document.get("k\"l"), query("/k\\\\\\\"l"));
|
|
}
|
|
|
|
@Test
|
|
public void whitespaceKey() {
|
|
assertSame(document.get(" "), query("/ "));
|
|
}
|
|
|
|
@Test
|
|
public void uriFragmentNotation() {
|
|
assertSame(document.get("foo"), query("#/foo"));
|
|
}
|
|
|
|
@Test
|
|
public void uriFragmentPercentHandling() {
|
|
assertSame(document.get("c%d"), query("#/c%25d"));
|
|
assertSame(document.get("e^f"), query("#/e%5Ef"));
|
|
assertSame(document.get("g|h"), query("#/g%7Ch"));
|
|
assertSame(document.get("m~n"), query("#/m~0n"));
|
|
}
|
|
|
|
@Test(expected = IllegalArgumentException.class)
|
|
public void syntaxError() {
|
|
new JSONPointer("key");
|
|
}
|
|
|
|
}
|