summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_codecs.py
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2013-01-29 09:39:44 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2013-01-29 09:39:44 (GMT)
commit74e449fe6adb45ae08a8cf11cd1b2668d3476326 (patch)
treec5a60db1b74b820b327c9afcb676ac4bb7357144 /Lib/test/test_codecs.py
parent7277f9d09947ccc86410b33883ffec70cac06f3a (diff)
downloadcpython-74e449fe6adb45ae08a8cf11cd1b2668d3476326.zip
cpython-74e449fe6adb45ae08a8cf11cd1b2668d3476326.tar.gz
cpython-74e449fe6adb45ae08a8cf11cd1b2668d3476326.tar.bz2
Add tests for raw-unicode-escape codec.
Diffstat (limited to 'Lib/test/test_codecs.py')
-rw-r--r--Lib/test/test_codecs.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/Lib/test/test_codecs.py b/Lib/test/test_codecs.py
index 3d541e3..0ccf818 100644
--- a/Lib/test/test_codecs.py
+++ b/Lib/test/test_codecs.py
@@ -1873,6 +1873,56 @@ class UnicodeEscapeTest(unittest.TestCase):
self.assertEqual(decode(r"\U00110000", "replace"), (u"\ufffd", 10))
+class RawUnicodeEscapeTest(unittest.TestCase):
+ def test_empty(self):
+ self.assertEqual(codecs.raw_unicode_escape_encode(u""), ("", 0))
+ self.assertEqual(codecs.raw_unicode_escape_decode(""), (u"", 0))
+
+ def test_raw_encode(self):
+ encode = codecs.raw_unicode_escape_encode
+ for b in range(256):
+ self.assertEqual(encode(unichr(b)), (chr(b), 1))
+
+ def test_raw_decode(self):
+ decode = codecs.raw_unicode_escape_decode
+ for b in range(256):
+ self.assertEqual(decode(chr(b) + '0'), (unichr(b) + u'0', 2))
+
+ def test_escape_encode(self):
+ encode = codecs.raw_unicode_escape_encode
+ check = coding_checker(self, encode)
+ for b in range(256):
+ if chr(b) not in 'uU':
+ check(u'\\' + unichr(b), '\\' + chr(b))
+ check(u'\u20ac', r'\u20ac')
+ check(u'\U0001d120', r'\U0001d120')
+
+ def test_escape_decode(self):
+ decode = codecs.raw_unicode_escape_decode
+ check = coding_checker(self, decode)
+ for b in range(256):
+ if chr(b) not in 'uU':
+ check('\\' + chr(b), u'\\' + unichr(b))
+ check(r"\u20ac", u"\u20ac")
+ check(r"\U0001d120", u"\U0001d120")
+
+ def test_decode_errors(self):
+ decode = codecs.raw_unicode_escape_decode
+ for c, d in ('u', 4), ('U', 4):
+ for i in range(d):
+ self.assertRaises(UnicodeDecodeError, decode,
+ "\\" + c + "0"*i)
+ self.assertRaises(UnicodeDecodeError, decode,
+ "[\\" + c + "0"*i + "]")
+ data = "[\\" + c + "0"*i + "]\\" + c + "0"*i
+ self.assertEqual(decode(data, "ignore"), (u"[]", len(data)))
+ self.assertEqual(decode(data, "replace"),
+ (u"[\ufffd]\ufffd", len(data)))
+ self.assertRaises(UnicodeDecodeError, decode, r"\U00110000")
+ self.assertEqual(decode(r"\U00110000", "ignore"), (u"", 10))
+ self.assertEqual(decode(r"\U00110000", "replace"), (u"\ufffd", 10))
+
+
class BomTest(unittest.TestCase):
def test_seek0(self):
data = u"1234567890"
@@ -1959,6 +2009,7 @@ def test_main():
CharmapTest,
WithStmtTest,
UnicodeEscapeTest,
+ RawUnicodeEscapeTest,
BomTest,
)