from test import test_support import unittest import codecs class TestMBCS_CP932(unittest.TestCase): # not include invalid character samples = ( # some normal tests '\x82\xb1\x82\xf1\x82\xc9\x82\xbf\x82\xcd\x90\xa2\x8aE\x81I', '\x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8', '\x82\xa0\x82\xa2\x82\xa4\x82\xa6\x82\xa8\r\n\x82\xa9\x82' \ '\xab\x82\xad\x82\xaf\x82\xb1\r\n344\x82\xd9345\x82\xb022 \t ', # IsDBCSLeadByte() returns 1 for these trail-bytes (\x9a, \xf0) '\x97\x9a\x97\xf0', '\x82\xb1\x82\xcc\x97\x9a\x97\xf0\x8f\x91', 'abc\x97\x9adef\x97\xf0ghi') def test_incremental_decoder(self): for s in self.samples: d = codecs.getincrementaldecoder("mbcs")() u = u"" for c in s: u += d.decode(c) self.assertEqual(d.decode("", final=True), u"") self.assertEqual(u, s.decode("mbcs")) self.assertEqual(u, s.decode("cp932")) def test_encoder(self): for s in self.samples: u = s.decode("cp932") self.assertEqual(u.encode("mbcs"), u.encode("cp932")) def test_main(): import sys if sys.platform == "win32": import _locale if _locale._getdefaultlocale()[1] == 'cp932': test_support.run_unittest(TestMBCS_CP932) if __name__ == "__main__": test_main()