1from json.tests import PyTest, CTest
2
3
4# from http://json.org/JSON_checker/test/pass1.json
5JSON = r'''
6[
7    "JSON Test Pattern pass1",
8    {"object with 1 member":["array with 1 element"]},
9    {},
10    [],
11    -42,
12    true,
13    false,
14    null,
15    {
16        "integer": 1234567890,
17        "real": -9876.543210,
18        "e": 0.123456789e-12,
19        "E": 1.234567890E+34,
20        "":  23456789012E66,
21        "zero": 0,
22        "one": 1,
23        "space": " ",
24        "quote": "\"",
25        "backslash": "\\",
26        "controls": "\b\f\n\r\t",
27        "slash": "/ & \/",
28        "alpha": "abcdefghijklmnopqrstuvwyz",
29        "ALPHA": "ABCDEFGHIJKLMNOPQRSTUVWYZ",
30        "digit": "0123456789",
31        "0123456789": "digit",
32        "special": "`1~!@#$%^&*()_+-={':[,]}|;.</>?",
33        "hex": "\u0123\u4567\u89AB\uCDEF\uabcd\uef4A",
34        "true": true,
35        "false": false,
36        "null": null,
37        "array":[  ],
38        "object":{  },
39        "address": "50 St. James Street",
40        "url": "http://www.JSON.org/",
41        "comment": "// /* <!-- --",
42        "# -- --> */": " ",
43        " s p a c e d " :[1,2 , 3
44
45,
46
474 , 5        ,          6           ,7        ],"compact":[1,2,3,4,5,6,7],
48        "jsontext": "{\"object with 1 member\":[\"array with 1 element\"]}",
49        "quotes": "&#34; \u0022 %22 0x22 034 &#x22;",
50        "\/\\\"\uCAFE\uBABE\uAB98\uFCDE\ubcda\uef4A\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?"
51: "A key can be any string"
52    },
53    0.5 ,98.6
54,
5599.44
56,
57
581066,
591e1,
600.1e1,
611e-1,
621e00,2e+00,2e-00
63,"rosebud"]
64'''
65
66class TestPass1(object):
67    def test_parse(self):
68        # test in/out equivalence and parsing
69        res = self.loads(JSON)
70        out = self.dumps(res)
71        self.assertEqual(res, self.loads(out))
72
73
74class TestPyPass1(TestPass1, PyTest): pass
75class TestCPass1(TestPass1, CTest): pass
76