2013-08-08 09:03:45 -03:00
|
|
|
from test.test_json import PyTest, CTest
|
2008-05-08 11:29:10 -03:00
|
|
|
|
|
|
|
|
2022-09-24 08:38:53 -03:00
|
|
|
# from https://json.org/JSON_checker/test/pass1.json
|
2008-05-08 11:29:10 -03:00
|
|
|
JSON = r'''
|
|
|
|
[
|
|
|
|
"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,
|
2012-11-26 13:24:20 -04:00
|
|
|
"": 23456789012E66,
|
2008-05-08 11:29:10 -03:00
|
|
|
"zero": 0,
|
|
|
|
"one": 1,
|
|
|
|
"space": " ",
|
|
|
|
"quote": "\"",
|
|
|
|
"backslash": "\\",
|
|
|
|
"controls": "\b\f\n\r\t",
|
|
|
|
"slash": "/ & \/",
|
|
|
|
"alpha": "abcdefghijklmnopqrstuvwyz",
|
|
|
|
"ALPHA": "ABCDEFGHIJKLMNOPQRSTUVWYZ",
|
|
|
|
"digit": "0123456789",
|
2012-11-26 13:24:20 -04:00
|
|
|
"0123456789": "digit",
|
2008-05-08 11:29:10 -03:00
|
|
|
"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
|
|
|
|
|
|
|
|
,
|
|
|
|
|
2012-11-26 13:24:20 -04:00
|
|
|
4 , 5 , 6 ,7 ],"compact":[1,2,3,4,5,6,7],
|
2008-05-08 11:29:10 -03:00
|
|
|
"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
|
|
|
|
,
|
|
|
|
|
2012-11-26 13:24:20 -04:00
|
|
|
1066,
|
|
|
|
1e1,
|
|
|
|
0.1e1,
|
|
|
|
1e-1,
|
|
|
|
1e00,2e+00,2e-00
|
2008-05-08 11:29:10 -03:00
|
|
|
,"rosebud"]
|
|
|
|
'''
|
|
|
|
|
2011-05-14 00:47:51 -03:00
|
|
|
class TestPass1:
|
2008-05-08 11:29:10 -03:00
|
|
|
def test_parse(self):
|
|
|
|
# test in/out equivalence and parsing
|
2011-05-14 00:47:51 -03:00
|
|
|
res = self.loads(JSON)
|
|
|
|
out = self.dumps(res)
|
|
|
|
self.assertEqual(res, self.loads(out))
|
|
|
|
|
|
|
|
|
|
|
|
class TestPyPass1(TestPass1, PyTest): pass
|
|
|
|
class TestCPass1(TestPass1, CTest): pass
|