mirror of
https://github.com/json-c/json-c.git
synced 2026-03-21 22:19:07 +08:00
Essentially, this change adds the test cases from this repo: https://github.com/json-patch/json-patch-tests Specifically: https://github.com/json-patch/json-patch-tests/blob/master/spec_tests.json https://github.com/json-patch/json-patch-tests/blob/master/tests.json The files were taken at the date of this commit, at git hash ea3af85790cb72893d0676597814b7532019c24e Some tests may not have an 'expected' or 'error' field. Those are ignored. One test was disabled manually via "disabled_in_json_c", because it tries an impossible test, i.e. to add 2 "op" fields in the same patch entry, something which is impossible in a JSON object. For the 'error' cases, right now we only test that an error happens. Later, we can extend this to check the error codes. Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
234 lines
3.9 KiB
JSON
234 lines
3.9 KiB
JSON
[
|
|
{
|
|
"comment": "4.1. add with missing object",
|
|
"doc": { "q": { "bar": 2 } },
|
|
"patch": [ {"op": "add", "path": "/a/b", "value": 1} ],
|
|
"error":
|
|
"path /a does not exist -- missing objects are not created recursively"
|
|
},
|
|
|
|
{
|
|
"comment": "A.1. Adding an Object Member",
|
|
"doc": {
|
|
"foo": "bar"
|
|
},
|
|
"patch": [
|
|
{ "op": "add", "path": "/baz", "value": "qux" }
|
|
],
|
|
"expected": {
|
|
"baz": "qux",
|
|
"foo": "bar"
|
|
}
|
|
},
|
|
|
|
{
|
|
"comment": "A.2. Adding an Array Element",
|
|
"doc": {
|
|
"foo": [ "bar", "baz" ]
|
|
},
|
|
"patch": [
|
|
{ "op": "add", "path": "/foo/1", "value": "qux" }
|
|
],
|
|
"expected": {
|
|
"foo": [ "bar", "qux", "baz" ]
|
|
}
|
|
},
|
|
|
|
{
|
|
"comment": "A.3. Removing an Object Member",
|
|
"doc": {
|
|
"baz": "qux",
|
|
"foo": "bar"
|
|
},
|
|
"patch": [
|
|
{ "op": "remove", "path": "/baz" }
|
|
],
|
|
"expected": {
|
|
"foo": "bar"
|
|
}
|
|
},
|
|
|
|
{
|
|
"comment": "A.4. Removing an Array Element",
|
|
"doc": {
|
|
"foo": [ "bar", "qux", "baz" ]
|
|
},
|
|
"patch": [
|
|
{ "op": "remove", "path": "/foo/1" }
|
|
],
|
|
"expected": {
|
|
"foo": [ "bar", "baz" ]
|
|
}
|
|
},
|
|
|
|
{
|
|
"comment": "A.5. Replacing a Value",
|
|
"doc": {
|
|
"baz": "qux",
|
|
"foo": "bar"
|
|
},
|
|
"patch": [
|
|
{ "op": "replace", "path": "/baz", "value": "boo" }
|
|
],
|
|
"expected": {
|
|
"baz": "boo",
|
|
"foo": "bar"
|
|
}
|
|
},
|
|
|
|
{
|
|
"comment": "A.6. Moving a Value",
|
|
"doc": {
|
|
"foo": {
|
|
"bar": "baz",
|
|
"waldo": "fred"
|
|
},
|
|
"qux": {
|
|
"corge": "grault"
|
|
}
|
|
},
|
|
"patch": [
|
|
{ "op": "move", "from": "/foo/waldo", "path": "/qux/thud" }
|
|
],
|
|
"expected": {
|
|
"foo": {
|
|
"bar": "baz"
|
|
},
|
|
"qux": {
|
|
"corge": "grault",
|
|
"thud": "fred"
|
|
}
|
|
}
|
|
},
|
|
|
|
{
|
|
"comment": "A.7. Moving an Array Element",
|
|
"doc": {
|
|
"foo": [ "all", "grass", "cows", "eat" ]
|
|
},
|
|
"patch": [
|
|
{ "op": "move", "from": "/foo/1", "path": "/foo/3" }
|
|
],
|
|
"expected": {
|
|
"foo": [ "all", "cows", "eat", "grass" ]
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
"comment": "A.8. Testing a Value: Success",
|
|
"doc": {
|
|
"baz": "qux",
|
|
"foo": [ "a", 2, "c" ]
|
|
},
|
|
"patch": [
|
|
{ "op": "test", "path": "/baz", "value": "qux" },
|
|
{ "op": "test", "path": "/foo/1", "value": 2 }
|
|
],
|
|
"expected": {
|
|
"baz": "qux",
|
|
"foo": [ "a", 2, "c" ]
|
|
}
|
|
},
|
|
|
|
{
|
|
"comment": "A.9. Testing a Value: Error",
|
|
"doc": {
|
|
"baz": "qux"
|
|
},
|
|
"patch": [
|
|
{ "op": "test", "path": "/baz", "value": "bar" }
|
|
],
|
|
"error": "string not equivalent"
|
|
},
|
|
|
|
{
|
|
"comment": "A.10. Adding a nested Member Object",
|
|
"doc": {
|
|
"foo": "bar"
|
|
},
|
|
"patch": [
|
|
{ "op": "add", "path": "/child", "value": { "grandchild": { } } }
|
|
],
|
|
"expected": {
|
|
"foo": "bar",
|
|
"child": {
|
|
"grandchild": {
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
{
|
|
"comment": "A.11. Ignoring Unrecognized Elements",
|
|
"doc": {
|
|
"foo":"bar"
|
|
},
|
|
"patch": [
|
|
{ "op": "add", "path": "/baz", "value": "qux", "xyz": 123 }
|
|
],
|
|
"expected": {
|
|
"foo":"bar",
|
|
"baz":"qux"
|
|
}
|
|
},
|
|
|
|
{
|
|
"comment": "A.12. Adding to a Non-existent Target",
|
|
"doc": {
|
|
"foo": "bar"
|
|
},
|
|
"patch": [
|
|
{ "op": "add", "path": "/baz/bat", "value": "qux" }
|
|
],
|
|
"error": "add to a non-existent target"
|
|
},
|
|
|
|
{
|
|
"comment": "A.13 Invalid JSON Patch Document",
|
|
"doc": {
|
|
"foo": "bar"
|
|
},
|
|
"patch": [
|
|
{ "op": "add", "path": "/baz", "value": "qux", "op": "remove" }
|
|
],
|
|
"error": "operation has two 'op' members",
|
|
"disabled": true
|
|
},
|
|
|
|
{
|
|
"comment": "A.14. ~ Escape Ordering",
|
|
"doc": {
|
|
"/": 9,
|
|
"~1": 10
|
|
},
|
|
"patch": [{"op": "test", "path": "/~01", "value": 10}],
|
|
"expected": {
|
|
"/": 9,
|
|
"~1": 10
|
|
}
|
|
},
|
|
|
|
{
|
|
"comment": "A.15. Comparing Strings and Numbers",
|
|
"doc": {
|
|
"/": 9,
|
|
"~1": 10
|
|
},
|
|
"patch": [{"op": "test", "path": "/~01", "value": "10"}],
|
|
"error": "number is not equal to string"
|
|
},
|
|
|
|
{
|
|
"comment": "A.16. Adding an Array Value",
|
|
"doc": {
|
|
"foo": ["bar"]
|
|
},
|
|
"patch": [{ "op": "add", "path": "/foo/-", "value": ["abc", "def"] }],
|
|
"expected": {
|
|
"foo": ["bar", ["abc", "def"]]
|
|
}
|
|
}
|
|
|
|
]
|