summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2009-05-04 18:32:32 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2009-05-04 18:32:32 (GMT)
commit653dece278ca0e836651de290aaf22335dd476b0 (patch)
tree77457392f6a8b9f1dba2c1fcfdd4e4110a00c91d /Lib/test
parent2827709d6dc594629ffa9904f55c839593891fc7 (diff)
downloadcpython-653dece278ca0e836651de290aaf22335dd476b0.zip
cpython-653dece278ca0e836651de290aaf22335dd476b0.tar.gz
cpython-653dece278ca0e836651de290aaf22335dd476b0.tar.bz2
Issue #4426: The UTF-7 decoder was too strict and didn't accept some legal sequences.
Patch by Nick Barnes and Victor Stinner.
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_unicode.py21
1 files changed, 15 insertions, 6 deletions
diff --git a/Lib/test/test_unicode.py b/Lib/test/test_unicode.py
index a90001f..83bc584 100644
--- a/Lib/test/test_unicode.py
+++ b/Lib/test/test_unicode.py
@@ -521,19 +521,28 @@ class UnicodeTest(
(u'+?', '+-?'),
(ur'\\?', '+AFwAXA?'),
(ur'\\\?', '+AFwAXABc?'),
- (ur'++--', '+-+---')
+ (ur'++--', '+-+---'),
+ (u'\U000abcde', '+2m/c3g-'), # surrogate pairs
+ (u'/', '/'),
]
for (x, y) in utfTests:
self.assertEqual(x.encode('utf-7'), y)
- # surrogates not supported
+ # Unpaired surrogates not supported
self.assertRaises(UnicodeError, unicode, '+3ADYAA-', 'utf-7')
- self.assertEqual(unicode('+3ADYAA-', 'utf-7', 'replace'), u'\ufffd')
-
- # Issue #2242: crash on some Windows/MSVC versions
- self.assertRaises(UnicodeDecodeError, '+\xc1'.decode, 'utf-7')
+ self.assertEqual(unicode('+3ADYAA-', 'utf-7', 'replace'), u'\ufffd\ufffd')
+
+ # Direct encoded characters
+ set_d = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'(),-./:?"
+ # Optional direct characters
+ set_o = '!"#$%&*;<=>@[]^_`{|}'
+ for c in set_d:
+ self.assertEqual(c.encode('utf7'), c.encode('ascii'))
+ self.assertEqual(c.encode('ascii').decode('utf7'), c)
+ for c in set_o:
+ self.assertEqual(c.encode('ascii').decode('utf7'), c)
def test_codecs_utf8(self):
self.assertEqual(u''.encode('utf-8'), '')