Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_codeccallbacks.cpython-311.pyc
�

�Ke�����ddlZddlZddlZddlZddlZddlZGd�d��ZGd�d��ZGd�de	��Z
Gd�d	e	��ZGd
�de��Z
Gd�d
e��ZGd�de��ZGd�de��ZGd�de��ZGd�dej��Zedkrej��dSdS)�Nc��eZdZd�Zd�ZdS)�	PosReturnc��d|_dS�Nr)�pos��selfs �B/usr/local/apps/python3/lib/python3.11/test/test_codeccallbacks.py�__init__zPosReturn.__init__s
�������c��|j}|}|dkrt|j��|z}||jkrt|j��|_d|fS)Nr�<?>)r�len�object�start)r	�exc�oldpos�realposs    r
�handlezPosReturn.handlesQ��������1�9�9��#�*�o�o��/�G��c�i����3�:���D�H��v��rN��__name__�
__module__�__qualname__rr�rr
rr	s2���������	�	�	�	�	rrc��eZdZdd�Zd�ZdS)�RepeatedPosReturnrc�0�||_d|_d|_dSr)�replr�count)r	rs  r
rzRepeatedPosReturn.__init__s����	������
�
�
rc�p�|jdkr|xjdzc_|j|jfS|j|jfS)Nr�)rrr�end)r	rs  r
rzRepeatedPosReturn.handle s:���:��>�>��J�J�!�O�J�J��I�t�x�(�(��	�3�7�#�#rN)rrrrr
rrs7����������
$�$�$�$�$rrc��eZdZd�ZdS)�BadStartUnicodeEncodeErrorc�R�t�|ddddd��g|_dS�N�ascii�rr!�bad)�UnicodeEncodeErrorrrrs r
rz#BadStartUnicodeEncodeError.__init__(s+���#�#�D�'�2�q�!�U�C�C�C���
�
�
rN�rrrrrrr
r$r$'�#����������rr$c��eZdZd�ZdS)�BadObjectUnicodeEncodeErrorc�R�t�|ddddd��g|_dSr&)r*rrrs r
rz$BadObjectUnicodeEncodeError.__init__.s+���#�#�D�'�2�q�!�U�C�C�C�����rNr+rrr
r.r.-�#����������rr.c��eZdZd�ZdS)�NoEndUnicodeDecodeErrorc�b�t�|dtd��ddd��|`dS�Nr'rrr!r))�UnicodeDecodeErrorr�	bytearrayr"rs r
rz NoEndUnicodeDecodeError.__init__4s/���#�#�D�'�9�S�>�>�1�a��O�O�O��H�H�HrNr+rrr
r2r23�#����������rr2c��eZdZd�ZdS)�BadObjectUnicodeDecodeErrorc�l�t�|dtd��ddd��g|_dSr4)r5rr6rrs r
rz$BadObjectUnicodeDecodeError.__init__:s1���#�#�D�'�9�S�>�>�1�a��O�O�O�����rNr+rrr
r9r99r0rr9c��eZdZd�ZdS)�NoStartUnicodeTranslateErrorc�F�t�|dddd��|`dS�Nr(rr!r))�UnicodeTranslateErrorrrrs r
rz%NoStartUnicodeTranslateError.__init__@s'���&�&�t�R��A�u�=�=�=��J�J�JrNr+rrr
r<r<?s#����������rr<c��eZdZd�ZdS)�NoEndUnicodeTranslateErrorc�F�t�|dddd��|`dSr>)r?rr"rs r
rz#NoEndUnicodeTranslateError.__init__Fs'���&�&�t�b�!�Q��>�>�>��H�H�HrNr+rrr
rArAEr7rrAc��eZdZd�ZdS)�NoObjectUnicodeTranslateErrorc�F�t�|dddd��|`dSr>)r?rrrs r
rz&NoObjectUnicodeTranslateError.__init__Ls'���&�&�t�R��A�u�=�=�=��K�K�KrNr+rrr
rDrDKr,rrDc��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d �Z"d!�Z#d"�Z$d#�Z%d$�Z&d%�Z'd&�Z(d'�Z)d(�Z*d)S)*�CodecCallbackTestc��d}|�|�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	�ss  r
�test_xmlcharrefreplacez(CodecCallbackTest.test_xmlcharrefreplaceRso��
-�����
�H�H�W�1�2�2�5�	
�	
�	
�	
���
�H�H�Y� 3�4�4�3�	
�	
�	
�	
�	
rc�B�d�}tjd|��d}d}|�|�dd��|��d}|�|�dd��|��d}|�|�d	d��|��dS)
Nc��t|t��std|z���g}|j|j|j�D]r}	|�dtjj	t|��z���>#t$r(|�dt|��z��Y�owxYwd�|��|jfS)N�don't know how to handle %rz&%s;�&#%d;r()
�
isinstancer*�	TypeErrorrrr"�append�html�entities�codepoint2name�ord�KeyError�join�r�l�cs   r
�xmlcharnamereplacezECodecCallbackTest.test_xmlcharnamereplace.<locals>.xmlcharnamereplaceds����c�#5�6�6�
E�� =�� C�D�D�D��A��Z��	�#�'� 1�2�
/�
/��/��H�H�V�d�m�&B�3�q�6�6�&J�J�K�K�K�K���/�/�/��H�H�W�s�1�v�v�-�.�.�.�.�.�/�����G�G�A�J�J���(�(s�:B�/B3�2B3ztest.xmlcharnamereplaceu«ℜ» = 〈ሴ€〉s0&laquo;&real;&raquo; = &lang;&#4660;&euro;&rang;r's$�&real;� = &lang;&#4660;&euro;&rang;rJs�&real;� = &lang;&#4660;�&rang;�iso-8859-15��codecs�register_errorrLrM)r	r`�sin�souts    r
�test_xmlcharnamereplacez)CodecCallbackTest.test_xmlcharnamereplace`s���		)�		)�		)�	��%�'9�	;�	;�	;�:��B��������G�-F�G�G��N�N�N�<��������I�/H�I�I�4�P�P�P�:��������M�3L�M�M�t�T�T�T�T�Trc�B�d�}tjd|��d}d}|�|�dd��|��d}|�|�dd��|��d}|�|�d	d��|��dS)
Nc
�:�t|t��std|z���g}|j|j|j�D]:}|�tj|dt|��z�����;dd�
|��z|jfS)NrRz0x%xz
%sz, )rTr*rUrrr"rV�unicodedata�namerZr\r]s   r
�uninamereplacez=CodecCallbackTest.test_uninamereplace.<locals>.uninamereplace�s����c�#5�6�6�
E�� =�� C�D�D�D��A��Z��	�#�'� 1�2�
?�
?������)�!�V�c�!�f�f�_�=�=�>�>�>�>�&����1���5�s�w�?�?rztest.uninamereplaceu¬ሴ€耀sNNOT SIGN, ETHIOPIC SYLLABLE SEE, EURO SIGN, CJK UNIFIED IDEOGRAPH-8000r'sE�ETHIOPIC SYLLABLE SEE, EURO SIGN, CJK UNIFIED IDEOGRAPH-8000rJsA�ETHIOPIC SYLLABLE SEE�CJK UNIFIED IDEOGRAPH-8000rarb)r	rlrerfs    r
�test_uninamereplacez%CodecCallbackTest.test_uninamereplacezs���	@�	@�	@�	��!�>�	3�	3�	3�'��f��������G�-B�C�C�T�J�J�J�`��������I�/D�E�E�t�L�L�L�e��������M�3H�I�I�4�P�P�P�P�Prc��d}d}|�|�dd��|��d}|�|�dd��|��d}|�|�dd��|��dS)	N�a¬ሴ€耀􏿿s!a\xac\u1234\u20ac\u8000\U0010ffffr'�backslashreplacesa�\u1234\u20ac\u8000\U0010ffffrJsa�\u1234�\u8000\U0010ffffrarK�r	rerfs   r
�test_backslashescapez&CodecCallbackTest.test_backslashescape�s���2��8��������G�-?�@�@�$�G�G�G�7��������I�/A�B�B�D�I�I�I�4��������M�3E�F�F��M�M�M�M�Mrc��d}d}|�|�dd��|��d}|�|�dd��|��d}|�|�dd��|��dS)	Nros[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}\U0010ffffrJsDa�\N{ETHIOPIC SYLLABLE SEE}�\N{CJK UNIFIED IDEOGRAPH-8000}\U0010ffffrarKrqs   r
�test_nameescapez!CodecCallbackTest.test_nameescape�s���2��>��������G�]�;�;�T�B�B�B�>��������I�}�=�=�t�D�D�D�>��������M�=�A�A�4�H�H�H�H�Hrc���d�}tjd|��d}d}|�|�dd��|��d}|�t
|jdd��dS)Nc��t|t��std|z���|j|j|jdz�dkrd|jdzfS|�)NrR�s���)rTr5rUrr�rs r
�relaxedutf8z>CodecCallbackTest.test_decoding_callbacks.<locals>.relaxedutf8�s_���c�#5�6�6�
E�� =�� C�D�D�D��z�#�)�C�I�a�K�/�0�K�?�?���	�!��,�,��	rztest.relaxedutf8sab��cü����u	abcü�utf-8s����)rcrdrL�decode�assertRaisesr5)r	r{rerfs    r
�test_decoding_callbacksz)CodecCallbackTest.test_decoding_callbacks�s���
	�	�	�	��0�+�>�>�>�9��(��������G�-?�@�@�$�G�G�G�"�����,�c�j�!�#5�	7�	7�	7�	7�	7rc���td�dD����}d}d}|�tj|d|��d|��d}|�t
tj|d|��d|t
d	��<d
}d}|�tj|d|��d|��d
|t
d	��<|�ttj|d|��dS)Nc3�~K�|]8}t|��td|���zd��fV��9dS)rxr'N)rZ�bytes�upper��.0r_s  r
�	<genexpr>z7CodecCallbackTest.test_charmapencode.<locals>.<genexpr>�sC����Q�Q���A����a����	�	�k�7� ;� ;�<�Q�Q�Q�Q�Q�Qr�abcdefgh�abcsAABBCC�strictr�abcAsXYZ�?�abcDEFsAABBCCXYZXYZXYZ�replace�XYZ)�dictrLrc�charmap_encoder~�UnicodeErrorrZrU)r	�charmaprerfs    r
�test_charmapencodez$CodecCallbackTest.test_charmapencode�s���
�Q�Q�j�Q�Q�Q�Q�Q����������.�s�H�g�F�F�q�I�4�P�P�P������,��(=�s�H�g�V�V�V�"���C������!������.�s�I�w�G�G��J�D�Q�Q�Q�!���C�������)�V�%:�C��G�T�T�T�T�Trc	���d�}tjd|��d�}tjd|��d}|�|�dd��d��|�|�dd��d��|�d	�d
d��d��|�d�d
d��d
��|�tjddtd��di��dd��|�d�dd��d��|�d�dd��d��dS)Nc�*��t�j�j��}t�t��r�fd�|D��}n6t�t
��r�fd�|D��}nt
d�z���dd�|��z�jfS)Nc�J��g|]}dt�j|��z�� S�z<%d>)rZr�r�rrs  �r
�
<listcomp>zFCodecCallbackTest.test_callbacks.<locals>.handler1.<locals>.<listcomp>�s,���@�@�@�s�V�c�#�*�S�/�2�2�2�@�@�@rc�0��g|]}d�j|z��Sr��rr�s  �r
r�zFCodecCallbackTest.test_callbacks.<locals>.handler1.<locals>.<listcomp>�s$���;�;�;�#�V�c�j��o�-�;�;�;rrR�[%s]r()�rangerr"rTr*r5rUr\)r�rr^s`  r
�handler1z2CodecCallbackTest.test_callbacks.<locals>.handler1�s�����c�i���)�)�A��#�1�2�2�
E�@�@�@�@�a�@�@�@����C�!3�4�4�
E�;�;�;�;��;�;�;���� =�� C�D�D�D��R�W�W�Q�Z�Z�'���1�1rz
test.handler1c����t�t��std�z����fd�t�j�j��D��}dd�|��z�jdzfS)NrRc�0��g|]}d�j|z��Sr�r�r�s  �r
r�zFCodecCallbackTest.test_callbacks.<locals>.handler2.<locals>.<listcomp>�s$���O�O�O�c��#�*�S�/�)�O�O�Orr�r(r!)rTr5rUr�rr"r\)rr^s` r
�handler2z2CodecCallbackTest.test_callbacks.<locals>.handler2�sr����c�#5�6�6�
E�� =�� C�D�D�D�O�O�O�O�U�3�9�c�g�5N�5N�O�O�O�A��R�W�W�Q�Z�Z�'�����3�3rz
test.handler2s���r'z[<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>])rcrdrLr}�charmap_decoderZrM)r	r�r�rNs    r
�test_callbacksz CodecCallbackTest.test_callbacks�s���	2�	2�	2�	��o�x�8�8�8�	4�	4�	4�	��o�x�8�8�8�#�����
�H�H�W�o�.�.�+�	
�	
�	
�	
���
�H�H�W�o�.�.� �	
�	
�	
�
	
����$�$�%5��G�G�&�	
�	
�	
�
	
����#�#�$4�o�F�F�%�	
�	
�	
�
	
����!�&�/�C��H�H�c�?�K�K�A�N��	
�	
�	
�
	
���� � ��/�:�:��	
�	
�	
�
	
������w��8�8��	
�	
�	
�	
�	
rc���gd�}|D],}tjd|ztj|�����-d�|d�|D��z
}�fd�dD��D]3}dD].}|D])}	|�||���#t$rY�&wxYw�/�4dS)N)r��ignorer�rIrprt�test.��c��g|]}d|z��S)r�r)r��errs  r
r�z6CodecCallbackTest.test_longstrings.<locals>.<listcomp>%s��5�5�5�c�G�c�M�5�5�5rc���g|]}|�z��Srr)r�rNr^s  �r
r�z6CodecCallbackTest.test_longstrings.<locals>.<listcomp>&s���<�<�<�Q�Q�q�S�<�<�<r)�x�あuaä)r'rJ�
iso-8859-1rar|�utf-7�utf-16�utf-32)rcrd�lookup_errorrMr�)r	�errorsr��uni�encr^s     @r
�test_longstringsz"CodecCallbackTest.test_longstringss����6�6�6���	K�	K�C��!�'�C�-��1D�S�1I�1I�J�J�J�J����5�5�V�5�5�5�5��<�<�<�<�":�<�<�<�	�	�C�>�
�
��!���C���
�
�3��,�,�,�,��'�����������
�	�	s�A6�6
B	�B	c�0�|jt|g|dd��R�|jt|g|dgz�R�gd�}tt|����D]�}|D]�}t	|��t	||��ur�'g}tt|����D]9}||kr|�|���|�||���:|jt|g|�R�����||�}	|�t|	��|��dS)N���ztoo much)�spamseggssspam�*g�?N)r~rUr�r�typerVrL�str)
r	�exctype�args�msg�	wrongargs�i�wrongarg�callargs�jrs
          r
�check_exceptionobjectargsz+CodecCallbackTest.check_exceptionobjectargs/sT��	���)�W�9�t�C�R�C�y�9�9�9�9����)�W�E��
�|�0C�E�E�E�E�?�?�?�	��s�4�y�y�!�!�	A�	A�A�%�

A�

A����>�>�T�$�q�'�]�]�2�2�����s�4�y�y�)�)�1�1�A��!�t�t� ����1�1�1�1� ����Q��0�0�0�0�!��!�)�W�@�x�@�@�@�@�@�

A��g�t�n������S���3�'�'�'�'�'rc�n�|�tgd�d��|�tgd�d��|�tgd�d��|�tgd�d��|�tgd	�d
��|�tgd�d��dS)
N)r'�gürkr!rx�ouchz?'ascii' codec can't encode character '\xfc' in position 1: ouch)r'r�r!�r�z;'ascii' codec can't encode characters in position 1-3: ouch)r'uüxrr!r�z?'ascii' codec can't encode character '\xfc' in position 0: ouch)r'uĀxrr!r�zA'ascii' codec can't encode character '\u0100' in position 0: ouch)r'u￿xrr!r�zA'ascii' codec can't encode character '\uffff' in position 0: ouch)r'u𐀀xrr!r�zE'ascii' codec can't encode character '\U00010000' in position 0: ouch)r�r*rs r
�test_unicodeencodeerrorz)CodecCallbackTest.test_unicodeencodeerrorHs���&�&��.�.�.�N�	
�	
�	
�
	
�&�&��.�.�.�I�	
�	
�	
�
	
�&�&��,�,�,�N�	
�	
�	
�
	
�&�&��.�.�.�P�	
�	
�	
�
	
�&�&��.�.�.�P�	
�	
�	
�
	
�&�&��2�2�2�T�	
�	
�	
�	
�	
rc��|�tdtd��dddgd��|�tdtd��dddgd��dS)	Nr'sg�rkr!rxr�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�r5r6rs r
�test_unicodedecodeerrorz)CodecCallbackTest.test_unicodedecodeerrorhsv���&�&��
�i�
�+�+�Q��6�:�F�	
�	
�	
�
	
�&�&��
�i�
�+�+�Q��6�:�D�	
�	
�	
�	
�	
rc�2�|�tgd�d��|�tgd�d��|�tgd�d��|�tgd�d��|�tgd	�d
��dS)N)r�r!rxr�z4can't translate character '\xfc' in position 1: ouch)ugĀrkr!rxr�z6can't translate character '\u0100' in position 1: ouch)ug￿rkr!rxr�z6can't translate character '\uffff' in position 1: ouch)ug𐀀rkr!rxr�z:can't translate character '\U00010000' in position 1: ouch)r�r!r�r�z0can't translate characters in position 1-2: ouch)r�r?rs r
�test_unicodetranslateerrorz,CodecCallbackTest.test_unicodetranslateerrorts����&�&�!�%�%�%�C�	
�	
�	
�
	
�&�&�!�'�'�'�E�	
�	
�	
�
	
�&�&�!�'�'�'�E�	
�	
�	
�
	
�&�&�!�+�+�+�I�	
�	
�	
�
	
�&�&�!�%�%�%�>�	
�	
�	
�	
�	
rc��|�ttjd��|�ttjt	d����|�t
tjtddddd����|�ttjt
dtd��ddd����|�ttjtdddd����dS)Nr�r�r'r�rr!��)	r~rUrc�
strict_errors�	Exceptionr*r5r6r?rs r
�test_badandgoodstrictexceptionsz1CodecCallbackTest.test_badandgoodstrictexceptions�s������� ��	
�	
�	
�	
����� ��f���	
�	
�	
�	
����� ��w��!�Q��?�?�	
�	
�	
�
	
����� ��w�	�'�(:�(:�A�q�&�I�I�	
�	
�	
�
	
���!�� �!�(�A�q�&�9�9�	
�	
�	
�	
�	
rc�&�|�ttjd��|�ttjt	d����|�tjt
ddddd����d��|�tjtdtd��ddd����d��|�tjtdddd����d��dS)	Nr�r�r'�aあbr!rx)r(rx�a�b)
r~rUrc�
ignore_errorsr�rLr*r5r6r?rs r
�test_badandgoodignoreexceptionsz1CodecCallbackTest.test_badandgoodignoreexceptions�s*��������
�	
�	
�	
�	
����������	
�	
�	
�	
���� �"�7�J��1�f�E�E�
G�
G��	
�	
�	
�
	
���� �"�7�I�i�,@�,@�!�Q��O�O�
Q�
Q��	
�	
�	
�
	
���� �%�j�!�Q��?�?�
A�
A��	
�	
�	
�	
�	
rc���|�ttjd��|�ttjt	d����|�ttjt����|�ttjt
����|�tjtddddd����d��|�tjtdtd��ddd����d	��|�tjtdddd����d	��dS)
Nr�r�r'r�r!rx)r�rxr�)��rx)r~rUrc�replace_errorsr�r.r9rLr*r5r6r?rs r
� test_badandgoodreplaceexceptionsz2CodecCallbackTest.test_badandgoodreplaceexceptions�s�������� �
�	
�	
�	
�	
����� �����	
�	
�	
�
	
�����!�'�)�)�	
�	
�	
�
	
�����!�'�)�)�	
�	
�	
�	
����!�"�7�J��1�f�E�E�
G�
G��	
�	
�	
�
	
����!�"�7�I�i�,@�,@�!�Q��O�O�
Q�
Q��	
�	
�	
�
	
����!�%�j�!�Q��?�?�
A�
A��	
�	
�	
�	
�	
rc
���|�ttjd��|�ttjt	d����|�ttjtdt
d��ddd����|�ttjtdddd����d}|d	z
}d
�d�|D����}|�	tjtdd|zd
zddt|��zd����d
�d�|D����dt|��zf��dS)Nr�r�r'r�rr!r�)rr!�	�
�c�di�r�i'�'i��順i?B�@B)i�i��r(c3�4K�|]}t|��V��dS�N��chrr�s  r
r�zOCodecCallbackTest.test_badandgoodxmlcharrefreplaceexceptions.<locals>.<genexpr>s(����'�'�q�C��F�F�'�'�'�'�'�'rr��bc3� K�|]	}d|zV��
dS)rSNrr�s  r
r�zOCodecCallbackTest.test_badandgoodxmlcharrefreplaceexceptions.<locals>.<genexpr>s&����-�-�Q�W�q�[�-�-�-�-�-�-r)r~rUrc�xmlcharrefreplace_errorsr�r5r6r?r\rLr*r)r	�csrNs   r
�*test_badandgoodxmlcharrefreplaceexceptionsz<CodecCallbackTest.test_badandgoodxmlcharrefreplaceexceptions�s��������*�
�	
�	
�	
�	
�����*�����	
�	
�	
�	
�����+��w�	�'�(:�(:�A�q�&�I�I�	
�	
�	
�
	
�����+�!�(�A�q�&�9�9�	
�	
�	
���
�����G�G�'�'�B�'�'�'�'�'������+�"�7�C�!�G�c�M�#$�a�#�a�&�&�j�&�:�:�
�
��W�W�-�-�"�-�-�-�
-�
-�q�3�q�6�6�z�:�	
�	
�	
�	
�	
rc��|�ttjd��|�ttjt	d����gd�}|D]�\}}|�|���5|�tjtdd|zdzddt|��zd����|dt|��zf��|�tjtd|zdzddt|��zd����|dt|��zf��ddd��n#1swxYwY��gd	�}|D]�\}}|�|�
��5|�tjtdtd|zdz��dd
d����|d
f��ddd��n#1swxYwY��dS)Nr�r�))r�z\u3042)�
�\x0a)r��\x61�ry�\x00)�ÿ�\xff)uĀz\u0100)u￿z\uffff)u𐀀z
\U00010000�u􏿿z
\U0010ffff���z\ud800���z\udfff����z\ud800\udfff�r�r'r�r�r!))�ar�)�
r�)�r�)r�r�)r�r�brx)r~rUrc�backslashreplace_errorsr��subTestrLr*rr?r5r6)r	�testsrNr�r�s     r
�)test_badandgoodbackslashreplaceexceptionsz;CodecCallbackTest.test_badandgoodbackslashreplaceexceptionss��������)�
�	
�	
�	
�	
�����)�����	
�	
�	
�
�
�
���
	�
	�D�A�q����!��$�$�
�
�� � ��2�*�7�C�!�G�c�M�+,�a�#�a�&�&�j�&�B�B�C�C���C��F�F�
�O�	���� � ��2�-�c�A�g��m�./��S��V�V��V�E�E�F�F���C��F�F�
�O�	���
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��
�
�
���	�	�D�A�q����A��&�&�
�
�� � ��2�*�7�I�d�Q�h��o�4N�4N�+,�a��9�9�:�:���F�	���
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��	�	s&�;CE	�	E
	�E
	�6AG�G	�G	c���|�ttjd��|�ttjt	d����|�ttjtdt
d��ddd����|�ttjtdddd����gd�}|D]�\}}|�|�	��5|�	tjtdd
|zdzddt|��zd����|dt|��zf��ddd��n#1swxYwY��dS)Nr�r�r'r�rr!r�))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�rrr�r�)r~rUrc�namereplace_errorsr�r5r6r?rrLr*r)r	r	rNr�s    r
�$test_badandgoodnamereplaceexceptionsz6CodecCallbackTest.test_badandgoodnamereplaceexceptionsSs��������$�
�	
�	
�	
�	
�����$�����	
�	
�	
�	
�����%��w�	�'�(:�(:�A�q�&�I�I�	
�	
�	
�
	
�����%�!�(�A�q�&�9�9�	
�	
�	
�
�
�
���	�	�D�A�q����!��$�$�
�
�� � ��-�*�7�C�!�G�c�M�+,�a�#�a�&�&�j�&�B�B�C�C���C��F�F�
�O�	���
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��	�	s�5A"E#�#E'	�*E'	c
��tjd��}|�t|d��|�t|t	d����|�t|tdddd����dD]]}|�|���5|�t|td	|ddd����ddd��n#1swxYwY�^|�|td	d
ddd����d��|�t|td	td
��ddd����|�|td	td��ddd����d��dS)N�surrogateescaper�r���rr!)r�u�u�rr'ua�brx)��rxrsa�b)rrx)rcr�r~rUr�r?rr*rLr5r6)r	�surrogateescape_errorsrNs   r
�(test_badandgoodsurrogateescapeexceptionsz:CodecCallbackTest.test_badandgoodsurrogateescapeexceptions�s��!'�!4�5F�!G�!G������!�
�	
�	
�	
�	
����!�����	
�	
�	
�	
����"�!�(�A�q�&�9�9�	
�	
�	
�+�	�	�A����!��$�$�
�
��!�!�&�*�&�w��1�a��@�@����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��	
���"�"�"�7�J��1�f�E�E�
G�
G��	
�	
�	
�
	
����"��w�	�$����A�v�F�F�	
�	
�	
�
	
���"�"�"�7�I�i�,@�,@�!�Q��O�O�
Q�
Q��	
�	
�	
�	
�	
s� .C�C	�!C	c��tjd��}|�t|d��|�t|t	d����|�t|tdddd����dD]�}|�|���5|�t|t|d	ddd����|�t|t|d	�	|��ddd����ddd��n#1swxYwY��d
D]j}|�|���5|�t|td|dt|��d����ddd��n#1swxYwY�kgd
�}|D]�\}}}}|�|||���5|�|t|d	|zdzddt|��zd����|dt|��zf��|�|t|td|d|�zdz��dd|zd����|dd�d|zf��ddd��n#1swxYwY��dS)N�
surrogatepassr�r�r�rr!)r|�utf-16le�utf-16be�utf-32le�utf-32be��encodingr�)r�r�rrr'))r|r�s�r�)rr�s�rx)rr�s�rx)rr�s�r�)rr�s�r�)r|r�s�r�)rr�s��rx)rr�s�rx)rr�s��r�)rr�s�r�)r|rs��r�)rrs��rx)rrs��rx)rrs���r�)rrs��r�)rr�r�r�rr)
rcr�r~rUr�r?rr*r5rMrrLr6)r	�surrogatepass_errorsr�rNr	r��ns       r
�&test_badandgoodsurrogatepassexceptionsz8CodecCallbackTest.test_badandgoodsurrogatepassexceptions�s���%�2�?�C�C�������
�	
�	
�	
�	
���������	
�	
�	
�	
���� �!�(�A�q�&�9�9�	
�	
�	
�M�	�	�C����s��+�+�

�

��!�!�&�(�&�s�C��A�v�>�>����
�!�!�&�(�&�s�C�J�J�s�O�O�Q��6�J�J����

�

�

�

�

�

�

�

�

�

�

����

�

�

�

��6�	�	�A����!��$�$�
�
��!�!�&�(�&�w��1�c�!�f�f�f�E�E����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��
�
�
��""�
	�
	�L�C��A�q����s����;�;�
�
�� � �(�(�*�3��a��#�
�+,�a�#�a�&�&�j�&�B�B�C�C���C��F�F�
�O�	���� � �(�(�*�3�	�$��2�A�2��,��:M�0N�0N�+,�a�!�e�V�=�=�>�>��r��r�U�A��E�N�	���
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��
	�
	s8� A.D�D	�!D	�;F�F	�F	�8B4I8�8I<	�?I<	c����d}d}|D]k�tjd�fd���|D]$}|�tdj|d���%dD]'\}}|�t|j|d���(�ldS)N)	r��foo)r!rxr��r r!r��r N�r r!r"r#)r'rJr�raztest.badhandlerc����Sr�r)r��ress �r
�<lambda>z:CodecCallbackTest.test_badhandlerresults.<locals>.<lambda>�s���s�rr�)�r'r��r|r�)r�s+x-)rcrdr~rUrMr})r	�results�encsr�r�r%s     @r
�test_badhandlerresultsz(CodecCallbackTest.test_badhandlerresults�s����x��@���	�	�C��!�"3�]�]�]�]�C�C�C��
�
���!�!���O��%�	����!�

�

���e�
�!�!���L��%�	����

�	�	rc�^�|�tjtjd����|�tjtjd����|�tjtjd����|�tjtjd����|�tjtjd����|�tjtjd����dS)Nr�r�rIrprt)rLrcr�r�r�r�rrrs r
�test_lookupzCodecCallbackTest.test_lookups������-�v�/B�8�/L�/L�M�M�M�����-�v�/B�8�/L�/L�M�M�M�����-�v�/B�8�/L�/L�M�M�M�����+��� 3�4�4�	
�	
�	
�	
����*��� 2�3�3�	
�	
�	
�	
����%���
�.�.�	
�	
�	
�	
�	
rc����fd�}tjd|��dD]K\}}�|�|d��}|�|d�zdz�|�����LdD]�\}}�|�|���5|�t��5}|�|d��ddd��n#1swxYwY|j}|�|jd��|�|j	d	��|�|j
|��ddd��n#1swxYwY��dS)
Nc�d��t|t��r	�|jfStd|z����NrR�rTr*r"rU�rrs �r
rzBCodecCallbackTest.test_encode_nonascii_replacement.<locals>.handle �6����#�1�2�2�
'��c�g��&��9�C�?�@�@�@r�test.replacing))r'�[¤]r�)r��[€]u½¾)rar5uœŸ�[�]))r|�[�]�🐍)r�r9r:)r�r9r:rr!rx)rcrdrMrLrr~r*�	exceptionrr"r)r	rr��inputr%�cmrrs       @r
� test_encode_nonascii_replacementz2CodecCallbackTest.test_encode_nonascii_replacements����	A�	A�	A�	A�	A�	��.��7�7�7�!
�	B�	B��C���
�,�,�s�$4�5�5�C����S�3��:��#3�";�";�C�"@�"@�A�A�A�A�!
�	4�	4��C���
���s��+�+�
4�
4��&�&�'9�:�:�8�b��L�L��&6�7�7�7�8�8�8�8�8�8�8�8�8�8�8����8�8�8�8��l��� � ���A�.�.�.�� � ���!�,�,�,�� � ���U�3�3�3�

4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4����
4�
4�
4�
4��	4�	4s7�D5�#C�:D5�C
�
D5�
C
�AD5�5D9	�<D9	c�����fd�}tjd|��dD]�\}}�|�|���5|�t��5}|�|d��ddd��n#1swxYwY|j}|�|jd��|�|j	d��|�|j
|��ddd��n#1swxYwY��dS)Nc�d��t|t��r	�|jfStd|z���r0r1r2s �r
�	unencreplzHCodecCallbackTest.test_encode_unencodable_replacement.<locals>.unencrepl<s7����#�1�2�2�
E��c�g��&�� =�� C�D�D�Drztest.unencreplhandler))r'r5�½)r�r6uœ)rar5rB)r|r9��)r�r9rC)r�r9rCrr!rx)rcrdrr~r*rMr;rLrr"r)r	rAr�r<r=rrs      @r
�#test_encode_unencodable_replacementz5CodecCallbackTest.test_encode_unencodable_replacement;s����	E�	E�	E�	E�	E�
	��5�y�A�A�A�!
�	4�	4��C������s��+�+�
4�
4��&�&�'9�:�:�?�b��L�L��&=�>�>�>�?�?�?�?�?�?�?�?�?�?�?����?�?�?�?��l��� � ���A�.�.�.�� � ���!�,�,�,�� � ���U�3�3�3�

4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4����
4�
4�
4�
4��	4�	4s6�C'�A8�,C'�8A<�<C'�?A<�AC'�'C+	�.C+	c	�Z���fd�}tjd|��dD]�\}}�|�|���5|�|d��}|�|d�|���zd�|��z��ddd��n#1swxYwY��dS)Nc�d��t|t��r	�|jfStd|z���r0r1r2s �r
rz?CodecCallbackTest.test_encode_bytes_replacement.<locals>.handleTr3rr4))r'r5���)r�r6rG)rar5rG)r|r9rG)rr9rG)rr9rG)rr9�����)rr9rHrr7r8)rcrdrrMrL)r	rr�r<r%rs     @r
�test_encode_bytes_replacementz/CodecCallbackTest.test_encode_bytes_replacementSs"���	A�	A�	A�	A�	A�	��.��7�7�7�	!
�	P�	P��C������s��+�+�
P�
P��l�l�3�(8�9�9��� � ��c�j�j��o�o��&<�s�z�z�#���&N�O�O�O�
P�
P�
P�
P�
P�
P�
P�
P�
P�
P�
P����
P�
P�
P�
P��	P�	Ps�AB�B#	�&B#	c����fd�}tjd|��d}gtjdddg���tjdgd����RD]�\}�|�|��	��5|�t��5}|�|d��ddd��n#1swxYwY|j}|�	|j
d
��|�	|jd��|�	|j|��|�	|j
d��ddd��n#1swxYwY��dS)
Nc�d��t|t��r	�|jfStd|z���r0r1r2s �r
rzCCodecCallbackTest.test_encode_odd_bytes_replacement.<locals>.handlejr3rr4r9)rrrr�)rr)rsabr�sabcde)rrr!rxzsurrogates not allowed)rcrd�	itertools�productrr~r*rMr;rLrr"r�reason)r	rr<r�r=rrs      @r
�!test_encode_odd_bytes_replacementz3CodecCallbackTest.test_encode_odd_bytes_replacementis���	A�	A�	A�	A�	A�	��.��7�7�7���
�
�
�7� $�f�~�/�/�
��
�7�>�>�>�@�@�
�
�
	G�
	G�I�C�����s���6�6�
G�
G��&�&�'9�:�:�8�b��L�L��&6�7�7�7�8�8�8�8�8�8�8�8�8�8�8����8�8�8�8��l��� � ���A�.�.�.�� � ���!�,�,�,�� � ���U�3�3�3�� � ���-E�F�F�F�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G����
G�
G�
G�
G��

	G�
	Gs7�+D3�B)�D3�)B-�-D3�0B-�1A6D3�3D7	�:D7	c��|�ttjd��|�ttjdd��dS)Nr�z
test.dummy)r~rUrcrdrs r
�test_badregistercallz&CodecCallbackTest.test_badregistercall�sB��	
���)�V�%:�B�?�?�?����)�V�%:�L�"�M�M�M�M�Mrc�P�|�ttj��dSr�)r~rUrcr�rs r
�test_badlookupcallz$CodecCallbackTest.test_badlookupcall�s#��	
���)�V�%8�9�9�9�9�9rc�R�|�ttjd��dS)N�test.unknown)r~�LookupErrorrcr�rs r
�test_unknownhandlerz%CodecCallbackTest.test_unknownhandler�s%��	
���+�v�':�N�K�K�K�K�Krc���d}d�d�|D����}tjdtj��dD]}dD]}|�||����dS)N)
r!�r��2r�i�r�i�r�iP�r�i �r�r(c�,�g|]}t|����Srr�)r�r�s  r
r�z;CodecCallbackTest.test_xmlcharrefvalues.<locals>.<listcomp>�s��'�'�'��S��V�V�'�'�'r�test.xmlcharrefreplace)r'ra)rIr\)r\rcrdr�rM)r	�vrNr�r�s     r
�test_xmlcharrefvaluesz'CodecCallbackTest.test_xmlcharrefvalues�s���
���G�G�'�'�Q�'�'�'�(�(����6��8W�X�X�X�+�	#�	#�C�F�
#�
#������c�"�"�"�"�
#�	#�	#rc	��|�tdjdd��d�}tjd|��|�t
djdd��|�t
djdd��|�t
djdd��|�t
d	jdd��|�t
d
jdd��|�t
djdd��d
�}tjd|��|�t
djdd��t
��}tjd|j��d|_|�	d�dd��d��d|_|�	d�dd��d��d|_|�tdjdd��d|_|�	d�dd��d��d|_|�	d�dd��d��d|_|�tdjdd��d|_|�	d�dd��d��Gd�dt��}|�ttj
ddddi��|�ttj
dd|����|�t
tj
dddtjdzi��dS) Nr�r'rUc��dS�Nr�rrzs r
�baddecodereturn1z=CodecCallbackTest.test_decodehelper.<locals>.baddecodereturn1�����2rztest.baddecodereturn1�\r�s\x0s\x0ys
\Uffffeeees\uyyyy�raw-unicode-escapec��dS�N)r�Nrrzs r
�baddecodereturn2z=CodecCallbackTest.test_decodehelper.<locals>.baddecodereturn2�����;rztest.baddecodereturn2�test.posreturnr�s�0z<?>0���z<?><?>���r!rxrr��s\uyyyy0c��eZdZd�ZdS)�.CodecCallbackTest.test_decodehelper.<locals>.Dc��t�r���
ValueError�r	�keys  r
�__getitem__z:CodecCallbackTest.test_decodehelper.<locals>.D.__getitem__���� � rN�rrrrurrr
�Dro��#������
!�
!�
!�
!�
!rrxr��)r~rVr}rcrdrUrrrrL�
IndexErrorr�r�r�rr�sys�
maxunicode)r	rbrh�handlerrxs     r
�test_decodehelperz#CodecCallbackTest.test_decodehelper�s?��	
���+�w�~�w��O�O�O�	�	�	���5�7G�H�H�H����)�W�^�W�>U�V�V�V����)�U�\�3C�E\�]�]�]����)�W�^�5E�G^�_�_�_����)�X�_�6F�H_�`�`�`����)�^�%:�<L�Ne�f�f�f����)�Z�%6�8L�Ne�f�f�f�	�	�	���5�7G�H�H�H����)�W�^�W�>U�V�V�V��+�+����.���?�?�?�����������2B�C�C�V�L�L�L�����������2B�C�C�X�N�N�N�������*�h�o�w�@P�Q�Q�Q�����������2B�C�C�V�L�L�L�����������2B�C�C�U�K�K�K�������*�h�o�w�@P�Q�Q�Q��������+�+�,@�BR�S�S�U[�\�\�\�	!�	!�	!�	!�	!��	!�	!�	!�	
���,��(=�w��SW�Y]�R^�_�_�_����*�f�&;�W�h�PQ�PQ�PS�PS�T�T�T����)�V�%:�G�X�PT�VY�Vd�ef�Vf�Og�h�h�h�h�hrc	���|�tdjdd��d�}tjd|��|�t
djdd��d�}tjd|��|�t
djdd��t
��}tjd|j��d	|_|�	d
�dd��d��d|_|�	d
�dd��d
��d|_|�td
jdd��d|_|�	d
�dd��d��d|_|�	d
�dd��d��d|_|�td
jdd��d|_Gd�dt��}dD]�}|�ttj
d|ddi��|�ttj
d||����|�t
tj
d|ddi����dS)Nr�r'rUc��dSrarrzs r
�badencodereturn1z=CodecCallbackTest.test_encodehelper.<locals>.badencodereturn1�rcrztest.badencodereturn1c��dSrgrrzs r
�badencodereturn2z=CodecCallbackTest.test_encodehelper.<locals>.badencodereturn2�rirztest.badencodereturn2rjr�uÿ0s<?>0rks<?><?>rlr!rxs<?>r�rc��eZdZd�ZdS)�.CodecCallbackTest.test_encodehelper.<locals>.Dc��t�r�rqrss  r
ruz:CodecCallbackTest.test_encodehelper.<locals>.D.__getitem__rvrNrwrrr
rxr�ryrrx)r�r�rIrprtrjrzi,)r~rVrMrcrdrUrrrrLr{r�r�r�rr)r	r�r�r~rxr�s      r
�test_encodehelperz#CodecCallbackTest.test_encodehelper�s���	
���+�v�}�g�~�N�N�N�	�	�	���5�7G�H�H�H����)�V�]�G�=T�U�U�U�	�	�	���5�7G�H�H�H����)�V�]�G�=T�U�U�U��+�+����.���?�?�?�����������1A�B�B�G�L�L�L�����������1A�B�B�I�N�N�N�������*�g�n�g�?O�P�P�P�����������1A�B�B�G�L�L�L�����������1A�B�B�F�K�K�K�������*�g�n�g�?O�P�P�P����	!�	!�	!�	!�	!��	!�	!�	!�I�	Z�	Z�C����l�F�,A�6�3�QU�W[�P\�]�]�]����j�&�*?���a�a�c�c�R�R�R����i��)>���d�TW�[�Y�Y�Y�Y�		Z�	Zrc�b�td��}tjd|j��gd�}|D]~\}}d�|��|z}|�|���5d|_|�|d��}|�|d��ddd��n#1swxYwY�dS)Nr��
test.bug36819)r'r()rs܀)rs܀)z
iso-8859-6r��abcdrrZ�abcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdxabcdx)	rrcrdrrMrrr}rL)r	r~�	testcasesr�r)r<�decodeds       r
�test_decodehelper_bug36819z,CodecCallbackTest.test_decodehelper_bug36819s��#�C�(�(����o�w�~�>�>�>�
�
�
�	�"�	8�	8�H�C���M�M�#�&�&��,�E����s��+�+�
8�
8� "��
��,�,�s�O�<�<��� � ��,�7�7�7�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8��	8�	8s�#4B#�#B'	�*B'	c���t��}tjd|j��d}gd�}|dgz
}tjdkrddg}d|_|D]�}|�|�	��5d
|_|�	t��5}|�|d��ddd��n#1swxYwY|j}|�
|jd��|�
|jd��|�
|j|��ddd��n#1swxYwY��tjdkr�d
|_|�	t��5}tjd
|d��ddd��n#1swxYwY|j}|�
|jd��|�
|jd��|�
|j|��d|_|D]v}|�|�	��5d
|_|�|d��}|�
|�|��d��ddd��n#1swxYwY�wtjdkrvd
|_tjd
|d��}|�
|d���d��|�
|dt'|����dSdS)Nr�uabcd�)r'�latin1r|r�r�ra�win32�mbcs�oemrCrrZr�rYi�r�r�rr!)rrcrdrr|�platformrrrr~r*rMr;rLrr"r�code_page_encoder}r)r	r~r<�	encodingsr�r=r�encodeds        r
�test_encodehelper_bug36819z,CodecCallbackTest.test_encodehelper_bug36819"s���#�%�%����o�w�~�>�>�>���D�D�D�	��m�_�$�	��<�7�"�"����I�����	4�	4�C����s��+�+�
4�
4� "��
��&�&�'9�:�:�7�b��L�L��o�6�6�6�7�7�7�7�7�7�7�7�7�7�7����7�7�7�7��l��� � ���A�.�.�.�� � ���!�,�,�,�� � ���U�3�3�3�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4����
4�
4�
4�
4���<�7�"�"��G�M��"�"�#5�6�6�
E�"��'��U�O�D�D�D�
E�
E�
E�
E�
E�
E�
E�
E�
E�
E�
E����
E�
E�
E�
E��,�C����S�Y��*�*�*����S�W�a�(�(�(����S�Z��/�/�/�����	D�	D�C����s��+�+�
D�
D�!#��
��,�,�s�O�<�<��� � �����!4�!4�l�C�C�C�

D�
D�
D�
D�
D�
D�
D�
D�
D�
D�
D����
D�
D�
D�
D���<�7�"�"��G�M��-�c�5�/�J�J�G����W�Q�Z�.�.�0�0�,�?�?�?����W�Q�Z��U���4�4�4�4�4�	#�"s\�*"D�B/�#D�/B3�3D�6B3�7AD�D"	�%D"	�E>�>F�F�AI�I	�I	c���Gd�dt��}|�tdjdtjdzi��|�tdjddi��dS)Nc��eZdZd�ZdS)�1CodecCallbackTest.test_translatehelper.<locals>.Dc��t�r�rqrss  r
ruz=CodecCallbackTest.test_translatehelper.<locals>.D.__getitem__UrvrNrwrrr
rxr�Tryrrxr�rzr!r)r�r~rr�	translater|r}rU)r	rxs  r
�test_translatehelperz&CodecCallbackTest.test_translatehelperNsz��	!�	!�	!�	!�	!��	!�	!�	!�	
���*�f�&6��s�~�a�?O�8P�Q�Q�Q����)�V�%5��b�z�B�B�B�B�Brc	��td��dtd��dtd��dtd��di}d	D]}d
|z}|�|���dS)N�&z&amp;�<z&lt;�>z&gt;�"z&quot;)r!r�r�r�zabc<def>ghi)rZr�)r	r�r�texts    r
�test_bug828737z CodecCallbackTest.test_bug828737[sn����H�H�g���H�H�f���H�H�f���H�H�h�	
��$�	$�	$�A� ��?�D��N�N�7�#�#�#�#�	$�	$rc�r�gd�}d�}tjd|��|D]M\}}|�t��5|�|d��ddd��n#1swxYwY�Nd�}tjd|��|D]/\}}|�|�|d��d���0dS)N)r')r�s++r()r�r�)r�r�)r��\u123g)rer�c�b�t|t��r	d|_dStd|z���)Nr���䉂rrR�rTr5rrUrzs r
�	replacingz?CodecCallbackTest.test_mutatingdecodehandler.<locals>.replacingrs6���#�1�2�2�
E���
�$�}�� =�� C�D�D�Drr4c�b�t|t��r	d|_dStd|z���)Nrr�rRr�rzs r
�mutatingz>CodecCallbackTest.test_mutatingdecodehandler.<locals>.mutating~s6���#�1�2�2�
E� ��
�$�}�� =�� C�D�D�Drz
test.mutatingr�)rcrdr~rUr}rL)r	�baddatar�r�datar�s      r
�test_mutatingdecodehandlerz,CodecCallbackTest.test_mutatingdecodehandlergs@��
�
�
��	E�	E�	E�	��.�	�:�:�:� '�	8�	8��X�t��"�"�9�-�-�
8�
8����H�&6�7�7�7�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8��	E�	E�	E�	��o�x�8�8�8�!(�	O�	O��X�t����T�[�[��?�C�C�X�N�N�N�N�	O�	Os�A!�!A%	�(A%	c�^�d�}tjd|��|�d�dd��d��|�d�dd��d��|�d�d	d��d
��|�d�dd��d
��d
�}tjd|��|�d�dd��d��|�d�dd��d��dS)Nc�h�t|t��rd|jdzfStd|z���)Nr�r!rR)rTr5rrUrzs r
�forward_shorter_than_endzPCodecCallbackTest.test_crashing_decode_handler.<locals>.forward_shorter_than_end�s;���#�1�2�2�
E� �#�)�A�+�.�.�� =�� C�D�D�Drztest.forward_shorter_than_ends�����z	utf-16-leu����Øs�����z	utf-16-besz	utf-32-leu
���ᄑsz	utf-32-bec�p�t|t��rd|_d|jfSt	d|z���)Nsr�rR)rTr5rrrUrzs r
�replace_with_longzICodecCallbackTest.test_crashing_decode_handler.<locals>.replace_with_long�s>���#�1�2�2�
E�(��
� �#�)�,�,�� =�� C�D�D�Drztest.replace_with_longrr�u�r�u�)rcrdrLr})r	r�r�s   r
�test_crashing_decode_handlerz.CodecCallbackTest.test_crashing_decode_handler�s���	E�	E�	E�	��+�-E�	G�	G�	G�	
���/�6�6��<�
>�
>�.�	
�	
�	
�
	
���/�6�6��<�
>�
>�.�	
�	
�	
�
	
���;�B�B��<�
>�
>�*�	
�	
�	
�
	
���;�B�B��<�
>�
>�*�	
�	
�	
�	E�	E�	E�	��6�8I�J�J�J�����N�N�8�%=�>�>�$�	
�	
�	
�	
����N�N�8�%=�>�>��	
�	
�	
�	
�	
rc
���tjtjtjtjtjtjtjd��tjd��g}tttfD�]�G�fd�dt��}|D]U}|�|����5|�
t||����ddd��n#1swxYwY�VG�fd�dt��}|D]x}|�|����5|�
t|f��5||����ddd��n#1swxYwYddd��n#1swxYwY�y��dS)Nrrc���eZdZ�ZdS��ACodecCallbackTest.test_fake_error_class.<locals>.FakeUnicodeErrorN�rrr�	__class__��clss�r
�FakeUnicodeErrorr�����������	�	�	rr�)r~�error_classc���eZdZ�ZdSr�r�r�s�r
r�zACodecCallbackTest.test_fake_error_class.<locals>.FakeUnicodeError�r�r)rcr�r�r�rrr�r�r*r5r?r�rr~rUr�)r	�handlersr�r~r�s    @r
�test_fake_error_classz'CodecCallbackTest.test_fake_error_class�s����� �� ��!��*��%��+��� 1�2�2����0�0�	
��&�'9�;P�P�	4�	4�C�
 �
 �
 �
 �
 �
 �
 �3�
 �
 �
 �#�
N�
N���\�\�'�s�\�C�C�N�N��%�%�i��:J�:J�:L�:L�M�M�M�N�N�N�N�N�N�N�N�N�N�N����N�N�N�N��
 �
 �
 �
 �
 �
 �
 �9�
 �
 �
 �#�
4�
4���\�\�'�s�\�C�C�4�4��*�*�I�7G�+H�I�I�4�4��� 0� 0� 2� 2�3�3�3�4�4�4�4�4�4�4�4�4�4�4����4�4�4�4�4�4�4�4�4�4�4�4�4�4�4����4�4�4�4��
4�	4�	4sH�3%C$�$C(�+C(� E4�=E	�E4�E!
�!E4�$E!
�%E4�4E8�;E8N)+rrrrOrgrmrrrurr�r�r�r�r�r�r�r�r�r�r�r
r
rrr+r-r>rDrIrOrQrSrWr^rr�r�r�r�r�r�r�r�rrr
rGrGPs�������
�
�
�U�U�U�4Q�Q�Q�<N�N�N�I�I�I� 7�7�7�2U�U�U�*7
�7
�7
�r���&(�(�(�2
�
�
�@

�

�

�
�
�
�6
�
�
�>
�
�
�<&
�&
�&
�P#
�#
�#
�J8�8�8�t,�,�,�\*
�*
�*
�XF�F�F�P���2
�
�
�"4�4�4�84�4�4�0P�P�P�,G�G�G�2N�N�N�:�:�:�
L�L�L�

#�
#�
#�9i�9i�9i�v4Z�4Z�4Z�l8�8�8�$*5�*5�*5�XC�C�C�
$�
$�
$�!O�!O�!O�H0
�0
�0
�f4�4�4�4�4rrG�__main__)rc�
html.entitiesrWrLr|rj�unittestrrr*r$r.r5r2r9r?r<rArD�TestCaserGr�mainrrr
�<module>r�s��
�
�
�
���������
�
�
�
�����������������"
$�
$�
$�
$�
$�
$�
$�
$������!3���������"4���������0���������"4���������#8���������!6���������$9����
D4�D4�D4�D4�D4��)�D4�D4�D4�N$�z����H�M�O�O�O�O�O��r