summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_json
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2016-10-30 21:00:01 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2016-10-30 21:00:01 (GMT)
commitc4a35daa9771fbdcc58cad4656b8680541623e0e (patch)
tree6c8b9f667c932d9a56aadb8dc685546555b08227 /Lib/test/test_json
parenta0d9c685d0c3f817c5a7143098ce1a89380ee514 (diff)
downloadcpython-c4a35daa9771fbdcc58cad4656b8680541623e0e.zip
cpython-c4a35daa9771fbdcc58cad4656b8680541623e0e.tar.gz
cpython-c4a35daa9771fbdcc58cad4656b8680541623e0e.tar.bz2
Issue #28541: Improve test coverage for encoding detection in json library.
Original patch by Eric Appelt.
Diffstat (limited to 'Lib/test/test_json')
-rw-r--r--Lib/test/test_json/test_unicode.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/Lib/test/test_json/test_unicode.py b/Lib/test/test_json/test_unicode.py
index eda177a..2e8bba2 100644
--- a/Lib/test/test_json/test_unicode.py
+++ b/Lib/test/test_json/test_unicode.py
@@ -65,6 +65,19 @@ class TestUnicode:
self.assertEqual(self.loads(bom + encoded), data)
self.assertEqual(self.loads(encoded), data)
self.assertRaises(UnicodeDecodeError, self.loads, b'["\x80"]')
+ # RFC-7159 and ECMA-404 extend JSON to allow documents that
+ # consist of only a string, which can present a special case
+ # not covered by the encoding detection patterns specified in
+ # RFC-4627 for utf-16-le (XX 00 XX 00).
+ self.assertEqual(self.loads('"\u2600"'.encode('utf-16-le')),
+ '\u2600')
+ # Encoding detection for small (<4) bytes objects
+ # is implemented as a special case. RFC-7159 and ECMA-404
+ # allow single codepoint JSON documents which are only two
+ # bytes in utf-16 encodings w/o BOM.
+ self.assertEqual(self.loads(b'5\x00'), 5)
+ self.assertEqual(self.loads(b'\x007'), 7)
+ self.assertEqual(self.loads(b'57'), 57)
def test_object_pairs_hook_with_unicode(self):
s = '{"xkd":1, "kcw":2, "art":3, "hxm":4, "qrt":5, "pad":6, "hoy":7}'