diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2009-01-22 10:11:36 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2009-01-22 10:11:36 (GMT) |
commit | 81fabdb437eea29e2616de58e6952b7ef2e5542f (patch) | |
tree | 04f58fb00eea5a33fcb101e1892c14ef13c1c9af /Lib/test | |
parent | dd01f8f37b98af090098495200107dfaf92a3162 (diff) | |
download | cpython-81fabdb437eea29e2616de58e6952b7ef2e5542f.zip cpython-81fabdb437eea29e2616de58e6952b7ef2e5542f.tar.gz cpython-81fabdb437eea29e2616de58e6952b7ef2e5542f.tar.bz2 |
Issue #4874: Most builtin decoders now reject unicode input.
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_codecs.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/Lib/test/test_codecs.py b/Lib/test/test_codecs.py index e485fdd..1730dbe 100644 --- a/Lib/test/test_codecs.py +++ b/Lib/test/test_codecs.py @@ -1475,6 +1475,36 @@ class WithStmtTest(unittest.TestCase): info.streamwriter, 'strict') as srw: self.assertEquals(srw.read(), "\xfc") +class TypesTest(unittest.TestCase): + def test_decode_unicode(self): + # Most decoders don't accept unicode input + decoders = [ + codecs.utf_7_decode, + codecs.utf_8_decode, + codecs.utf_16_le_decode, + codecs.utf_16_be_decode, + codecs.utf_16_ex_decode, + codecs.utf_32_decode, + codecs.utf_32_le_decode, + codecs.utf_32_be_decode, + codecs.utf_32_ex_decode, + codecs.latin_1_decode, + codecs.ascii_decode, + codecs.charmap_decode, + ] + if hasattr(codecs, "mbcs_decode"): + decoders.append(codecs.mbcs_decode) + for decoder in decoders: + self.assertRaises(TypeError, decoder, "xxx") + + def test_unicode_escape(self): + # Escape-decoding an unicode string is supported ang gives the same + # result as decoding the equivalent ASCII bytes string. + self.assertEquals(codecs.unicode_escape_decode(r"\u1234"), ("\u1234", 6)) + self.assertEquals(codecs.unicode_escape_decode(br"\u1234"), ("\u1234", 6)) + self.assertEquals(codecs.raw_unicode_escape_decode(r"\u1234"), ("\u1234", 6)) + self.assertEquals(codecs.raw_unicode_escape_decode(br"\u1234"), ("\u1234", 6)) + def test_main(): support.run_unittest( @@ -1501,6 +1531,7 @@ def test_main(): BasicUnicodeTest, CharmapTest, WithStmtTest, + TypesTest, ) |