jcgregorio@wpgntai-ubiq72.hot.corp.google.com | ed13252 | 2010-04-19 11:12:52 -0700 | [diff] [blame^] | 1 | from unittest import TestCase |
| 2 | |
| 3 | import simplejson as 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") |