| from json.tests import PyTest, CTest | |
| # from http://json.org/JSON_checker/test/pass1.json | |
| 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, | |
| "": 23456789012E666, | |
| "zero": 0, | |
| "one": 1, | |
| "space": " ", | |
| "quote": "\"", | |
| "backslash": "\\", | |
| "controls": "\b\f\n\r\t", | |
| "slash": "/ & \/", | |
| "alpha": "abcdefghijklmnopqrstuvwyz", | |
| "ALPHA": "ABCDEFGHIJKLMNOPQRSTUVWYZ", | |
| "digit": "0123456789", | |
| "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 | |
| ,"rosebud"] | |
| ''' | |
| class TestPass1(object): | |
| def test_parse(self): | |
| # test in/out equivalence and parsing | |
| res = self.loads(JSON) | |
| out = self.dumps(res) | |
| self.assertEqual(res, self.loads(out)) | |
| try: | |
| self.dumps(res, allow_nan=False) | |
| except ValueError: | |
| pass | |
| else: | |
| self.fail("23456789012E666 should be out of range") | |
| class TestPyPass1(TestPass1, PyTest): pass | |
| class TestCPass1(TestPass1, CTest): pass |