Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.9/test/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.9/test/__pycache__/test_codecs.cpython-39.opt-1.pyc

a

��g��@s
ddlZddlZddlZddlZddlZddlZddlZddlmZddlm	Z	zddl
Z
WneyrdZ
Yn0zddlZWney�dZdZ
Yn0e�ej�Z
dd�Zdd�ZGd	d
�d
e�ZGdd�d�ZGd
d�de�ZGdd�deej�ZGdd�deej�ZGdd�deej�ZGdd�deej�ZGdd�deej�ZGdd�deej�ZGdd�deej�ZGdd�deej�ZGdd �d ej�ZGd!d"�d"ej�Z Gd#d$�d$eej�Z!Gd%d&�d&ej�Z"gd'�Z#e#D] Z$e%e$�d(k�r�e&e'e$���q�Gd)d*�d*ej�Z(gd+�Z)Gd,d-�d-ej�Z*Gd.d/�d/ej�Z+Gd0d1�d1ej�Z,Gd2d3�d3ej�Z-Gd4d5�d5ej�Z.gd6�Z/e0ed7��r�e/�1d8�e0ed9��r�e/�1d:�d;gZ2Gd<d=�d=eje�Z3Gd>d?�d?ej�Z4Gd@dA�dAej�Z5GdBdC�dCej�Z6GdDdE�dEeej�Z7GdFdG�dGeej�Z8GdHdI�dIej�Z9GdJdK�dKej�Z:GdLdM�dMej�Z;gdN�Z<dOdPgdQggdR�dSgdTgdU�Z=zddl>Z>Wne�y�dZ>Yn0e<�1dV�dWdXge=dV<zddl?Z?Wne�y�Yn0e<�1dY�dZge=dY<Gd[d\�d\ej�Z@iZAd]d^�ZBe�CeB�zdd_lDmEZEWne�y@d`da�ZEYn0Gdbdc�dcej�ZFe�GejHddkde�Gdfdg�dgej��ZIGdhdi�diej�ZJGdjdk�dkej�ZKGdldm�dmej�ZLe�Me
dudn�Gdodp�dpej��ZNGdqdr�drej�ZOGdsdt�dtej�ZPeQduk�re�R�dS)v�N)�mock)�support���cs��fdd�}|S)Ncs���|�|t|�f�dS�N)�assertEqual�len)�input�expect��coder�self��,/usr/local/lib/python3.9/test/test_codecs.py�checkszcoding_checker.<locals>.checkr
)rrrr
r
r�coding_checkersrc
s�ddlm}m}m}ddlm}m�m�m�m	}d�d�d�G������fdd�dtj
�}||�|||��}|d	|d
�f�}|�}	||d|	�S)Nr)�POINTER�WINFUNCTYPE�WinDLL)�BOOL�BYTE�WCHAR�UINT�DWORD��ics@eZdZd�fd��fd��fd�fd�fd��fgZdS)z'is_code_page_present.<locals>.CPINFOEXWZMaxCharSizeZDefaultCharZLeadByteZUnicodeDefaultCharZCodePageZCodePageNameN)�__name__�
__module__�__qualname__Z_fields_r
�rZMAX_DEFAULTCHARZ
MAX_LEADBYTESZMAX_PATHrrr
r�	CPINFOEXW&s


�rZGetCPInfoExWZkernel32)�ctypesrrrZctypes.wintypesrrrrrZ	Structure)
�cprrrrrrZ	prototypeZGetCPInfoEx�infor
rr�is_code_page_presents r#c@s*eZdZdZdd�Zdd�Zd
dd�Zd	S)�QueuezF
    queue: write bytes at one end, read bytes from the other end
    cCs
||_dSr��_buffer)r�bufferr
r
r�__init__7szQueue.__init__cCs|j|7_dSrr%)r�charsr
r
r�write:szQueue.writercCsH|dkr"|j}|jdd�|_|S|jd|�}|j|d�|_|SdS�Nrr%)r�size�sr
r
r�read=sz
Queue.readN)r)rrr�__doc__r(r*r.r
r
r
rr$3sr$c@seZdZdd�Zdd�ZdS)�MixInCheckStateHandlingc	Cs�tt|�d�D]�}t�|��}|�|d|��}|��}|�|dt�|ds�|�|ddd�df�|�	|�|d��|�
||���t�|��}|�|�|�||d�d�}|�
|||�qdS)N�rT)�ranger�codecs�getincrementaldecoder�decode�getstate�assertIsInstance�int�setstate�
assertTruer�	r�encoding�ur-�i�dZpart1�stateZpart2r
r
r�check_state_handling_decodeIs
z3MixInCheckStateHandling.check_state_handling_decodec	Csztt|�d�D]d}t�|��}|�|d|��}|��}t�|��}|�|�|�||d�d�}|�|||�qdS)Nr1T)r2rr3�getincrementalencoder�encoder6r9rr;r
r
r�check_state_handling_encode_s
z3MixInCheckStateHandling.check_state_handling_encodeN)rrrrArDr
r
r
rr0Hsr0c@sXeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dZ
dd�Zdd�ZdS)�ReadTestc
	Cs�td�}t�|j�|�}d}t|�|j�|�D]0\}}|�t|g��||��7}|�	||�q.|�	|��d�|�	|j
d�t�|j��}d}t|�|j�|�D](\}}||�t|g��7}|�	||�q�|�	|�dd�d�|�	|j
d�|��d}t|�|j�|�D]*\}}||�t|g��7}|�	||��q|�	|�dd�d�|�	|j
d�|�|j�}	|�	|d�t�dd�|	D�|j���dS)N��TcSsg|]}t|g��qSr
��bytes��.0�cr
r
r�
<listcomp>�rFz*ReadTest.check_partial.<locals>.<listcomp>)r$r3�	getreaderr<�ziprCr*rIr.r�
bytebufferr4r5r'�reset�join�
iterdecode)
rrZpartialresults�q�r�resultrLZ
partialresultr?�encodedr
r
r�
check_partialks8�zReadTest.check_partialcs��fdd��d�fdd�	}d}d}d}��||d�|���||d	�|���||dd
�|���||d	d
�|�d}g}g}t|�D]8\}}	|�|ddd
|	�|�|ddd
�q���|d�|�d�d�|����|d�|�d	�d�|��td�D]�}
|D]�}	d
|
d|	d}�|�}td
�D]6}��|jdd�|
d|	���|jdd�d��q4�|�}td
�D]2}��|jd	d�|
d���|jd	d�d��q|�q�qdS)Ncs"t�|��j��}t��j�|�Sr��io�BytesIOrCr<r3rN)r�stream�rr
rrN�sz)ReadTest.test_readline.<locals>.getreaderTcs6�|�}g}|j||d�}|s q,|�|�qd�|�S)N)r,�keepends�|)�readline�appendrR)rr^r,�reader�lines�line)rNr
r�readalllines�sz,ReadTest.test_readline.<locals>.readalllinesufoo
bar
baz
spam
eggsufoo
|bar
|baz
|spam
|eggszfoo|bar|baz|spam|eggsF�
)�
�
�
u
��uあrGr_�P�azxxx
�r^�xxx)TN)r�	enumeraterarRr2r`)rrer-Z	sexpectedZsexpectednoendsZlineendsZvwZvwor>Zlineendr,rbr
)rNrr�
test_readline�sP


�
�
�
�zReadTest.test_readlinecs2gd�}d�|����fdd�}|�}��|��|d���|��d�|dd�����|��d�|�}��|��|d���|�d�|dd���|�d�d���|�d��t|d�dd�dd��|�}��|��|d���|��|dd����|��d�|�}��|jdd	d
��dd	����|���d	d����|��d�|�}��|jdd	d
��dd	����|�d��d	���|�d�d���|�d��dd��|�}��|jdd	d
��dd	����|��|dd	d�g|dd����|��d�dS)
N)zHumpty Dumpty sat on a wall,
z!Humpty Dumpty had a great fall.
z-All the king's horses and all the king's men
z#Couldn't put Humpty together again.rGcs"t����j��}t��j�|�SrrY)r\��datarr
rrN�sz8ReadTest.test_mixed_readline_and_read.<locals>.getreaderrr1�d�(�)r,r)��j)rRrr`r.r�	readlines)rrcrN�fr
rqr�test_mixed_readline_and_read�s:
.*z%ReadTest.test_mixed_readline_and_readcCsVgd�}t�d�|��|j��}t�|j�|�}t|�D]\}}|�|||�q8dS)N)=z:<%!--===================================================
z,    BLOG index page: show recent articles,
z7    today's articles, or articles of a specific date.
z>========================================================--%>
z!<%@inputencoding="ISO-8859-1"%>
z<%@pagetemplate=TEMPLATE.y%>
z$<%@import=import frog.util, frog%>
z!<%@import=import frog.objects%>
z9<%@import=from frog.storageerrors import StorageError%>
z<%
rhzimport logging
z+log=logging.getLogger("Snakelets.logger")
rhrhzuser=self.SessionCtx.user
z-storageEngine=self.SessionCtx.storageEngine
rhrhz-def readArticlesFromDate(date, count=None):
z2    entryids=storageEngine.listBlogEntries(date)
z%    entryids.reverse() # descending
z    if count:
z#        entryids=entryids[:count]
z
    try:
z\        return [ frog.objects.BlogEntry.load(storageEngine, date, Id) for Id in entryids ]
z    except StorageError,x:
z6        log.error("Error loading articles: "+str(x))
z,        self.abort("cannot load articles")
rhzshowdate=None
rhzarg=self.Request.getArg()
zif arg=="today":
z,    #-------------------- TODAY'S ARTICLES
z-    self.write("<h2>Today's articles</h2>")
z(    showdate = frog.util.isodatestr() 
�.    entries = readArticlesFromDate(showdate)
zelif arg=="active":
z4    #-------------------- ACTIVE ARTICLES redirect
z     self.Yredirect("active.y")
zelif arg=="login":
z/    #-------------------- LOGIN PAGE redirect
z    self.Yredirect("login.y")
zelif arg=="date":
z7    #-------------------- ARTICLES OF A SPECIFIC DATE
z2    showdate = self.Request.getParameter("date")
zV    self.write("<h2>Articles written on %s</h2>"% frog.util.mediumdatestr(showdate))
r{zelse:
z+    #-------------------- RECENT ARTICLES
z,    self.write("<h2>Recent articles</h2>")
z.    dates=storageEngine.listBlogEntryDates()
z    if dates:
z        entries=[]
z        SHOWAMOUNT=10
z         for showdate in dates:
zW            entries.extend( readArticlesFromDate(showdate, SHOWAMOUNT-len(entries)) )
z*            if len(entries)>=SHOWAMOUNT:
z                break
z                
rG)	rZr[rRrCr<r3rNror)rr-r\rbr>rdr
r
r�test_bug1175396s
?zReadTest.test_bug1175396cCsNtd�}t�|j�|�}t�|j�|�}|�d�|�|jdd�d�|�d�|�|jdd�d�|�|jdd�d�|�d	�|�|jdd�d	�|�|jdd�d�|�d�|�|jd
d�d�|�d�|�|jd
d�d�|�|jd
d�d�|�d	�|�|jd
d�d	�|�|jd
d�d�|�d
�|�|jd
d�d
�dS)NrFzfoo
Frm�fooz
bar
rGZbarZbazTrgzbar
zfoo
)r$r3�	getwriterr<rNr*rr`)rrT�writerrbr
r
r�test_readlinequeueFs*






zReadTest.test_readlinequeuecCs~d}d}d}|||�|j�}t�|�}t�|j�|�}|�|��|�|�|��|�|�|��|�|�|��d�dS)NzAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
z`offending line: ladfj askldfj klasdj fskla dfzaskdj fasklfj laskd fjasklfzzzzaa%whereisthis!!!
znext line.
rG�rCr<rZr[r3rNrr`)r�s1�s2�s3r-r\rbr
r
r�test_bug1098990_aas
zReadTest.test_bug1098990_ac	Cs�d}d}d}d}d}|||||�|j�}t�|�}t�|j�|�}|�|��|�|�|��|�|�|��|�|�|��|�|�|��|�|�|��d�dS)Nzaaaaaaaaaaaaaaaaaaaaaaaa
zbbbbbbbbbbbbbbbbbbbbbbbb
zstillokay:bbbbxx
zbroken!!!!badbad
zagainokay.
rGr�)	rr�r�r�Zs4Zs5r-r\rbr
r
r�test_bug1098990_bns
zReadTest.test_bug1098990_b��c	Cs�|�tdj|j�|�d�|jd�d�|j��|�d�|jd�d�|j��|�d�|jd�d�|j��|�d�|jd�d	�|j��|�d�|jd
�d�|j��|�d�|jd�d	�|j��|�d�|jd
�d
�|j��d�|j�}dD�]\}}|�|j�t|�d�}|�|j�t|�d�}|d|}|||j|}|�t|j|j�|�|�|jd�|�|�|�|jd�|�|�|�|jd�||�|�|�|jd
�||j	|�d�
dd�|jD��}|�|�|jd�|||�q�dS)Nu��[�]�backslashreplacez[\udc80]�namereplace�xmlcharrefreplacez
[&#56448;]�ignore�[]�replacez[?]�[��]z[??]rG))�𐿿�A)�[�])r�r����
surrogatepasscss|]}d|VqdS)�\x%02xNr
)rK�br
r
r�	<genexpr>�s�z0ReadTest.test_lone_surrogates.<locals>.<genexpr>)�assertRaises�UnicodeEncodeErrorrCr<rr�ill_formed_sequence�UnicodeDecodeErrorr5�ill_formed_sequence_replacerR)	rZbom�beforeZafterZbefore_sequenceZafter_sequenceZtest_stringZ
test_sequencer�r
r
r�test_lone_surrogates�sr
�
�
�
�
�
�
���
�������
�
�zReadTest.test_lone_surrogatescCs�d�|jd�}tdt|��D]J}t�|j�d�}|�|�|d|��d�|�|�||d�d�d�qd�|jd�}tdt|��D]H}t�|j�d�}|�|�|d|��d�|�|�||d��d�q�dS)Nu�r�r1rGTu�)rCr<r2rr3r4rr5)rrrr>�decr
r
r�test_incremental_surrogatepass�sz'ReadTest.test_incremental_surrogatepassN)
rrrrXrprzr|r�r�r�r�r�r�r
r
r
rrEjs+;0E
,rEc@sdeZdZdZejdkrdZndZdZdZdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Zdd�ZdS)�	UTF32Test�utf-32�little����܀s$��spamspams$��spamspamcCs�t�|j�\}}}}t��}||�}|�d�|�d�|��}|�||jkpV||j	k�t�|�}||�}|�
|��d�dS�N�spam�spamspam�r3�lookupr<rZr[r*�getvaluer:�spamle�spamberr.�r�_rbrr-ryr?r
r
r�test_only_one_bom�s


zUTF32Test.test_only_one_bomcCsTt�d�}t�|j�|�}|�t|j�t�d�}t�|j�|�}|�t|j�dS)N�����s���������rZr[r3rNr<r��UnicodeErrorr.�rr-ryr
r
r�test_badbom�s

zUTF32Test.test_badbomcCs|�dgd��dS)N�ÿĀ￿𐀀)rGrGrGrGrGrGrG�r�r�r��ÿr�r�r��ÿĀr�r�r��ÿĀ￿r�r�r�r��rXr]r
r
r�test_partial�s�zUTF32Test.test_partialcCs0|�dt�ddd��|�dt�ddd��dS�N)r�r1�r�T)rGr1r��rr3�
utf_32_decoder]r
r
r�
test_handlerss��zUTF32Test.test_handlerscCs|�ttjddd�dS�N���strictT)r�r�r3r�r]r
r
r�test_errors	s
�zUTF32Test.test_errorscCs(|�|jd|j�|�|jd|j�dS�Nr��rAr<r�r�r]r
r
r�test_decoder_state
s��zUTF32Test.test_decoder_statecCs8d}|�dt�|�d�d}|�dt�|�d�dS)Ns���𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀rs��r�)rZ
encoded_leZ
encoded_ber
r
r�test_issue8941s��zUTF32Test.test_issue8941N)rrrr<�sys�	byteorderr�r�r�r�r�r�r�r�r�r�r
r
r
rr��s
	r�c@s4eZdZdZdZdd�Zdd�Zdd�Zd	d
�ZdS)�UTF32LETest�	utf-32-ler�cCs|�dgd��dS�Nr�)rGrGrGr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r]r
r
rr�"s�zUTF32LETest.test_partialcCs|�d�|j�d�dS)N�𐈃s�rrCr<r]r
r
r�test_simple=szUTF32LETest.test_simplecCs|�ttjddd�dSr�)r�r�r3�utf_32_le_decoder]r
r
rr�@s
�zUTF32LETest.test_errorscCsd}|�dt�|�d�dS)Nsr�r)rr3r��rrWr
r
rr�Ds�zUTF32LETest.test_issue8941N�	rrrr<r�r�r�r�r�r
r
r
rr�sr�c@s4eZdZdZdZdd�Zdd�Zdd�Zd	d
�ZdS)�UTF32BETest�	utf-32-ber�cCs|�dgd��dSr�r�r]r
r
rr�Ps�zUTF32BETest.test_partialcCs|�d�|j�d�dS)Nr�sr�r]r
r
rr�kszUTF32BETest.test_simplecCs|�ttjddd�dSr�)r�r�r3�utf_32_be_decoder]r
r
rr�ns
�zUTF32BETest.test_errorscCsd}|�dt�|�d�dS)Nsr�r)rr3r�r�r
r
rr�rs�zUTF32BETest.test_issue8941Nr�r
r
r
rr�Lsr�c@sdeZdZdZejdkrdZndZdZdZdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Zdd�ZdS)�	UTF16Test�utf-16r�����܀s��spamspams��spamspamcCs�t�|j�\}}}}t��}||�}|�d�|�d�|��}|�||jkpV||j	k�t�|�}||�}|�
|��d�dSr�r�r�r
r
rr��s


zUTF16Test.test_only_one_bomcCsTt�d�}t�|j�|�}|�t|j�t�d�}t�|j�|�}|�t|j�dS)Ns��r�r�r�r
r
rr��s

zUTF16Test.test_badbomcCs|�dgd��dS)Nr�)rGrGrGr�r�r�r�r�r�r�r�r�r�r�r�r]r
r
rr��s�zUTF16Test.test_partialcCs0|�dt�ddd��|�dt�ddd��dSr�)rr3�
utf_16_decoder]r
r
rr��s��zUTF16Test.test_handlerscCs|�ttjddd�dSr�)r�r�r3r�r]r
r
rr��s
�zUTF16Test.test_errorscCs(|�|jd|j�|�|jd|j�dSr�r�r]r
r
rr��s��zUTF16Test.test_decoder_statecCs�d}|�|j�}|�tjtj�ttjd��}|�|�Wd�n1sL0Yt�dt	f��$t
jtjd|jd�}Wd�n1s�0Y|� |�|��|�Wd�n1s�0YdS)NzHello
world
�wbrG�U�r<)
rCr<�
addCleanupr�unlink�TESTFN�openr*Zcheck_warnings�DeprecationWarningr3rr.)rr�r-�fprbr
r
r�test_bug691291�s(2zUTF16Test.test_bug691291N)rrrr<r�r�r�r�r�r�r�r�r�r�r�r�r
r
r
rr�zs
	r�c@s,eZdZdZdZdd�Zdd�Zdd�Zd	S)
�UTF16LETest�	utf-16-ler�cCs|�dgd��dS�Nr�)rGr�r�r�r�r�r�r�r�r�r�r�r�r]r
r
rr��s�zUTF16LETest.test_partialcCsBgd�}|D]0\}}|�ttj|dd�|�|�dd�|�qdS)N)�r�r�)sAZ�A�)s	ABCDZ�ABCD�)s�r�)s�Ar�)s�A��A)s�Ar�r�Tzutf-16ler�)r�r�r3�utf_16_le_decoderr5�r�tests�raw�expectedr
r
rr��s	
�zUTF16LETest.test_errorscCs,|�d�|j�d�|�d�|j�d�dS)Nr�s�ީrrCr<r5r]r
r
r�test_nonbmp�s��zUTF16LETest.test_nonbmpN�rrrr<r�r�r�r�r
r
r
rr��s
r�c@s,eZdZdZdZdd�Zdd�Zdd�Zd	S)
�UTF16BETest�	utf-16-ber�cCs|�dgd��dSr�r�r]r
r
rr�s�zUTF16BETest.test_partialcCsBgd�}|D]0\}}|�ttj|dd�|�|�dd�|�qdS)N)r�)sA�r�)s	ABCDZr�)s�r�)s��r�)s�Ar�)s�Ar�r�Tzutf-16ber�)r�r�r3�utf_16_be_decoderr5r�r
r
rr�s	
�zUTF16BETest.test_errorscCs,|�d�|j�d�|�d�|j�d�dS)Nr�s��r�r]r
r
rr�"s��zUTF16BETest.test_nonbmpNr�r
r
r
rr��s
r�csTeZdZdZdZdZdZdd�Zdd�Zd	d
�Z	�fdd�Z
d
d�Zdd�Z�Z
S)�UTF8Test�utf-8s�u	���rFcCs|�dgd��dS)N�ÿ߿ࠀ￿𐀀)r�r�r�r��ÿ߿r�r��ÿ߿ࠀr�r��ÿ߿ࠀ￿rrrr�r�r]r
r
rr�.s�zUTF8Test.test_partialcCs d}|�|j||�|j��dS)Nu€ÿĀ߿ࠀ￿􏿿)rAr<rC)rr=r
r
rr�Ds�zUTF8Test.test_decoder_statec	CsZdD]P\}}}|j|||d��&|�|�|j|�|�Wd�q1sJ0YqdS)N�)�[��]r�r�)rr�u[��])r�surrogateescape�[��])rr�z
[\x80\xff]�rr�
error_handlerr�)�subTestrr5r<�rrrrr�r
r
r�test_decode_errorIs��zUTF8Test.test_decode_errorcs�t���|�d�|jd�|jd�|�t��}d�|jd�Wd�n1sT0Y|j}|�|j	|j
|j�d�dS)Nr�rs[�]u[���]u��)�superr�rrCr<�BOMr�r��	exception�object�start�end)r�cm�exc��	__class__r
rr�Us
�,zUTF8Test.test_lone_surrogatescCs|�d�|jd�|jd�|�d�|jd�|jd�|�d�|jd�|jd�|�d�|jd�d�|�d�|jd�d�|�t�d��|�t	��d�|jd�Wd�n1s�0Y|�t	��d	�|jd�Wd�n1s�0YdS)
Nu	abc�defr�s	abc�defu𐿿�s𐿿�r�s[��]sabc�sabc�z)
rrCr<rr5r:r3�lookup_errorr�r�r]r
r
r�test_surrogatepass_handleras(�����,z#UTF8Test.test_surrogatepass_handlerc	Cs�gd�}dD]}dD]}|�||�qq|�d�|D]N}|j|d��.t�|j��}|�t|j|�Wd�q81s|0Yq8dS)N)������������r�)������s���s���s�s���s�s�)�r)s�s�s�s�s�s�s�rr)	ra�extendrr3r4r<r�r�r5)rZcases�prefix�suffixrrr�r
r
r�test_incremental_errorsts
z UTF8Test.test_incremental_errors)rrrr<r�r�rr�r�r	r�rr'�
__classcell__r
r
rrr�(sr�c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�UTF7Test�utf-7cCsd}|�|�|j�|�d��|�|�d��|j�|�d}|�|�|j�|�d��|�|�d��|j�|�|�d�|j�d�|�d�|j�d�d}|�|�|j�|�d��|�|�d��|j�|�d�ttttd�����t||d	|���}|�|�|j�d
�dS)NzGABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'(),-./:?�asciiz !"#$%&*;<=>@[]^_`{|}za+bsa+-bz 	

rG��+sX+AAAAAQACAAMABAAFAAYABwAIAAsADAAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwBcAH4Afw-)	rrCr<r5rR�sorted�setrIr2)rZset_dZset_o�wsZother_asciir
r
r�
test_ascii�s"��zUTF7Test.test_asciicCs|�dgd��dS)N�a+-bc€dĀe𐀀f) rlrl�a+za+-�a+-br4r4r4r4za+-b�a+-bcr5r5r5r5ua+-bc€�	a+-bc€dr6r6r6r6ua+-bc€dĀ�a+-bc€dĀer7r7r7r7r7r7r7ua+-bc€dĀe𐀀r2r�r]r
r
rr��s�zUTF7Test.test_partialc	Csngd�}|D]\\}}|j|d��8|�ttj|dd�|�|�dd�|�Wd�q1s^0YqdS)N))s�bu�b)sa�b�a�b)sa��bua��b)sa+IK�a�)sa+IK-br8)sa+IK,br8)sa+IKx�a€�)sa+IKx-b�a€�b)sa+IKwgrr:)s	a+IKwgr-br;)sa+IKwgr,r:)s
a+IKwgr,-bu	a€�-b)sa+IKwgrB�
a€€�)s
a+IKwgrB-b�a€€�b)s
a+/,+IKw-b�a�€b)sa+//,+IKw-br>)sa+///,+IKw-b�a￿�€b)s
a+////,+IKw-br?)sa+IKw-b�ua€b�)sa+IKw�br;)sa+@br8�r�r�Tr*r�)rr�r�r3�utf_7_decoderr5r�r
r
rr��s
�zUTF7Test.test_errorscCs�|�d�|j�d�|�d�|j�d�|�d�|j�d�|�d�|j�d�|�d�|j�d�|�d�|j�d�|�d�|j�d�|�d�|j�d	�|�d	�|j�d�|�d
�|j�d�dS)Nu𐒠s+2AHcoA-u��s+2AHcoAu€𐒠s
+IKzYAdyg-s	+IKzYAdygu
€€𐒠s
+IKwgrNgB3KA-s+IKwgrNgB3KAr�r]r
r
rr��s ���zUTF7Test.test_nonbmpc	CsZgd�}|D]H\}}|j|d��$|�|�dd�|�Wd�q1sJ0YqdS)N)
)sa+2AE-bua�b)sa+2AE�br8)sa+2AEr9)sa+2AEA-br8)sa+2AH-br8)s
a+IKzYAQ-bua€�b)s
a+IKzYAQ�br;)sa+IKzYAQA-br;)s
a+IKzYAd-br;)sa+IKwgrNgB-bua€€�b)sa+IKwgrNgB�br=)s
a+IKwgrNgBr<)s
a+IKwgrNgBA-br=r@r*r��rrr5r�r
r
rr��szUTF7Test.test_lone_surrogatesN)	rrrr<r1r�r�r�r�r
r
r
rr)�s'r)c@seZdZdd�Zdd�ZdS)�UTF16ExTestcCs|�ttjdddd�dS)Nr�r�rT)r�r�r3�utf_16_ex_decoder]r
r
rr�szUTF16ExTest.test_errorscCs|�ttj�dSr)r��	TypeErrorr3rDr]r
r
r�
test_bad_argsszUTF16ExTest.test_bad_argsN)rrrr�rFr
r
r
rrCsrCc@s$eZdZdd�Zdd�Zdd�ZdS)�ReadBufferTestcCs&ddl}|�t�|�dd��d�dS)Nrr��spam)rH�)�arrayrr3�readbuffer_encode)rrJr
r
r�
test_arrays
�zReadBufferTest.test_arraycCs|�t�d�d�dS)NrG�rFr)rr3rKr]r
r
r�
test_emptyszReadBufferTest.test_emptycCs"|�ttj�|�ttjd�dS�N�*)r�rEr3rKr]r
r
rrF szReadBufferTest.test_bad_argsN)rrrrLrNrFr
r
r
rrGsrGc@s>eZdZdZejZdd�Zdd�Zdd�Z	dd	�Z
d
d�ZdS)
�UTF8SigTest�	utf-8-sigcCs|�dgd��dS)N�ÿ߿ࠀ￿𐀀)rGrGrGrGrGu�rT�ÿrU�ÿ߿rVrV�ÿ߿ࠀrWrW�ÿ߿ࠀ￿rXrXrXrSr�r]r
r
rr�(s�zUTF8SigTest.test_partialcCs|�tdd�d�dS)N�rRrG�r�strr]r
r
r�test_bug1601501DszUTF8SigTest.test_bug1601501cCs,t�d��}d}|�|�|�d��|�dS)NrRr�)r3r4rr5rC)rr?r-r
r
r�test_bomHszUTF8SigTest.test_bomc	Cs�d}tjd}t�d�}dgttdd��gd�D]\}|t�|��}t��}|durb|�|�}n|��}|spq||�	|�qN|�
�}|�||�q4dS�NuABC¡∀XYZsABC¡∀XYZrRr1�)�@r,�ii)r3�BOM_UTF8rN�listr2rZr[�StringIOr.r*r�r�	rZ	unistringZ
bytestringrb�sizehintZistreamZostreamrrZgotr
r
r�test_stream_bomMs 

�zUTF8SigTest.test_stream_bomc	Cs�d}d}t�d�}dgttdd��gd�D]\}|t�|��}t��}|dur\|�|�}n|��}|sjqv|�|�qH|�	�}|�
||�q.dSr^)r3rNrcr2rZr[rdr.r*r�rrer
r
r�test_stream_barecs 
�zUTF8SigTest.test_stream_bareN)rrrr<r3rbrr�r\r]rgrhr
r
r
rrQ$srQc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�EscapeDecodeTestcCs*|�t�d�d�|�t�t��d�dS)NrFrM)rr3�
escape_decode�	bytearrayr]r
r
rrN{szEscapeDecodeTest.test_emptycCsFtj}td�D]2}t|g�}|dkr|�||d�|ddf�qdS)Nra�\�0r)r3rjr2rIr�rr5r�r
r
r�test_raws

zEscapeDecodeTest.test_rawc	Cs&tj}t||�}|dd�|dd�|dd�|dd�|d	d
�|dd�|d
d�|dd�|dd�|dd�|dd�|dd
�|dd�|dd�|dd�|dd�|d d!�|d"d�|d#d�|d$d!�td%d&�D]�}t|g�}|d'v�r8|�t��"|d(|d(|�Wd�n1�s.0Y|�t��*|d(|��d(|���Wd�q�1�st0Yq�|�t��|d)d)�Wd�n1�s�0Y|�t��|d*d*�Wd�n1�s�0Y|�t��|d+d+�Wd�n1�s0YdS),N�[\
]�[]�[\"]s["]�[\']s[']�[\\]s[\]�[\a]s[]�[\b]s[]�[\t]s[	]�[\n]s[
]�[\v]s[]�[\f]s[]�[\r]s[
]�[\7]�[\78]s[8]�[\41]s[!]�[\418]s[!8]�[\101]s[A]�[\1010]s[A0]s[\501]�[\x41]�[\x410]�a�{sabfnrtvxrl�\8�\9�\�)r3rjrr2rI�assertWarnsr��upper�rr5rr>r�r
r
r�test_escape�sF






















2<**zEscapeDecodeTest.test_escapecCs�tj}|�t|d�|�t|d�|�|dd�d�|�|dd�d�|�t|d�|�t|d	�|�|d
d�d�|�|d
d�d�dS)
Ns\xs[\x]s[\x]\xr�)rqrvr�)�[?]?rvs\x0s[\x0]s[\x0]\x0)rq�)r�r�)r3rjr��
ValueErrorr)rr5r
r
rr��szEscapeDecodeTest.test_errorsN)rrrrNror�r�r
r
r
rrizs%ri))u"ليهمابتكلموشعربي؟segbpdaj6bu4bxfgehfvwxn)u他们为什么不说中文sihqwcrb4cv8a8dqg056pqjye)u他們爲什麽不說中文sihqwctvzc91f659drss3x8bo0yb)uPročprostěnemluvíčeskysProprostnemluvesky-uyb24dma41a)u,למההםפשוטלאמדבריםעבריתs4dbcagdahymbxekheh6e0a7fei0b)uZयहलोगहिन्दीक्योंनहींबोलसकतेहैंs,i1baa7eci9glrd9b2ae1bj0hfcgg6iyaf8o0a1dig0cd)u6なぜみんな日本語を話してくれないのかs&n8jok5ay5dzabd5bym9f0cm5685rrjetr6pdxa)uH세계의모든사람들이한국어를이해한다면얼마나좋을까sE989aomsvi5e83db1d2a355cv1e0vak1dwrv93d5xbh15a0dt30a5jpsd879ccm6fea98c)u8почемужеонинеговорятпорусскиs b1abfaaepdrnnbgefbaDotcwatmq2g4l)u*PorquénopuedensimplementehablarenEspañols-PorqunopuedensimplementehablarenEspaol-fmd56a)u-TạisaohọkhôngthểchỉnóitiếngViệts,TisaohkhngthchnitingVit-kjcr8268qyxafd2f1b9g)u3年B組金八先生s3B-ww4c5e180e575a65lsy2b)u"安室奈美恵-with-SUPER-MONKEYSs(-with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n)u'Hello-Another-Way-それぞれの場所s(Hello-Another-Way--fc4qua05auwb3674vfr0b)uひとつ屋根の下2s2-u9tlzr9756bt3uc0v)uMajiでKoiする5秒前sMajiKoi5-783gue6qz075azm5e)uパフィーdeルンバsde-jg4avhby1noc0d)uそのスピードでsd9juau41awczczp)z-> $1.00 <-s-> $1.00 <--rc@s$eZdZdd�Zdd�Zdd�ZdS)�PunycodeTestcCs8tD].\}}|�t|�d�d���t|d����qdS�N�punycoder+)�punycode_testcasesrr[rC�lower�rZuni�punyr
r
r�test_encode%s
�zPunycodeTest.test_encodecCsFtD]<\}}|�||�d��|�d��d�}|�||�d��qdSr�)r�rr5rCr�r
r
r�test_decode1szPunycodeTest.test_decodec	Cs�ddt�fdg}|D]j\}}}|j||d��Bt|t�rL|�t|jd|�n|�|�d|�|�Wd�q1st0YqdS)N�xn--w&r�)r�r�zxn-)r��errorsr�)r�r�
isinstance�	Exceptionr�r5r)rZ	testcasesr�r�r�r
r
r�test_decode_invalid7s
�
z PunycodeTest.test_decode_invalidN)rrrr�r�r�r
r
r
rr�$sr�)-)s%foo­͏᠆᠋bar​⁠baz︀︈️s	foobarbaz)sCAFEscafe)sßsss)sİsi̇)sŃͺsń ι�NN)sǰ ªsǰ a)sᾷsᾶι)�ǰr�)�ΐr�)�ΰr�)�ẖr�)�ὖr�)� r�)s r�)s N)s r�)s​rF)s r�)�r�)s…N)s᠎N)rYrF)s𝅵N)sN)s󱈴N)s􏈴N)s򏿾N)s􏿿N)s�N)s�N)s⿵N)śś)s‎N)s‪N)s󠀁N)s󠁂N)sfoo־barN)s	fooﵐbarN)s	fooﹶbars	foo َbar)sا1N)�ا1بr�r�)sX­ßİ℡ǰ ªΰ sxssi̇telǰ aΰ )sXß㌖İ℡⒟㌀s*xssキロメートルi̇tel(d)アパートc@seZdZdd�ZdS)�NameprepTestcCs�ddlm}tt�D]�\}\}}|dur*qt|dd�}|durN|�t||�qt|dd�}z|�||�|�Wqty�}z&t	�
d|dt|�f��WYd}~qd}~00qdS)Nr)�nameprepr�r�z
Test 3.%d: %sr1)Zencodings.idnar�ro�nameprep_testsr[r�r�rr�rZ
TestFailed)rr��posZorigZprepped�er
r
r�
test_nameprep�szNameprepTest.test_nameprepN)rrrr�r
r
r
rr��sr�c@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�
IDNACodecTestcCsL|�tdd�d�|�tdd�d�|�tdd�d�|�tdd�d	�dS)
N�
python.org�idna�
python.org�python.org.�python.org.�xn--pythn-mua.org�pythön.org�xn--pythn-mua.org.�pythön.org.rZr]r
r
r�test_builtin_decode�sz!IDNACodecTest.test_builtin_decodecCsL|�d�d�d�|�d�d�d�|�d�d�d�|�d�d�d	�dS)
Nr�r�r�r�r�r�r�r�r��rrCr]r
r
r�test_builtin_encode�sz!IDNACodecTest.test_builtin_encodecCsp|�td��d�d�Wd�n1s,0Y|�td��d�d�Wd�n1sb0YdS)Nztoo longsTxn--016caaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar�sNxn--016caaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)�assertRaisesRegexr�r5r]r
r
r� test_builtin_decode_length_limit�s(z.IDNACodecTest.test_builtin_decode_length_limitcCs2t�d�t�d��}|�d�|�|��d�dS)Nr��abc�rG)r3rNrZr[r.r)rrUr
r
r�test_streams
zIDNACodecTest.test_streamcCs<|�d�t�dd�dD�d��d�|�d�t�dd�dD�d��d	�|�d�t�d
d�dD�d��d�|�d�t�d
d�dD�d��d�t�d��}|�|�d�d�|�|�d�d�|�|�d�d�|�|�dd�d�|��|�|�d�d�|�|�d�d�|�|�d�d�|�|�dd�d�dS)NrGcss|]}t|g�VqdSrrHrJr
r
rr�rFz8IDNACodecTest.test_incremental_decode.<locals>.<genexpr>r�r�r�css|]}t|g�VqdSrrHrJr
r
rr�rFr�r�css|]}t|g�VqdSrrHrJr
r
rr�rFr�r�css|]}t|g�VqdSrrHrJr
r
rr�rFsxn--xams	ple-9ta.ou	äxample.srgrFTZorgsrg.zorg.)rrRr3rSr4r5rQ)r�decoderr
r
r�test_incremental_decode
s4����z%IDNACodecTest.test_incremental_decodecCs�|�d�t�dd��d�|�d�t�dd��d�|�d�t�dd��d�|�d�t�dd��d�t�d��}|�|�d	�d�|�|�d
�d�|�|�dd
�d�|��|�|�d	�d�|�|�d�d�|�|�dd
�d�dS)NrFr�r�r�r�r�r�r�uäxz	ample.orgsxn--xample-9ta.rGTsorgz
ample.org.sxn--xample-9ta.org.)rrRr3�
iterencoderBrCrQ)r�encoderr
r
r�test_incremental_encode(s0����z%IDNACodecTest.test_incremental_encodecCsJd�dd�d�dd�dD](}|�tdjd|�|�tdjd|�qdS)z$Only supports "strict" error handlerr�r�r�r�)r�r�r�rN)rCr5r�r��rr�r
r
rr�Ds�zIDNACodecTest.test_errorsN)
rrrr�r�r�r�r�r�r�r
r
r
rr��sr�c@steZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�CodecsModuleTestcCsx|�t�dd�d�|�ttj�|�t�d�d�|�ttjdd�|�tjddd�d�|�tjd	dd
d�d�dS)
N���latin-1�äöür��abcr�r+��objr<�[�]r��r�r�)rr3r5r�rEr�r]r
r
rr�Qs���zCodecsModuleTest.test_decodecCs�|�t�dd�d�|�ttj�|�ttjdd�|�t�d�d�|�ttjdd	�|�tjddd
�d�|�tjdd	dd
�d�dS)Nr�r�r�r}�__spam__r�r�uÿffr+r��[ÿ]r�r�rq)rr3rCr�rE�LookupErrorr�r]r
r
rr�^s���zCodecsModuleTest.test_encodecCs"|�ttj�|�ttjd�dSrO)r�rEr3�registerr]r
r
r�
test_registerlszCodecsModuleTest.test_registercCs2|�ttj�|�ttjd�|�ttjd�dS)Nr�� )r�rEr3r�r�r]r
r
r�test_lookuppszCodecsModuleTest.test_lookupcCs"|�ttj�|�ttjd�dS�Nr�)r�rEr3�
getencoderr�r]r
r
r�test_getencoderusz CodecsModuleTest.test_getencodercCs"|�ttj�|�ttjd�dSr�)r�rEr3�
getdecoderr�r]r
r
r�test_getdecoderysz CodecsModuleTest.test_getdecodercCs"|�ttj�|�ttjd�dSr�)r�rEr3rNr�r]r
r
r�test_getreader}szCodecsModuleTest.test_getreadercCs"|�ttj�|�ttjd�dSr�)r�rEr3r~r�r]r
r
r�test_getwriter�szCodecsModuleTest.test_getwritercCslt�tj�}|�tjtj|�zt�tjd�WntjyN|�d�Yn0t�d�}|�|j	d�dS)N�tr_TRztest needs Turkish locale�ASCIIr+)
�locale�	setlocale�LC_CTYPEr��Error�skipTestr3r�r�name)rZ	oldlocalerLr
r
r�test_lookup_issue1813�s
z&CodecsModuleTest.test_lookup_issue1813cCs,d}|�|tj�tjD]}tt|�qdS)N),rCr5r��	CodecInfo�Codec�IncrementalEncoder�IncrementalDecoder�StreamReader�StreamWriterr�r�r�rBr4rNr~�register_errorr�
strict_errors�replace_errors�
ignore_errors�xmlcharrefreplace_errors�backslashreplace_errors�namereplace_errorsr��EncodedFiler�rSr�BOM_BE�BOM_LErb�	BOM_UTF16�BOM_UTF16_BE�BOM_UTF16_LE�	BOM_UTF32�BOM_UTF32_BE�BOM_UTF32_LE�BOM32_BE�BOM32_LE�BOM64_BE�BOM64_LE�StreamReaderWriter�
StreamRecoder)ZassertCountEqualr3�__all__�getattr)rZapir
r
r�test_all�s
zCodecsModuleTest.test_allc
Cs�|�tjtj�dD]l}|�|��Nt�tj|d��}|�|tj�Wd�n1sX0YWd�q1sv0YqdS)N)�wrUzr+�w+rlr3r+)	r�rr�r�rr3r�r7r�)r�mode�filer
r
r�	test_open�s�zCodecsModuleTest.test_opencCs~|�ttjdd�|�ttjdd�|�ttjdd�|�ttjdd�dD],}|�ttjdd|�|�ttjdd|�qLdS)Nr�Z	undefinedr�rGrF)r�r�r�r�)r�r�r3rCr5r�r
r
r�test_undefined�s
�
�zCodecsModuleTest.test_undefinedc	Cs~t��}t�d|��V}|�t�� t�tjdd�Wd�n1sF0Y|�j	�
�Wd�n1sp0YdS)Nz
builtins.openZwtzinvalid-encoding)r�	mock_open�patchr�r�r3r�rr��closeZ
assert_called)rr
rr
r
r�'test_file_closes_if_lookup_error_raised�s
.z8CodecsModuleTest.test_file_closes_if_lookup_error_raisedN)rrrr�r�r�r�r�r�r�r�r�rrr	r
r
r
r
rr�Os

r�c@seZdZdd�Zdd�ZdS)�StreamReaderTestcCst�d�|_t�d�|_dS)Nr��한
글)r3rNrbrZr[r\r]r
r
r�setUp�szStreamReaderTest.setUpcCs$|�|j�}|�|��ddg�dS)Nu한
u글)rbr\rrx)rryr
r
r�test_readlines�szStreamReaderTest.test_readlinesN)rrrrrr
r
r
rr�src@seZdZdd�ZdS)�EncodedFileTestcCs\t�d�}t�|dd�}|�|��d�t��}t�|dd�}|�d�|�|��d�dS)Nrr�r�s\�
�r��ü��)rZr[r3r�rr.r*r��rryZefr
r
r�
test_basic�s

zEncodedFileTest.test_basicN)rrrrr
r
r
rr�sr)er+�big5�	big5hkscs�charmap�cp037Zcp1006�cp1026�cp1125�cp1140�cp1250�cp1251�cp1252�cp1253�cp1254�cp1255�cp1256�cp1257�cp1258�cp424�cp437�cp500Zcp720Zcp737�cp775�cp850�cp852�cp855Zcp856�cp857�cp858�cp860�cp861�cp862�cp863�cp864�cp865�cp866�cp869Zcp874Zcp875�cp932�cp949�cp950�euc_jis_2004�euc_jisx0213�euc_jp�euc_kr�gb18030�gb2312�gbk�	hp_roman8�hzr��
iso2022_jp�iso2022_jp_1�iso2022_jp_2�iso2022_jp_2004�iso2022_jp_3�iso2022_jp_ext�
iso2022_kr�	iso8859_1�
iso8859_10�
iso8859_11�
iso8859_13�
iso8859_14�
iso8859_15�
iso8859_16�	iso8859_2�	iso8859_3�	iso8859_4�	iso8859_5�	iso8859_6�	iso8859_7�	iso8859_8�	iso8859_9�johab�koi8_r�koi8_t�koi8_u�kz1048�latin_1�mac_cyrillic�	mac_greek�mac_iceland�
mac_latin2�	mac_roman�mac_turkishZpalmos�ptcp154r�Zraw_unicode_escape�	shift_jis�shift_jis_2004�shift_jisx0213�tis_620Zunicode_escape�utf_16�	utf_16_be�	utf_16_le�utf_7�utf_8Zmbcs_encode�mbcsZ
oem_encodeZoemr�c@sJeZdZdd�Zejdd��Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�ZdS)�BasicUnicodeTestc	s�d}tD�]�}t�|�j}|�d�r.|d7}n|dkr:d}|�|�dd�|�dd��t�|�|�\}}|�|t|�d|�t�	|�|�\}}|�||d|�|t
v�rVtd�}t�|�|�}d}	|D]6}
|�
|
�|��}|�t|�tut|��|	|7}	q�td�}t�|�|�}d}
|	D]"}
|�
t|
g��|
|��7}
�q |�|
|d|�|t
vrzt�|���Wnt�y�Yn�0d}	|D]}
|	��|
�7}	�q�|	��dd	�7}	t�|���d}
|	D]}
|
��t|
g��7}
�q�|
��dd	�7}
|�|
|d|�d�t�t�||�|��}|�||d|�d�t�t�d|�|��}|�|d�|d
vrzt�|�d��Wnt�y�Yq0d��fdd
�|D��}	t�|�d��d��fdd
�|	D��}
|�|
|d|�qdS)N�abc123Z_codecr_r��-�encoding=%rrFrGT�r�rpr�c3s|]}��|�VqdSr�rCrJ)r�r
rr��rFz/BasicUnicodeTest.test_basics.<locals>.<genexpr>c3s|]}��t|g��VqdSr�r5rIrJ)r�r
rr��s�)�all_unicode_encodingsr3r�r��endswithrr�r�rr��broken_unicode_with_statefulr$r~r*r.r:�typerIrNrBr�rCr4r5rRrSr�)rr-r<r�r�r,r)rTr�
encodedresultrL�chunkrb�
decodedresultrVr
)r�r�r�test_basicsSs�





�����zBasicUnicodeTest.test_basicsc	s2d}tD�]"}|tvrzt�|��Wnty6Yn|0d}|D]}|��|�7}q@|��dd�7}t�|��d}|D]}|��t|g��7}qv|��dd�7}|�	||d|�|dvrzt�|d��Wnty�Yq0d�
�fdd	�|D��}t�|d��d�
�fd
d	�|D��}|�	||d|�qdS)NrrrFrGTrtrur�c3s|]}��|�VqdSrrvrJ)�cencoderr
rr��rFz4BasicUnicodeTest.test_basics_capi.<locals>.<genexpr>c3s|]}��t|g��VqdSrrwrJ)�cdecoderr
rr��s�)rxrz�	_testcapiZcodec_incrementalencoderr�rCZcodec_incrementaldecoderr5rIrrR)rr-r<r|rLr~r
)r�r�r�test_basics_capi�s@

���z!BasicUnicodeTest.test_basics_capicCsrdd}tD]`}|dkrq|tvr$qt�|�t�|�|���}td�D]$}|�dd�|�	�}|�
||�qFqdS)Nz%s
%s
)AXabc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123AXdef456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456r�rur)rxrzr3rNrZr[rCr2�seekr.r)rr-r<rb�trrr
r
r�	test_seek�szBasicUnicodeTest.test_seekcCs:tD]0}t�|�}|�t|�|dvr|�t|d�qdS)N)r�r�rP)rxr3r�r�rE)rr<r�r
r
r�test_bad_decode_args�s

z%BasicUnicodeTest.test_bad_decode_argscCs$tD]}t�|�}|�t|�qdSr)rxr3r�r�rE)rr<r�r
r
r�test_bad_encode_args�s
z%BasicUnicodeTest.test_bad_encode_argscCs&ddlm}t|j�}|�||�dS)Nr)r)�	encodingsrr{Zencoding_tabler)rrZ
table_typer
r
r�"test_encoding_map_type_initialized�s
z3BasicUnicodeTest.test_encoding_map_type_initializedcCsBd}tD]4}|tvr|�|||�|��|�|||�|��qdS)Nrr)rxrzrArCrD)rr=r<r
r
rr��s
z#BasicUnicodeTest.test_decoder_stateN)rrrrrZcpython_onlyr�r�r�r�r�r�r
r
r
rrqRsM
%rqc@s$eZdZdd�Zdd�Zdd�ZdS)�CharmapTestcCs|�t�ddd�d�|�t�ddd�d�|�ttjddd�|�ttjddd�|�t�dd	d�d
�|�t�dd	d�d
�|�t�ddd�d�|�t�ddd�d�|�t�dd
d�d�|�t�dd
d�d�ttd��}|�t�|d
d�dt|�f�dS)N�r�r��r�r��􏿿bc�r�r��abuab￾r��uab�r�r��zab\x02r�r��r�r�rarG)rr3�charmap_decoder�r�rIr2r�rZallbytesr
r
r�test_decode_with_string_map�sV��
�
�������
�z'CharmapTest.test_decode_with_string_mapcCs<|�t�dddddd��d�|�t�dddd	d
d��d�|�t�dddddd��d
�|�t�dddddd��d�|�ttjddddd��|�ttjdddddd��|�ttjdddddd��|�t�ddddd��d�|�t�dddddd��d�|�t�dddddd��d�|�t�ddddd��d�|�t�dddddd��d�|�t�dddddd��d�|�t�ddddd��d�|�t�dddddd��d�|�t�dddddd��d�ttd��}|�t�|di�dt|�f�|�t	dtjdddd	dd��|�t	dtjdddd	dd��dS)Nr�r�rlr�rL�rr1rr�ZAaZBbZCc)ZAaBbCcr��􏿿r�rGr��rr1u￾r�r�r�r�r�raz.character mapping must be in range\(0x110000\)r����i�ɚ;)
rr3r�r�r�rIr2rr�rEr�r
r
r�test_decode_with_int2str_map(s�
��
��
��
���
�
���
��
����
��
����
��
��
���z(CharmapTest.test_decode_with_int2str_mapc
Cs�td�}td�}td�}|�t�dd|||d��d�|�t�ddd||d��d	�|�t�ddtj||d��ttj�d
df�|�ttjddtjd||d��|�t	tjdd||d
��|�t	tjdd||dd��|�t�dd||d
��d�|�t�dd||dd��d�|�t�dd||d
��d�|�t�dd||dd��d�|�t�dd||d
��d�|�t�dd||dd��d�dS)Nrlr�rLr�r�r�r�i��r�Zbcr�r1r�i��r�r�r�r�r�r�)
�ordrr3r�r��
maxunicode�chrr�rEr�)rrlr�rLr
r
r�test_decode_with_int2int_map�s�
��
������
���
����
����
��z(CharmapTest.test_decode_with_int2int_mapN)rrrr�r�r�r
r
r
rr��s7tr�c@seZdZdd�Zdd�ZdS)�WithStmtTestcCsXt�d�}t�|dd�� }|�|��d�Wd�n1s>0Y|�|j�dS)Nrr�r�r)rZr[r3r�rr.r:�closedrr
r
r�test_encodedfile�s
.zWithStmtTest.test_encodedfilecCs\t�d�}t�d�}t�||j|jd�� }|�|��d�Wd�n1sN0YdS)Nrr�r��ü)	rZr[r3r�r��streamreader�streamwriterrr.)rryr"�srwr
r
r�test_streamreaderwriter�s


�z$WithStmtTest.test_streamreaderwriterN)rrrr�r�r
r
r
rr��sr�c@seZdZdd�Zdd�ZdS)�	TypesTestcCsftjtjtjtjtjtjtjtjtj	tj
tjtjg}t
td�rJ|�tj�|D]}|�t|d�qNdS)N�mbcs_decodern)r3rA�utf_8_decoder�r�rDr�r�r��utf_32_ex_decode�latin_1_decode�ascii_decoder��hasattrrar�r�rE)rZdecodersr�r
r
r�test_decode_unicode�s"�
zTypesTest.test_decode_unicodecCs�|�t�d�d�|�t�d�d�|�t�d�d�|�t�d�d�|�ttjd�|�t�dd�d�|�t�dd�d	�|�ttjd�|�t�dd�d�|�t�dd�d	�dS)
Nz\u1234)uሴrvs\u1234�
\U00110000z
\U00110000r��r�rfr�)z(\x5c\x55\x30\x30\x31\x31\x30\x30\x30\x30rf)rr3�unicode_escape_decode�raw_unicode_escape_decoder�r�r]r
r
r�test_unicode_escape
	s��zTypesTest.test_unicode_escapeN)rrrr�r�r
r
r
rr��sr�c@sLeZdZdZdZdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�ZdS)�UnicodeEscapeTestzunicode-escapeNcCs(|�t�d�d�|�t�d�d�dS�NrGrMrF�rGr)rr3�unicode_escape_encoder�r]r
r
rrN%	szUnicodeEscapeTest.test_emptycCs@tj}tdd�D]*}|dkr|�|t|��t|g�df�qdS)N� ��\r1)r3r�r2rr�rI�rrCr�r
r
r�test_raw_encode)	sz!UnicodeEscapeTest.test_raw_encodecCsFtj}td�D]2}|dkr|�|t|g�d�t|�ddf�qdS)Nrar�rm�0r)r3r�r2rrIr�rnr
r
r�test_raw_decode/	sz!UnicodeEscapeTest.test_raw_decodecCs�tj}t||�}|dd�|dd�|dd�|dd�td	�D]&}t|�d
vr@|t|�d|���q@tdd
�D]}|t|�d|���qr|dd�|dd�dS)N�	s\trgs\nris\r�\s\\r�z	

r�r�ra�€�\u20ac�𝄠�
\U0001d120)r3r�rr2r�rC�rrCrr�r
r
r�test_escape_encode5	s





z$UnicodeEscapeTest.test_escape_encodec	CsDtj}t||�}|dd�|dd�|dd�|dd�|d	d
�|dd�|d
d�|dd�|dd�|dd�|dd�|dd
�|dd�|dd�|dd�|dd�|d d!�|d"d�|d#d!�|d$d%�|d&d'�td(d)�D]�}t|g�}|d*v�rF|�t��&|d+|d,t|��Wd�n1�s<0Y|��d-vr�|�t��.|d+|��d,t|d.��Wd�q�1�s�0Yq�|�t��|d/d0�Wd�n1�s�0Y|�t��|d1d2�Wd�n1�s0Y|�t��|d3d4�Wd�n1�s60YdS)5Nrpr�rrz["]rsz[']rtz[\]ruz[]rvz[]rwz[	]rxz[
]ryz[]rzz[]r{z[
]r|r}z[8]r~z[!]rz[!8]r�z[A]r�z[A0]r�r�r�r�r�r�r�r�s	abfnrtuvxrlr�sUNr�r�z\8r�z\9r�u\ú)	r3r�rr2rIr�r�r�r�r�r
r
r�test_escape_decodeD	sJ























6@**z$UnicodeEscapeTest.test_escape_decodec	Cs�tj}dD]�\}}t|�D]�}|�t|d|d|�|�t|d|d|d�d|d|d|d|}|�||d�dt|�f�|�||d	�d
t|�f�qq
|�t|d�|�|dd�d�|�|dd	�d
�dS)N))�xr��urI��UrIrlrm�[\�]�]\r�r�r��[�]�r��rGrfr�)r3r�r2r�r�rr�rr5rLr?r>rrr
r
r�test_decode_errorsk	s"�� 
�z$UnicodeEscapeTest.test_decode_errorscCs|�dgd��dS)N�	

\ÿ￿𐀀) rGrGrGr�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
rr�{	s�zUnicodeEscapeTest.test_partial�rrrr<r�rNr�r�r�r�r�r�r
r
r
rr� 	s'r�c@sLeZdZdZdZdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�ZdS)�RawUnicodeEscapeTestzraw-unicode-escapeNcCs(|�t�d�d�|�t�d�d�dSr�)rr3�raw_unicode_escape_encoder�r]r
r
rrN�	szRawUnicodeEscapeTest.test_emptycCs6tj}td�D]"}|�|t|��t|g�df�qdS)Nrar1)r3r�r2rr�rIr�r
r
rr��	sz$RawUnicodeEscapeTest.test_raw_encodecCs>tj}td�D]*}|�|t|g�d�t|�ddf�qdS)Nrarmr�r)r3r�r2rrIr�rnr
r
rr��	sz$RawUnicodeEscapeTest.test_raw_decodecCsZtj}t||�}td�D](}|dvr|dt|�dt|g��q|dd�|dd�dS)	Nra�uUr�rlr�r�r�r�)r3r�rr2r�rIr�r
r
rr��	s

z'RawUnicodeEscapeTest.test_escape_encodecCsZtj}t||�}td�D](}|dvr|dt|g�dt|��q|dd�|dd�dS)	Nrar�rlr�r�r�r�r�)r3r�rr2rIr�)rr5rr�r
r
rr��	s

z'RawUnicodeEscapeTest.test_escape_decodec	Cs�tj}dD]�\}}t|�D]�}|�t|d|d|�|�t|d|d|d�d|d|d|d|}|�||d�dt|�f�|�||d	�d
t|�f�qq
|�t|d�|�|dd�d�|�|dd	�d
�dS)N)r�r�rlrmr�r�r�r�r�r�r�r�r�r�)r3r�r2r�r�rrr�r
r
rr��	s"�� 
�z'RawUnicodeEscapeTest.test_decode_errorscCs|�dgd��dS)Nr�)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
rr��	s�z!RawUnicodeEscapeTest.test_partialr�r
r
r
rr��	s		r�c@seZdZdd�ZdS)�EscapeEncodeTestc	Cs|gd�}|D]F\}}|j|d��"|�t�|�|�Wd�q1sH0Yq|�ttjd�|�ttjtd��dS)N))rFrM)�foobar)r�rv)s	spameggs)sspam\x00eggs�	)sa'b)sa\'br�)sb\c)sb\\cr�)sc
d)sc\ndr�)sd
e)sd\rer�)sfg)sf\x7fgr�r#r�rH)rrr3�
escape_encoder�rErk)rr�rr�outputr
r
rr��	s
2z#EscapeEncodeTest.test_escape_encodeN)rrrr�r
r
r
rr��	sr�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�SurrogateEscapeTestcCsT|�d�dd�d�|�d�dd�d�|�d�dd�d�|�d�dd�d�dS)N�foo�barr�r�	foo�bars�u	����rr5rCr]r
r
r�	test_utf8
s����zSurrogateEscapeTest.test_utf8cCs,|�d�dd�d�|�d�dd�d�dS)Nr�r+rr�r�r]r
r
rr1
s��zSurrogateEscapeTest.test_asciicCs,|�d�dd�d�|�d�dd�d�dS)Nsfoo�barz
iso-8859-3ru	foo�barr�r]r
r
r�test_charmap
s��z SurrogateEscapeTest.test_charmapcCs|�d�dd�d�dS)Nu�����r�rs���r�r]r
r
r�test_latin1%
s�zSurrogateEscapeTest.test_latin1N)rrrr�r1r�r�r
r
r
rr�	
sr�c@seZdZdd�ZdS)�BomTestc	Cs�d}d}|�tjtj�|D�]~}tjtjd|d��`}|�|�|�|�|�d�|�|�	�|d�|�d�|�|�	�|d�Wd�n1s�0Ytjtjd|d��\}|�|d�|�
|��d�|�d�|�|�|�d�|�|�	�|�Wd�n1�s0Ytjtjd|d��d}|j�|d�|�
|j��d�|j�d�|j�|�|�d�|�|�	�|�Wd�n1�s�0Ytjtjd|d��P}|�|�|�|���|�|�|�d�|�|�	�|d�Wd�n1�s0Ytjtjd|d��X}|j�|�|j�|j���|j�|�|�d�|�|�	�|d�Wd�q1�s�0YqdS)NZ
1234567890)r�r�r�r�r�r�rr�rr)
r�rr�r�r3r�r*r�rr.ZassertNotEqual�tellr)rrrr�r<ryr
r
r�
test_seek0,
sJ




2


0
0


4
zBomTest.test_seek0N)rrrr�r
r
r
rr�+
sr�)�base64_codec�uu_codec�quopri_codec�	hex_codec�base64�base_64�uu)�quopri�quoted_printable�quotedprintable�hex�rot13)r�r�r�r��rot_13�
zlib_codecrO�zlib�	bz2_codec�bz2c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
e�e
d�dd��Zdd�Zdd�Zdd�Zdd�ZdS)�TransformCodecTestc	Cs�ttd��}tD]�}|j|d��`t�|�|�\}}|�|t|��t�|�|�\}}|�|t|��|�||�Wd�q1s�0YqdS)Nrar�)	rIr2�bytes_transform_encodingsrr3r�rrr�)rZbinputr<�or,r>r
r
rr�
szTransformCodecTest.test_basicsc	CsntD]d}|j|d��Dt�d|�}t�|�t�|��}|��}|�|d�Wd�q1s^0YqdS�Nr�r)	rrr3rCrNrZr[r.r�rr<�sinrbZsoutr
r
r�	test_read�
szTransformCodecTest.test_readc	CsntD]d}|j|d��Dt�d|�}t�|�t�|��}|��}|�|d�Wd�q1s^0YqdSr)	rrr3rCrNrZr[r`rrr
r
rrp�
sz TransformCodecTest.test_readlinec	Cs�d}tD]�}|j|d��x|}t|�}t�||�}t�||�}|�||�t|�}t�||�}|�||�t�||�}|�||�Wd�q1s�0YqdS)Ns12345�r�)rr�
memoryviewr3rCrr5)rZoriginalr<rr�viewZview_encodedZview_decodedr
r
r�test_buffer_api_usage�
sz(TransformCodecTest.test_buffer_api_usagec
Cs�d}tD]�}|j|d��bd}|�|�}|�t|��}|�|�Wd�n1sT0Y|�|jj�Wd�q1s�0YqdS)Nzbad input typer�zM{!r} is not a text encoding; use codecs.encode\(\) to handle arbitrary codecs)	rr�formatr�r�rC�assertIsNoner�	__cause__)r�	bad_inputr<�fmt�msg�failurer
r
r�0test_text_to_binary_blacklists_binary_transforms�
s
(zCTransformCodecTest.test_text_to_binary_blacklists_binary_transformscCs>d}|�t|��d�d�Wd�n1s00YdS)NzR^'rot_13' is not a text encoding; use codecs.encode\(\) to handle arbitrary codecszjust an example messager�)r�r�rC�rrr
r
r�.test_text_to_binary_blacklists_text_transforms�
szATransformCodecTest.test_text_to_binary_blacklists_text_transformsc
Cs�d}tD]�}|j|d���t�||�}d}|�|�}|�t|��|�|�Wd�n1s`0Y|�t|��t|��|�Wd�n1s�0YWd�q1s�0YqdS)Ns6encode first to ensure we meet any format restrictionsr�zM{!r} is not a text encoding; use codecs.decode\(\) to handle arbitrary codecs)	rrr3rCr
r�r�r5rk)rrrr<Zencoded_datarrr
r
r�0test_binary_to_text_blacklists_binary_transforms�
s
(zCTransformCodecTest.test_binary_to_text_blacklists_binary_transformsc
Cs�dtd�fD]x}|j|d��Xd}|�t|��}|�d�Wd�n1sN0Y|�|jj�Wd�q1sz0YqdS)Ns	immutablesmutable)r
zR^'rot_13' is not a text encoding; use codecs.decode\(\) to handle arbitrary codecsr�)rkrr�r�r5rrr)rr
rrr
r
r�.test_binary_to_text_blacklists_text_transforms�
s(zATransformCodecTest.test_binary_to_text_blacklists_text_transformszRequires zlib supportcCsVd}|�t|��}t�dd�Wd�n1s20Y|�|jjt|j��dS)Nz(^decoding with 'zlib_codec' codec failed�hellor��r�r�r3r5r7rrr{�rrrr
r
r�!test_custom_zlib_error_is_wrapped�
s*
�z4TransformCodecTest.test_custom_zlib_error_is_wrappedcCsVd}|�t|��}t�dd�Wd�n1s20Y|�|jjt|j��dS)Nz'^decoding with 'hex_codec' codec failedrr�rrr
r
r� test_custom_hex_error_is_wrapped�
s*
�z3TransformCodecTest.test_custom_hex_error_is_wrappedc
Cspt��D]b\}}t�|�j}|D]H}|j|d��(t�|�}|�|j|�Wd�q 1s^0Yq qdS)N)�alias)�transform_aliases�itemsr3r�r�rr)r�
codec_name�aliasesZ
expected_namerr"r
r
r�test_aliases�
s
zTransformCodecTest.test_aliasescCs4t�dd�}|�|d�d}|�t�|d�|�dS)Nsspace tab	eol 
zquopri-codecsspace=20tab=09eol=20
sspace tab eol
)r3rCrr5)rrWZ	unescapedr
r
r�test_quopri_stateless�
sz(TransformCodecTest.test_quopri_statelesscCs|�ttjdd�dS)NrFzuu-codec)r�r�r3r5r]r
r
r�test_uu_invalidsz"TransformCodecTest.test_uu_invalidN)rrrrrrpr	rrrr�unittest�
skipUnlessr�rrr r!r"r
r
r
rr�
s


rcCs
t�|�Sr)�_TEST_CODECS�get�rr
r
r�_get_test_codecsr()�
_forget_codeccCsdSrr
r'r
r
rr)sr)c@s�eZdZdd�Zdd�Zdd�Zejdd��Zd	d
�Z	e
fdd�Zd
d�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%S)&�ExceptionChainingTestcCs.t|�tt|��}t�|���|_t|_dSr)	�reprr[�idr��normalize_encodingr�r�RuntimeError�obj_to_raise)rZ	unique_idr
r
rr s		zExceptionChainingTest.setUpcCsDt�|jd�tj�|jd�zt|j�Wnty>Yn0dSr)r%�poprr��_cacher)�KeyErrorr]r
r
r�tearDown5szExceptionChainingTest.tearDowncCs tj|||jd�}|t|j<dS)N)r�)r3r�rr%)rrCr5Z
codec_infor
r
r�	set_codec>s�zExceptionChainingTest.set_codecccsjd�||j|j|�}|�||��}|VWd�n1s<0Y|�|jj|�|�|jjj�dS)Nz${} with {!r} codec failed \({}: {}\))	r
rrr�r7rrZassertIsNotNone�
__traceback__)rZ	operation�exc_typerZfull_msgZcaughtr
r
r�
assertWrappedCs�$z#ExceptionChainingTest.assertWrappedcOs
|j�dSr�r/)r�args�kwdsr
r
r�	raise_objLszExceptionChainingTest.raise_objcCs||_|�|j|j�|�d||��d�|j�Wd�n1sF0Y|�d||��t�d|j�Wd�n1s�0Y|�d||��d�|j�Wd�n1s�0Y|�d||��t�d|j�Wd�n1s�0YdS)Nr<�	str_inputZdecoding�bytes input)r/r4r;r7rCrr3r5)rr/rr6r
r
r�
check_wrappedPs*,*z#ExceptionChainingTest.check_wrappedcCs|�td�dS)NrG�r>r.r]r
r
r�test_raise_by_type\sz(ExceptionChainingTest.test_raise_by_typecCsd}|�t|�|�dS)N�This should be wrappedr?rr
r
r�test_raise_by_value_sz)ExceptionChainingTest.test_raise_by_valuecCs*d}Gdd�dt�}|�||�||�dS)NrAc@seZdZdZdS)zWExceptionChainingTest.test_raise_grandchild_subclass_exact_size.<locals>.MyRuntimeErrorr
N)rrr�	__slots__r
r
r
r�MyRuntimeErroresrD�r.r>�rrrDr
r
r�)test_raise_grandchild_subclass_exact_sizecsz?ExceptionChainingTest.test_raise_grandchild_subclass_exact_sizecCs*d}Gdd�dt�}|�||�||�dS)NrAc@seZdZdS)zVExceptionChainingTest.test_raise_subclass_with_weakref_support.<locals>.MyRuntimeErrorN)rrrr
r
r
rrDksrDrErFr
r
r�(test_raise_subclass_with_weakref_supportisz>ExceptionChainingTest.test_raise_subclass_with_weakref_supportcs�fdd�}|�||�|�t|��d�|j�Wd�n1sF0Y|�t|��t�d|j�Wd�n1s�0Y|�t|��d�|j�Wd�n1s�0Y|�t|��t�d|j�Wd�n1s�0YdS)Ncs��dSrr
�r9r:r8r
rr;psz:ExceptionChainingTest.check_not_wrapped.<locals>.raise_obj�	str inputr=)r4r�r.rCrr3r5)rr/rr;r
r8r�check_not_wrappedos*,*z'ExceptionChainingTest.check_not_wrappedcCs Gdd�dt�}|�|d�dS)Nc@seZdZdd�ZdS)zKExceptionChainingTest.test_init_override_is_not_wrapped.<locals>.CustomInitcSsdSrr
r]r
r
rr(~szTExceptionChainingTest.test_init_override_is_not_wrapped.<locals>.CustomInit.__init__N)rrrr(r
r
r
r�
CustomInit}srLrG�r.rK)rrLr
r
r�!test_init_override_is_not_wrapped|sz7ExceptionChainingTest.test_init_override_is_not_wrappedcCs Gdd�dt�}|�|d�dS)NcseZdZ�fdd�Z�ZS)zIExceptionChainingTest.test_new_override_is_not_wrapped.<locals>.CustomNewcst��|�Sr)r
�__new__)�clsrr
rrO�szQExceptionChainingTest.test_new_override_is_not_wrapped.<locals>.CustomNew.__new__)rrrrOr(r
r
rr�	CustomNew�srQrGrM)rrQr
r
r� test_new_override_is_not_wrapped�sz6ExceptionChainingTest.test_new_override_is_not_wrappedcCs(d}t|�}d|_|�|d�|��dS)NzThis should NOT be wrappedr1z^{}$)r.�attrrKr
)rrrr
r
r�&test_instance_attribute_is_not_wrapped�sz<ExceptionChainingTest.test_instance_attribute_is_not_wrappedcCs|�td�d�dS)Nr1�1�rKr.r]r
r
r�test_non_str_arg_is_not_wrapped�sz5ExceptionChainingTest.test_non_str_arg_is_not_wrappedcCsd}|�tddd�|�dS)Nz^\('a', 'b', 'c'\)$rlr�rLrV)rZmsg_rer
r
r�!test_multiple_args_is_not_wrapped�sz7ExceptionChainingTest.test_multiple_args_is_not_wrappedcCs�d�|j�}|�t|��d�|j�Wd�n1s:0Y|�t|��t�d|j�Wd�n1st0Y|�t|��d�|j�Wd�n1s�0Y|�t|��t�d|j�Wd�n1s�0YdS)Nz^unknown encoding: {}$rJr=)r
rr�r�rCr3r5rr
r
r�%test_codec_lookup_failure_not_wrapped�s*,*z;ExceptionChainingTest.test_codec_lookup_failure_not_wrappedcCs�dd�}dd�}|�||�t�d|j�}|�|d�t�d|j�}|�|d�d}|�|j�}|�t|��d�|j�Wd�n1s�0Yd	}|�|j�}|�t|��d
�|j�Wd�n1s�0YdS)Nc_sdS)N)�
not bytes!rr
rIr
r
r�
encode_to_str�szSExceptionChainingTest.test_unflagged_non_text_codec_handling.<locals>.encode_to_strc_sdS)N)�not str!rr
rIr
r
r�decode_to_bytes�szUExceptionChainingTest.test_unflagged_non_text_codec_handling.<locals>.decode_to_bytesrZr\zd^{!r} encoder returned 'str' instead of 'bytes'; use codecs.encode\(\) to encode to arbitrary types$r<zd^{!r} decoder returned 'bytes' instead of 'str'; use codecs.decode\(\) to decode to arbitrary types$r=)	r4r3rCrrr5r
r�rE)rr[r]rW�decodedrrr
r
r�&test_unflagged_non_text_codec_handling�s*z<ExceptionChainingTest.test_unflagged_non_text_codec_handlingN)rrrrr3r4�
contextlib�contextmanagerr7r;r.r>r@rBrGrHrKrNrRrTrWrXrYr_r
r
r
rr*s&	

r*�win32z"code pages are specific to Windowsc@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zejdddd�dd��Zejdddd�dd ��Zd!S)"�CodePageTest��cCsL|�ttjdd�|�ttjdd�|�ttjdd�|�ttjdd�dS)Nrrl�ar�)r�r�r3�code_page_encode�code_page_decode�OSErrorr]r
r
r�test_invalid_code_page�sz#CodePageTest.test_invalid_code_pagec	CsJ|�tdtjdd�|�tdtjdddd�|�tdtj|jddd�dS)	Nr8��ÿs�r�T�CP_UTF8r�)r�r�r3rfr�rgrlr]r
r
r�test_code_page_name�s���z CodePageTest.test_code_page_namecCs�|D]�\}}}|dur�zt�|||d�}Wn:tyd}z"|�d||||f�WYd}~n
d}~00|�|d|d||||d|f�|�|dd�|�|dt|��q|�ttj|||d�qdS)NTz2Unable to decode %a from "cp%s" with errors=%r: %srz%a.decode("cp%s", %r)=%a != %ar1)	r3rgr��failrZassertGreaterEqualZassertLessEqualrr�)rr!r�r�r�r�r^�errr
r
r�check_decode�s$
����zCodePageTest.check_decodecCs�|D]�\}}}|dur�zt�|||�}Wn:tyb}z"|�d||||f�WYd}~n
d}~00|�|d|d||||d|f�|�|dt|��q|�ttj|||�qdS)Nz0Unable to encode %a to "cp%s" with errors=%r: %srz%a.encode("cp%s", %r)=%a != %ar1)r3rfr�rnrrr�)rr!r��textr�r�rWror
r
r�check_encode�s"
���
�zCodePageTest.check_encodecCs|�dd�|�dd�dS)Nrj)�r�r�r�)�d騾r�����)rkr�N)r�r�rq)r�r�s[y])u[€]r�s[?])r�r�s[\xff])r�r�s)[\N{LATIN SMALL LETTER Y WITH DIAERESIS}])r�r�s[&#255;])u�r�N)�[�]rr�)rvr�N)�r�r�r�)rur�rt)r�r�N)r�r�r�)r�r�u[�])r�r�z[\xff])r�rrv)r�r�N)��abcr�N)rxr�zabc)rxr�u�abc)rxr�z\x81abc�rrrpr]r
r
r�
test_cp932�szCodePageTest.test_cp932cCs|�dd�|�dd�dS)Ni�)rs)�é€r���)rkr�r�)�Łr�N)r}r�rF)r}r��L)��r��)rr�N)rw)r|r�r{)r�r�rkryr]r
r
r�test_cp1252szCodePageTest.test_cp1252cCs d}|�|d�|�|d�dS)N��)rs)r{r��+AOkgrA-)r�r��+2//f/w-)r�r��+3IA-)r�r��+//0-)rw)r�r�r{)r�r�r�)r�r�r�)r�r�r�)s[+/]r�r�)r�r�r�ry�rr!r
r
r�test_cp_utf7(szCodePageTest.test_cp_utf7cCs,|�dd�|�|jd�|�|jd�dS)Nrj))���r��騾)r�r�u�騾))��􏿿r�r�)r�r�u�􏿿))�	[􏿿�]r�s[􏿿])r�r�s[􏿿?])rprlrrr]r
r
r�test_multibyte_encoding<sz$CodePageTest.test_multibyte_encodingcCs�tjrtj�d�ddddddgtdd	��d
�RD]>}t|�r\|�t�	|d�dd
|���q2tjr2t
d|���q2|�t�	dd�d�dS)Nrgi,�i-�i.�i1�i3�i5�i��i��r�r�r�r!z  skipping cp=rP)u	r�)r�verboser��stdoutr*r2r#rr3rg�printr�r
r
r�test_code_page_decode_flagsJs��
�z(CodePageTest.test_code_page_decode_flagscCstt�dddd�}|�|d�t�dddd�}|�|d�t�dddd�}|�|d	�t�dd
dd�}|�|d�dS)Nrj��r�Fr�s��)r�rs��)u騾騾rIr�r�)r3rgr)rr^r
r
r�test_incremental]s"���zCodePageTest.test_incrementalcCsJtjddd��(t�d�}|�|jd�Wd�n1s<0YdS)Nz_winapi.GetACPr�)Zreturn_valueZcp123rp)rrr3r�rr�)r�codecr
r
r�test_mbcs_aliasps
zCodePageTest.test_mbcs_aliasl�F)r,Zmemuse�dry_runcCs�d|ddd}|�t|�|d�t�d|dd�}|�|dt|��~|�t|d	�|d�|�|d	dd
�d�|�|d	dd�d
�dS)Ns01234567r�r1s
��������rrjrTrrfZ
0123456701i��u(6701234567�����������rrr3rg�rr,rWr^r
r
r�test_large_inputws��zCodePageTest.test_large_inputrvcCs�d|d}|�t|�|dd�t�d|dd�}|�|dt|��~|�t|d�|�|�|ddd�d	�|�|dd
d�d�dS)Ns
0123456턀r�rfrdr�Tr1ru0123456턀01i����u56턀0123456턀r�r�r
r
r�test_large_utf8_input�sz"CodePageTest.test_large_utf8_inputN)rrrrlrirmrprrrzr�r�r�r�r�r�rZ
bigmemtestr�r�r
r
r
rrc�s !
rcc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�	ASCIITestcCs|�d�d�d�dS)Nrrr+sabc123r�r]r
r
rr��szASCIITest.test_encodec	CsXdD]N\}}}|j|||d��$|�|�d|�|�Wd�q1sH0YqdS)N))�	[€ÿ€]r�rq)r�r�s[???])r�r�s[&#128;&#255;&#8364;])u
[€ÿ€򫳞]r�s[\x80\xff\u20ac\U000abcde]�rrrrr+�rrrCrr
r
r�test_encode_error�s��zASCIITest.test_encode_errorcCs:|�t��d�dd�Wd�n1s,0YdS)Nu�ÿr+r�r�r�rCr]r
r
r�!test_encode_surrogateescape_error�sz+ASCIITest.test_encode_surrogateescape_errorcCs|�d�d�d�dS)Nr�r+r�)rr5r]r
r
rr��szASCIITest.test_decodec	CsXdD]N\}}}|j|||d��$|�|�d|�|�Wd�q1sH0YqdS)Nrrr+rBrr
r
rr	�s��zASCIITest.test_decode_errorN)rrrr�r�r�r�r	r
r
r
rr��s
r�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�
Latin1Testc	CsRdD]H\}}|j||d��"|�|�d�|�Wd�q1sB0YqdS)N))r�r�)u€éÿs��rrr��latin1r��rrrr�r
r
rr��szLatin1Test.test_encodec	CsXdD]N\}}}|j|||d��$|�|�d|�|�Wd�q1sH0YqdS)N))�[€�]r�rq)r�r�s[??])u	[€򫳞]r�s[\u20ac\U000abcde])r�r�s[&#8364;&#56448;]r�rr�r�rr
r
r�test_encode_errors�s��zLatin1Test.test_encode_errorscCs:|�t��d�dd�Wd�n1s,0YdS)Nu�€r�rr�r]r
r
rr��sz,Latin1Test.test_encode_surrogateescape_errorc	CsRdD]H\}}|j||d��"|�|�d�|�Wd�q1sB0YqdS)N))r�r�)ru[€ÿ]r�r�rBr�r
r
rr��szLatin1Test.test_decodeN)rrrr�r�r�r�r
r
r
rr��sr�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�StreamRecoderTestcCsRt��}t�d�}t�||j|jtjj	tjj
�}|�ddg�|�|�
�d�dS)Nr+re�bsab)rZr[r3r�rrCr5r�r+r�r��
writelinesrr�)r�bior��srr
r
r�test_writelines�s
�z!StreamRecoderTest.test_writelinescCs^t��}t�d�}t�||j|jtjj	tjj
�}d}|�|�d��|�|�
�|�d��dS)Nr�uàñér�)rZr[r3r�rrCr5r�ror�r�r*rr�)rr�r�r�rqr
r
r�
test_write�s
�zStreamRecoderTest.test_writecCs|t�d�d��}t�|dd�}|�|��d�|�d�|�|��d�|�|��d�|�|��d�|�|��d�dS)	Nzline1
line2
line3
r�r�sline1
rsline2
sline3
rF)rZr[rCr3r�rr`r��rr�r�r
r
r�test_seeking_read�s
z#StreamRecoderTest.test_seeking_readcCs�t�d�d��}t�|dd�}|�d�|�d�|�|��d�|�d�|�|��d�|�|��d	�|�|��d�dS)
Nz
123456789
r�r�rs
abc
s789
rs1
sabc
)	rZr[rCr3r�r�r*rr`r�r
r
r�test_seeking_write
s


z$StreamRecoderTest.test_seeking_writeN)rrrr�r�r�r�r
r
r
rr��sr�zneed _testcapi modulec@s�eZdZdZe��ZdZdZdZ	ddd�Z
dd	�Zd
d�Zdd
�Z
dd�Zdd�Zd dd�Zdd�Zdd�Zdd�Zdd�Zdd�ZdS)!�LocaleCodecTestzD
    Test indirectly _Py_DecodeUTF8Ex() and _Py_EncodeUTF8Ex().
    )r+uulatin1:§éuu255:ÿu
UCS:é€􏿿usurrogates:��)s
blatin1:��sb255:�u��r�cCst�|d|�Sr+)r�ZEncodeLocaleEx)rrqr�r
r
rrC
szLocaleCodecTest.encodec
Cs�|jD]�}|j|d���z|�|j|�}Wn^ty�|�t��}|�||�Wd�n1sd0Yt|j�}|�	|d�Yn0|�||�}|�
||�Wd�q1s�0YqdS)N)rqz!encode error: pos=[0-9]+, reason=)�STRINGSrrC�ENCODINGr�r�r.r[rZassertRegexr)rr�rqr�r�errmsgrWr
r
r�check_encode_strings"
s
*
z$LocaleCodecTest.check_encode_stringscCs|�d�dS�Nr��r�r]r
r
r�test_encode_strict0
sz"LocaleCodecTest.test_encode_strictcCs|�d�dS�Nrr�r]r
r
r�test_encode_surrogateescape3
sz+LocaleCodecTest.test_encode_surrogateescapec
Csfz|�dd�WnFtyV}z.t|�dkr@|�|j�d��n�WYd}~n
d}~00|�d�dS)NrGr��unsupported error handlerz4 encoder doesn't support surrogatepass error handler)rCr�r[r�r�r��rrr
r
r�test_encode_surrogatepass6
sz)LocaleCodecTest.test_encode_surrogatepasscCsL|�t��}|�dd�Wd�n1s,0Y|�t|j�d�dS)NrGr�r�)r�r�rCrr[r�rrr
r
r�%test_encode_unsupported_error_handlerB
s*z5LocaleCodecTest.test_encode_unsupported_error_handlercCst�|d|�Sr+)r�ZDecodeLocaleEx)rrWr�r
r
rr5G
szLocaleCodecTest.decodec
Cs\|jdk}|rd}nd}t|j�}|jD]d}z$|�|j|�}||vrN|�|�Wntyfd}Yn0|r(|�|jd�}||kr(|�|�q(|D]�}|j|d���z|�|j|�}Wnft	�y|�
t��}	|�||�Wd�n1s�0Yt|	j
�}
|�|
�d�|
�Yn0|�||�}|�||�Wd�q�1�sL0Yq�dS)Nr�rr�r�)rWzdecode error: )r�rc�
BYTES_STRINGSr�rCrar�rr5r�r�r.r[rr:�
startswithr)rr�Zis_utf8Z
encode_errors�stringsrqrWZencoded2r�rr�r^r
r
r�check_decode_stringsJ
s6



*
z$LocaleCodecTest.check_decode_stringscCs|�d�dSr��r�r]r
r
r�test_decode_strictl
sz"LocaleCodecTest.test_decode_strictcCs|�d�dSr�r�r]r
r
r�test_decode_surrogateescapeo
sz+LocaleCodecTest.test_decode_surrogateescapec
Csfz|�dd�WnFtyV}z.t|�dkr@|�|j�d��n�WYd}~n
d}~00|�d�dS)NrFr�r�z4 decoder doesn't support surrogatepass error handler)r5r�r[r�r�r�r�r
r
r�test_decode_surrogatepassr
sz)LocaleCodecTest.test_decode_surrogatepasscCsL|�t��}|�dd�Wd�n1s,0Y|�t|j�d�dS)NrFr�r�)r�r�r5rr[rr�r
r
r�%test_decode_unsupported_error_handler~
s*z5LocaleCodecTest.test_decode_unsupported_error_handlerN)r�)r�)rrrr/r��getfilesystemencodingr�r�r�Z
SURROGATESrCr�r�r�r�r�r5r�r�r�r�r�r
r
r
rr�
s"

"r�c@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�	Rot13Testz"Test the educational ROT-13 codec.cCst�dd�}|�|d�dS)NzCaesar liked ciphers�rot-13zPnrfne yvxrq pvcuref)r3rCr)r�
ciphertextr
r
rr��
szRot13Test.test_encodecCst�dd�}|�|d�dS)Nz
Rg gh, Oehgr?r�z
Et tu, Brute?)r3r5r)r�	plaintextr
r
rr��
szRot13Test.test_decodecCs&t�d��}|�d�}|�|d�dS)Nr�zABBA nag Cheryl BakerzNOON ant Purely Onxre)r3rBrCr)rr�r�r
r
rr��
s
z!Rot13Test.test_incremental_encodecCs&t�d��}|�d�}|�|d�dS)Nr�zterra Ares envy thazgreen Nerf rail gun)r3r4r5r)rr�r�r
r
rr��
s
z!Rot13Test.test_incremental_decodeN)rrrr/r�r�r�r�r
r
r
rr��
s
r�c@seZdZdZdd�ZdS)�
Rot13UtilTestz�Test the ROT-13 codec via rot13 function,
    i.e. the user has done something like:
    $ echo "Hello World" | python -m encodings.rot_13
    cCsBt�d�}t��}tj�||�|�d�|��}|�|d�dS)Nz)Gb or, be abg gb or, gung vf gur dhrfgvbarz)To be, or not to be, that is the question)rZrdr�r�r�r�r.r)rZinfileZoutfileZ
plain_textr
r
r�test_rot13_func�
s

�zRot13UtilTest.test_rot13_funcN)rrrr/r�r
r
r
rr��
sr��__main__)Sr3r`rZr�r�r#r�r�testrr��ImportErrorr ZSIZEOF_WCHAR_TZsizeofZc_wcharrr#r
r$r0rEZTestCaser�r�r�r�r�r�r�r)rCrGrQrir�r>rr�r+r�r�r�r�r�rrrxr�rarzrqr�r�r�r�r�r�r�r�rrr�r�rr%r(r��_codecsr)r*r$�platformrcr�r�r�ZskipIfr�r�r�r�mainr
r
r
r�<module>s�

"V`..V,,^V>g!]uh

�y)S"9�




#�W'%.q


Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists