PyXR

c:\python24\lib \ test \ test_multibytecodec.py



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
SourceForge.net Logo