--- test case: 'Invalid path $.a[] in {"a":{"b": [{"x":10}, 2, 3] }}' in: json: '{"a":{"b": [{"x":10}, 2, 3] }}' path: $.a[] out: result: fail --- test case: 'Invalid path $a in {"a":1}' in: json: '{"a":1}' path: $a out: result: fail --- test case: 'Invalid path "" in {"a":1}' in: json: '{"a":1}' path: "" out: result: fail --- test case: 'Invalid location $.x.b in {"a":{"b": [{"x":10}, 2, 3] }}' in: json: '{"a":{"b": [{"x":10}, 2, 3] }}' path: $.x.b out: result: fail --- test case: 'Invalid location $[3] in [1, 2, 3]' in: json: '[1, 2, 3]' path: $[3] out: result: fail --- test case: 'Valid location $[0] in [1, 2, 3]' in: json: '[1, 2, 3]' path: $[0] out: result: succeed value: 1 --- test case: 'Valid location $[1] in [1, 2, 3]' in: json: '[1, 2, 3]' path: $[1] out: result: succeed value: 2 --- test case: 'Valid location $[2] in [1, 2, 3]' in: json: '[1, 2, 3]' path: $[2] out: result: succeed value: 3 --- test case: 'Valid location $[1][0] in [1,["a","b","c"],3]' in: json: '[1,["a","b","c"],3]' path: $[1][0] out: result: succeed value: a --- test case: 'Valid location $.x[1][2] in {"x":[1, ["a", "b", "c"], 3]}' in: json: '{"x":[1, ["a", "b", "c"], 3]}' path: $.x[1][2] out: result: succeed value: c --- test case: 'Valid location $.a in {"a":{"b": [{"x":10}, 2, 3] }}' in: json: '{"a":{"b": [{"x":10}, 2, 3] }}' path: $.a out: result: succeed value: '{"b": [{"x":10}, 2, 3] }' --- test case: 'Valid location $.a in {"a" : {"b": [{"x":10}, 2, 3] }}' in: json: '{"a" : {"b": [{"x":10}, 2, 3] }}' path: $.a out: result: succeed value: '{"b": [{"x":10}, 2, 3] }' --- test case: 'Valid location $.a.b in {"a":{"b": [{"x":10}, 2, 3] }}' in: json: '{"a":{"b": [{"x":10}, 2, 3] }}' path: $.a.b out: result: succeed value: '[{"x":10}, 2, 3]' --- test case: 'Valid location $.a.b[0] in {"a":{"b": [{"x":10}, 2, 3] }}' in: json: '{"a":{"b": [{"x":10}, 2, 3] }}' path: $.a.b[0] out: result: succeed value: '{"x":10}' --- test case: 'Valid location $.a.b[1] in {"a":{"b": [{"x":10}, 2, 3] }}' in: json: '{"a":{"b": [{"x":10}, 2, 3] }}' path: $.a.b[1] out: result: succeed value: 2 --- test case: 'Valid location $.a.b[2] in {"a":{"b": [{"x":10}, 2, 3] }}' in: json: '{"a":{"b": [{"x":10}, 2, 3] }}' path: $.a.b[2] out: result: succeed value: 3 --- test case: ZBX-13782, empty string in: json: '{"DeviceLog": ""}' path: $.DeviceLog out: result: succeed value: "" --- test case: ZBX-13782, 1 non-escaped ASCII character in: json: '{"DeviceLog": "a"}' path: $.DeviceLog out: result: succeed value: "a" --- test case: ZBX-13782, 2 non-escaped ASCII characters in: json: '{"DeviceLog": "aF"}' path: $.DeviceLog out: result: succeed value: "aF" --- test case: ZBX-13782, 3 non-escaped ASCII characters in: json: '{"DeviceLog": "0aF"}' path: $.DeviceLog out: result: succeed value: "0aF" --- test case: ZBX-13782, many non-escaped ASCII characters in: json: '{"DeviceLog": "0aF12345qwertZXCVBN;"}' path: $.DeviceLog out: result: succeed value: "0aF12345qwertZXCVBN;" --- test case: ZBX-13782, escaped quotation mark in: json: '{"DeviceLog": "\""}' path: $.DeviceLog out: result: succeed value: "\"" --- test case: ZBX-13782, escaped reverse solidus in: json: '{"DeviceLog": "\\"}' path: $.DeviceLog out: result: succeed value: "\\" --- test case: ZBX-13782, escaped solidus in: json: '{"DeviceLog": "\/"}' path: $.DeviceLog out: result: succeed value: "/" --- test case: ZBX-13782, escaped backspace in: json: '{"DeviceLog": "\b"}' path: $.DeviceLog out: result: succeed value: "\b" --- test case: ZBX-13782, escaped form feed in: json: '{"DeviceLog": "\f"}' path: $.DeviceLog out: result: succeed value: "\f" --- test case: ZBX-13782, escaped line feed in: json: '{"DeviceLog": "\n"}' path: $.DeviceLog out: result: succeed value: "\n" --- test case: ZBX-13782, escaped carriage return in: json: '{"DeviceLog": "\r"}' path: $.DeviceLog out: result: succeed value: "\r" --- test case: ZBX-13782, escaped tab in: json: '{"DeviceLog": "\t"}' path: $.DeviceLog out: result: succeed value: "\t" --- test case: ZBX-13782, escaped character in the beginning of string in: json: '{"DeviceLog": "\tAB"}' path: $.DeviceLog out: result: succeed value: "\tAB" --- test case: ZBX-13782, escaped character in the middle of string in: json: '{"DeviceLog": "A\tB"}' path: $.DeviceLog out: result: succeed value: "A\tB" --- test case: ZBX-13782, escaped character in the end of string in: json: '{"DeviceLog": "AB\t"}' path: $.DeviceLog out: result: succeed value: "AB\t" --- test case: ZBX-13782, several escaped character in string in: json: '{"DeviceLog": "\"\\\/\b\f\n\r\t"}' path: $.DeviceLog out: result: succeed value: "\"\\/\b\f\n\r\t" --- test case: ZBX-13782, escaped Unicode character \u0000 in: json: '{"DeviceLog": "A\u0000BC"}' path: $.DeviceLog out: result: succeed value: "A" --- test case: ZBX-13782, A as escaped Unicode character in: json: '{"DeviceLog": "\u0041"}' path: $.DeviceLog out: result: succeed value: "A" --- test case: ZBX-13782, escaped Unicode character \u00e4 which translates into 2 byte UTF-8 in: json: '{"DeviceLog": "AB-\u00e4-C"}' path: $.DeviceLog out: result: succeed value: "AB-ä-C" --- test case: ZBX-13782, escaped Unicode character \u00D1 which translates into 2 byte UTF-8 in: json: '{"DeviceLog": "AB-\u00D1-C"}' path: $.DeviceLog out: result: succeed value: "AB-Ñ-C" --- test case: ZBX-13782, escaped Unicode character \u042F which translates into 2 byte UTF-8 in: json: '{"DeviceLog": "AB-\u042F-C"}' path: $.DeviceLog out: result: succeed value: "AB-Я-C" --- test case: ZBX-13782, escaped Unicode character \u0800 which translates into 3 byte UTF-8 in: json: '{"DeviceLog": "AB-\u0800-C"}' path: $.DeviceLog out: result: succeed value: "AB-ࠀ-C" --- test case: ZBX-13782, escaped Unicode character \u10c0 which translates into 3 byte UTF-8 in: json: '{"DeviceLog": "AB-\u10c0-C"}' path: $.DeviceLog out: result: succeed value: "AB-Ⴠ-C" --- test case: ZBX-13782, escaped Unicode character \u10c0 which translates into 3 byte UTF-8 in: json: '{"DeviceLog": "\u10c0"}' path: $.DeviceLog out: result: succeed value: "Ⴠ" --- test case: ZBX-13782, escaped Unicode character \u20E0 which translates into 3 byte UTF-8 in: json: '{"DeviceLog": "\u20E0"}' path: $.DeviceLog out: result: succeed value: "⃠" --- test case: ZBX-13782, string with escaped Unicode character \u20E0 which translates into 3 byte UTF-8 in: json: '{"DeviceLog": "-\u20E0-"}' path: $.DeviceLog out: result: succeed value: "-⃠-" --- test case: ZBX-13782, escaped Unicode character \uFFFD (replacement character) in: json: '{"DeviceLog": "AB-\uFFFD-C"}' path: $.DeviceLog out: result: succeed value: "AB-�-C" --- test case: ZBX-13782, escaped Unicode character Curling Stone U+1F94C in: json: '{"DeviceLog": "\uD83E\uDD4C"}' path: $.DeviceLog out: result: succeed value: "🥌" --- test case: ZBX-13782, several escaped Unicode characters Zanabazar Square Letter Za U+11A28 in: json: '{"DeviceLog": "\uD806\uDE28-\uD806\uDE28-\uD806\uDE28-\uD806\uDE28"}' path: $.DeviceLog out: result: succeed value: "𑨨-𑨨-𑨨-𑨨" --- test case: ZBX-13782, several escaped Unicode characters Linear B Syllable B008 A U+10000 in: json: '{"DeviceLog": "\uD800\uDC00\uD800\uDC00\uD800\uDC00\uD800\uDC00"}' path: $.DeviceLog out: result: succeed value: "𐀀𐀀𐀀𐀀" --- test case: 'Invalid path $.*.b in {"a":{"b": [{"x":10}, 2, 3] }}' in: json: '{"a":{"b": [{"x":10}, 2, 3] }}' path: $.*.b out: result: fail --- test case: 'Invalid path $.a.b[?(@.x == "10")] in {"a":{"b": [{"x":10}, 2, 3] }}' in: json: '{"a":{"b": [{"x":10}, 2, 3] }}' path: $.a.b[?(@.x == "10")] out: result: fail --- test case: 'Invalid path $["a", "x"].b in {"a":{"b": [{"x":10}, 2, 3] }}' in: json: '{"a":{"b": [{"x":10}, 2, 3] }}' path: $['a', 'x'].b out: result: fail --- test case: 'Invalid path $.a.b[1,2] in {"a":{"b": [{"x":10}, 2, 3] }}' in: json: '{"a":{"b": [{"x":10}, 2, 3] }}' path: $.a.b[1,2] out: result: fail --- test case: 'Invalid path $.a.b.length() in {"a":{"b": [{"x":10}, 2, 3] }}' in: json: '{"a":{"b": [{"x":10}, 2, 3] }}' path: $.a.b.length() out: result: fail --- test case: 'Invalid path $..b in {"a":{"b": [{"x":10}, 2, 3] }}' in: json: '{"a":{"b": [{"x":10}, 2, 3] }}' path: $..b out: result: fail --- test case: 'Valid 64 element deep array test' in: json: '[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]' path: $[0] out: result: succeed value: '[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]' --- test case: 'Invalid 65 element deep array test' in: json: '[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]' path: $ out: result: 'cannot parse as a valid JSON object: JSON depth exceeds 64 at: ''[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]''' --- test case: 'Valid 64 element deep object test' in: json: '{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}' path: $.a out: result: succeed value: '{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}' --- test case: 'Invalid 65 element deep object test' in: json: '{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{"a":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}' path: $.a out: result: 'cannot parse as a valid JSON object: JSON depth exceeds 64 at: ''{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}''' ...