@@ -3229,13 +3229,13 @@ def test_mbcs_alias(self):
32293229 self .assertEqual (codec .name , 'mbcs' )
32303230
32313231 @support .bigmemtest (size = 2 ** 31 , memuse = 7 , dry_run = False )
3232- def test_large_input (self ):
3232+ def test_large_input (self , size ):
32333233 # Test input longer than INT_MAX.
32343234 # Input should contain undecodable bytes before and after
32353235 # the INT_MAX limit.
3236- encoded = (b'01234567' * (2 ** 28 - 1 ) +
3236+ encoded = (b'01234567' * (( size // 8 ) - 1 ) +
32373237 b'\x85 \x86 \xea \xeb \xec \xef \xfc \xfd \xfe \xff ' )
3238- self .assertEqual (len (encoded ), 2 ** 31 + 2 )
3238+ self .assertEqual (len (encoded ), size + 2 )
32393239 decoded = codecs .code_page_decode (932 , encoded , 'surrogateescape' , True )
32403240 self .assertEqual (decoded [1 ], len (encoded ))
32413241 del encoded
@@ -3246,6 +3246,20 @@ def test_large_input(self):
32463246 '\udc85 \udc86 \udcea \udceb \udcec '
32473247 '\udcef \udcfc \udcfd \udcfe \udcff ' )
32483248
3249+ @support .bigmemtest (size = 2 ** 31 , memuse = 6 , dry_run = False )
3250+ def test_large_utf8_input (self , size ):
3251+ # Test input longer than INT_MAX.
3252+ # Input should contain a decodable multi-byte character
3253+ # surrounding INT_MAX
3254+ encoded = (b'0123456\xed \x84 \x80 ' * (size // 8 ))
3255+ self .assertEqual (len (encoded ), size // 8 * 10 )
3256+ decoded = codecs .code_page_decode (65001 , encoded , 'ignore' , True )
3257+ self .assertEqual (decoded [1 ], len (encoded ))
3258+ del encoded
3259+ self .assertEqual (len (decoded [0 ]), size )
3260+ self .assertEqual (decoded [0 ][:10 ], '0123456\ud100 01' )
3261+ self .assertEqual (decoded [0 ][- 11 :], '56\ud100 0123456\ud100 ' )
3262+
32493263
32503264class ASCIITest (unittest .TestCase ):
32513265 def test_encode (self ):
0 commit comments