PATH:
opt
/
bitninja-python-dojo
/
embedded
/
lib
/
python3.9
/
test
/
test_json
import sys from test.test_json import PyTest, CTest class TestScanstring: def test_scanstring(self): scanstring = self.json.decoder.scanstring self.assertEqual( scanstring('"z\U0001d120x"', 1, True), ('z\U0001d120x', 5)) self.assertEqual( scanstring('"\\u007b"', 1, True), ('{', 8)) self.assertEqual( scanstring('"A JSON payload should be an object or array, not a string."', 1, True), ('A JSON payload should be an object or array, not a string.', 60)) self.assertEqual( scanstring('["Unclosed array"', 2, True), ('Unclosed array', 17)) self.assertEqual( scanstring('["extra comma",]', 2, True), ('extra comma', 14)) self.assertEqual( scanstring('["double extra comma",,]', 2, True), ('double extra comma', 21)) self.assertEqual( scanstring('["Comma after the close"],', 2, True), ('Comma after the close', 24)) self.assertEqual( scanstring('["Extra close"]]', 2, True), ('Extra close', 14)) self.assertEqual( scanstring('{"Extra comma": true,}', 2, True), ('Extra comma', 14)) self.assertEqual( scanstring('{"Extra value after close": true} "misplaced quoted value"', 2, True), ('Extra value after close', 26)) self.assertEqual( scanstring('{"Illegal expression": 1 + 2}', 2, True), ('Illegal expression', 21)) self.assertEqual( scanstring('{"Illegal invocation": alert()}', 2, True), ('Illegal invocation', 21)) self.assertEqual( scanstring('{"Numbers cannot have leading zeroes": 013}', 2, True), ('Numbers cannot have leading zeroes', 37)) self.assertEqual( scanstring('{"Numbers cannot be hex": 0x14}', 2, True), ('Numbers cannot be hex', 24)) self.assertEqual( scanstring('[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]', 21, True), ('Too deep', 30)) self.assertEqual( scanstring('{"Missing colon" null}', 2, True), ('Missing colon', 16)) self.assertEqual( scanstring('{"Double colon":: null}', 2, True), ('Double colon', 15)) self.assertEqual( scanstring('{"Comma instead of colon", null}', 2, True), ('Comma instead of colon', 25)) self.assertEqual( scanstring('["Colon instead of comma": false]', 2, True), ('Colon instead of comma', 25)) self.assertEqual( scanstring('["Bad value", truth]', 2, True), ('Bad value', 12)) def test_surrogates(self): scanstring = self.json.decoder.scanstring def assertScan(given, expect): self.assertEqual(scanstring(given, 1, True), (expect, len(given))) assertScan('"z\\ud834\\u0079x"', 'z\ud834yx') assertScan('"z\\ud834\\udd20x"', 'z\U0001d120x') assertScan('"z\\ud834\\ud834\\udd20x"', 'z\ud834\U0001d120x') assertScan('"z\\ud834x"', 'z\ud834x') assertScan('"z\\ud834\udd20x12345"', 'z\ud834\udd20x12345') assertScan('"z\\udd20x"', 'z\udd20x') assertScan('"z\ud834\udd20x"', 'z\ud834\udd20x') assertScan('"z\ud834\\udd20x"', 'z\ud834\udd20x') assertScan('"z\ud834x"', 'z\ud834x') def test_bad_escapes(self): scanstring = self.json.decoder.scanstring bad_escapes = [ '"\\"', '"\\x"', '"\\u"', '"\\u0"', '"\\u01"', '"\\u012"', '"\\uz012"', '"\\u0z12"', '"\\u01z2"', '"\\u012z"', '"\\u0x12"', '"\\u0X12"', '"\\ud834\\"', '"\\ud834\\u"', '"\\ud834\\ud"', '"\\ud834\\udd"', '"\\ud834\\udd2"', '"\\ud834\\uzdd2"', '"\\ud834\\udzd2"', '"\\ud834\\uddz2"', '"\\ud834\\udd2z"', '"\\ud834\\u0x20"', '"\\ud834\\u0X20"', ] for s in bad_escapes: with self.assertRaises(self.JSONDecodeError, msg=s): scanstring(s, 1, True) def test_overflow(self): with self.assertRaises(OverflowError): self.json.decoder.scanstring(b"xxx", sys.maxsize+1) class TestPyScanstring(TestScanstring, PyTest): pass class TestCScanstring(TestScanstring, CTest): pass
[-] test_separators.py
[edit]
[-] test_speedups.py
[edit]
[-] test_indent.py
[edit]
[-] test_decode.py
[edit]
[-] test_dump.py
[edit]
[+]
..
[-] test_unicode.py
[edit]
[-] test_float.py
[edit]
[-] test_encode_basestring_ascii.py
[edit]
[-] __main__.py
[edit]
[-] test_default.py
[edit]
[-] test_fail.py
[edit]
[-] test_tool.py
[edit]
[-] test_enum.py
[edit]
[+]
__pycache__
[-] test_pass3.py
[edit]
[-] test_pass2.py
[edit]
[-] __init__.py
[edit]
[-] test_scanstring.py
[edit]
[-] test_recursion.py
[edit]
[-] test_pass1.py
[edit]