| from test.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: |
| 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 |