mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-01-31 11:37:35 +00:00
625aa365f1
The earlier iterations did too much guesswork when it came to things like stderr logging and syscall origin verification. This change will make things more conformant to existing practices. The __pledge_mode extension now can be configured in a better way. There's also a new `-q` flag added to pledge.com, e.g. o//tool/build/pledge.com -qv. ls Is a good way to disable warnings about `tty` access attempts.
100 lines
2.7 KiB
Lua
100 lines
2.7 KiB
Lua
assert(unix.pledge("stdio"))
|
|
|
|
-- https://www.json.org/JSON_checker/test.zip
|
|
-- JSON parsing sample test case: pass1.json
|
|
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": "" \u0022 %22 0x22 034 "",
|
|
"\/\\\"\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"]
|
|
]]))
|
|
|
|
-- https://www.json.org/JSON_checker/test.zip
|
|
-- JSON parsing sample test case: pass2.json
|
|
assert(DecodeJson([[
|
|
[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ "Not too deep"] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]
|
|
]]))
|
|
|
|
-- https://www.json.org/JSON_checker/test.zip
|
|
-- JSON parsing sample test case: pass3.json
|
|
assert(DecodeJson([[
|
|
{
|
|
"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
|
|
|
|
-- [jart] our behavior is consistent with v8
|
|
-- https://www.json.org/JSON_checker/test.zip
|
|
-- JSON parsing sample test case: fail1.json (actually passes)
|
|
assert(DecodeJson([[
|
|
"A JSON payload should be an object or array, not a string."
|
|
]]))
|
|
|
|
-- [jart] this deviates from json.org
|
|
-- we permit depth up to 128
|
|
-- https://www.json.org/JSON_checker/test.zip
|
|
-- JSON parsing sample test case: fail18.json (actually passes)
|
|
assert(DecodeJson([[
|
|
[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ "Too deep"] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]
|
|
]]))
|