--- /dev/null
+from json.tests import PyTest, CTest\r
+\r
+# 2007-10-05\r
+JSONDOCS = [\r
+ # http://json.org/JSON_checker/test/fail1.json\r
+ '"A JSON payload should be an object or array, not a string."',\r
+ # http://json.org/JSON_checker/test/fail2.json\r
+ '["Unclosed array"',\r
+ # http://json.org/JSON_checker/test/fail3.json\r
+ '{unquoted_key: "keys must be quoted"}',\r
+ # http://json.org/JSON_checker/test/fail4.json\r
+ '["extra comma",]',\r
+ # http://json.org/JSON_checker/test/fail5.json\r
+ '["double extra comma",,]',\r
+ # http://json.org/JSON_checker/test/fail6.json\r
+ '[ , "<-- missing value"]',\r
+ # http://json.org/JSON_checker/test/fail7.json\r
+ '["Comma after the close"],',\r
+ # http://json.org/JSON_checker/test/fail8.json\r
+ '["Extra close"]]',\r
+ # http://json.org/JSON_checker/test/fail9.json\r
+ '{"Extra comma": true,}',\r
+ # http://json.org/JSON_checker/test/fail10.json\r
+ '{"Extra value after close": true} "misplaced quoted value"',\r
+ # http://json.org/JSON_checker/test/fail11.json\r
+ '{"Illegal expression": 1 + 2}',\r
+ # http://json.org/JSON_checker/test/fail12.json\r
+ '{"Illegal invocation": alert()}',\r
+ # http://json.org/JSON_checker/test/fail13.json\r
+ '{"Numbers cannot have leading zeroes": 013}',\r
+ # http://json.org/JSON_checker/test/fail14.json\r
+ '{"Numbers cannot be hex": 0x14}',\r
+ # http://json.org/JSON_checker/test/fail15.json\r
+ '["Illegal backslash escape: \\x15"]',\r
+ # http://json.org/JSON_checker/test/fail16.json\r
+ '[\\naked]',\r
+ # http://json.org/JSON_checker/test/fail17.json\r
+ '["Illegal backslash escape: \\017"]',\r
+ # http://json.org/JSON_checker/test/fail18.json\r
+ '[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]',\r
+ # http://json.org/JSON_checker/test/fail19.json\r
+ '{"Missing colon" null}',\r
+ # http://json.org/JSON_checker/test/fail20.json\r
+ '{"Double colon":: null}',\r
+ # http://json.org/JSON_checker/test/fail21.json\r
+ '{"Comma instead of colon", null}',\r
+ # http://json.org/JSON_checker/test/fail22.json\r
+ '["Colon instead of comma": false]',\r
+ # http://json.org/JSON_checker/test/fail23.json\r
+ '["Bad value", truth]',\r
+ # http://json.org/JSON_checker/test/fail24.json\r
+ "['single quote']",\r
+ # http://json.org/JSON_checker/test/fail25.json\r
+ '["\ttab\tcharacter\tin\tstring\t"]',\r
+ # http://json.org/JSON_checker/test/fail26.json\r
+ '["tab\\ character\\ in\\ string\\ "]',\r
+ # http://json.org/JSON_checker/test/fail27.json\r
+ '["line\nbreak"]',\r
+ # http://json.org/JSON_checker/test/fail28.json\r
+ '["line\\\nbreak"]',\r
+ # http://json.org/JSON_checker/test/fail29.json\r
+ '[0e]',\r
+ # http://json.org/JSON_checker/test/fail30.json\r
+ '[0e+]',\r
+ # http://json.org/JSON_checker/test/fail31.json\r
+ '[0e+-1]',\r
+ # http://json.org/JSON_checker/test/fail32.json\r
+ '{"Comma instead if closing brace": true,',\r
+ # http://json.org/JSON_checker/test/fail33.json\r
+ '["mismatch"}',\r
+ # http://code.google.com/p/simplejson/issues/detail?id=3\r
+ u'["A\u001FZ control characters in string"]',\r
+]\r
+\r
+SKIPS = {\r
+ 1: "why not have a string payload?",\r
+ 18: "spec doesn't specify any nesting limitations",\r
+}\r
+\r
+class TestFail(object):\r
+ def test_failures(self):\r
+ for idx, doc in enumerate(JSONDOCS):\r
+ idx = idx + 1\r
+ if idx in SKIPS:\r
+ self.loads(doc)\r
+ continue\r
+ try:\r
+ self.loads(doc)\r
+ except ValueError:\r
+ pass\r
+ else:\r
+ self.fail("Expected failure for fail{0}.json: {1!r}".format(idx, doc))\r
+\r
+ def test_non_string_keys_dict(self):\r
+ data = {'a' : 1, (1, 2) : 2}\r
+\r
+ #This is for c encoder\r
+ self.assertRaises(TypeError, self.dumps, data)\r
+\r
+ #This is for python encoder\r
+ self.assertRaises(TypeError, self.dumps, data, indent=True)\r
+\r
+\r
+class TestPyFail(TestFail, PyTest): pass\r
+class TestCFail(TestFail, CTest): pass\r