45 self.assertTrue(s is encoding.toutf8b(s)) |
45 self.assertTrue(s is encoding.toutf8b(s)) |
46 self.assertTrue(s is encoding.fromutf8b(s)) |
46 self.assertTrue(s is encoding.fromutf8b(s)) |
47 |
47 |
48 def testlossylatin(self): |
48 def testlossylatin(self): |
49 encoding.encoding = b'ascii' |
49 encoding.encoding = b'ascii' |
50 s = u'\xc0'.encode('utf-8') |
50 s = '\xc0'.encode('utf-8') |
51 l = encoding.tolocal(s) |
51 l = encoding.tolocal(s) |
52 self.assertEqual(l, b'?') # lossy |
52 self.assertEqual(l, b'?') # lossy |
53 self.assertEqual(s, encoding.toutf8b(l)) # utf8 sequence preserved |
53 self.assertEqual(s, encoding.toutf8b(l)) # utf8 sequence preserved |
54 |
54 |
55 def testlosslesslatin(self): |
55 def testlosslesslatin(self): |
56 encoding.encoding = b'latin-1' |
56 encoding.encoding = b'latin-1' |
57 s = u'\xc0'.encode('utf-8') |
57 s = '\xc0'.encode('utf-8') |
58 l = encoding.tolocal(s) |
58 l = encoding.tolocal(s) |
59 self.assertEqual(l, b'\xc0') # lossless |
59 self.assertEqual(l, b'\xc0') # lossless |
60 self.assertEqual(s, encoding.toutf8b(l)) # convert back to utf-8 |
60 self.assertEqual(s, encoding.toutf8b(l)) # convert back to utf-8 |
61 |
61 |
62 def testlossy0xed(self): |
62 def testlossy0xed(self): |
63 encoding.encoding = b'euc-kr' # U+Dxxx Hangul |
63 encoding.encoding = b'euc-kr' # U+Dxxx Hangul |
64 s = u'\ud1bc\xc0'.encode('utf-8') |
64 s = '\ud1bc\xc0'.encode('utf-8') |
65 l = encoding.tolocal(s) |
65 l = encoding.tolocal(s) |
66 self.assertIn(b'\xed', l) |
66 self.assertIn(b'\xed', l) |
67 self.assertTrue(l.endswith(b'?')) # lossy |
67 self.assertTrue(l.endswith(b'?')) # lossy |
68 self.assertEqual(s, encoding.toutf8b(l)) # utf8 sequence preserved |
68 self.assertEqual(s, encoding.toutf8b(l)) # utf8 sequence preserved |
69 |
69 |
70 def testlossless0xed(self): |
70 def testlossless0xed(self): |
71 encoding.encoding = b'euc-kr' # U+Dxxx Hangul |
71 encoding.encoding = b'euc-kr' # U+Dxxx Hangul |
72 s = u'\ud1bc'.encode('utf-8') |
72 s = '\ud1bc'.encode('utf-8') |
73 l = encoding.tolocal(s) |
73 l = encoding.tolocal(s) |
74 self.assertEqual(l, b'\xc5\xed') # lossless |
74 self.assertEqual(l, b'\xc5\xed') # lossless |
75 self.assertEqual(s, encoding.toutf8b(l)) # convert back to utf-8 |
75 self.assertEqual(s, encoding.toutf8b(l)) # convert back to utf-8 |
76 |
76 |
77 |
77 |