o \Õ“aÊã@sBddlZddlmZddlZgd¢ZdddœZGdd„deƒZdS) éN)ÚTestCase):z<"A JSON payload should be an object or array, not a string."z["Unclosed array"z%{unquoted_key: "keys must be quoted"}z["extra comma",]z["double extra comma",,]z[ , "<-- missing value"]z["Comma after the close"],z["Extra close"]]z{"Extra comma": true,}z:{"Extra value after close": true} "misplaced quoted value"z{"Illegal expression": 1 + 2}z{"Illegal invocation": alert()}z+{"Numbers cannot have leading zeroes": 013}z{"Numbers cannot be hex": 0x14}z"["Illegal backslash escape: \x15"]z[\naked]z"["Illegal backslash escape: \017"]z2[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]z{"Missing colon" null}z{"Double colon":: null}z {"Comma instead of colon", null}z!["Colon instead of comma": false]z["Bad value", truth]z['single quote']z[" tab character in string "]z&["tab\ character\ in\ string\ "]z["line break"]z["line\ break"]z[0e]z[0e+]z[0e+-1]z({"Comma instead if closing brace": true,z ["mismatch"}z$["AZ control characters in string"]ú{z{]z{"foo": "bar"]z {"foo": "bar"ÚnulÚnulxú-z-xz-ez-e0z -Infinitez-InfÚInfinitÚInfiniteÚNaMÚNuNÚfalsyÚfalÚtrugÚtruÚ1eÚ1exz1e-z1e-xzwhy not have a string payload?z,spec doesn't specify any nesting limitations)ééc@s$eZdZdd„Zdd„Zdd„ZdS)ÚTestFailc CshttƒD]-\}}|d}|tvrt |¡qzt |¡Wn tjy'Yqw| d||f¡qdS)Nrz$Expected failure for fail%d.json: %r)Ú enumerateÚJSONDOCSÚSKIPSÚjsonÚloadsÚJSONDecodeErrorÚfail)ÚselfÚidxÚdoc©rúrrrrrls r)r$ÚunittestrÚ simplejsonrrrrrrrrÚs aþ