diff options
| author | Serhiy Storchaka <storchaka@gmail.com> | 2013-01-29 09:41:34 (GMT) | 
|---|---|---|
| committer | Serhiy Storchaka <storchaka@gmail.com> | 2013-01-29 09:41:34 (GMT) | 
| commit | 7b07873b932a0ae41b8e1fcef28fa8ec991e0637 (patch) | |
| tree | 70817a5d8e6ba57e185f47bbc3087a677e7cf396 /Lib/test/test_codecs.py | |
| parent | d8f07cd374904d96786e03de9b5d7b688cbd0a28 (diff) | |
| parent | 799fd9c8774781ba94cc4656bab443a28b17bcce (diff) | |
| download | cpython-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.py | 50 | 
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):  | 
