from unittest import TestCase



import json



# 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": "&#34; \u0022 %22 0x22 034 &#x22;",

        "\/\\\"\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(TestCase):

    def test_parse(self):

        # test in/out equivalence and parsing

        res = json.loads(JSON)

        out = json.dumps(res)

        self.assertEquals(res, json.loads(out))

        try:

            json.dumps(res, allow_nan=False)

        except ValueError:

            pass

        else:

            self.fail("23456789012E666 should be out of range")

