diff --git a/test/tool/net/jsonorg_fail_test.lua b/test/tool/net/jsonorg_fail_test.lua index 637a6322b..54f70708a 100644 --- a/test/tool/net/jsonorg_fail_test.lua +++ b/test/tool/net/jsonorg_fail_test.lua @@ -130,3 +130,50 @@ assert(not DecodeJson([[ [ "line\ break"] ]])) + +-- https://www.json.org/JSON_checker/test.zip +-- JSON parsing sample test case: fail4.json +assert(not DecodeJson([[ +[ "extra comma",] +]])) + +-- https://www.json.org/JSON_checker/test.zip +-- JSON parsing sample test case: fail5.json +assert(not DecodeJson([[ +[ "double extra comma",,] +]])) + +-- https://www.json.org/JSON_checker/test.zip +-- JSON parsing sample test case: fail6.json +assert(not DecodeJson([[ +[ , "<-- missing value"] +]])) + +-- https://www.json.org/JSON_checker/test.zip +-- JSON parsing sample test case: fail9.json +assert(not DecodeJson([[ +{"Extra comma": true,} +]])) + +-- https://www.json.org/JSON_checker/test.zip +-- JSON parsing sample test case: fail20.json +assert(not DecodeJson([[ +{"Double colon":: null} +]])) + +-- https://www.json.org/JSON_checker/test.zip +-- JSON parsing sample test case: fail25.json +assert(not DecodeJson([[ +[ " tab character in string "] +]])) + +-- https://www.json.org/JSON_checker/test.zip +-- JSON parsing sample test case: fail27.json +assert(not DecodeJson([[ +[ "line +break"] +]])) + +-- https://www.json.org/JSON_checker/test.zip +-- JSON parsing sample test case: fail15.json +assert(not DecodeJson(' ["Illegal backslash escape: \x15"] ')) diff --git a/test/tool/net/jsonorg_lenient_test.lua b/test/tool/net/jsonorg_lenient_test.lua index aef7b8eab..68513d2a9 100644 --- a/test/tool/net/jsonorg_lenient_test.lua +++ b/test/tool/net/jsonorg_lenient_test.lua @@ -3,62 +3,9 @@ -- we run these tests anyway just to ensure that -- no segfaults occurs while parsing these cases --- https://www.json.org/JSON_checker/test.zip --- JSON parsing sample test case: fail4.json -assert(DecodeJson([[ -[ "extra comma",] -]])) - --- [jart] we deviate from json.org because we don't care about commas --- https://www.json.org/JSON_checker/test.zip --- JSON parsing sample test case: fail5.json -assert(DecodeJson([[ -[ "double extra comma",,] -]])) - --- [jart] we deviate from json.org because we don't care about commas --- https://www.json.org/JSON_checker/test.zip --- JSON parsing sample test case: fail6.json -assert(DecodeJson([[ -[ , "<-- missing value"] -]])) - --- [jart] we deviate from json.org because we don't care about commas --- https://www.json.org/JSON_checker/test.zip --- JSON parsing sample test case: fail9.json -assert(DecodeJson([[ -{"Extra comma": true,} -]])) - -- [jart] we deviate from json.org because we don't care about colons -- https://www.json.org/JSON_checker/test.zip -- JSON parsing sample test case: fail19.json assert(DecodeJson([[ {"Missing colon" null} ]])) - --- [jart] we deviate from json.org because we don't care about colons --- https://www.json.org/JSON_checker/test.zip --- JSON parsing sample test case: fail20.json -assert(DecodeJson([[ -{"Double colon":: null} -]])) - --- https://www.json.org/JSON_checker/test.zip --- JSON parsing sample test case: fail25.json -assert(not DecodeJson([[ -[ " tab character in string "] -]])) - --- https://www.json.org/JSON_checker/test.zip --- JSON parsing sample test case: fail27.json -assert(not DecodeJson([[ -[ "line -break"] -]])) - --- https://www.json.org/JSON_checker/test.zip --- JSON parsing sample test case: fail15.json -assert(not DecodeJson([[ -[ "Illegal backslash escape: \x15"] -]])) diff --git a/test/tool/net/jsontestsuite_fail1_test.lua b/test/tool/net/jsontestsuite_fail1_test.lua index 9a4dc9395..15e5dd653 100644 --- a/test/tool/net/jsontestsuite_fail1_test.lua +++ b/test/tool/net/jsontestsuite_fail1_test.lua @@ -269,3 +269,34 @@ assert(not DecodeJson(' [- 1] ')) -- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_array_just_minus.json assert(not DecodeJson(' [-] ')) + +-- [jart] v8 permits the \xb9 but doesn't permit the trailing comma +-- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_object_lone_continuation_byte_in_key_and_trailing_comma.json +assert(not DecodeJson(" {\"\xb9\":\"0\",} ")) + +-- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_object_double_colon.json +assert(not DecodeJson(' {"x"::"b"} ')) + +-- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_array_number_and_several_commas.json +assert(not DecodeJson(' [1,,] ')) + +-- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_array_number_and_comma.json +assert(not DecodeJson(' [1,] ')) + +-- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_array_missing_value.json +assert(not DecodeJson(' [ , ""] ')) + +-- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_array_just_comma.json +assert(not DecodeJson(' [,] ')) + +-- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_array_extra_comma.json +assert(not DecodeJson(' ["",] ')) + +-- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_array_double_extra_comma.json +assert(not DecodeJson(' ["x",,] ')) + +-- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_array_double_comma.json +assert(not DecodeJson(' [1,,2] ')) + +-- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_array_comma_and_number.json +assert(not DecodeJson(' [,1] ')) diff --git a/test/tool/net/jsontestsuite_fail4_test.lua b/test/tool/net/jsontestsuite_fail4_test.lua index b2c4a8206..1f716aa29 100644 --- a/test/tool/net/jsontestsuite_fail4_test.lua +++ b/test/tool/net/jsontestsuite_fail4_test.lua @@ -177,3 +177,12 @@ assert(not DecodeJson(" [\"\t\"] ")) -- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_string_unescaped_newline.json assert(not DecodeJson(" [\"new\nline\"] ")) + +-- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_object_two_commas_in_a_row.json +assert(not DecodeJson(' {"a":"b",,"c":"d"} ')) + +-- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_object_trailing_comma.json +assert(not DecodeJson(' {"id":0,} ')) + +-- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_object_several_trailing_commas.json +assert(not DecodeJson(' {"id":0,,,,,} ')) diff --git a/test/tool/net/jsontestsuite_lenient_test.lua b/test/tool/net/jsontestsuite_lenient_test.lua index 97c3f8ce4..b85bfe426 100644 --- a/test/tool/net/jsontestsuite_lenient_test.lua +++ b/test/tool/net/jsontestsuite_lenient_test.lua @@ -33,38 +33,13 @@ -- double exponents and empty double fraction. assert(EncodeLua(DecodeJson('[0 1 2 3 4]')) == '{0, 1, 2, 3, 4}') --- from fail4.lua --------------------------------------------------------------------------------- - --- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_object_two_commas_in_a_row.json -assert(DecodeJson(' {"a":"b",,"c":"d"} ')) -assert(EncodeLua(DecodeJson(' {"a":"b",,"c":"d"} ')) == '{a="b", c="d"}') - --- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_object_trailing_comma.json -assert(DecodeJson(' {"id":0,} ')) -assert(EncodeLua(DecodeJson(' {"id":0,} ')) == '{id=0}') - --- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_object_several_trailing_commas.json -assert(DecodeJson(' {"id":0,,,,,} ')) -assert(EncodeLua(DecodeJson(' {"id":0,,,,,} ')) == '{id=0}') - -- from fail1.lua -------------------------------------------------------------------------------- --- [jart] v8 permits the \xb9 but doesn't permit the trailing comma --- therefore this succeeds beacuse we don't care about comma --- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_object_lone_continuation_byte_in_key_and_trailing_comma.json -assert(DecodeJson(" {\"\xb9\":\"0\",} ")) -assert(EncodeLua(DecodeJson(" {\"\xb9\":\"0\",} ")) == '{["\\xb9"]="0"}') - -- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_object_missing_semicolon.json assert(DecodeJson(' {"a" "b"} ')) assert(EncodeLua(DecodeJson(' {"a" "b"} ')) == '{a="b"}') --- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_object_double_colon.json -assert(DecodeJson(' {"x"::"b"} ')) -assert(EncodeLua(DecodeJson(' {"x"::"b"} ')) == '{x="b"}') - -- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_number_real_without_fractional_part.json assert(DecodeJson(' [1.] ')) assert(EncodeLua(DecodeJson(' [1.] ')) == EncodeLua({1.0})) @@ -92,22 +67,6 @@ assert(EncodeLua(DecodeJson(' [-2.] ')) == '{-2.}') -- lool assert(not DecodeJson(' [--2.] ')) --- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_array_number_and_several_commas.json -assert(DecodeJson(' [1,,] ')) -assert(EncodeLua(DecodeJson(' [1,,] ')) == '{1}') - --- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_array_number_and_comma.json -assert(DecodeJson(' [1,] ')) -assert(EncodeLua(DecodeJson(' [1,] ')) == '{1}') - --- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_array_missing_value.json -assert(DecodeJson(' [ , ""] ')) -assert(EncodeLua(DecodeJson(' [ , ""] ')) == '{""}') - --- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_array_just_comma.json -assert(DecodeJson(' [,] ')) -assert(EncodeLua(DecodeJson(' [,] ')) == EncodeLua(DecodeJson(' [] '))) - -- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_array_inner_array_no_comma.json -- (added spaces between [[ and ]] so lua doesn't get confused) assert(DecodeJson([[ @@ -115,22 +74,6 @@ assert(DecodeJson([[ assert(EncodeLua(DecodeJson([[ [ 3[ 4] ] ]])) == '{3, {4}}') --- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_array_extra_comma.json -assert(DecodeJson(' ["",] ')) -assert(EncodeLua(DecodeJson(' ["",] ')) == '{""}') - --- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_array_double_extra_comma.json -assert(DecodeJson(' ["x",,] ')) -assert(EncodeLua(DecodeJson(' ["x",,] ')) == '{"x"}') - --- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_array_double_comma.json -assert(DecodeJson(' [1,,2] ')) -assert(EncodeLua(DecodeJson(' [1,,2] ')) == '{1, 2}') - --- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_array_comma_and_number.json -assert(DecodeJson(' [,1] ')) -assert(EncodeLua(DecodeJson(' [,1] ')) == '{1}') - -- https://github.com/nst/JSONTestSuite/tree/d64aefb55228d9584d3e5b2433f720ea8fd00c82/test_parsing/n_array_1_true_without_comma.json assert(DecodeJson(' [1 true] ')) assert(EncodeLua(DecodeJson(' [1 true] ')) == '{1, true}')