ยปCore Development>Code coverage>Lib/test/json_tests/test_scanstring.py

Python code coverage for Lib/test/json_tests/test_scanstring.py

#countcontent
1n/aimport sys
2n/afrom test.json_tests import PyTest, CTest
3n/a
4n/a
5n/aclass TestScanstring:
6n/a def test_scanstring(self):
7n/a scanstring = self.json.decoder.scanstring
8n/a self.assertEqual(
9n/a scanstring('"z\\ud834\\udd20x"', 1, True),
10n/a ('z\U0001d120x', 16))
11n/a
12n/a self.assertEqual(
13n/a scanstring('"z\U0001d120x"', 1, True),
14n/a ('z\U0001d120x', 5))
15n/a
16n/a self.assertEqual(
17n/a scanstring('"\\u007b"', 1, True),
18n/a ('{', 8))
19n/a
20n/a self.assertEqual(
21n/a scanstring('"A JSON payload should be an object or array, not a string."', 1, True),
22n/a ('A JSON payload should be an object or array, not a string.', 60))
23n/a
24n/a self.assertEqual(
25n/a scanstring('["Unclosed array"', 2, True),
26n/a ('Unclosed array', 17))
27n/a
28n/a self.assertEqual(
29n/a scanstring('["extra comma",]', 2, True),
30n/a ('extra comma', 14))
31n/a
32n/a self.assertEqual(
33n/a scanstring('["double extra comma",,]', 2, True),
34n/a ('double extra comma', 21))
35n/a
36n/a self.assertEqual(
37n/a scanstring('["Comma after the close"],', 2, True),
38n/a ('Comma after the close', 24))
39n/a
40n/a self.assertEqual(
41n/a scanstring('["Extra close"]]', 2, True),
42n/a ('Extra close', 14))
43n/a
44n/a self.assertEqual(
45n/a scanstring('{"Extra comma": true,}', 2, True),
46n/a ('Extra comma', 14))
47n/a
48n/a self.assertEqual(
49n/a scanstring('{"Extra value after close": true} "misplaced quoted value"', 2, True),
50n/a ('Extra value after close', 26))
51n/a
52n/a self.assertEqual(
53n/a scanstring('{"Illegal expression": 1 + 2}', 2, True),
54n/a ('Illegal expression', 21))
55n/a
56n/a self.assertEqual(
57n/a scanstring('{"Illegal invocation": alert()}', 2, True),
58n/a ('Illegal invocation', 21))
59n/a
60n/a self.assertEqual(
61n/a scanstring('{"Numbers cannot have leading zeroes": 013}', 2, True),
62n/a ('Numbers cannot have leading zeroes', 37))
63n/a
64n/a self.assertEqual(
65n/a scanstring('{"Numbers cannot be hex": 0x14}', 2, True),
66n/a ('Numbers cannot be hex', 24))
67n/a
68n/a self.assertEqual(
69n/a scanstring('[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]', 21, True),
70n/a ('Too deep', 30))
71n/a
72n/a self.assertEqual(
73n/a scanstring('{"Missing colon" null}', 2, True),
74n/a ('Missing colon', 16))
75n/a
76n/a self.assertEqual(
77n/a scanstring('{"Double colon":: null}', 2, True),
78n/a ('Double colon', 15))
79n/a
80n/a self.assertEqual(
81n/a scanstring('{"Comma instead of colon", null}', 2, True),
82n/a ('Comma instead of colon', 25))
83n/a
84n/a self.assertEqual(
85n/a scanstring('["Colon instead of comma": false]', 2, True),
86n/a ('Colon instead of comma', 25))
87n/a
88n/a self.assertEqual(
89n/a scanstring('["Bad value", truth]', 2, True),
90n/a ('Bad value', 12))
91n/a
92n/a def test_overflow(self):
93n/a with self.assertRaises(OverflowError):
94n/a self.json.decoder.scanstring(b"xxx", sys.maxsize+1)
95n/a
96n/a
97n/aclass TestPyScanstring(TestScanstring, PyTest): pass
98n/aclass TestCScanstring(TestScanstring, CTest): pass