|
1 from unittest import TestCase |
|
2 |
|
3 import json |
|
4 |
|
5 # from http://json.org/JSON_checker/test/pass1.json |
|
6 JSON = r''' |
|
7 [ |
|
8 "JSON Test Pattern pass1", |
|
9 {"object with 1 member":["array with 1 element"]}, |
|
10 {}, |
|
11 [], |
|
12 -42, |
|
13 true, |
|
14 false, |
|
15 null, |
|
16 { |
|
17 "integer": 1234567890, |
|
18 "real": -9876.543210, |
|
19 "e": 0.123456789e-12, |
|
20 "E": 1.234567890E+34, |
|
21 "": 23456789012E666, |
|
22 "zero": 0, |
|
23 "one": 1, |
|
24 "space": " ", |
|
25 "quote": "\"", |
|
26 "backslash": "\\", |
|
27 "controls": "\b\f\n\r\t", |
|
28 "slash": "/ & \/", |
|
29 "alpha": "abcdefghijklmnopqrstuvwyz", |
|
30 "ALPHA": "ABCDEFGHIJKLMNOPQRSTUVWYZ", |
|
31 "digit": "0123456789", |
|
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 |
|
47 4 , 5 , 6 ,7 ], |
|
48 "compact": [1,2,3,4,5,6,7], |
|
49 "jsontext": "{\"object with 1 member\":[\"array with 1 element\"]}", |
|
50 "quotes": "" \u0022 %22 0x22 034 "", |
|
51 "\/\\\"\uCAFE\uBABE\uAB98\uFCDE\ubcda\uef4A\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?" |
|
52 : "A key can be any string" |
|
53 }, |
|
54 0.5 ,98.6 |
|
55 , |
|
56 99.44 |
|
57 , |
|
58 |
|
59 1066 |
|
60 |
|
61 |
|
62 ,"rosebud"] |
|
63 ''' |
|
64 |
|
65 class TestPass1(TestCase): |
|
66 def test_parse(self): |
|
67 # test in/out equivalence and parsing |
|
68 res = json.loads(JSON) |
|
69 out = json.dumps(res) |
|
70 self.assertEquals(res, json.loads(out)) |
|
71 try: |
|
72 json.dumps(res, allow_nan=False) |
|
73 except ValueError: |
|
74 pass |
|
75 else: |
|
76 self.fail("23456789012E666 should be out of range") |