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