mirror of https://github.com/evilhero/mylar
91 lines
3.5 KiB
Python
91 lines
3.5 KiB
Python
|
from unittest import TestCase
|
||
|
|
||
|
import simplejson as json
|
||
|
|
||
|
# Fri Dec 30 18:57:26 2005
|
||
|
JSONDOCS = [
|
||
|
# http://json.org/JSON_checker/test/fail1.json
|
||
|
'"A JSON payload should be an object or array, not a string."',
|
||
|
# http://json.org/JSON_checker/test/fail2.json
|
||
|
'["Unclosed array"',
|
||
|
# http://json.org/JSON_checker/test/fail3.json
|
||
|
'{unquoted_key: "keys must be quoted}',
|
||
|
# http://json.org/JSON_checker/test/fail4.json
|
||
|
'["extra comma",]',
|
||
|
# http://json.org/JSON_checker/test/fail5.json
|
||
|
'["double extra comma",,]',
|
||
|
# http://json.org/JSON_checker/test/fail6.json
|
||
|
'[ , "<-- missing value"]',
|
||
|
# http://json.org/JSON_checker/test/fail7.json
|
||
|
'["Comma after the close"],',
|
||
|
# http://json.org/JSON_checker/test/fail8.json
|
||
|
'["Extra close"]]',
|
||
|
# http://json.org/JSON_checker/test/fail9.json
|
||
|
'{"Extra comma": true,}',
|
||
|
# http://json.org/JSON_checker/test/fail10.json
|
||
|
'{"Extra value after close": true} "misplaced quoted value"',
|
||
|
# http://json.org/JSON_checker/test/fail11.json
|
||
|
'{"Illegal expression": 1 + 2}',
|
||
|
# http://json.org/JSON_checker/test/fail12.json
|
||
|
'{"Illegal invocation": alert()}',
|
||
|
# http://json.org/JSON_checker/test/fail13.json
|
||
|
'{"Numbers cannot have leading zeroes": 013}',
|
||
|
# http://json.org/JSON_checker/test/fail14.json
|
||
|
'{"Numbers cannot be hex": 0x14}',
|
||
|
# http://json.org/JSON_checker/test/fail15.json
|
||
|
'["Illegal backslash escape: \\x15"]',
|
||
|
# http://json.org/JSON_checker/test/fail16.json
|
||
|
'["Illegal backslash escape: \\\'"]',
|
||
|
# http://json.org/JSON_checker/test/fail17.json
|
||
|
'["Illegal backslash escape: \\017"]',
|
||
|
# http://json.org/JSON_checker/test/fail18.json
|
||
|
'[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]',
|
||
|
# http://json.org/JSON_checker/test/fail19.json
|
||
|
'{"Missing colon" null}',
|
||
|
# http://json.org/JSON_checker/test/fail20.json
|
||
|
'{"Double colon":: null}',
|
||
|
# http://json.org/JSON_checker/test/fail21.json
|
||
|
'{"Comma instead of colon", null}',
|
||
|
# http://json.org/JSON_checker/test/fail22.json
|
||
|
'["Colon instead of comma": false]',
|
||
|
# http://json.org/JSON_checker/test/fail23.json
|
||
|
'["Bad value", truth]',
|
||
|
# http://json.org/JSON_checker/test/fail24.json
|
||
|
"['single quote']",
|
||
|
# http://code.google.com/p/simplejson/issues/detail?id=3
|
||
|
u'["A\u001FZ control characters in string"]',
|
||
|
]
|
||
|
|
||
|
SKIPS = {
|
||
|
1: "why not have a string payload?",
|
||
|
18: "spec doesn't specify any nesting limitations",
|
||
|
}
|
||
|
|
||
|
class TestFail(TestCase):
|
||
|
def test_failures(self):
|
||
|
for idx, doc in enumerate(JSONDOCS):
|
||
|
idx = idx + 1
|
||
|
if idx in SKIPS:
|
||
|
json.loads(doc)
|
||
|
continue
|
||
|
try:
|
||
|
json.loads(doc)
|
||
|
except json.JSONDecodeError:
|
||
|
pass
|
||
|
else:
|
||
|
#self.fail("Expected failure for fail{0}.json: {1!r}".format(idx, doc))
|
||
|
self.fail("Expected failure for fail%d.json: %r" % (idx, doc))
|
||
|
|
||
|
def test_array_decoder_issue46(self):
|
||
|
# http://code.google.com/p/simplejson/issues/detail?id=46
|
||
|
for doc in [u'[,]', '[,]']:
|
||
|
try:
|
||
|
json.loads(doc)
|
||
|
except json.JSONDecodeError, e:
|
||
|
self.assertEquals(e.pos, 1)
|
||
|
self.assertEquals(e.lineno, 1)
|
||
|
self.assertEquals(e.colno, 1)
|
||
|
except Exception, e:
|
||
|
self.fail("Unexpected exception raised %r %s" % (e, e))
|
||
|
else:
|
||
|
self.fail("Unexpected success parsing '[,]'")
|