Your IP : 216.73.216.85


Current Path : /opt/alt/python35/lib64/python3.5/test/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/test/__pycache__/test_codeccallbacks.cpython-35.pyc



��Yf���@s4ddlZddlZddlZddlZddlZddlZddlZGdd�d�Z	Gdd�de
�ZGdd�de
�ZGdd	�d	e
�ZGd
d�de
�ZGdd
�d
e�ZGdd�de�ZGdd�de�ZGdd�dej�Zedkr0ej�dS)�Nc@s(eZdZdd�Zdd�ZdS)�	PosReturncCs
d|_dS)Nr)�pos)�self�r�=/opt/alt/python35/lib64/python3.5/test/test_codeccallbacks.py�__init__szPosReturn.__init__cCsY|j}|}|dkr.t|j�|}||jkrOt|j�|_d|fS)Nrz<?>)r�len�object�start)r�excZoldposZrealposrrr�handles	zPosReturn.handleN)�__name__�
__module__�__qualname__rrrrrrr	src@seZdZdd�ZdS)�BadStartUnicodeEncodeErrorcCs)tj|ddddd�g|_dS)N�ascii�r��bad)�UnicodeEncodeErrorrr
)rrrrrsz#BadStartUnicodeEncodeError.__init__N)r
rrrrrrrrsrc@seZdZdd�ZdS)�BadObjectUnicodeEncodeErrorcCs)tj|ddddd�g|_dS)Nrrrrr)rrr	)rrrrr"sz$BadObjectUnicodeEncodeError.__init__N)r
rrrrrrrr!src@seZdZdd�ZdS)�NoEndUnicodeDecodeErrorcCs,tj|dtd�ddd�|`dS)Nr�rrr)�UnicodeDecodeErrorr�	bytearray�end)rrrrr(s"z NoEndUnicodeDecodeError.__init__N)r
rrrrrrrr'src@seZdZdd�ZdS)�BadObjectUnicodeDecodeErrorcCs/tj|dtd�ddd�g|_dS)Nrrrrr)rrrr	)rrrrr.s"z$BadObjectUnicodeDecodeError.__init__N)r
rrrrrrrr-src@seZdZdd�ZdS)�NoStartUnicodeTranslateErrorcCs#tj|dddd�|`dS)Nrrrr)�UnicodeTranslateErrorrr
)rrrrr4sz%NoStartUnicodeTranslateError.__init__N)r
rrrrrrrr3src@seZdZdd�ZdS)�NoEndUnicodeTranslateErrorcCs#tj|dddd�|`dS)Nrrrr)rrr)rrrrr:sz#NoEndUnicodeTranslateError.__init__N)r
rrrrrrrr9src@seZdZdd�ZdS)�NoObjectUnicodeTranslateErrorcCs#tj|dddd�|`dS)Nrrrr)rrr	)rrrrr@sz&NoObjectUnicodeTranslateError.__init__N)r
rrrrrrrr ?sr c@s�eZdZdd�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%dGS)H�CodecCallbackTestcCsBd}|j|jdd�d�|j|jdd�d�dS)Nuスパモ änd eggsr�xmlcharrefreplaces&&#12473;&#12497;&#12514; &#228;nd eggszlatin-1s!&#12473;&#12497;&#12514; �nd eggs)�assertEqual�encode)r�srrr�test_xmlcharrefreplaceFsz(CodecCallbackTest.test_xmlcharrefreplacecCs�dd�}tjd|�d}d}|j|jdd�|�d}|j|jdd�|�d	}|j|jd
d�|�dS)NcSs�t|t�std|��g}xr|j|j|j�D]W}y%|jdtjj	t
|��Wq?tk
r�|jdt
|��Yq?Xq?Wdj|�|jfS)Nzdon't know how to handle %rz&%s;z&#%d;r)
�
isinstancer�	TypeErrorr	r
r�append�htmlZentitiesZcodepoint2name�ord�KeyError�join)r�l�crrr�xmlcharnamereplaceXs %
 zECodecCallbackTest.test_xmlcharnamereplace.<locals>.xmlcharnamereplaceztest.xmlcharnamereplaceu«ℜ» = 〈ሴ€〉s0&laquo;&real;&raquo; = &lang;&#4660;&euro;&rang;rs$�&real;� = &lang;&#4660;&euro;&rang;zlatin-1s�&real;� = &lang;&#4660;�&rang;ziso-8859-15)�codecs�register_errorr#r$)rr0�sin�soutrrr�test_xmlcharnamereplaceTs
z)CodecCallbackTest.test_xmlcharnamereplacecCs�dd�}tjd|�d}d}|j|jdd�|�d}|j|jdd�|�d	}|j|jd
d�|�dS)NcSs�t|t�std|��g}xD|j|j|j�D])}|jtj|dt	|���q?Wddj
|�|jfS)Nzdon't know how to handle %rz0x%xz
%sz, )r'rr(r	r
rr)�unicodedata�namer+r-)rr.r/rrr�uninamereplacews '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-8000zlatin-1sA�ETHIOPIC SYLLABLE SEE�CJK UNIFIED IDEOGRAPH-8000ziso-8859-15)r1r2r#r$)rr8r3r4rrr�test_uninamereplacens	
z%CodecCallbackTest.test_uninamereplacecCspd}d}|j|jdd�|�d}|j|jdd�|�d}|j|jdd�|�dS)	Nua¬ሴ€耀􏿿s!a\xac\u1234\u20ac\u8000\U0010ffffr�backslashreplacesa�\u1234\u20ac\u8000\U0010ffffzlatin-1sa�\u1234�\u8000\U0010ffffziso-8859-15)r#r$)rr3r4rrr�test_backslashescape�sz&CodecCallbackTest.test_backslashescapecCspd}d}|j|jdd�|�d}|j|jdd�|�d}|j|jdd�|�dS)	Nua¬ሴ€耀􏿿s[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}\U0010ffffzlatin-1sDa�\N{ETHIOPIC SYLLABLE SEE}�\N{CJK UNIFIED IDEOGRAPH-8000}\U0010ffffziso-8859-15)r#r$)rr3r4rrr�test_nameescape�sz!CodecCallbackTest.test_nameescapecCsgdd�}tjd|�d}d}|j|jdd�|�d}|jt|jdd�dS)NcSs]t|t�std|��|j|j|jd�dkrSd|jdfS|�dS)Nzdon't know how to handle %r�s���)r'rr(r	r
)rrrr�relaxedutf8�s
#z>CodecCallbackTest.test_decoding_callbacks.<locals>.relaxedutf8ztest.relaxedutf8sab��cü����u	abcüzutf-8s����)r1r2r#�decode�assertRaisesr)rr@r3r4rrr�test_decoding_callbacks�sz)CodecCallbackTest.test_decoding_callbackscCs�tdd�dD��}d}d}|jtj|d|�d|�d}|jttj|d|�d	|td
�<d}d}|jtj|d
|�d|�d|td
�<|jttj|d
|�dS)Ncss4|]*}t|�td|j�d�fVqdS)r>rN)r+�bytes�upper)�.0r/rrr�	<genexpr>�sz7CodecCallbackTest.test_charmapencode.<locals>.<genexpr>Zabcdefgh�abcsAABBCC�strictrZabcAsXYZ�?ZabcDEFsAABBCCXYZXYZXYZ�replaceZXYZ)�dictr#r1�charmap_encoderB�UnicodeErrorr+r()r�charmapr3r4rrr�test_charmapencode�s##z$CodecCallbackTest.test_charmapencodecCs�tjjdtf���|jtdjd�tdjd��dkr�dd�}|j	djdd�d�|j	djdd	�d
�|j	djdd�d�t
jd
|�|j	djdd
�d�WdQRXdS)Nz*unicode_internal codec has been deprecatedszunicode-internalr?�cSs#t|t�std|��dS)Nzdon't know how to handle %r�r)rRr)r'rr()rrrr�handler_unicodeinternal�szMCodecCallbackTest.test_decodeunicodeinternal.<locals>.handler_unicodeinternal�ignorerKu�r:z\x00ztest.huiz)�test�support�check_warnings�DeprecationWarningrBrrArr$r#r1r2)rrSrrr�test_decodeunicodeinternal�s*
z,CodecCallbackTest.test_decodeunicodeinternalcCsdd�}tjd|�dd�}tjd|�d}|j|jdd�d	�|j|jdd�d
�|jdjdd�d
�|jdjdd�d�|jtjddtd�di�dd�|jdjdd�d�|jdjdd�d�dS)Ncs�t�j�j�}t�t�r@�fdd�|D�}n;t�t�rk�fdd�|D�}ntd���ddj|��jfS)Ncs'g|]}dt�j|��qS)z<%d>)r+r	)rFr)rrr�
<listcomp>�s	zFCodecCallbackTest.test_callbacks.<locals>.handler1.<locals>.<listcomp>cs!g|]}d�j|�qS)z<%d>)r	)rFr)rrrrZs	zdon't know how to handle %rz[%s]r)�ranger
rr'rrr(r-)r�rr.r)rr�handler1�sz2CodecCallbackTest.test_callbacks.<locals>.handler1z
test.handler1cset�t�std����fdd�t�j�j�D�}ddj|��jdfS)Nzdon't know how to handle %rcs!g|]}d�j|�qS)z<%d>)r	)rFr)rrrrZs	zFCodecCallbackTest.test_callbacks.<locals>.handler2.<locals>.<listcomp>z[%s]rr)r'rr(r[r
rr-)rr.r)rr�handler2s(z2CodecCallbackTest.test_callbacks.<locals>.handler2z
test.handler2s���rz[<129>][<128>][<255>]z[<129>][<128>]s\u3042\u3xxxzunicode-escapeuあ[<92><117><51>]xxxs\u3042\u3xxuあ[<92><117><51>]xxsabc�a�zrz
z[<98>][<99>]ugüßrksg[<252><223>]rkugüßs
g[<252><223>])r1r2r#rA�charmap_decoder+r$)rr]r^r%rrr�test_callbacks�s4
"z CodecCallbackTest.test_callbackscs�ddddddg}x+|D]#}tjd|tj|��qWd�|d	d
�|D�7}xl�fdd
�dD�D]Q}xHdD]@}x7|D]/}y|j||�Wq�tk
r�Yq�Xq�Wq�Wq}WdS)NrIrTrKr"r:r<ztest.i�cSsg|]}d|�qS)ztest.r)rF�errrrrrZ=s	z6CodecCallbackTest.test_longstrings.<locals>.<listcomp>csg|]}|��qSrr)rFr%)r.rrrZ>s	�x�あ�aär�latin-1�
iso-8859-1�iso-8859-15�utf-8�utf-7�utf-16�utf-32)rdrerf)rrgrhrirjrkrlrm)r1r2�lookup_errorr$rN)r�errorsrcZuni�encr)r.r�test_longstrings4s
! 


z"CodecCallbackTest.test_longstringsc
Cs%|jt||dd��|jt||dg�ddddddg}x�tt|��D]�}x�|D]�}t|�t||�kr�qog}xGtt|��D]3}||kr�|j|�q�|j||�q�W|jt||�qoWqbW||�}	|jt|	�|�dS)	Nrztoo muchZspamseggssspam�*g�?���)rBr(r[r�typer)r#�str)
r�exctype�args�msgZ	wrongargs�iZwrongargZcallargs�jrrrr�check_exceptionobjectargsGs
z+CodecCallbackTest.check_exceptionobjectargscCs�|jtdddddgd�|jtdddddgd�|jtdd	d
ddgd�|jtddd
ddgd
�|jtddd
ddgd�|jtddd
ddgd�dS)Nrugürkrr>�ouchz?'ascii' codec can't encode character '\xfc' in position 1: ouchrQz;'ascii' codec can't encode characters in position 1-3: ouchuüxrz?'ascii' codec can't encode character '\xfc' in position 0: ouchuĀxzA'ascii' codec can't encode character '\u0100' in position 0: ouchu￿xzA'ascii' codec can't encode character '\uffff' in position 0: ouchu𐀀xzE'ascii' codec can't encode character '\U00010000' in position 0: ouch)r{r)rrrr�test_unicodeencodeerror`s0z)CodecCallbackTest.test_unicodeencodeerrorcCsT|jtdtd�dddgd�|jtdtd�dddgd�dS)	Nrsg�rkrr>r|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{rr)rrrr�test_unicodedecodeerror�sz)CodecCallbackTest.test_unicodedecodeerrorcCs�|jtddddgd�|jtddddgd�|jtddddgd	�|jtd
dddgd�|jtddddgd
�dS)Nugürkrr>r|z4can't translate character '\xfc' in position 1: ouchugĀrkz6can't translate character '\u0100' in position 1: ouchug￿rkz6can't translate character '\uffff' in position 1: ouchug𐀀rkz:can't translate character '\U00010000' in position 1: ouchr~z0can't translate characters in position 1-2: ouch)r{r)rrrr�test_unicodetranslateerror�s(z,CodecCallbackTest.test_unicodetranslateerrorc	Cs�|jttjd�|jttjtd��|jttjtddddd��|jttjtdtd�ddd��|jttjtdddd��dS)Nrrr|ruあrrs�)	rBr(r1�
strict_errors�	Exceptionrrrr)rrrr�test_badandgoodstrictexceptions�s(
z1CodecCallbackTest.test_badandgoodstrictexceptionscCs�|jttjd�|jttjtd��|jtjtddddd��d	�|jtjtdtd�ddd��d
�|jtjt	dddd��d�dS)Nrrr|ruaあbrr>rsa�b)rr>)rr>)rr>)
rBr(r1�
ignore_errorsrNr#rrrr)rrrr�test_badandgoodignoreexceptions�s(
z1CodecCallbackTest.test_badandgoodignoreexceptionscCs�|jttjd�|jttjtd��|jttjt��|jttjt��|jtjtddddd��d
�|jtjt	dt
d�ddd��d�|jtjtdddd��d�dS)
Nrrr|ruaあbrr>rJsa�b��)rJr>)r�r>)r�r>)rBr(r1�replace_errorsrNrrr#rrrr)rrrr� test_badandgoodreplaceexceptions�s8


z2CodecCallbackTest.test_badandgoodreplaceexceptionscCs|jttjd�|jttjtd��|jttjtdtd�ddd��|jttjtdddd��d}|d7}djdd�|D��}|j	tjt
dd|dddt|�d��djdd�|D��dt|�f�dS)Nrrr|rs�rruあ�	�
�c�d�����'�'韆順�?B�@B����rcss|]}t|�VqdS)N)�chr)rFr/rrrrG(szOCodecCallbackTest.test_badandgoodxmlcharrefreplaceexceptions.<locals>.<genexpr>r_�bcss|]}d|VqdS)z&#%d;Nr)rFr/rrrrG.s)rrr�r�r�r�r�r�r�r�r�r�r�r�)r�r�)rBr(r1�xmlcharrefreplace_errorsrNrrrr-r#rr)rZcsr%rrr�*test_badandgoodxmlcharrefreplaceexceptionss2

z<CodecCallbackTest.test_badandgoodxmlcharrefreplaceexceptionscCs�|jttjd�|jttjtd��d&d'd(d)d*d+d,d-d.d/d0d1g}x�|D]�\}}|jd|���|jtjtdd|dddt|�d��|dt|�f�|jtjt	d|dddt|�d��|dt|�f�WdQRXqcWd2d3d4d5g}xm|D]e\}}|jd#|��D|jtjt
dtd|d$�dd%d��|d%f�WdQRXq=WdS)6Nrrr|�あ�\u3042�
�\x0ar_�\x61r?�\x00�ÿ�\xff�Ā�\u0100�￿�\uffff�𐀀�
\U00010000�􏿿�
\U0010ffff���\ud800���\udfff����\ud800\udfffrurr�r�a�
���rD�br>)r�r�)r�r�)r_r�)r?r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)rBr(r1�backslashreplace_errorsrN�subTestr#rrrrr)r�testsr%r\r�rrr�)test_badandgoodbackslashreplaceexceptions1sV
	"	z;CodecCallbackTest.test_badandgoodbackslashreplaceexceptionscCs%|jttjd�|jttjtd��|jttjtdtd�ddd��|jttjtdddd��ddddddd d!g}x{|D]s\}}|jd|��R|j	tjt
dd|dddt|�d��|dt|�f�WdQRXq�WdS)"Nrrr|rs�rr�あ�\N{HIRAGANA LETTER A}r?�\x00�ﯹ�W\N{ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM}�󠁿�\N{CANCEL TAG}�􏿿�
\U0010ffff���\ud800���\udfff����\ud800\udfffrur_r�)r�r�)r?r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)rBr(r1�namereplace_errorsrNrrrr�r#rr)rr�r%r\rrr�$test_badandgoodnamereplaceexceptionsks>
	z6CodecCallbackTest.test_badandgoodnamereplaceexceptionscCs2tjd�}|jt|d�|jt|td��|jt|tdddd��xMdD]E}|jd
|��*|jt|td|ddd��WdQRXqdW|j|tdddd
d��d�|jt	|t	dt
d�ddd��|j|t	dt
d�dd
d��d�dS)N�surrogateescaperrr|��rrr_����rurua�br>��r�sa�b)r_r�r�)r�r>)r�r>)r1rnrBr(rNrr�rr#rr)rZsurrogateescape_errorsr%rrr�(test_badandgoodsurrogateescapeexceptions�s>

$z:CodecCallbackTest.test_badandgoodsurrogateescapeexceptionscCsMtjd�}|jt|d�|jt|td��|jt|tdddd��x{d(D]s}|jd|��X|jt|t|d
ddd��|jt|t|d
j	|�ddd��WdQRXqdWxSd)D]K}|jd|��0|jt|td|dt
|�d��WdQRXq�Wd*d+d,d-d.d/d0d1d2d3d4d5d6d7d8g}x�|D]�\}}}}|jd|d|d$|���|j|t|d
|d%ddt
|�d��|dt
|�f�|j|t|td&|d|�d'�dd|d��|dd�d|f�WdQRXqkWdS)9N�
surrogatepassrrr|��rr�utf-8�utf-16le�utf-16be�utf-32le�utf-32be�encodingr_�����rur��r~��r>����rQ������������������������������rDr�r�r�)r�r�r�r�r�)r�r�r�)r�r�r�r~)r�r�r�r>)r�r�r�r>)r�r�r�rQ)r�r�r�rQ)r�r�r�r~)r�r�r�r>)r�r�r�r>)r�r�r�rQ)r�r�r�rQ)r�r�r�r~)r�r�r�r>)r�r�r�r>)r�r�r�rQ)r�r�r�rQ)
r1rnrBr(rNrr�rrr$rr#r)rZsurrogatepass_errorsrpr%r�r��nrrr�&test_badandgoodsurrogatepassexceptions�sp

-
*	!z8CodecCallbackTest.test_badandgoodsurrogatepassexceptionscs�d}d}x�|D]��tjd
�fdd��x'|D]}|jtd
j|d
�q<WxDd!D]<\}}tjj��|jt|j|d
�WdQRXqfWqWdS)"Nrr�foorr>r~r�latin-1�
iso-8859-1�iso-8859-15ztest.badhandlercs�S)Nr)rd)�resrr�<lambda>sz:CodecCallbackTest.test_badhandlerresults.<locals>.<lambda>uあ���utf-8�utf-7�+x-�unicode-internal��rr>r~�r�rr~�r�N�r��r�rr~�r�N�r�)	rrr�r�r�r�r�r�r�r�)rr�r�r��rr��r�r��r�r��r�r�)r�rrr)	r1r2rBr(r$rUrVrWrA)rZresultsZencsrprDr)r�r�test_badhandlerresults
s*

z(CodecCallbackTest.test_badhandlerresultscCs�|jtjtjd��|jtjtjd��|jtjtjd��|jtjtjd��|jtjtjd��|jtjtjd��dS)NrIrTr"r:r<)r#r1r�rnr�r�r�r�)rrrr�test_lookup)szCodecCallbackTest.test_lookupcCsJdd�}tjd|�x'dD]}|jtdj|d�q#WdS)	NcSs0t|t�rd|jfStd|��dS)Nu䉂zdon't know how to handle %r)r'rrr()rrrr�	unencrepl;s
z@CodecCallbackTest.test_unencodablereplacement.<locals>.unencreplztest.unencreplhandlerr�
iso-8859-1�iso-8859-15u䉂)rrr)r1r2rBrr$)rrrprrr�test_unencodablereplacement:s
z-CodecCallbackTest.test_unencodablereplacementcCs3|jttjd�|jttjdd�dS)Nrrz
test.dummy)rBr(r1r2)rrrr�test_badregistercallIsz&CodecCallbackTest.test_badregistercallcCs|jttj�dS)N)rBr(r1rn)rrrr�test_badlookupcallPsz$CodecCallbackTest.test_badlookupcallcCs|jttjd�dS)Nztest.unknown)rB�LookupErrorr1rn)rrrr�test_unknownhandlerUsz%CodecCallbackTest.test_unknownhandlerc
Cskd}djdd�|D��}tjdtj�x/dD]'}xdD]}|j||�qIWq<WdS)Nr�r��2r�������'�P�順� ��@BrcSsg|]}t|��qSr)r�)rFrdrrrrZ`s	z;CodecCallbackTest.test_xmlcharrefvalues.<locals>.<listcomp>�test.xmlcharrefreplacer�iso-8859-15r")
rr
r�rr�rrrrrrrr)rr)r"r)r-r1r2r�r$)r�vr%rprcrrr�test_xmlcharrefvaluesZs

z'CodecCallbackTest.test_xmlcharrefvaluescCs�|jtdjdd�dd�}tjd|�|jtdjdd�|jtdjdd�|jtd	jdd�|jtd
jdd�|jtdjdd�|jtdjd
d�dd�}tjd|�|jtdjdd�t�}tjd|j�d|_|j	djdd�d�d |_|j	djdd�d�d!|_|jt
djdd�d|_|j	djdd�d�d|_|j	djdd�d�d|_|jt
djdd�d|_|j	djd
d�d�Gdd�dt�}|jttj
ddddi�|jttj
dd|��|jttj
dddtjdi�dS)"Ns�rztest.unknowncSsdS)Nrrr)rrrr�baddecodereturn1lsz=CodecCallbackTest.test_decodehelper.<locals>.baddecodereturn1ztest.baddecodereturn1s\zunicode-escapes\x0s\x0ys
\Uffffeeees\uyyyyzraw-unicode-escapecSsdS)NrJ)rJNr)rrrr�baddecodereturn2vsz=CodecCallbackTest.test_decodehelper.<locals>.baddecodereturn2ztest.baddecodereturn2ztest.posreturnrs�0z<?>0r>z<?><?>r~z<?>�s\uyyyy0c@seZdZdd�ZdS)z.CodecCallbackTest.test_decodehelper.<locals>.DcSs
t�dS)N)�
ValueError)r�keyrrr�__getitem__�sz:CodecCallbackTest.test_decodehelper.<locals>.D.__getitem__N)r
rrr rrrr�D�sr!rI�rs������)rBrrAr1r2r(rrrr#�
IndexErrorrLrNrar�sys�
maxunicode)rrr�handlerr!rrr�test_decodehelperfs@								"z#CodecCallbackTest.test_decodehelpercCs|jtdjdd�dd�}tjd|�|jtdjdd�dd�}tjd	|�|jtdjdd	�t�}tjd
|j�d|_|j	djdd
�d
�d|_|j	djdd
�d�d|_|jt
djdd
�d|_|j	djdd
�d
�d|_|j	djdd
�d�d|_|jt
djdd
�d|_Gdd�dt�}xqdD]i}|jttj
d|ddi�|jttj
d||��|jttj
d|ddi�q�WdS) Nr�rztest.unknowncSsdS)Nrrr)rrrr�badencodereturn1�sz=CodecCallbackTest.test_encodehelper.<locals>.badencodereturn1ztest.badencodereturn1cSsdS)NrJ)rJNr)rrrr�badencodereturn2�sz=CodecCallbackTest.test_encodehelper.<locals>.badencodereturn2ztest.badencodereturn2�test.posreturnruÿ0s<?>0r>s<?><?>r~s<?>rc@seZdZdd�ZdS)z.CodecCallbackTest.test_encodehelper.<locals>.DcSs
t�dS)N)r)rrrrrr �sz:CodecCallbackTest.test_encodehelper.<locals>.D.__getitem__N)r
rrr rrrrr!�sr!rIrKr"r:r<r"i,rsr#r$)rIrKr"r:r<r,)rBrr$r1r2r(rrrr#r%rLrNrMr)rr*r+r(r!rcrrr�test_encodehelper�s8								
"z#CodecCallbackTest.test_encodehelpercCsYGdd�dt�}|jtdjdtjdi�|jtdjdfi�dS)Nc@seZdZdd�ZdS)z1CodecCallbackTest.test_translatehelper.<locals>.DcSs
t�dS)N)r)rrrrrr �sz=CodecCallbackTest.test_translatehelper.<locals>.D.__getitem__N)r
rrr rrrrr!�sr!r�r"r)rLrBr�	translater&r'r()rr!rrr�test_translatehelper�s#z&CodecCallbackTest.test_translatehelpercCsbtd�dtd�dtd�dtd�di}x%dD]}d
|}|j|�q=WdS)N�&z&amp;�<z&lt;�>z&gt;�"z&quot;rr�r���zabc<def>ghi)rr�r�r4)r+r.)rrOr��textrrr�test_bug828737�s

z CodecCallbackTest.test_bug828737cCsddddddddg}dd
�}tjd|�tjj��Cx;|D]3\}}|jt��|j|d�WdQRXqQWWdQRXdd�}tjd|�tjj��Cx;|D]3\}}|jt��|j|d�WdQRXq�WWdQRXdS)Nr���utf-7�++�utf-8�utf-16�utf-32�unicode-escape�\u123g�raw-unicode-escape�unicode-internalcSs0t|t�rd|_dStd|��dS)Nrr�䉂rzdon't know how to handle %r)rAr)r'rr	r()rrrr�	replacing�s	z?CodecCallbackTest.test_mutatingdecodehandler.<locals>.replacingztest.replacingcSs:t|t�r&d|jdd�<dStd|��dS)Nr�䉂rzdon't know how to handle %r)rCr)r'rr	r()rrrr�mutating
sz>CodecCallbackTest.test_mutatingdecodehandler.<locals>.mutatingz
test.mutating)rr7)r8r9)r:r7)r;r7)r<r7)r=r>)r?r>)r@r7)r1r2rUrVrWrBr(rA)rZbaddatarBr��datarDrrr�test_mutatingdecodehandler�s(	"z,CodecCallbackTest.test_mutatingdecodehandlercs:tjtjtjtjtjtjtjd�tjd�g}x�tt	t
fD]��G�fdd�dt�}xD|D]<}|jd|d���|j
t||��WdQRXq{WG�fdd�dt�}xX|D]P}|jd|d���/|j
t|f��||��WdQRXWdQRXq�WqRWdS)Nr�r�cseZdZ�ZdS)zACodecCallbackTest.test_fake_error_class.<locals>.FakeUnicodeErrorN)r
rr�	__class__r)�clsrr�FakeUnicodeError%srIr(Zerror_classcseZdZ�ZdS)zACodecCallbackTest.test_fake_error_class.<locals>.FakeUnicodeErrorN)r
rrrGr)rHrrrI*s)r1r�r�r�r�r�r�rnrrrrur�rBr(r�)rZhandlersrIr(r)rHr�test_fake_error_classs$
!
z'CodecCallbackTest.test_fake_error_classN)&r
rrr&r5r9r;r=rCrPrYrbrqr{r}rr�r�r�r�r�r�r�r�r�rrrr	r
rrr)r-r/r6rFrJrrrrr!DsF
$9 (%:.,H;6
)r!�__main__)r1Z
html.entitiesr*r&Ztest.supportrUr6Zunittest�warningsrrrrrrrrrrr ZTestCaser!r
�mainrrrr�<module>s(����