HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.10/test/__pycache__/test_codeccallbacks.cpython-310.opt-2.pyc
o

�i���@s�ddlZddlZddlZddlZddlZddlZGdd�d�ZGdd�d�ZGdd�de	�Z
Gdd	�d	e	�ZGd
d�de�Z
Gdd
�d
e�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�dej�Zedkrqe��dSdS)�Nc@seZdZdd�Zdd�ZdS)�	PosReturncCs
d|_dS�Nr)�pos��self�r�5/usr/local/lib/python3.10/test/test_codeccallbacks.py�__init__s
zPosReturn.__init__cCs>|j}|}|dkrt|j�|}||jkrt|j�|_d|fS)Nr�<?>)r�len�object�start)r�excZoldposZrealposrrr�handles
zPosReturn.handleN��__name__�
__module__�__qualname__r	rrrrrr	src@seZdZddd�Zdd�ZdS)�RepeatedPosReturnr
cCs||_d|_d|_dSr)�replr�count)rrrrrr	s
zRepeatedPosReturn.__init__cCs0|jdkr|jd8_|j|jfS|j|jfS)Nr�)rrr�end)rrrrrr s
zRepeatedPosReturn.handleN)r
rrrrrrs
rc@�eZdZdd�ZdS)�BadStartUnicodeEncodeErrorcC�t�|ddddd�g|_dS�N�ascii�rr�bad)�UnicodeEncodeErrorr	r
rrrrr	(�
z#BadStartUnicodeEncodeError.__init__N�rrrr	rrrrr'�rc@r)�BadObjectUnicodeEncodeErrorcCrr)r r	rrrrrr	.r!z$BadObjectUnicodeEncodeError.__init__Nr"rrrrr$-r#r$c@r)�NoEndUnicodeDecodeErrorcCs t�|dtd�ddd�|`dS�Nr�rrr)�UnicodeDecodeErrorr	�	bytearrayrrrrrr	4sz NoEndUnicodeDecodeError.__init__Nr"rrrrr%3r#r%c@r)�BadObjectUnicodeDecodeErrorcCs"t�|dtd�ddd�g|_dSr&)r(r	r)rrrrrr	:s
z$BadObjectUnicodeDecodeError.__init__Nr"rrrrr*9r#r*c@r)�NoStartUnicodeTranslateErrorcC�t�|dddd�|`dS�Nrrrr)�UnicodeTranslateErrorr	r
rrrrr	@�z%NoStartUnicodeTranslateError.__init__Nr"rrrrr+?r#r+c@r)�NoEndUnicodeTranslateErrorcCr,r-)r.r	rrrrrr	Fr/z#NoEndUnicodeTranslateError.__init__Nr"rrrrr0Er#r0c@r)�NoObjectUnicodeTranslateErrorcCr,r-)r.r	rrrrrr	Lr/z&NoObjectUnicodeTranslateError.__init__Nr"rrrrr1Kr#r1c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Z d=d>�Z!d?d@�Z"dAdB�Z#dCdD�Z$dEdF�Z%dGdH�Z&dIdJ�Z'dKdL�Z(dMdN�Z)dOdP�Z*dQS)R�CodecCallbackTestcCs0d}|�|�dd�d�|�|�dd�d�dS)Nuスパモ änd eggsr�xmlcharrefreplaces&&#12473;&#12497;&#12514; &#228;nd eggs�latin-1s!&#12473;&#12497;&#12514; �nd eggs��assertEqual�encode)r�srrr�test_xmlcharrefreplaceRs
�
�z(CodecCallbackTest.test_xmlcharrefreplacecC�ddd�}t�d|�d}d}|�|�dd�|�d}|�|�dd�|�d	}|�|�d
d�|�dS)Nc	Ss�t|t�std|��g}|j|j|j�D]#}z|�dtjj	t
|��Wqty9|�dt
|��Yqwd�|�|jfS)N�don't know how to handle %rz&%s;�&#%d;r)
�
isinstancer �	TypeErrorrr
r�append�htmlZentitiesZcodepoint2name�ord�KeyError�join�r�l�crrr�xmlcharnamereplaceds
�zECodecCallbackTest.test_xmlcharnamereplace.<locals>.xmlcharnamereplaceztest.xmlcharnamereplaceu«ℜ» = 〈ሴ€〉s0&laquo;&real;&raquo; = &lang;&#4660;&euro;&rang;rs$�&real;� = &lang;&#4660;&euro;&rang;r4s�&real;� = &lang;&#4660;�&rang;�iso-8859-15��codecs�register_errorr6r7)rrG�sin�soutrrr�test_xmlcharnamereplace`s�z)CodecCallbackTest.test_xmlcharnamereplacecCr:)Nc	Ss`t|t�std|��g}|j|j|j�D]}|�t�|dt	|���qdd�
|�|jfS)Nr;z0x%xz
%sz, )r=r r>rr
rr?�unicodedata�namerArCrDrrr�uninamereplace�s
z=CodecCallbackTest.test_uninamereplace.<locals>.uninamereplaceztest.uninamereplaceu¬ሴ€耀sNNOT SIGN, ETHIOPIC SYLLABLE SEE, EURO SIGN, CJK UNIFIED IDEOGRAPH-8000rsE�ETHIOPIC SYLLABLE SEE, EURO SIGN, CJK UNIFIED IDEOGRAPH-8000r4sA�ETHIOPIC SYLLABLE SEE�CJK UNIFIED IDEOGRAPH-8000rHrI)rrQrLrMrrr�test_uninamereplacezs	�z%CodecCallbackTest.test_uninamereplacecC�Pd}d}|�|�dd�|�d}|�|�dd�|�d}|�|�dd�|�dS)	N�a¬ሴ€耀􏿿s!a\xac\u1234\u20ac\u8000\U0010ffffr�backslashreplacesa�\u1234\u20ac\u8000\U0010ffffr4sa�\u1234�\u8000\U0010ffffrHr5�rrLrMrrr�test_backslashescape�sz&CodecCallbackTest.test_backslashescapecCrS)	NrTs[a\N{NOT SIGN}\N{ETHIOPIC SYLLABLE SEE}\N{EURO SIGN}\N{CJK UNIFIED IDEOGRAPH-8000}\U0010ffffr�namereplacesPa�\N{ETHIOPIC SYLLABLE SEE}\N{EURO SIGN}\N{CJK UNIFIED IDEOGRAPH-8000}\U0010ffffr4sDa�\N{ETHIOPIC SYLLABLE SEE}�\N{CJK UNIFIED IDEOGRAPH-8000}\U0010ffffrHr5rVrrr�test_nameescape�sz!CodecCallbackTest.test_nameescapecCsJdd�}t�d|�d}d}|�|�dd�|�d}|�t|jdd�dS)NcSsBt|t�std|��|j|j|jd�dkrd|jdfS|�)Nr;�s���)r=r(r>rr
�rrrr�relaxedutf8�s

z>CodecCallbackTest.test_decoding_callbacks.<locals>.relaxedutf8ztest.relaxedutf8sab��cü����u	abcü�utf-8s����)rJrKr6�decode�assertRaisesr()rr]rLrMrrr�test_decoding_callbacks�s
�z)CodecCallbackTest.test_decoding_callbackscCs�tdd�dD��}d}d}|�t�|d|�d|�d}|�ttj|d|�d	|td
�<d}d}|�t�|d
|�d|�d|td
�<|�ttj|d
|�dS)Ncss*�|]}t|�td|��d�fVqdS)rZrN)rA�bytes�upper��.0rFrrr�	<genexpr>�s�(z7CodecCallbackTest.test_charmapencode.<locals>.<genexpr>Zabcdefgh�abcsAABBCC�strictrZabcAsXYZ�?ZabcDEFsAABBCCXYZXYZXYZ�replaceZXYZ)�dictr6rJ�charmap_encoder`�UnicodeErrorrAr>)r�charmaprLrMrrr�test_charmapencode�sz$CodecCallbackTest.test_charmapencodecCs�dd�}t�d|�dd�}t�d|�d}|�|�dd�d	�|�|�dd�d
�|�d�dd�d
�|�d�dd�d�|�t�ddtd�di�dd�|�d�dd�d�|�d�dd�d�dS)Ncsjt�j�j�}t�t�r�fdd�|D�}nt�t�r%�fdd�|D�}ntd���dd�|��jfS)Ncsg|]}dt�j|��qS�z<%d>)rAr�rerr\rr�
<listcomp>�szFCodecCallbackTest.test_callbacks.<locals>.handler1.<locals>.<listcomp>c�g|]	}d�j|�qSrp�rrqr\rrrr��r;�[%s]r)�ranger
rr=r r(r>rC)r�rrErr\r�handler1�s

z2CodecCallbackTest.test_callbacks.<locals>.handler1z
test.handler1csJt�t�std����fdd�t�j�j�D�}dd�|��jdfS)Nr;crsrprtrqr\rrrr�ruzFCodecCallbackTest.test_callbacks.<locals>.handler2.<locals>.<listcomp>rvrr)r=r(r>rwr
rrC)rrErr\r�handler2�s
z2CodecCallbackTest.test_callbacks.<locals>.handler2z
test.handler2s���rz[<129>][<128>][<255>]z[<129>][<128>]s\u3042\u3xxx�unicode-escapeuあ[<92><117><51>]xxxs\u3042\u3xxuあ[<92><117><51>]xx�abc�a�zrz
z[<98>][<99>]ugüßrksg[<252><223>]rkugüßs
g[<252><223>])rJrKr6r_�charmap_decoderAr7)rryrzr8rrr�test_callbacks�sB

�
�
�
��
�
�z CodecCallbackTest.test_callbackscs�gd�}|D]
}t�d|t�|��qd�|dd�|D�7}�fdd�dD�D]}dD]}|D]}z|�||�Wq0tyCYq0wq,q(dS)	N)rh�ignorerjr3rUrX�test.��cSsg|]}d|�qS)r�r)re�errrrrrr%�z6CodecCallbackTest.test_longstrings.<locals>.<listcomp>csg|]}|��qSrr)rer8�rErrrr&r�)�x�あuaä)rr4�
iso-8859-1rHr^�utf-7�utf-16�utf-32)rJrK�lookup_errorr7rm)r�errorsr�Zuni�encrr�r�test_longstringss ����z"CodecCallbackTest.test_longstringsc
Cs�|jt|g|dd��R�|jt|g|dg�R�gd�}tt|��D]8}|D]3}t|�t||�ur6q)g}tt|��D]}||krJ|�|�q>|�||�q>|jt|g|�R�q)q%||�}	|�t|	�|�dS)N���ztoo much)Zspamseggssspam�*g�?N)r`r>rwr�typer?r6�str)
r�exctype�args�msgZ	wrongargs�iZwrongargZcallargs�jrrrr�check_exceptionobjectargs/s �
z+CodecCallbackTest.check_exceptionobjectargscCsp|�tgd�d�|�tgd�d�|�tgd�d�|�tgd�d�|�tgd	�d
�|�tgd�d�dS)
N)r�gürkrrZ�ouchz?'ascii' codec can't encode character '\xfc' in position 1: ouch)rr�r�r�z;'ascii' codec can't encode characters in position 1-3: ouch)ruüxrrr�z?'ascii' codec can't encode character '\xfc' in position 0: ouch)ruĀxrrr�zA'ascii' codec can't encode character '\u0100' in position 0: ouch)ru￿xrrr�zA'ascii' codec can't encode character '\uffff' in position 0: ouch)ru𐀀xrrr�zE'ascii' codec can't encode character '\U00010000' in position 0: ouch)r�r rrrr�test_unicodeencodeerrorHs<������z)CodecCallbackTest.test_unicodeencodeerrorcCs<|�tdtd�dddgd�|�tdtd�dddgd�dS)	Nrsg�rkrrZr�z8'ascii' codec can't decode byte 0xfc in position 1: ouch�z6'ascii' codec can't decode bytes in position 1-2: ouch)r�r(r)rrrr�test_unicodedecodeerrorhs��z)CodecCallbackTest.test_unicodedecodeerrorcCs^|�tgd�d�|�tgd�d�|�tgd�d�|�tgd�d�|�tgd	�d
�dS)N)r�rrZr�z4can't translate character '\xfc' in position 1: ouch)ugĀrkrrZr�z6can't translate character '\u0100' in position 1: ouch)ug￿rkrrZr�z6can't translate character '\uffff' in position 1: ouch)ug𐀀rkrrZr�z:can't translate character '\U00010000' in position 1: ouch)r�rr�r�z0can't translate characters in position 1-2: ouch)r�r.rrrr�test_unicodetranslateerrorts2�����z,CodecCallbackTest.test_unicodetranslateerrorc
Cs~|�ttjd�|�ttjtd��|�ttjtddddd��|�ttjtdtd�ddd��|�ttjtdddd��dS)Nr�r�rr�rr��)	r`r>rJ�
strict_errors�	Exceptionr r(r)r.rrrr�test_badandgoodstrictexceptions�s2�����z1CodecCallbackTest.test_badandgoodstrictexceptionsc
Cs�|�ttjd�|�ttjtd��|�t�tddddd��d�|�t�tdtd�ddd��d�|�t�t	dddd��d�dS)	Nr�r�r�aあbrrZ)rrZ�a�b)
r`r>rJ�
ignore_errorsrmr6r r(r)r.rrrr�test_badandgoodignoreexceptions�s8��������z1CodecCallbackTest.test_badandgoodignoreexceptionsc
Cs�|�ttjd�|�ttjtd��|�ttjt��|�ttjt��|�t�tddddd��d�|�t�t	dt
d�ddd��d	�|�t�tdddd��d	�dS)
Nr�r�rr�rrZ)rirZr�)��rZ)r`r>rJ�replace_errorsrmr$r*r6r r(r)r.rrrr� test_badandgoodreplaceexceptions�sL����������z2CodecCallbackTest.test_badandgoodreplaceexceptionscCs�|�ttjd�|�ttjtd��|�ttjtdtd�ddd��|�ttjtdddd��d}|d	7}d
�dd�|D��}|�	t�t
dd
|dddt|�d��d
�dd�|D��dt|�f�dS)Nr�r�rr�rrr�)rr�	�
�c�di�r�i'�'i��順i?B�@B)i�i��rcss�|]}t|�VqdS�N��chrrdrrrrf��zOCodecCallbackTest.test_badandgoodxmlcharrefreplaceexceptions.<locals>.<genexpr>r}�bcss�|]}d|VqdS)r<Nrrdrrrrfr�)r`r>rJ�xmlcharrefreplace_errorsrmr(r)r.rCr6r r)r�csr8rrr�*test_badandgoodxmlcharrefreplaceexceptions�s>�������z<CodecCallbackTest.test_badandgoodxmlcharrefreplaceexceptionsc
CsL|�ttjd�|�ttjtd��gd�}|D]S\}}|j|d��A|�t�tdd|dddt|�d��|dt|�f�|�t�t	d|dddt|�d��|dt|�f�Wd�n1sfwYqgd	�}|D]1\}}|j|d
��|�t�t
dtd|d�dd
d��|d
f�Wd�n1s�wYqrdS)Nr�r�))r�z\u3042)�
�\x0a)r}�\x61�r[�\x00)�ÿ�\xff)uĀz\u0100)u￿z\uffff)u𐀀z
\U00010000�u􏿿z
\U0010ffff���z\ud800���z\udfff����z\ud800\udfff�r�rr}r�r))�ar�)�
r�)�r�)r�r�)rbr��brZ)r`r>rJ�backslashreplace_errorsrm�subTestr6r rr.r(r))r�testsr8rxr�rrr�)test_badandgoodbackslashreplaceexceptionssZ����������
������z;CodecCallbackTest.test_badandgoodbackslashreplaceexceptionsc
Cs�|�ttjd�|�ttjtd��|�ttjtdtd�ddd��|�ttjtdddd��gd�}|D]7\}}|j|d	��%|�	t�t
dd
|dddt|�d��|dt|�f�Wd�n1sgwYq5dS)Nr�r�rr�rrr�))r�z\N{HIRAGANA LETTER A}r�)uﯹzW\N{ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM})u󠁿z\N{CANCEL TAG}r�r�r�r�r�r}r�)r`r>rJ�namereplace_errorsrmr(r)r.r�r6r r)rr�r8rxrrr�$test_badandgoodnamereplaceexceptionsSsD����������z6CodecCallbackTest.test_badandgoodnamereplaceexceptionscCs�t�d�}|�t|d�|�t|td��|�t|tdddd��dD]%}|j|d��|�t|td	|ddd��Wd�n1sCwYq#|�|td	d
ddd��d�|�t	|t	d	t
d
�ddd��|�|t	d	t
d�ddd��d�dS)N�surrogateescaper�r���rr)r}u�u�r�rua�brZ)��rZr�sa�b)r�rZ)rJr�r`r>rmr.r�r r6r(r))rZsurrogateescape_errorsr8rrr�(test_badandgoodsurrogateescapeexceptions�sT
�����������z:CodecCallbackTest.test_badandgoodsurrogateescapeexceptionscCs�t�d�}|�t|d�|�t|td��|�t|tdddd��dD]5}|j|d��%|�t|t|d	ddd��|�t|t|d	�	|�ddd��Wd�n1sSwYq#d
D]'}|j|d��|�t|td|dt
|�d��Wd�n1s}wYq[gd
�}|D]\\}}}}|j|||d��F|�|t|d	|dddt
|�d��|dt
|�f�|�|t|td|d|�d�dd|d��|dd�d|f�Wd�n1s�wYq�dS)N�
surrogatepassr�r�r�rr)r^�utf-16le�utf-16be�utf-32le�utf-32be��encodingr})r�r�r�r�r))r^r�s�r�)r�r�s�rZ)r�r�s�rZ)r�r�s�r�)r�r�s�r�)r^r�s�r�)r�r�s��rZ)r�r�s�rZ)r�r�s��r�)r�r�s�r�)r^r�s��r�)r�r�s��rZ)r�r�s��rZ)r�r�s���r�)r�r�s��r�)r�r�rbr�r�r�)
rJr�r`r>rmr.r�r r(r7rr6r))rZsurrogatepass_errorsr�r8r�r��nrrr�&test_badandgoodsurrogatepassexceptions�sz
�������������
������z8CodecCallbackTest.test_badandgoodsurrogatepassexceptionscsfd}d}|D]*�t�d�fdd��|D]}|�tdj|d�qdD]
\}}|�t|j|d�q"qdS)N)	r��foo)rrZr��r�rr��r�N�r�r�r�r�)rr4r�rHztest.badhandlercs�Sr�r)r���resrr�<lambda>�sz:CodecCallbackTest.test_badhandlerresults.<locals>.<lambda>r�)�rr��r^r�)r�s+x-)rJrKr`r>r7r_)r�resultsZencsr�rbrr�r�test_badhandlerresults�s(����z(CodecCallbackTest.test_badhandlerresultscCs||�tjt�d��|�tjt�d��|�tjt�d��|�tjt�d��|�tjt�d��|�tjt�d��dS)Nrhr�r3rUrX)r6rJr�r�r�r�r�r�rrrr�test_lookups���zCodecCallbackTest.test_lookupc
s��fdd�}t�d|�dD]\}}�|�|d�}|�|d�d�|��qdD]N\}}�|j|d��;|�t��}|�|d�Wd�n1sKwY|j}|�|jd	�|�|j	d
�|�|j
|�Wd�n1srwYq)dS)Nc� t|t�r
�|jfStd|���Nr;�r=r rr>r\�rrrr �

zBCodecCallbackTest.test_encode_nonascii_replacement.<locals>.handle�test.replacing))r�[¤]rg)r��[€]u½¾)rHr�uœŸ�[�]))r^�[�]�🐍)r�r�r�)r�r�r�r�rrZ)rJrKr7r6r�r`r �	exceptionr
rr)rrr��inputr��cmrrr�r� test_encode_nonascii_replacements"����z2CodecCallbackTest.test_encode_nonascii_replacementc
s��fdd�}t�d|�dD]N\}}�|j|d��;|�t��}|�|d�Wd�n1s0wY|j}|�|jd�|�|j	d�|�|j
|�Wd�n1sWwYqdS)Ncr�r�r�r\r�rr�	unencrepl<s

zHCodecCallbackTest.test_encode_unencodable_replacement.<locals>.unencreplztest.unencreplhandler))rr��½)r�r�uœ)rHr�r�)r^r���)r�r�r)r�r�rr�rrZ)rJrKr�r`r r7r�r6r
rr)rr�r�r�r�rrr�r�#test_encode_unencodable_replacement;s����z5CodecCallbackTest.test_encode_unencodable_replacementc	s��fdd�}t�d|�dD]1\}}�|j|d��|�|d�}|�|d�|��d�|��Wd�n1s:wYqdS)Ncr�r�r�r\r�rrrTr�z?CodecCallbackTest.test_encode_bytes_replacement.<locals>.handler�))rr����)r�r�r)rHr�r)r^r�r)r�r�r)r�r�r)r�r������)r�r�rr�r�r�)rJrKr�r7r6)rrr�r�r�rr�r�test_encode_bytes_replacementSs
"���z/CodecCallbackTest.test_encode_bytes_replacementc
s��fdd�}t�d|�d}gt�dddg��t�dgd	���RD]U\}�|j|�d
��B|�t��}|�|d�Wd�n1sCwY|j}|�	|j
d�|�	|jd�|�	|j|�|�	|j
d
�Wd�n1sqwYq!dS)Ncr�r�r�r\r�rrrjr�zCCodecCallbackTest.test_encode_odd_bytes_replacement.<locals>.handler�r�)r�r�r�r|)r�r�)r�sabr|sabcde)r�rrrZzsurrogates not allowed)rJrK�	itertools�productr�r`r r7r�r6r
rr�reason)rrr�r�r�rrr�r�!test_encode_odd_bytes_replacementis0��������z3CodecCallbackTest.test_encode_odd_bytes_replacementcCs&|�ttjd�|�ttjdd�dS)Nr�z
test.dummy)r`r>rJrKrrrr�test_badregistercall�sz&CodecCallbackTest.test_badregistercallcCs|�ttj�dSr�)r`r>rJr�rrrr�test_badlookupcall�sz$CodecCallbackTest.test_badlookupcallcCs|�ttjd�dS)N�test.unknown)r`�LookupErrorrJr�rrrr�test_unknownhandler�sz%CodecCallbackTest.test_unknownhandlercCsJd}d�dd�|D��}t�dtj�dD]
}dD]}|�||�qqdS)N)
r�r��2r�i�r�i�r�iP�r�i �r�rcSsg|]}t|��qSrr�)rer�rrrrr�r�z;CodecCallbackTest.test_xmlcharrefvalues.<locals>.<listcomp>�test.xmlcharrefreplace)rrH)r3r)rCrJrKr�r7)r�vr8r�r�rrr�test_xmlcharrefvalues�s��z'CodecCallbackTest.test_xmlcharrefvaluesc	Cs�|�tdjdd�dd�}t�d|�|�tdjdd�|�tdjdd�|�td	jdd�|�td
jdd�|�tdjdd�|�tdjd
d�dd�}t�d|�|�tdjdd�t�}t�d|j�d|_|�	d�dd�d�d|_|�	d�dd�d�d|_|�t
djdd�d|_|�	d�dd�d�d|_|�	d�dd�d�d|_|�t
djdd�d|_|�	d�d
d�d�Gdd�dt�}|�ttj
dd d!di�|�ttj
dd |��|�ttj
dd d!tjdi�dS)"Nr�rrcS�dS�Nr�rr\rrr�baddecodereturn1��z=CodecCallbackTest.test_decodehelper.<locals>.baddecodereturn1ztest.baddecodereturn1�\r{s\x0s\x0ys
\Uffffeeees\uyyyy�raw-unicode-escapecSr�N)riNrr\rrr�baddecodereturn2�rz=CodecCallbackTest.test_decodehelper.<locals>.baddecodereturn2ztest.baddecodereturn2�test.posreturnr�s�0z<?>0���z<?><?>���rrZr
r��s\uyyyy0c@r)z.CodecCallbackTest.test_decodehelper.<locals>.DcS�t�r���
ValueError�r�keyrrr�__getitem__�rz:CodecCallbackTest.test_decodehelper.<locals>.D.__getitem__N�rrrr$rrrr�D�r#r&rh�)r`rr_rJrKr>rrrr6�
IndexErrorrkrmrr!�sys�
maxunicode)rrr�handlerr&rrr�test_decodehelper�s@"z#CodecCallbackTest.test_decodehelperc	Cst|�tdjdd�dd�}t�d|�|�tdjdd�dd�}t�d	|�|�tdjdd	�t�}t�d
|j�d|_|�	d�dd
�d
�d|_|�	d�dd
�d�d|_|�t
djdd
�d|_|�	d�dd
�d
�d|_|�	d�dd
�d�d|_|�t
djdd
�d|_Gdd�dt�}dD]%}|�ttj
d|ddi�|�ttj
d||��|�ttj
d|ddi�q�dS)Nr�rrcSrrrr\rrr�badencodereturn1�rz=CodecCallbackTest.test_encodehelper.<locals>.badencodereturn1ztest.badencodereturn1cSrrrr\rrr�badencodereturn2�rz=CodecCallbackTest.test_encodehelper.<locals>.badencodereturn2ztest.badencodereturn2rr�uÿ0s<?>0rs<?><?>rrrZs<?>r�rc@r)z.CodecCallbackTest.test_encodehelper.<locals>.DcSrr�r r"rrrr$rz:CodecCallbackTest.test_encodehelper.<locals>.D.__getitem__Nr%rrrrr&r#r&)rhrjr3rUrXrr'i,)r`rr7rJrKr>rrrr6r(rkrmrlr!)rr-r.r+r&r�rrr�test_encodehelper�s8�z#CodecCallbackTest.test_encodehelperc	Cs�td�}t�d|j�gd�}|D]0\}}d�|�|}|j|d��d|_|�|d�}|�|d�Wd�n1s<wYqdS)Nr��
test.bug36819)r�r�)r�s܀)r�s܀)z
iso-8859-6r�Zabcdr�r�abcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdx)	rrJrKrr7r�rr_r6)rr+Z	testcasesr�rr�Zdecodedrrr�test_decodehelper_bug36819s���z,CodecCallbackTest.test_decodehelper_bug36819c
Cst�}t�d|j�d}gd�}|dg7}tjdkrddg}d|_|D]N}|j|d	��>d
|_|�	t
��}|�|d�Wd�n1sEwY|j}|�
|jd�|�
|jd�|�
|j|�Wd�n1slwYq#tjdkr�d
|_|�	t
��}t�d
|d�Wd�n1s�wY|j}|�
|jd�|�
|jd�|�
|j|�d|_|D]*}|j|d	��d
|_|�|d�}|�
|�|�d�Wd�n1s�wYq�tjdk�rd
|_t�d
|d�}|�
|d��d�|�
|dt|��dSdS)Nr0uabcd�)r�latin1r^r�r�rH�win32�mbcsZoemrr�rr�ri�r�r1rr)rrJrKrr)�platformrr�rr`r r7r�r6r
rrZcode_page_encoder_r)rr+r��	encodingsr�r�r�encodedrrr�test_encodehelper_bug36819"sV

���
����z,CodecCallbackTest.test_encodehelper_bug36819cCsBGdd�dt�}|�tdjdtjdi�|�tdjddi�dS)Nc@r)z1CodecCallbackTest.test_translatehelper.<locals>.DcSrr�r r"rrrr$Urz=CodecCallbackTest.test_translatehelper.<locals>.D.__getitem__Nr%rrrrr&Tr#r&r�r'rr)rkr`r!�	translater)r*r>)rr&rrr�test_translatehelperNsz&CodecCallbackTest.test_translatehelpercCsDtd�dtd�dtd�dtd�di}d	D]}d
|}|�|�qdS)N�&z&amp;�<z&lt;�>z&gt;�"z&quot;)rr�r�r�zabc<def>ghi)rAr:)rrnr��textrrr�test_bug828737[s��z CodecCallbackTest.test_bug828737c	Cs�gd�}dd�}t�d|�|D]\}}|�t��|�|d�Wd�n1s*wYqdd�}t�d|�|D]\}}|�|�|d�d�q<dS)	N)r�)r�s++r�)r�r�)r�r�)r{�\u123g)rrBcS� t|t�r
d|_dStd|��)Nr���䉂rr;�r=r(rr>r\rrr�	replacingr�
z?CodecCallbackTest.test_mutatingdecodehandler.<locals>.replacingr�cSrC)Nr'rDr;rFr\rrr�mutating~rHz>CodecCallbackTest.test_mutatingdecodehandler.<locals>.mutatingz
test.mutatingrE)rJrKr`r>r_r6)rZbaddatarGr��datarIrrr�test_mutatingdecodehandlergs
���z,CodecCallbackTest.test_mutatingdecodehandlercCs�dd�}t�d|�|�d�dd�d�|�d�dd�d�|�d	�d
d�d�|�d�d
d�d�dd�}t�d|�|�d�dd�d�|�d�dd�d�dS)NcSs$t|t�rd|jdfStd|��)Nr�rr;)r=r(r
r>r\rrr�forward_shorter_than_end�s
zPCodecCallbackTest.test_crashing_decode_handler.<locals>.forward_shorter_than_endztest.forward_shorter_than_ends�����z	utf-16-leu����Øs�����z	utf-16-besz	utf-32-leu
���ᄑsz	utf-32-becSs&t|t�r
d|_d|jfStd|��)Nsr�r;)r=r(rr
r>r\rrr�replace_with_long�s

zICodecCallbackTest.test_crashing_decode_handler.<locals>.replace_with_longztest.replace_with_longr�r�u�r�u�)rJrKr6r_)rrLrMrrr�test_crashing_decode_handler�sL���������
�
�z.CodecCallbackTest.test_crashing_decode_handlercs tjtjtjtjtjtjt�d�t�d�g}tt	t
fD]r�G�fdd�dt�}|D]!}|j|�d��|�
t||��Wd�n1sEwYq)G�fdd�dt�}|D]5}|j|�d��$|�
t|f��
||��Wd�n1sxwYWd�n1s�wYqWqdS)Nr�r�c�eZdZ�ZdS�zACodecCallbackTest.test_fake_error_class.<locals>.FakeUnicodeErrorN�rrr�	__class__r��clsrr�FakeUnicodeError��rU)r+Zerror_classcrOrPrQrrSrrrU�rV)rJr�r�r�r�r�r�r�r r(r.r�r�r`r>r�)r�handlersrUr+rrSr�test_fake_error_class�s6�
��������z'CodecCallbackTest.test_fake_error_classN)+rrrr9rNrRrWrYraror�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr	r
r
rr,r/r2r9r;rArKrNrXrrrrr2PsR
9 (%:.,H;6,
$3r2�__main__)rJZ
html.entitiesr@rr)rOZunittestrrr rr$r(r%r*r.r+r0r1ZTestCaser2r�mainrrrr�<module>s8
�