summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_codecs.py
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2013-01-29 09:41:34 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2013-01-29 09:41:34 (GMT)
commit7b07873b932a0ae41b8e1fcef28fa8ec991e0637 (patch)
tree70817a5d8e6ba57e185f47bbc3087a677e7cf396 /Lib/test/test_codecs.py
parentd8f07cd374904d96786e03de9b5d7b688cbd0a28 (diff)
parent799fd9c8774781ba94cc4656bab443a28b17bcce (diff)
downloadcpython-7b07873b932a0ae41b8e1fcef28fa8ec991e0637.zip
cpython-7b07873b932a0ae41b8e1fcef28fa8ec991e0637.tar.gz
cpython-7b07873b932a0ae41b8e1fcef28fa8ec991e0637.tar.bz2
Add tests for raw-unicode-escape codec.
Diffstat (limited to 'Lib/test/test_codecs.py')
-rw-r--r--Lib/test/test_codecs.py50
1 files changed, 50 insertions, 0 deletions
diff --git a/Lib/test/test_codecs.py b/Lib/test/test_codecs.py
index d70e5e9..2f3cf4d 100644
--- a/Lib/test/test_codecs.py
+++ b/Lib/test/test_codecs.py
@@ -2097,6 +2097,56 @@ class UnicodeEscapeTest(unittest.TestCase):
self.assertEqual(decode(br"\U00110000", "replace"), ("\ufffd", 10))
+class RawUnicodeEscapeTest(unittest.TestCase):
+ def test_empty(self):
+ self.assertEqual(codecs.raw_unicode_escape_encode(""), (b"", 0))
+ self.assertEqual(codecs.raw_unicode_escape_decode(b""), ("", 0))
+
+ def test_raw_encode(self):
+ encode = codecs.raw_unicode_escape_encode
+ for b in range(256):
+ self.assertEqual(encode(chr(b)), (bytes([b]), 1))
+
+ def test_raw_decode(self):
+ decode = codecs.raw_unicode_escape_decode
+ for b in range(256):
+ self.assertEqual(decode(bytes([b]) + b'0'), (chr(b) + '0', 2))
+
+ def test_escape_encode(self):
+ encode = codecs.raw_unicode_escape_encode
+ check = coding_checker(self, encode)
+ for b in range(256):
+ if b not in b'uU':
+ check('\\' + chr(b), b'\\' + bytes([b]))
+ check('\u20ac', br'\u20ac')
+ check('\U0001d120', br'\U0001d120')
+
+ def test_escape_decode(self):
+ decode = codecs.raw_unicode_escape_decode
+ check = coding_checker(self, decode)
+ for b in range(256):
+ if b not in b'uU':
+ check(b'\\' + bytes([b]), '\\' + chr(b))
+ check(br"\u20ac", "\u20ac")
+ check(br"\U0001d120", "\U0001d120")
+
+ def test_decode_errors(self):
+ decode = codecs.raw_unicode_escape_decode
+ for c, d in (b'u', 4), (b'U', 4):
+ for i in range(d):
+ self.assertRaises(UnicodeDecodeError, decode,
+ b"\\" + c + b"0"*i)
+ self.assertRaises(UnicodeDecodeError, decode,
+ b"[\\" + c + b"0"*i + b"]")
+ data = b"[\\" + c + b"0"*i + b"]\\" + c + b"0"*i
+ self.assertEqual(decode(data, "ignore"), ("[]", len(data)))
+ self.assertEqual(decode(data, "replace"),
+ ("[\ufffd]\ufffd", len(data)))
+ self.assertRaises(UnicodeDecodeError, decode, br"\U00110000")
+ self.assertEqual(decode(br"\U00110000", "ignore"), ("", 10))
+ self.assertEqual(decode(br"\U00110000", "replace"), ("\ufffd", 10))
+
+
class SurrogateEscapeTest(unittest.TestCase):
def test_utf8(self):