annotate Lib/test/test_multibytecodec.py @ 87690:66c1c9f32567 default tip

Add use_weakref option to functools.lru_cache The use_weakref option makes lru_cache create weak references to the function arguments when creating the cache key, which prevents them from staying in the memory forever even after all other references to them are gone. This is a proof of concept for http://bugs.python.org/issue19859
author Radomir Dopieralski <devel@sheep.art.pl>
date Tue, 03 Dec 2013 16:02:48 +0100
parents 78cd09d2f908
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
59522
fcfe324663a6 convert shebang lines: python -> python3
Benjamin Peterson <benjamin@python.org>
parents: 58456
diff changeset
1 #!/usr/bin/env python3
31386
887ce39f95f2 Add CJK codecs support as discussed on python-dev. (SF #873597)
Hye-Shik Chang <hyeshik@gmail.com>
parents:
diff changeset
2 #
887ce39f95f2 Add CJK codecs support as discussed on python-dev. (SF #873597)
Hye-Shik Chang <hyeshik@gmail.com>
parents:
diff changeset
3 # test_multibytecodec.py
887ce39f95f2 Add CJK codecs support as discussed on python-dev. (SF #873597)
Hye-Shik Chang <hyeshik@gmail.com>
parents:
diff changeset
4 # Unit test for multibytecodec itself
887ce39f95f2 Add CJK codecs support as discussed on python-dev. (SF #873597)
Hye-Shik Chang <hyeshik@gmail.com>
parents:
diff changeset
5 #
887ce39f95f2 Add CJK codecs support as discussed on python-dev. (SF #873597)
Hye-Shik Chang <hyeshik@gmail.com>
parents:
diff changeset
6
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 44160
diff changeset
7 from test import support
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 44160
diff changeset
8 from test.support import TESTFN
41758
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
9 import unittest, io, codecs, sys, os
48563
b51cd5d3795c Merged revisions 65012,65035,65037-65040,65048,65057,65077,65091-65095,65097-65099,65127-65128,65131,65133-65136,65139,65149-65151,65155,65158-65159,65176-65178,65183-65184,65187-65190,65192,65194 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
10 import _multibytecodec
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
11
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
12 ALL_CJKENCODINGS = [
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
13 # _codecs_cn
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
14 'gb2312', 'gbk', 'gb18030', 'hz',
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
15 # _codecs_hk
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
16 'big5hkscs',
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
17 # _codecs_jp
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
18 'cp932', 'shift_jis', 'euc_jp', 'euc_jisx0213', 'shift_jisx0213',
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
19 'euc_jis_2004', 'shift_jis_2004',
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
20 # _codecs_kr
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
21 'cp949', 'euc_kr', 'johab',
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
22 # _codecs_tw
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
23 'big5', 'cp950',
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
24 # _codecs_iso2022
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
25 'iso2022_jp', 'iso2022_jp_1', 'iso2022_jp_2', 'iso2022_jp_2004',
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
26 'iso2022_jp_3', 'iso2022_jp_ext', 'iso2022_kr',
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
27 ]
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
28
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
29 class Test_MultibyteCodec(unittest.TestCase):
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
30
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
31 def test_nullcoding(self):
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
32 for enc in ALL_CJKENCODINGS:
41758
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
33 self.assertEqual(b''.decode(enc), '')
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
34 self.assertEqual(str(b'', enc), '')
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
35 self.assertEqual(''.encode(enc), b'')
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
36
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
37 def test_str_decode(self):
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
38 for enc in ALL_CJKENCODINGS:
41758
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
39 self.assertEqual('abcd'.encode(enc), b'abcd')
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
40
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
41 def test_errorcallback_longindex(self):
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
42 dec = codecs.getdecoder('euc-kr')
44160
9d152530910a Removed PyInt_GetMax and sys.maxint
Christian Heimes <christian@cheimes.de>
parents: 42918
diff changeset
43 myreplace = lambda exc: ('', sys.maxsize+1)
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
44 codecs.register_error('test.cjktest', myreplace)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
45 self.assertRaises(IndexError, dec,
50977
1f0a3ac8bf85 Merged revisions 68857 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 48563
diff changeset
46 b'apple\x92ham\x93spam', 'test.cjktest')
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
47
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
48 def test_codingspec(self):
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
49 try:
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
50 for enc in ALL_CJKENCODINGS:
65338
1782da440fb1 Merged revisions 85503 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55593
diff changeset
51 code = '# coding: {}\n'.format(enc)
1782da440fb1 Merged revisions 85503 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55593
diff changeset
52 exec(code)
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
53 finally:
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 44160
diff changeset
54 support.unlink(TESTFN)
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38453
diff changeset
55
48563
b51cd5d3795c Merged revisions 65012,65035,65037-65040,65048,65057,65077,65091-65095,65097-65099,65127-65128,65131,65133-65136,65139,65149-65151,65155,65158-65159,65176-65178,65183-65184,65187-65190,65192,65194 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
56 def test_init_segfault(self):
b51cd5d3795c Merged revisions 65012,65035,65037-65040,65048,65057,65077,65091-65095,65097-65099,65127-65128,65131,65133-65136,65139,65149-65151,65155,65158-65159,65176-65178,65183-65184,65187-65190,65192,65194 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
57 # bug #3305: this used to segfault
b51cd5d3795c Merged revisions 65012,65035,65037-65040,65048,65057,65077,65091-65095,65097-65099,65127-65128,65131,65133-65136,65139,65149-65151,65155,65158-65159,65176-65178,65183-65184,65187-65190,65192,65194 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
58 self.assertRaises(AttributeError,
b51cd5d3795c Merged revisions 65012,65035,65037-65040,65048,65057,65077,65091-65095,65097-65099,65127-65128,65131,65133-65136,65139,65149-65151,65155,65158-65159,65176-65178,65183-65184,65187-65190,65192,65194 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
59 _multibytecodec.MultibyteStreamReader, None)
b51cd5d3795c Merged revisions 65012,65035,65037-65040,65048,65057,65077,65091-65095,65097-65099,65127-65128,65131,65133-65136,65139,65149-65151,65155,65158-65159,65176-65178,65183-65184,65187-65190,65192,65194 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
60 self.assertRaises(AttributeError,
b51cd5d3795c Merged revisions 65012,65035,65037-65040,65048,65057,65077,65091-65095,65097-65099,65127-65128,65131,65133-65136,65139,65149-65151,65155,65158-65159,65176-65178,65183-65184,65187-65190,65192,65194 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
61 _multibytecodec.MultibyteStreamWriter, None)
b51cd5d3795c Merged revisions 65012,65035,65037-65040,65048,65057,65077,65091-65095,65097-65099,65127-65128,65131,65133-65136,65139,65149-65151,65155,65158-65159,65176-65178,65183-65184,65187-65190,65192,65194 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
62
50977
1f0a3ac8bf85 Merged revisions 68857 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 48563
diff changeset
63 def test_decode_unicode(self):
1f0a3ac8bf85 Merged revisions 68857 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 48563
diff changeset
64 # Trying to decode an unicode string should raise a TypeError
1f0a3ac8bf85 Merged revisions 68857 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 48563
diff changeset
65 for enc in ALL_CJKENCODINGS:
1f0a3ac8bf85 Merged revisions 68857 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 48563
diff changeset
66 self.assertRaises(TypeError, codecs.getdecoder(enc), "")
48563
b51cd5d3795c Merged revisions 65012,65035,65037-65040,65048,65057,65077,65091-65095,65097-65099,65127-65128,65131,65133-65136,65139,65149-65151,65155,65158-65159,65176-65178,65183-65184,65187-65190,65192,65194 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
67
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
68 class Test_IncrementalEncoder(unittest.TestCase):
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
69
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
70 def test_stateless(self):
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
71 # cp949 encoder isn't stateful at all.
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
72 encoder = codecs.getincrementalencoder('cp949')()
41575
beacf40b5960 Rip out all the u"..." literals and calls to unicode().
Guido van Rossum <guido@python.org>
parents: 41554
diff changeset
73 self.assertEqual(encoder.encode('\ud30c\uc774\uc36c \ub9c8\uc744'),
41758
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
74 b'\xc6\xc4\xc0\xcc\xbd\xe3 \xb8\xb6\xc0\xbb')
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
75 self.assertEqual(encoder.reset(), None)
41575
beacf40b5960 Rip out all the u"..." literals and calls to unicode().
Guido van Rossum <guido@python.org>
parents: 41554
diff changeset
76 self.assertEqual(encoder.encode('\u2606\u223c\u2606', True),
41758
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
77 b'\xa1\xd9\xa1\xad\xa1\xd9')
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
78 self.assertEqual(encoder.reset(), None)
41758
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
79 self.assertEqual(encoder.encode('', True), b'')
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
80 self.assertEqual(encoder.encode('', False), b'')
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
81 self.assertEqual(encoder.reset(), None)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
82
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
83 def test_stateful(self):
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
84 # jisx0213 encoder is stateful for a few codepoints. eg)
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
85 # U+00E6 => A9DC
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
86 # U+00E6 U+0300 => ABC4
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
87 # U+0300 => ABDC
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
88
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
89 encoder = codecs.getincrementalencoder('jisx0213')()
41758
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
90 self.assertEqual(encoder.encode('\u00e6\u0300'), b'\xab\xc4')
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
91 self.assertEqual(encoder.encode('\u00e6'), b'')
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
92 self.assertEqual(encoder.encode('\u0300'), b'\xab\xc4')
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
93 self.assertEqual(encoder.encode('\u00e6', True), b'\xa9\xdc')
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
94
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
95 self.assertEqual(encoder.reset(), None)
41758
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
96 self.assertEqual(encoder.encode('\u0300'), b'\xab\xdc')
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
97
41758
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
98 self.assertEqual(encoder.encode('\u00e6'), b'')
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
99 self.assertEqual(encoder.encode('', True), b'\xa9\xdc')
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
100 self.assertEqual(encoder.encode('', True), b'')
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
101
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
102 def test_stateful_keep_buffer(self):
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
103 encoder = codecs.getincrementalencoder('jisx0213')()
41758
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
104 self.assertEqual(encoder.encode('\u00e6'), b'')
41575
beacf40b5960 Rip out all the u"..." literals and calls to unicode().
Guido van Rossum <guido@python.org>
parents: 41554
diff changeset
105 self.assertRaises(UnicodeEncodeError, encoder.encode, '\u0123')
41758
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
106 self.assertEqual(encoder.encode('\u0300\u00e6'), b'\xab\xc4')
41575
beacf40b5960 Rip out all the u"..." literals and calls to unicode().
Guido van Rossum <guido@python.org>
parents: 41554
diff changeset
107 self.assertRaises(UnicodeEncodeError, encoder.encode, '\u0123')
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
108 self.assertEqual(encoder.reset(), None)
41758
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
109 self.assertEqual(encoder.encode('\u0300'), b'\xab\xdc')
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
110 self.assertEqual(encoder.encode('\u00e6'), b'')
41575
beacf40b5960 Rip out all the u"..." literals and calls to unicode().
Guido van Rossum <guido@python.org>
parents: 41554
diff changeset
111 self.assertRaises(UnicodeEncodeError, encoder.encode, '\u0123')
41758
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
112 self.assertEqual(encoder.encode('', True), b'\xa9\xdc')
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
113
52730
acdd11e39f0b Issue #5640: Fix _multibytecodec so that CJK codecs don't repeat
Hye-Shik Chang <hyeshik@gmail.com>
parents: 50977
diff changeset
114 def test_issue5640(self):
acdd11e39f0b Issue #5640: Fix _multibytecodec so that CJK codecs don't repeat
Hye-Shik Chang <hyeshik@gmail.com>
parents: 50977
diff changeset
115 encoder = codecs.getincrementalencoder('shift-jis')('backslashreplace')
acdd11e39f0b Issue #5640: Fix _multibytecodec so that CJK codecs don't repeat
Hye-Shik Chang <hyeshik@gmail.com>
parents: 50977
diff changeset
116 self.assertEqual(encoder.encode('\xff'), b'\\xff')
acdd11e39f0b Issue #5640: Fix _multibytecodec so that CJK codecs don't repeat
Hye-Shik Chang <hyeshik@gmail.com>
parents: 50977
diff changeset
117 self.assertEqual(encoder.encode('\n'), b'\n')
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
118
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
119 class Test_IncrementalDecoder(unittest.TestCase):
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
120
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
121 def test_dbcs(self):
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
122 # cp949 decoder is simple with only 1 or 2 bytes sequences.
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
123 decoder = codecs.getincrementaldecoder('cp949')()
41758
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
124 self.assertEqual(decoder.decode(b'\xc6\xc4\xc0\xcc\xbd'),
41575
beacf40b5960 Rip out all the u"..." literals and calls to unicode().
Guido van Rossum <guido@python.org>
parents: 41554
diff changeset
125 '\ud30c\uc774')
41758
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
126 self.assertEqual(decoder.decode(b'\xe3 \xb8\xb6\xc0\xbb'),
41575
beacf40b5960 Rip out all the u"..." literals and calls to unicode().
Guido van Rossum <guido@python.org>
parents: 41554
diff changeset
127 '\uc36c \ub9c8\uc744')
41758
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
128 self.assertEqual(decoder.decode(b''), '')
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
129
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
130 def test_dbcs_keep_buffer(self):
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
131 decoder = codecs.getincrementaldecoder('cp949')()
41758
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
132 self.assertEqual(decoder.decode(b'\xc6\xc4\xc0'), '\ud30c')
42918
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42552
diff changeset
133 self.assertRaises(UnicodeDecodeError, decoder.decode, b'', True)
41758
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
134 self.assertEqual(decoder.decode(b'\xcc'), '\uc774')
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
135
41758
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
136 self.assertEqual(decoder.decode(b'\xc6\xc4\xc0'), '\ud30c')
42918
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42552
diff changeset
137 self.assertRaises(UnicodeDecodeError, decoder.decode,
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42552
diff changeset
138 b'\xcc\xbd', True)
41758
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
139 self.assertEqual(decoder.decode(b'\xcc'), '\uc774')
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
140
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
141 def test_iso2022(self):
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
142 decoder = codecs.getincrementaldecoder('iso2022-jp')()
42918
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42552
diff changeset
143 ESC = b'\x1b'
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42552
diff changeset
144 self.assertEqual(decoder.decode(ESC + b'('), '')
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42552
diff changeset
145 self.assertEqual(decoder.decode(b'B', True), '')
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42552
diff changeset
146 self.assertEqual(decoder.decode(ESC + b'$'), '')
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42552
diff changeset
147 self.assertEqual(decoder.decode(b'B@$'), '\u4e16')
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42552
diff changeset
148 self.assertEqual(decoder.decode(b'@$@'), '\u4e16')
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42552
diff changeset
149 self.assertEqual(decoder.decode(b'$', True), '\u4e16')
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
150 self.assertEqual(decoder.reset(), None)
42918
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42552
diff changeset
151 self.assertEqual(decoder.decode(b'@$'), '@$')
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42552
diff changeset
152 self.assertEqual(decoder.decode(ESC + b'$'), '')
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42552
diff changeset
153 self.assertRaises(UnicodeDecodeError, decoder.decode, b'', True)
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42552
diff changeset
154 self.assertEqual(decoder.decode(b'B@$'), '\u4e16')
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 36960
diff changeset
155
50977
1f0a3ac8bf85 Merged revisions 68857 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 48563
diff changeset
156 def test_decode_unicode(self):
1f0a3ac8bf85 Merged revisions 68857 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 48563
diff changeset
157 # Trying to decode an unicode string should raise a TypeError
1f0a3ac8bf85 Merged revisions 68857 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 48563
diff changeset
158 for enc in ALL_CJKENCODINGS:
1f0a3ac8bf85 Merged revisions 68857 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 48563
diff changeset
159 decoder = codecs.getincrementaldecoder(enc)()
1f0a3ac8bf85 Merged revisions 68857 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 48563
diff changeset
160 self.assertRaises(TypeError, decoder.decode, "")
1f0a3ac8bf85 Merged revisions 68857 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 48563
diff changeset
161
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41758
diff changeset
162 class Test_StreamReader(unittest.TestCase):
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41758
diff changeset
163 def test_bug1728403(self):
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41758
diff changeset
164 try:
42160
bf222ebff0e5 Fix the last remaining problem with test_multibytecodec.py;
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
165 f = open(TESTFN, 'wb')
bf222ebff0e5 Fix the last remaining problem with test_multibytecodec.py;
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
166 try:
bf222ebff0e5 Fix the last remaining problem with test_multibytecodec.py;
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
167 f.write(b'\xa1')
bf222ebff0e5 Fix the last remaining problem with test_multibytecodec.py;
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
168 finally:
bf222ebff0e5 Fix the last remaining problem with test_multibytecodec.py;
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
169 f.close()
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41758
diff changeset
170 f = codecs.open(TESTFN, encoding='cp949')
42160
bf222ebff0e5 Fix the last remaining problem with test_multibytecodec.py;
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
171 try:
bf222ebff0e5 Fix the last remaining problem with test_multibytecodec.py;
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
172 self.assertRaises(UnicodeDecodeError, f.read, 2)
bf222ebff0e5 Fix the last remaining problem with test_multibytecodec.py;
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
173 finally:
bf222ebff0e5 Fix the last remaining problem with test_multibytecodec.py;
Guido van Rossum <guido@python.org>
parents: 42084
diff changeset
174 f.close()
42084
229c28cb9afb Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41758
diff changeset
175 finally:
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 44160
diff changeset
176 support.unlink(TESTFN)
31386
887ce39f95f2 Add CJK codecs support as discussed on python-dev. (SF #873597)
Hye-Shik Chang <hyeshik@gmail.com>
parents:
diff changeset
177
887ce39f95f2 Add CJK codecs support as discussed on python-dev. (SF #873597)
Hye-Shik Chang <hyeshik@gmail.com>
parents:
diff changeset
178 class Test_StreamWriter(unittest.TestCase):
83256
78cd09d2f908 Issue #13056: Reenable test_multibytecodec.Test_StreamWriter tests
Victor Stinner <victor.stinner@gmail.com>
parents: 80699
diff changeset
179 def test_gb18030(self):
78cd09d2f908 Issue #13056: Reenable test_multibytecodec.Test_StreamWriter tests
Victor Stinner <victor.stinner@gmail.com>
parents: 80699
diff changeset
180 s= io.BytesIO()
78cd09d2f908 Issue #13056: Reenable test_multibytecodec.Test_StreamWriter tests
Victor Stinner <victor.stinner@gmail.com>
parents: 80699
diff changeset
181 c = codecs.getwriter('gb18030')(s)
78cd09d2f908 Issue #13056: Reenable test_multibytecodec.Test_StreamWriter tests
Victor Stinner <victor.stinner@gmail.com>
parents: 80699
diff changeset
182 c.write('123')
78cd09d2f908 Issue #13056: Reenable test_multibytecodec.Test_StreamWriter tests
Victor Stinner <victor.stinner@gmail.com>
parents: 80699
diff changeset
183 self.assertEqual(s.getvalue(), b'123')
78cd09d2f908 Issue #13056: Reenable test_multibytecodec.Test_StreamWriter tests
Victor Stinner <victor.stinner@gmail.com>
parents: 80699
diff changeset
184 c.write('\U00012345')
78cd09d2f908 Issue #13056: Reenable test_multibytecodec.Test_StreamWriter tests
Victor Stinner <victor.stinner@gmail.com>
parents: 80699
diff changeset
185 self.assertEqual(s.getvalue(), b'123\x907\x959')
78cd09d2f908 Issue #13056: Reenable test_multibytecodec.Test_StreamWriter tests
Victor Stinner <victor.stinner@gmail.com>
parents: 80699
diff changeset
186 c.write('\uac00\u00ac')
78cd09d2f908 Issue #13056: Reenable test_multibytecodec.Test_StreamWriter tests
Victor Stinner <victor.stinner@gmail.com>
parents: 80699
diff changeset
187 self.assertEqual(s.getvalue(),
78cd09d2f908 Issue #13056: Reenable test_multibytecodec.Test_StreamWriter tests
Victor Stinner <victor.stinner@gmail.com>
parents: 80699
diff changeset
188 b'123\x907\x959\x827\xcf5\x810\x851')
31386
887ce39f95f2 Add CJK codecs support as discussed on python-dev. (SF #873597)
Hye-Shik Chang <hyeshik@gmail.com>
parents:
diff changeset
189
83256
78cd09d2f908 Issue #13056: Reenable test_multibytecodec.Test_StreamWriter tests
Victor Stinner <victor.stinner@gmail.com>
parents: 80699
diff changeset
190 def test_utf_8(self):
78cd09d2f908 Issue #13056: Reenable test_multibytecodec.Test_StreamWriter tests
Victor Stinner <victor.stinner@gmail.com>
parents: 80699
diff changeset
191 s= io.BytesIO()
78cd09d2f908 Issue #13056: Reenable test_multibytecodec.Test_StreamWriter tests
Victor Stinner <victor.stinner@gmail.com>
parents: 80699
diff changeset
192 c = codecs.getwriter('utf-8')(s)
78cd09d2f908 Issue #13056: Reenable test_multibytecodec.Test_StreamWriter tests
Victor Stinner <victor.stinner@gmail.com>
parents: 80699
diff changeset
193 c.write('123')
78cd09d2f908 Issue #13056: Reenable test_multibytecodec.Test_StreamWriter tests
Victor Stinner <victor.stinner@gmail.com>
parents: 80699
diff changeset
194 self.assertEqual(s.getvalue(), b'123')
78cd09d2f908 Issue #13056: Reenable test_multibytecodec.Test_StreamWriter tests
Victor Stinner <victor.stinner@gmail.com>
parents: 80699
diff changeset
195 c.write('\U00012345')
78cd09d2f908 Issue #13056: Reenable test_multibytecodec.Test_StreamWriter tests
Victor Stinner <victor.stinner@gmail.com>
parents: 80699
diff changeset
196 self.assertEqual(s.getvalue(), b'123\xf0\x92\x8d\x85')
78cd09d2f908 Issue #13056: Reenable test_multibytecodec.Test_StreamWriter tests
Victor Stinner <victor.stinner@gmail.com>
parents: 80699
diff changeset
197 c.write('\uac00\u00ac')
78cd09d2f908 Issue #13056: Reenable test_multibytecodec.Test_StreamWriter tests
Victor Stinner <victor.stinner@gmail.com>
parents: 80699
diff changeset
198 self.assertEqual(s.getvalue(),
78cd09d2f908 Issue #13056: Reenable test_multibytecodec.Test_StreamWriter tests
Victor Stinner <victor.stinner@gmail.com>
parents: 80699
diff changeset
199 b'123\xf0\x92\x8d\x85'
78cd09d2f908 Issue #13056: Reenable test_multibytecodec.Test_StreamWriter tests
Victor Stinner <victor.stinner@gmail.com>
parents: 80699
diff changeset
200 b'\xea\xb0\x80\xc2\xac')
31386
887ce39f95f2 Add CJK codecs support as discussed on python-dev. (SF #873597)
Hye-Shik Chang <hyeshik@gmail.com>
parents:
diff changeset
201
32727
69dadc2ca14d Bring CJKCodecs 1.1 into trunk. This completely reorganizes source
Hye-Shik Chang <hyeshik@gmail.com>
parents: 31393
diff changeset
202 def test_streamwriter_strwrite(self):
41758
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
203 s = io.BytesIO()
32727
69dadc2ca14d Bring CJKCodecs 1.1 into trunk. This completely reorganizes source
Hye-Shik Chang <hyeshik@gmail.com>
parents: 31393
diff changeset
204 wr = codecs.getwriter('gb18030')(s)
69dadc2ca14d Bring CJKCodecs 1.1 into trunk. This completely reorganizes source
Hye-Shik Chang <hyeshik@gmail.com>
parents: 31393
diff changeset
205 wr.write('abcd')
41758
0ead1064ead0 Make all the multibyte codec tests pass.
Guido van Rossum <guido@python.org>
parents: 41642
diff changeset
206 self.assertEqual(s.getvalue(), b'abcd')
32727
69dadc2ca14d Bring CJKCodecs 1.1 into trunk. This completely reorganizes source
Hye-Shik Chang <hyeshik@gmail.com>
parents: 31393
diff changeset
207
36960
3ad42f99a6db Bug #1448490: Fix a bug that ISO-2022 codecs could not handle
Hye-Shik Chang <hyeshik@gmail.com>
parents: 32727
diff changeset
208 class Test_ISO2022(unittest.TestCase):
3ad42f99a6db Bug #1448490: Fix a bug that ISO-2022 codecs could not handle
Hye-Shik Chang <hyeshik@gmail.com>
parents: 32727
diff changeset
209 def test_g2(self):
42918
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42552
diff changeset
210 iso2022jp2 = b'\x1b(B:hu4:unit\x1b.A\x1bNi de famille'
41575
beacf40b5960 Rip out all the u"..." literals and calls to unicode().
Guido van Rossum <guido@python.org>
parents: 41554
diff changeset
211 uni = ':hu4:unit\xe9 de famille'
36960
3ad42f99a6db Bug #1448490: Fix a bug that ISO-2022 codecs could not handle
Hye-Shik Chang <hyeshik@gmail.com>
parents: 32727
diff changeset
212 self.assertEqual(iso2022jp2.decode('iso2022-jp-2'), uni)
3ad42f99a6db Bug #1448490: Fix a bug that ISO-2022 codecs could not handle
Hye-Shik Chang <hyeshik@gmail.com>
parents: 32727
diff changeset
213
40450
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
214 def test_iso2022_jp_g0(self):
58456
f0f221e1a7c0 use assert[Not]In where appropriate
Ezio Melotti <ezio.melotti@gmail.com>
parents: 55593
diff changeset
215 self.assertNotIn(b'\x0e', '\N{SOFT HYPHEN}'.encode('iso-2022-jp-2'))
40450
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
216 for encoding in ('iso-2022-jp-2004', 'iso-2022-jp-3'):
41575
beacf40b5960 Rip out all the u"..." literals and calls to unicode().
Guido van Rossum <guido@python.org>
parents: 41554
diff changeset
217 e = '\u3406'.encode(encoding)
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 52730
diff changeset
218 self.assertFalse(any(x > 0x80 for x in e))
40450
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
219
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
220 def test_bug1572832(self):
41642
a6eb6acfe04a Merged revisions 55007-55179 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41585
diff changeset
221 for x in range(0x10000, 0x110000):
40450
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
222 # Any ISO 2022 codec will cause the segfault
72666
f39b26ca7f3d #13054: fix usage of sys.maxunicode after PEP-393.
Ezio Melotti
parents: 70528
diff changeset
223 chr(x).encode('iso_2022_jp', 'ignore')
40450
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
224
70347
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
225 class TestStateful(unittest.TestCase):
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
226 text = '\u4E16\u4E16'
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
227 encoding = 'iso-2022-jp'
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
228 expected = b'\x1b$B@$@$'
70528
61aaec67b521 Close #12171: IncrementalEncoder.reset() of CJK codecs (multibytecodec) calls
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70348
diff changeset
229 reset = b'\x1b(B'
61aaec67b521 Close #12171: IncrementalEncoder.reset() of CJK codecs (multibytecodec) calls
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70348
diff changeset
230 expected_reset = expected + reset
70347
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
231
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
232 def test_encode(self):
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
233 self.assertEqual(self.text.encode(self.encoding), self.expected_reset)
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
234
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
235 def test_incrementalencoder(self):
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
236 encoder = codecs.getincrementalencoder(self.encoding)()
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
237 output = b''.join(
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
238 encoder.encode(char)
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
239 for char in self.text)
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
240 self.assertEqual(output, self.expected)
70528
61aaec67b521 Close #12171: IncrementalEncoder.reset() of CJK codecs (multibytecodec) calls
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70348
diff changeset
241 self.assertEqual(encoder.encode('', final=True), self.reset)
61aaec67b521 Close #12171: IncrementalEncoder.reset() of CJK codecs (multibytecodec) calls
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70348
diff changeset
242 self.assertEqual(encoder.encode('', final=True), b'')
70347
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
243
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
244 def test_incrementalencoder_final(self):
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
245 encoder = codecs.getincrementalencoder(self.encoding)()
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
246 last_index = len(self.text) - 1
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
247 output = b''.join(
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
248 encoder.encode(char, index == last_index)
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
249 for index, char in enumerate(self.text))
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
250 self.assertEqual(output, self.expected_reset)
70528
61aaec67b521 Close #12171: IncrementalEncoder.reset() of CJK codecs (multibytecodec) calls
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70348
diff changeset
251 self.assertEqual(encoder.encode('', final=True), b'')
70347
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
252
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
253 class TestHZStateful(TestStateful):
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
254 text = '\u804a\u804a'
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
255 encoding = 'hz'
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
256 expected = b'~{ADAD'
70528
61aaec67b521 Close #12171: IncrementalEncoder.reset() of CJK codecs (multibytecodec) calls
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70348
diff changeset
257 reset = b'~}'
61aaec67b521 Close #12171: IncrementalEncoder.reset() of CJK codecs (multibytecodec) calls
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70348
diff changeset
258 expected_reset = expected + reset
70347
bd17396895fb Issue #12100: Don't reset incremental encoders of CJK codecs at each call to
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65338
diff changeset
259
31386
887ce39f95f2 Add CJK codecs support as discussed on python-dev. (SF #873597)
Hye-Shik Chang <hyeshik@gmail.com>
parents:
diff changeset
260 def test_main():
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 44160
diff changeset
261 support.run_unittest(__name__)
31386
887ce39f95f2 Add CJK codecs support as discussed on python-dev. (SF #873597)
Hye-Shik Chang <hyeshik@gmail.com>
parents:
diff changeset
262
887ce39f95f2 Add CJK codecs support as discussed on python-dev. (SF #873597)
Hye-Shik Chang <hyeshik@gmail.com>
parents:
diff changeset
263 if __name__ == "__main__":
887ce39f95f2 Add CJK codecs support as discussed on python-dev. (SF #873597)
Hye-Shik Chang <hyeshik@gmail.com>
parents:
diff changeset
264 test_main()