3 # test_multibytecodec.py
4 # Unit test for multibytecodec itself
6 # $CJKCodecs: test_multibytecodec.py,v 1.8 2004/06/19 06:09:55 perky Exp $
8 from test
import test_support
9 from test
import test_multibytecodec_support
10 import unittest
, StringIO
, codecs
12 class Test_StreamWriter(unittest
.TestCase
):
13 if len(u
'\U00012345') == 2: # UCS2
14 def test_gb18030(self
):
15 s
= StringIO
.StringIO()
16 c
= codecs
.lookup('gb18030')[3](s
)
18 self
.assertEqual(s
.getvalue(), '123')
19 c
.write(u
'\U00012345')
20 self
.assertEqual(s
.getvalue(), '123\x907\x959')
21 c
.write(u
'\U00012345'[0])
22 self
.assertEqual(s
.getvalue(), '123\x907\x959')
23 c
.write(u
'\U00012345'[1] + u
'\U00012345' + u
'\uac00\u00ac')
24 self
.assertEqual(s
.getvalue(),
25 '123\x907\x959\x907\x959\x907\x959\x827\xcf5\x810\x851')
26 c
.write(u
'\U00012345'[0])
27 self
.assertEqual(s
.getvalue(),
28 '123\x907\x959\x907\x959\x907\x959\x827\xcf5\x810\x851')
29 self
.assertRaises(UnicodeError, c
.reset
)
30 self
.assertEqual(s
.getvalue(),
31 '123\x907\x959\x907\x959\x907\x959\x827\xcf5\x810\x851')
33 # standard utf-8 codecs has broken StreamReader
34 if test_multibytecodec_support
.__cjkcodecs
__:
36 s
= StringIO
.StringIO()
37 c
= codecs
.lookup('utf-8')[3](s
)
39 self
.assertEqual(s
.getvalue(), '123')
40 c
.write(u
'\U00012345')
41 self
.assertEqual(s
.getvalue(), '123\xf0\x92\x8d\x85')
42 c
.write(u
'\U00012345'[0])
43 self
.assertEqual(s
.getvalue(), '123\xf0\x92\x8d\x85')
44 c
.write(u
'\U00012345'[1] + u
'\U00012345' + u
'\uac00\u00ac')
45 self
.assertEqual(s
.getvalue(),
46 '123\xf0\x92\x8d\x85\xf0\x92\x8d\x85\xf0\x92\x8d\x85'
47 '\xea\xb0\x80\xc2\xac')
48 c
.write(u
'\U00012345'[0])
49 self
.assertEqual(s
.getvalue(),
50 '123\xf0\x92\x8d\x85\xf0\x92\x8d\x85\xf0\x92\x8d\x85'
51 '\xea\xb0\x80\xc2\xac')
53 self
.assertEqual(s
.getvalue(),
54 '123\xf0\x92\x8d\x85\xf0\x92\x8d\x85\xf0\x92\x8d\x85'
55 '\xea\xb0\x80\xc2\xac\xed\xa0\x88')
56 c
.write(u
'\U00012345'[1])
57 self
.assertEqual(s
.getvalue(),
58 '123\xf0\x92\x8d\x85\xf0\x92\x8d\x85\xf0\x92\x8d\x85'
59 '\xea\xb0\x80\xc2\xac\xed\xa0\x88\xed\xbd\x85')
64 def test_nullcoding(self
):
65 self
.assertEqual(''.decode('gb18030'), u
'')
66 self
.assertEqual(unicode('', 'gb18030'), u
'')
67 self
.assertEqual(u
''.encode('gb18030'), '')
69 def test_str_decode(self
):
70 self
.assertEqual('abcd'.encode('gb18030'), 'abcd')
72 def test_streamwriter_strwrite(self
):
73 s
= StringIO
.StringIO()
74 wr
= codecs
.getwriter('gb18030')(s
)
76 self
.assertEqual(s
.getvalue(), 'abcd')
79 suite
= unittest
.TestSuite()
80 suite
.addTest(unittest
.makeSuite(Test_StreamWriter
))
81 test_support
.run_suite(suite
)
83 if __name__
== "__main__":