0001 #!/usr/bin/env python 0002 # 0003 # test_multibytecodec.py 0004 # Unit test for multibytecodec itself 0005 # 0006 # $CJKCodecs: test_multibytecodec.py,v 1.8 2004/06/19 06:09:55 perky Exp $ 0007 0008 from test import test_support 0009 from test import test_multibytecodec_support 0010 import unittest, StringIO, codecs 0011 0012 class Test_StreamWriter(unittest.TestCase): 0013 if len(u'\U00012345') == 2: # UCS2 0014 def test_gb18030(self): 0015 s= StringIO.StringIO() 0016 c = codecs.lookup('gb18030')[3](s) 0017 c.write(u'123') 0018 self.assertEqual(s.getvalue(), '123') 0019 c.write(u'\U00012345') 0020 self.assertEqual(s.getvalue(), '123\x907\x959') 0021 c.write(u'\U00012345'[0]) 0022 self.assertEqual(s.getvalue(), '123\x907\x959') 0023 c.write(u'\U00012345'[1] + u'\U00012345' + u'\uac00\u00ac') 0024 self.assertEqual(s.getvalue(), 0025 '123\x907\x959\x907\x959\x907\x959\x827\xcf5\x810\x851') 0026 c.write(u'\U00012345'[0]) 0027 self.assertEqual(s.getvalue(), 0028 '123\x907\x959\x907\x959\x907\x959\x827\xcf5\x810\x851') 0029 self.assertRaises(UnicodeError, c.reset) 0030 self.assertEqual(s.getvalue(), 0031 '123\x907\x959\x907\x959\x907\x959\x827\xcf5\x810\x851') 0032 0033 # standard utf-8 codecs has broken StreamReader 0034 if test_multibytecodec_support.__cjkcodecs__: 0035 def test_utf_8(self): 0036 s= StringIO.StringIO() 0037 c = codecs.lookup('utf-8')[3](s) 0038 c.write(u'123') 0039 self.assertEqual(s.getvalue(), '123') 0040 c.write(u'\U00012345') 0041 self.assertEqual(s.getvalue(), '123\xf0\x92\x8d\x85') 0042 c.write(u'\U00012345'[0]) 0043 self.assertEqual(s.getvalue(), '123\xf0\x92\x8d\x85') 0044 c.write(u'\U00012345'[1] + u'\U00012345' + u'\uac00\u00ac') 0045 self.assertEqual(s.getvalue(), 0046 '123\xf0\x92\x8d\x85\xf0\x92\x8d\x85\xf0\x92\x8d\x85' 0047 '\xea\xb0\x80\xc2\xac') 0048 c.write(u'\U00012345'[0]) 0049 self.assertEqual(s.getvalue(), 0050 '123\xf0\x92\x8d\x85\xf0\x92\x8d\x85\xf0\x92\x8d\x85' 0051 '\xea\xb0\x80\xc2\xac') 0052 c.reset() 0053 self.assertEqual(s.getvalue(), 0054 '123\xf0\x92\x8d\x85\xf0\x92\x8d\x85\xf0\x92\x8d\x85' 0055 '\xea\xb0\x80\xc2\xac\xed\xa0\x88') 0056 c.write(u'\U00012345'[1]) 0057 self.assertEqual(s.getvalue(), 0058 '123\xf0\x92\x8d\x85\xf0\x92\x8d\x85\xf0\x92\x8d\x85' 0059 '\xea\xb0\x80\xc2\xac\xed\xa0\x88\xed\xbd\x85') 0060 0061 else: # UCS4 0062 pass 0063 0064 def test_nullcoding(self): 0065 self.assertEqual(''.decode('gb18030'), u'') 0066 self.assertEqual(unicode('', 'gb18030'), u'') 0067 self.assertEqual(u''.encode('gb18030'), '') 0068 0069 def test_str_decode(self): 0070 self.assertEqual('abcd'.encode('gb18030'), 'abcd') 0071 0072 def test_streamwriter_strwrite(self): 0073 s = StringIO.StringIO() 0074 wr = codecs.getwriter('gb18030')(s) 0075 wr.write('abcd') 0076 self.assertEqual(s.getvalue(), 'abcd') 0077 0078 def test_main(): 0079 suite = unittest.TestSuite() 0080 suite.addTest(unittest.makeSuite(Test_StreamWriter)) 0081 test_support.run_suite(suite) 0082 0083 if __name__ == "__main__": 0084 test_main() 0085
Generated by PyXR 0.9.4