cosmopolitan/test/tool/net/jsonorg_pass_test.lua

101 lines
2.7 KiB
Lua
Raw Normal View History

assert(unix.pledge("stdio"))
2022-07-23 12:22:19 +00:00
-- https://www.json.org/JSON_checker/test.zip
-- JSON parsing sample test case: pass1.json
2022-07-12 19:30:42 +00:00
assert(DecodeJson([[
[
"JSON Test Pattern pass1",
{"object with 1 member":[ "array with 1 element"] },
{},
[ ] ,
-42,
true,
false,
null,
{
"integer": 1234567890,
"real": -9876.543210,
"e": 0.123456789e-12,
"E": 1.234567890E+34,
"": 23456789012E66,
"zero": 0,
"one": 1,
"space": " ",
"quote": "\"",
"backslash": "\\",
"controls": "\b\f\n\r\t",
"slash": "/ & \/",
"alpha": "abcdefghijklmnopqrstuvwyz",
"ALPHA": "ABCDEFGHIJKLMNOPQRSTUVWYZ",
"digit": "0123456789",
"0123456789": "digit",
"special": "`1~!@#$%^&*()_+-={':[ ,] }|;.</>?",
"hex": "\u0123\u4567\u89AB\uCDEF\uabcd\uef4A",
"true": true,
"false": false,
"null": null,
"array":[ ] ,
"object":{ },
"address": "50 St. James Street",
"url": "http://www.JSON.org/",
"comment": "// /* <!-- --",
"# -- --> */": " ",
" s p a c e d " :[ 1,2 , 3
,
4 , 5 , 6 ,7 ] ,"compact":[ 1,2,3,4,5,6,7] ,
"jsontext": "{\"object with 1 member\":[ \"array with 1 element\"] }",
"quotes": "&#34; \u0022 %22 0x22 034 &#x22;",
"\/\\\"\uCAFE\uBABE\uAB98\uFCDE\ubcda\uef4A\b\f\n\r\t`1~!@#$%^&*()_+-=[ ] {}|;:',./<>?"
: "A key can be any string"
},
0.5 ,98.6
,
99.44
,
1066,
1e1,
0.1e1,
1e-1,
1e00,2e+00,2e-00
,"rosebud"]
]]))
2022-07-11 18:54:24 +00:00
-- https://www.json.org/JSON_checker/test.zip
-- JSON parsing sample test case: pass2.json
2022-07-12 19:30:42 +00:00
assert(DecodeJson([[
[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ "Not too deep"] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]
2022-07-11 18:54:24 +00:00
]]))
-- https://www.json.org/JSON_checker/test.zip
-- JSON parsing sample test case: pass3.json
2022-07-12 19:30:42 +00:00
assert(DecodeJson([[
2022-07-11 18:54:24 +00:00
{
"JSON Test Pattern pass3": {
"The outermost value": "must be an object or array.",
"In this test": "It is an object."
}
}
]]))
-- json.org says these should fail, but many parsers,
-- including python's json.load allow the following
2022-07-12 19:30:42 +00:00
-- [jart] our behavior is consistent with v8
2022-07-11 18:54:24 +00:00
-- https://www.json.org/JSON_checker/test.zip
-- JSON parsing sample test case: fail1.json (actually passes)
2022-07-12 19:30:42 +00:00
assert(DecodeJson([[
2022-07-11 18:54:24 +00:00
"A JSON payload should be an object or array, not a string."
]]))
2022-07-12 19:30:42 +00:00
-- [jart] this deviates from json.org
-- we permit depth up to 128
2022-07-11 18:54:24 +00:00
-- https://www.json.org/JSON_checker/test.zip
-- JSON parsing sample test case: fail18.json (actually passes)
2022-07-12 19:30:42 +00:00
assert(DecodeJson([[
[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ "Too deep"] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]
2022-07-11 18:54:24 +00:00
]]))