Your IP : 216.73.216.52


Current Path : /opt/alt/python38/lib64/python3.8/test/__pycache__/
Upload File :
Current File : //opt/alt/python38/lib64/python3.8/test/__pycache__/test_codecs.cpython-38.pyc

U

i�f��e@s�ddlZddlZddlZddlZddlZddlZddlZddlmZddlm	Z	zddl
Z
Wn&ek
r�ZzdZ
W5dZ[XYnXzddl
Z
Wnek
r�dZ
dZYnXe
�e
j�Zdd�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�Z Gd!d"�d"ej�Z!Gd#d$�d$eej�Z"Gd%d&�d&ej�Z#d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9gZ$e$D] Z%e&e%�d:k�re'e(e%���qGd;d<�d<ej�Z)d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdBdgdhg-Z*Gdidj�djej�Z+Gdkdl�dlej�Z,Gdmdn�dnej�Z-Gdodp�dpej�Z.Gdqdr�drej�Z/dsdtdudvdwdxdydzd{d|d}d~dd�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�geZ0e1ed؃�r�e0�2d١e1edڃ�r�e0�2dۡd�gZ3Gd�d݄d�eje�Z4Gd�d߄d�ej�Z5Gd�d�d�ej�Z6Gd�d�d�ej�Z7Gd�d�d�ej�Z8Gd�d�d�ej�Z9Gd�d�d�ej�Z:Gd�d�d�ej�Z;Gd�d�d�ej�Z<d�d�d�d�gZ=d�d�gd�gd�d�d�gd�gd�gd��Z>zddl?Z?Wnek
�r�dZ?YnXe=�2d��d�d�ge>d�<zddl@Z@Wnek
�r,YnXe=�2d��d�ge>d�<G�d�d��dej�ZAiZB�d�d�ZCe�DeC�zd�dlEmFZFWn"ek
�r��d�d�ZFYnXG�d�d��dej�ZGe�HejI�d	k�d
�G�d�d��dej��ZJG�d
�d��dej�ZKG�d�d��dej�ZLG�d�d��dej�ZMe�Ne
dk�d�G�d�d��dej��ZOG�d�d��dej�ZPG�d�d��dej�ZQeR�dk�r�e�S�dS(�N)�mock)�support���cs��fdd�}|S)Ncs���|�|t|�f�dS�N)�assertEqual�len)�inputZexpect��coder�self��5/opt/alt/python38/lib64/python3.8/test/test_codecs.py�checkszcoding_checker.<locals>.checkr)rr
rrr	r
�coding_checkersrc
s�ddlm}m}m}ddlm}m�m�m�m�m	}d�d�d�G������fdd�dtj
�}||�|||��}|d	|d
�f�}|�}	||d|	�S)Nr)�POINTER�WINFUNCTYPE�WinDLL)�BOOL�UINT�BYTE�WCHARr�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�Z_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r
r#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)Nr/T)r0rr1�getincrementalencoder�encoder4r7rr9rrr
�check_state_handling_encode_s
z3MixInCheckStateHandling.check_state_handling_encodeN)rrrr?rBrrrr
r.Hsr.c@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>�sz*ReadTest.check_partial.<locals>.<listcomp>)r#r1�	getreaderr:�ziprAr(rGr,r�
bytebufferr2r3r%�reset�join�
iterdecode)
rrZpartialresults�q�r�resultrJZ
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�BytesIOrAr:r1rL)r�stream�rrr
rL�sz)ReadTest.test_readline.<locals>.getreaderTcs6�|�}g}|j||d�}|s q,|�|�qd�|�S)N)r*�keepends�|)�readline�appendrP)rr\r*�reader�lines�line)rLrr
�readalllines�sz,ReadTest.test_readline.<locals>.readalllinesufoo
bar
baz
spam
eggsufoo
|bar
|baz
|spam
|eggszfoo|bar|baz|spam|eggsF�
)�
�
�
u
��uあrEr]�P�azxxx
�r\�xxx)TN)r�	enumerater_rPr0r^)rrcr+Z	sexpectedZsexpectednoendsZlineendsZvwZvwor<Zlineendr*r`r)rLrr
�
test_readline�sP


�
�
�
�zReadTest.test_readlinecs6ddddg}d�|����fdd�}|�}��|��|d���|��d�|d	d�����|��d�|�}��|��|d���|�d	�|d	d���|�d�d���|�d
��t|d�d	d�dd
��|�}��|��|d���|��|d	d����|��d�|�}��|jddd
��dd����|���dd����|��d�|�}��|jddd
��dd����|�d	��d���|�d�d���|�d
��dd��|�}��|jddd
��dd����|��|ddd�g|d	d����|��d�dS)NzHumpty 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.rEcs"t����j��}t��j�|�SrrW)rZ��datarrr
rL�sz8ReadTest.test_mixed_readline_and_read.<locals>.getreaderrr/�d�(�)r*r'��j)rPrr^r,r�	readlines)rrarL�frror
�test_mixed_readline_and_read�sB�
.*z%ReadTest.test_mixed_readline_and_readc=Cs�ddddddddd	d
ddd
ddddddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d d+d,d-d.d/d0d1d2d3d4d5d6g=}t�d7�|��|j��}t�|j�|�}t|�D]\}}|�|||�q�dS)8Nz:<%!--===================================================
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<%
rfzimport logging
z+log=logging.getLogger("Snakelets.logger")
zuser=self.SessionCtx.user
z-storageEngine=self.SessionCtx.storageEngine
z-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")
zshowdate=None
zarg=self.Request.getArg()
zif arg=="today":
z,    #-------------------- TODAY'S ARTICLES
z-    self.write("<h2>Today's articles</h2>")
z(    showdate = frog.util.isodatestr() 
z.    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))
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                
rE)	rXrYrPrAr:r1rLrmr)rr+rZr`r<rbr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)NrDzfoo
Frk�fooz
bar
rEZbarZbazTrezbar
zfoo
)r#r1�	getwriterr:rLr(rr^)rrR�writerr`r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.
rE�rAr:rXrYr1rLrr^)r�s1�s2�s3r+rZr`r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.
rEr~)	rrr�r�Zs4Zs5r+rZr`r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[??]rE))�𐿿�A)�[�])r�r����
surrogatepasscss|]}d|VqdS)�\x%02xNr)rI�brrr
�	<genexpr>�s�z0ReadTest.test_lone_surrogates.<locals>.<genexpr>)�assertRaises�UnicodeEncodeErrorrAr:rr�ill_formed_sequence�UnicodeDecodeErrorr3�ill_formed_sequence_replacerP)	rZbomZbeforeZafterZbefore_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�r/rETu�)rAr:r0rr1r2rr3)rrpr<�decrrr
�test_incremental_surrogatepass�sz'ReadTest.test_incremental_surrogatepassN)
rrrrVrnrxryr}r�r�r�r�r�rrrr
rCjs+;0E
,rCc@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�r1�lookupr:rXrYr(�getvaluer8�spamle�spamberr,�r�_r`r|r+rwr=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���������rXrYr1rLr:r��UnicodeErrorr,�rr+rwrrr
�test_badbom�s

zUTF32Test.test_badbomcCs@|�dddddddddddddddddddddddddg�dS�NuÿĀ￿𐀀rE��ÿuÿĀuÿĀ￿�rVr[rrr
�test_partial�s8��zUTF32Test.test_partialcCs0|�dt�ddd��|�dt�ddd��dS�N)r�r/�r�T)rEr/r��rr1�
utf_32_decoder[rrr
�
test_handlerss��zUTF32Test.test_handlerscCs|�ttjddd�dS�N���strictT)r�r�r1r�r[rrr
�test_errors	s

�zUTF32Test.test_errorscCs(|�|jd|j�|�|jd|j�dS�Nr��r?r:r�r�r[rrr
�test_decoder_state
s��zUTF32Test.test_decoder_statecCs8d}|�dt�|�d�d}|�dt�|�d�dS)Ns���𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀rs��r�)rZ
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r
r��s
	r�c@s4eZdZdZdZdd�Zdd�Zdd�Zd	d
�ZdS)�UTF32LETest�	utf-32-ler�cCs8|�dddddddddddddddddddddg�dSr�r�r[rrr
r�"s0��zUTF32LETest.test_partialcCs|�d�|j�d�dS)N�𐈃s�rrAr:r[rrr
�test_simple=szUTF32LETest.test_simplecCs|�ttjddd�dSr�)r�r�r1�utf_32_le_decoder[rrr
r�@s

�zUTF32LETest.test_errorscCsd}|�dt�|�d�dS)Nsr�r)rr1r��rrUrrr
r�Ds�zUTF32LETest.test_issue8941N�	rrrr:r�r�r�r�r�rrrr
r�sr�c@s4eZdZdZdZdd�Zdd�Zdd�Zd	d
�ZdS)�UTF32BETest�	utf-32-ber�cCs8|�dddddddddddddddddddddg�dSr�r�r[rrr
r�Ps0��zUTF32BETest.test_partialcCs|�d�|j�d�dS)Nr�sr�r[rrr
r�kszUTF32BETest.test_simplecCs|�ttjddd�dSr�)r�r�r1�utf_32_be_decoder[rrr
r�ns

�zUTF32BETest.test_errorscCsd}|�dt�|�d�dS)Nsr�r)rr1r�r�rrr
r�rs�zUTF32BETest.test_issue8941Nr�rrrr
r�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r
r��s


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

zUTF16Test.test_badbomcCs,|�dddddddddddddddg�dSr�r�r[rrr
r��s$��zUTF16Test.test_partialcCs0|�dt�ddd��|�dt�ddd��dSr�)rr1�
utf_16_decoder[rrr
r��s��zUTF16Test.test_handlerscCs|�ttjddd�dSr�)r�r�r1r�r[rrr
r��s

�zUTF16Test.test_errorscCs(|�|jd|j�|�|jd|j�dSr�r�r[rrr
r��s��zUTF16Test.test_decoder_statec	Cs�d}|�|j�}|�tjtj�ttjd��}|�|�W5QRXt�dt	f��t
jtjd|jd�}W5QRX|�|�|��|�W5QRXdS)NzHello
world
�wbrE�U�r:)
rAr:�
addCleanupr�unlink�TESTFN�openr(Zcheck_warnings�DeprecationWarningr1rr,)rrr+�fpr`rrr
�test_bug691291�szUTF16Test.test_bug691291N)rrrr:r�r�r�r�r�r�r�r�r�r�r�r�rrrr
r�zs
	r�c@s,eZdZdZdZdd�Zdd�Zdd�Zd	S)
�UTF16LETest�	utf-16-ler�cCs(|�dddddddddddddg�dSr�r�r[rrr
r��s ��zUTF16LETest.test_partialcCsLdddddddg}|D]0\}}|�ttj|dd	�|�|�d
d�|�qdS)N�r�r�)sAZ�A�)s	ABCDZ�ABCD�)s�r�)s�Ar�)s�A��A)s�Ar�r�Tzutf-16ler�)r�r�r1�utf_16_le_decoderr3�r�tests�raw�expectedrrr
r��s�	
�zUTF16LETest.test_errorscCs,|�d�|j�d�|�d�|j�d�dS)Nr�s�ީrrAr:r3r[rrr
�test_nonbmp�s��zUTF16LETest.test_nonbmpN�rrrr:r�r�r�r�rrrr
r��s
r�c@s,eZdZdZdZdd�Zdd�Zdd�Zd	S)
�UTF16BETest�	utf-16-ber�cCs(|�dddddddddddddg�dSr�r�r[rrr
r�s ��zUTF16BETest.test_partialcCsLdddddddg}|D]0\}}|�ttj|dd	�|�|�d
d�|�qdS)Nr�)sA�r�)s	ABCDZr�)s�r�)s��r�)s�Ar�)s�Ar�r�Tzutf-16ber�)r�r�r1�utf_16_be_decoderr3r�rrr
r�s�	
�zUTF16BETest.test_errorscCs,|�d�|j�d�|�d�|j�d�dS)Nr�s��r�r[rrr
r�"s��zUTF16BETest.test_nonbmpNr�rrrr
r��s
r�csTeZdZdZdZdZdZdd�Zdd�Zd	d
�Z	�fdd�Z
d
d�Zdd�Z�Z
S)�UTF8Test�utf-8s�u	���rDcCs.|�ddddddddddddddddg�dS)Nuÿ߿ࠀ￿𐀀r�r�uÿ߿uÿ߿ࠀuÿ߿ࠀ￿r�r[rrr
r�.s&��zUTF8Test.test_partialcCs d}|�|j||�|j��dS)Nu€ÿĀ߿ࠀ￿􏿿)r?r:rA)rr;rrr
r�Ds

�zUTF8Test.test_decoder_statec
CsFdD]<\}}}|j|||d��|�|�|j|�|�W5QRXqdS)N�)�[��]r�r�)r�r�u[��])r��surrogateescape�[��])r�r�z
[\x80\xff]�rp�
error_handlerr�)�subTestrr3r:�rrpr�r�rrr
�test_decode_errorIs��zUTF8Test.test_decode_errorc	snt���|�d�|jd�|jd�|�t��}d�|jd�W5QRX|j}|�|j	|j
|j�d�dS)Nr�r�s[�]u[���]u��)�superr�rrAr:�BOMr�r��	exception�object�start�end)r�cm�exc��	__class__rr
r�Us
�zUTF8Test.test_lone_surrogatesc	Cs�|�d�|jd�|jd�|�d�|jd�|jd�|�d�|jd�|jd�|�d�|jd�d�|�d�|jd�d�|�t�d��|�t	��d�|jd�W5QRX|�t	��d	�|jd�W5QRXdS)
Nu	abc�defr�s	abc�defu𐿿�s𐿿�r�s[��]sabc�sabc�z)
rrAr:r�r3r8r1�lookup_errorr�r�r[rrr
�test_surrogatepass_handleras(�����z#UTF8Test.test_surrogatepass_handlerc
Cs�dddddddg}dD]}d	D]}|�||�qq|�d
�|D]:}|j|d��$t�|j��}|�t|j|�W5QRXqBdS)N������������r�)������s���s���s�s���s�s�)�r)s�s�s�s�s�s�s�rp)	r_�extendr�r1r2r:r�r�r3)rZcases�prefix�suffixrpr�rrr
�test_incremental_errorsts
z UTF8Test.test_incremental_errors)rrrr:r�r�r�r�r�r�r�r	r�
__classcell__rrrr
r�(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 	

rE��+sX+AAAAAQACAAMABAAFAAYABwAIAAsADAAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwBcAH4Afw-)	rrAr:r3rP�sorted�setrGr0)rZset_dZset_oZwsZother_asciirrr
�
test_ascii�s"��zUTF7Test.test_asciic#CsP|�dddddddddddddddddd	d	d	d	d	d
ddddddddddg �dS)
Nua+-bc€dĀe𐀀frj�a+za+-za+-bza+-bza+-bcua+-bc€u	a+-bc€dua+-bc€dĀua+-bc€dĀeua+-bc€dĀe𐀀r�r[rrr
r��sH��zUTF7Test.test_partialcCs�ddddddddd	d
ddd
ddddddddg}|D]H\}}|j|d��.|�ttj|dd�|�|�dd�|�W5QRXq2dS)N)s�bu�b)sa�b�a�b)sa��bua��b)sa+IK�a�)sa+IK-br&)sa+IK,br&)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+@br&�r�r�Trr�)r�r�r�r1�utf_7_decoderr3r�rrr
r��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r
r��s ���zUTF7Test.test_nonbmpc
Cs\ddddddddd	d
ddd
g
}|D]4\}}|j|d��|�|�dd�|�W5QRXq"dS)N)sa+2AE-bua�b)sa+2AE�br&)sa+2AEr')sa+2AEA-br&)sa+2AH-br&)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.rr��r�rr3r�rrr
r��s"�zUTF7Test.test_lone_surrogatesN)	rrrr:r$r�r�r�r�rrrr
r�s'rc@seZdZdd�Zdd�ZdS)�UTF16ExTestcCs|�ttjdddd�dS)Nr�r�rT)r�r�r1�utf_16_ex_decoder[rrr
r�szUTF16ExTest.test_errorscCs|�ttj�dSr)r��	TypeErrorr1r2r[rrr
�
test_bad_argsszUTF16ExTest.test_bad_argsN)rrrr�r4rrrr
r1sr1c@s$eZdZdd�Zdd�Zdd�ZdS)�ReadBufferTestcCs&ddl}|�t�|�dd��d�dS)Nrr��spam)r6�)�arrayrr1�readbuffer_encode)rr8rrr
�
test_arrays
�zReadBufferTest.test_arraycCs|�t�d�d�dS)NrE�rDr)rr1r9r[rrr
�
test_emptyszReadBufferTest.test_emptycCs"|�ttj�|�ttjd�dS�N�*)r�r3r1r9r[rrr
r4 szReadBufferTest.test_bad_argsN)rrrr:r<r4rrrr
r5sr5c@s>eZdZdZejZdd�Zdd�Zdd�Z	dd	�Z
d
d�ZdS)
�UTF8SigTest�	utf-8-sigcCs:|�ddddddddddddddddddddddg�dS)	Nuÿ߿ࠀ￿𐀀rEuuuÿuÿ߿uÿ߿ࠀuÿ߿ࠀ￿r�r[rrr
r�(s2��zUTF8SigTest.test_partialcCs|�tdd�d�dS)N�r@rE�r�strr[rrr
�test_bug1601501DszUTF8SigTest.test_bug1601501cCs,t�d��}d}|�|�|�d��|�dS)Nr@r�)r1r2rr3rA)rr=r+rrr
�test_bomHszUTF8SigTest.test_bomc	Cs�d}tjd}t�d�}dgttdd��dddd	d
gD]\}|t�|��}t��}|dk	rh|�|�}n|��}|svq�|�	|�qT|�
�}|�||�q:dS�NuABC¡∀XYZsABC¡∀XYZr@r/��@r �ii)r1�BOM_UTF8rL�listr0rXrY�StringIOr,r(r�r�	rZ	unistringZ
bytestringr`�sizehintZistreamZostreamrpZgotrrr
�test_stream_bomMs 

�zUTF8SigTest.test_stream_bomc	Cs�d}d}t�d�}dgttdd��dddd	d
gD]\}|t�|��}t��}|dk	rb|�|�}n|��}|spq||�|�qN|�	�}|�
||�q4dSrF)r1rLrKr0rXrYrLr,r(r�rrMrrr
�test_stream_barecs 
�zUTF8SigTest.test_stream_bareN)rrrr:r1rJr�r�rDrErOrPrrrr
r?$sr?c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�EscapeDecodeTestcCs*|�t�d�d�|�t�t��d�dS)NrDr;)rr1�
escape_decode�	bytearrayr[rrr
r<{szEscapeDecodeTest.test_emptycCsFtj}td�D]2}t|g�}|dkr|�||d�|ddf�qdS)NrI�\�0r)r1rRr0rGr�rr3r�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]p}t|g�}|d'k�r"|�t��|d(|d(|�W5QRX|�t�� |d(|��d(|���W5QRXq�|�t��|d)d)�W5QRX|�t��|d*d*�W5QRX|�t��|d+d+�W5QRXdS),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�{sabfnrtvxrT�\8�\9�\�)r1rRrr0rG�assertWarnsr��upper�rr3rr<r�rrr
�test_escape�sF






















&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�)rYrtr�)�[?]?rts\x0s[\x0]s[\x0]\x0)rY�)rurv)r1rRr��
ValueErrorr)rr3rrr
r��szEscapeDecodeTest.test_errorsN)rrrr<rWrtr�rrrr
rQzs%rQ)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_testcasesrrCrA�lower�rZuni�punyrrr
�test_encode%s
�zPunycodeTest.test_encodecCsFtD]<\}}|�||�d��|�d��d�}|�||�d��qdSry)r{rr3rAr}rrr
�test_decode1szPunycodeTest.test_decodec
Cspddt�fdg}|D]V\}}}|j||d��8t|t�rL|�t|jd|�n|�|�d|�|�W5QRXqdS)N�xn--w&r�)r�r�zxn-)r~�errorsrz)r�r��
isinstance�	Exceptionr�r3r)rZ	testcasesr~r�r�rrr
�test_decode_invalid7s
�
z PunycodeTest.test_decode_invalidN)rrrrr�r�rrrr
rx$srx)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​rD)s r�)�r�)s…N)s᠎N)rArD)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�)sX­ßİ℡ǰ ªΰ sxssi̇telǰ aΰ )sXß㌖İ℡⒟㌀s*xssキロメートルi̇tel(d)アパートc@seZdZdd�ZdS)�NameprepTestcCs�ddlm}tt�D]�\}\}}|dkr*qt|dd�}|dkrN|�t||�qt|dd�}z|�||�|�Wqtk
r�}zt	�
d|dt|�f��W5d}~XYqXqdS)Nr)�nameprepr�r�z
Test 3.%d: %sr/)Zencodings.idnar�rm�nameprep_testsrCr�r�rr�rZ
TestFailed)rr��posZorigZprepped�errr
�
test_nameprep�szNameprepTest.test_nameprepN)rrrr�rrrr
r��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.rBr[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��rrAr[rrr
�test_builtin_encode�sz!IDNACodecTest.test_builtin_encodec	CsH|�td��d�d�W5QRX|�td��d�d�W5QRXdS)Nztoo longsTxn--016caaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar�sNxn--016caaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)�assertRaisesRegexr�r3r[rrr
� test_builtin_decode_length_limit�sz.IDNACodecTest.test_builtin_decode_length_limitcCs2t�d�t�d��}|�d�|�|��d�dS)Nr��abc�rE)r1rLrXrYr,r)rrSr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)NrEcss|]}t|g�VqdSrrFrHrrr
r�sz8IDNACodecTest.test_incremental_decode.<locals>.<genexpr>r�r�r�css|]}t|g�VqdSrrFrHrrr
r�sr�r�css|]}t|g�VqdSrrFrHrrr
r�sr�r�css|]}t|g�VqdSrrFrHrrr
r�ssxn--xams	ple-9ta.ou	äxample.srgrDTZorgsrg.zorg.)rrPr1rQr2r3rO)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)NrDr�r�r�r�r�r�r�uäxz	ample.orgsxn--xample-9ta.rETsorgz
ample.org.sxn--xample-9ta.org.)rrPr1�
iterencoder@rArO)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�r�N)rAr3r�r��rr�rrr
r�Ds�zIDNACodecTest.test_errorsN)
rrrr�r�r�r�r�r�r�rrrr
r��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�)rr1r3r�r3r�r[rrr
r�Qs���zCodecsModuleTest.test_decodecCs�|�t�dd�d�|�ttj�|�ttjdd�|�t�d�d�|�ttjdd	�|�tjddd
�d�|�tjdd	dd
�d�dS)Nr�r�r�rz�__spam__r�r�uÿffrr��[ÿ]r�r�rY)rr1rAr�r3�LookupErrorr�r[rrr
r^s���zCodecsModuleTest.test_encodecCs"|�ttj�|�ttjd�dSr=)r�r3r1�registerr[rrr
�
test_registerlszCodecsModuleTest.test_registercCs2|�ttj�|�ttjd�|�ttjd�dS)Nr�� )r�r3r1r�r�r[rrr
�test_lookuppszCodecsModuleTest.test_lookupcCs"|�ttj�|�ttjd�dS�Nr�)r�r3r1�
getencoderr�r[rrr
�test_getencoderusz CodecsModuleTest.test_getencodercCs"|�ttj�|�ttjd�dSr�)r�r3r1�
getdecoderr�r[rrr
�test_getdecoderysz CodecsModuleTest.test_getdecodercCs"|�ttj�|�ttjd�dSr�)r�r3r1rLr�r[rrr
�test_getreader}szCodecsModuleTest.test_getreadercCs"|�ttj�|�ttjd�dSr�)r�r3r1r{r�r[rrr
�test_getwriter�szCodecsModuleTest.test_getwritercCsnt�tj�}|�tjtj|�zt�tjd�Wn tjk
rP|�d�YnXt�d�}|�|j	d�dS)NZtr_TRztest needs Turkish locale�ASCIIr)
�locale�	setlocale�LC_CTYPEr��Error�skipTestr1r�r�name)rZ	oldlocalerJrrr
�test_lookup_issue1813�s
z&CodecsModuleTest.test_lookup_issue1813cCs,d}|�|tj�tjD]}tt|�qdS)N),rAr3r��	CodecInfo�Codec�IncrementalEncoder�IncrementalDecoder�StreamReader�StreamWriterr�r�r�r@r2rLr{�register_errorr�
strict_errors�replace_errors�
ignore_errors�xmlcharrefreplace_errors�backslashreplace_errors�namereplace_errorsr��EncodedFiler�rQr��BOM_BE�BOM_LErJ�	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)ZassertCountEqualr1�__all__�getattr)rZapirrr
�test_all�s
zCodecsModuleTest.test_allcCs^|�tjtj�dD]D}|�|��0t�tj|d��}|�|tj�W5QRXW5QRXqdS)N)�wrSzr+�w+rjr%r)	r�rr�r�r�r1r�r5r�)r�mode�filerrr
�	test_open�s�zCodecsModuleTest.test_opencCs~|�ttjdd�|�ttjdd�|�ttjdd�|�ttjdd�dD],}|�ttjdd|�|�ttjdd|�qLdS)Nr�Z	undefinedr�rErD)r�r�r�r�)r�r�r1rAr3r�rrr
�test_undefined�s"��zCodecsModuleTest.test_undefinedc
CsVt��}t�d|��8}|�t��t�tjdd�W5QRX|�j	�
�W5QRXdS)Nz
builtins.openZwtzinvalid-encoding)r�	mock_open�patchr�r�r1r�rr��closeZ
assert_called)rr�r�rrr
�'test_file_closes_if_lookup_error_raised�s
z8CodecsModuleTest.test_file_closes_if_lookup_error_raisedN)rrrr�rr�r�r�r�r�r�r�r�r�r�r�rrrr
r�Os

r�c@seZdZdd�Zdd�ZdS)�StreamReaderTestcCst�d�|_t�d�|_dS)Nr��한
글)r1rLr`rXrYrZr[rrr
�setUp�szStreamReaderTest.setUpcCs$|�|j�}|�|��ddg�dS)Nu한
u글)r`rZrrv)rrwrrr
�test_readlines�szStreamReaderTest.test_readlinesN)rrrr�r�rrrr
r��sr�c@seZdZdd�ZdS)�EncodedFileTestcCs\t�d�}t�|dd�}|�|��d�t��}t�|dd�}|�d�|�|��d�dS)Nr�r�r�s\�
�r��ü��)rXrYr1r�rr,r(r��rrwZefrrr
�
test_basic�s

zEncodedFileTest.test_basicN)rrrr�rrrr
r��sr�r�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_rZkoi8_tZkoi8_u�kz1048�latin_1�mac_cyrillic�	mac_greek�mac_iceland�
mac_latin2�	mac_roman�mac_turkishZpalmos�ptcp154rzZraw_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_encodeZoemc@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
k�rVtd�}t�|�|�}d}	|D]6}
|�
|
�|��}|�t|�tkt|��|	|7}	q�td�}t�|�|�}d}
|	D]"}
|�
t|
g��|
|��7}
�q |�|
|d|�|t
krzt�|���Wntk
�r�Yn�Xd}	|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
krzt�|�d��Wntk
�r�YqXd��fdd
�|D��}	t�|�d��d��fdd
�|	D��}
|�|
|d|�qdS)N�abc123Z_codecrCr��-�encoding=%rrDrET�r�rTr�c3s|]}��|�VqdSr�rArH)r�rr
r��sz/BasicUnicodeTest.test_basics.<locals>.<genexpr>c3s|]}��t|g��VqdSr�r3rGrH)r�rr
r��s�)�all_unicode_encodingsr1r�r��endswithrr�r�rr��broken_unicode_with_statefulr#r{r(r,r8�typerGrLr@r�rAr2r3rPrQr�)rr+r:r�r�r*r'rRr|�
encodedresultrJ�chunkr`�
decodedresultrTr)r�r�r
�test_basicsSs�





�
�
���zBasicUnicodeTest.test_basicsc	s6d}tD�]&}|tkrzt�|��Wntk
r8Yn|Xd}|D]}|��|�7}qB|��dd�7}t�|��d}|D]}|��t|g��7}qx|��dd�7}|�	||d|�|dkrzt�|d��Wntk
r�YqXd�
�fdd	�|D��}t�|d��d�
�fd
d	�|D��}|�	||d|�qdS)NrVrDrETrXrYr�c3s|]}��|�VqdSrrZrH)�cencoderrr
r��sz4BasicUnicodeTest.test_basics_capi.<locals>.<genexpr>c3s|]}��t|g��VqdSrr[rH)�cdecoderrr
r��s�)r\r^�	_testcapiZcodec_incrementalencoderr�rAZcodec_incrementaldecoderr3rGrrP)rr+r:r`rJrbr)rerdr
�test_basics_capi�s@

���z!BasicUnicodeTest.test_basics_capicCsrdd}tD]`}|dkrq|tkr$qt�|�t�|�|���}td�D]$}|�dd�|�	�}|�
||�qFqdS)Nz%s
%s
)AXabc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123AXdef456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456r�rsr)r\r^r1rLrXrYrAr0�seekr,r)rr+r:r`�trprrr
�	test_seek�szBasicUnicodeTest.test_seekcCs:tD]0}t�|�}|�t|�|dkr|�t|d�qdS)N)r�rzr>)r\r1r�r�r3)rr:r�rrr
�test_bad_decode_args�s

z%BasicUnicodeTest.test_bad_decode_argscCs$tD]}t�|�}|�t|�qdSr)r\r1r�r�r3)rr:r�rrr
�test_bad_encode_args�s
z%BasicUnicodeTest.test_bad_encode_argscCs&ddlm}t|j�}|�||�dS)Nr)r)�	encodingsrr_Zencoding_tabler)rrZ
table_typerrr
�"test_encoding_map_type_initialized�s
z3BasicUnicodeTest.test_encoding_map_type_initializedcCsBd}tD]4}|tkr|�|||�|��|�|||�|��qdS)NrV)r\r^r?rArB)rr;r:rrr
r��s
z#BasicUnicodeTest.test_decoder_stateN)rrrrcrZcpython_onlyrgrjrkrlrnr�rrrr
rURsM
%rUc@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�rrr��abuab￾r��uab�r�r��zab\x02r�r��rtr�rIrE)rr1�charmap_decoder�r�rGr0r�rZallbytesrrr
�test_decode_with_string_map�sb����������
�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)Nrpr�rjr�rJ�rr/rrqZAaZBbZCc)ZAaBbCcr��􏿿rsrErw�rr/u￾r�rur�rvr�rIz.character mapping must be in range\(0x110000\)r����i�ɚ;)
rr1rxr�r�rGr0rr�r3ryr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)Nrjr�rJrpr�r{rqi��rsZbcr�r/r}i��r�rur�rvr�rw)
�ordrr1rxr��
maxunicode�chrr�r3r�)rrjr�rJrrr
�test_decode_with_int2int_map�s�
��
������
���
����
����
��z(CharmapTest.test_decode_with_int2int_mapN)rrrrzrr�rrrr
ro�s7troc@seZdZdd�Zdd�ZdS)�WithStmtTestc	CsDt�d�}t�|dd��}|�|��d�W5QRX|�|j�dS)Nr�r�r�r�)rXrYr1r�rr,r8�closedr�rrr
�test_encodedfile�s
zWithStmtTest.test_encodedfilec	CsHt�d�}t�d�}t�||j|jd��}|�|��d�W5QRXdS)Nr�r�r��ü)	rXrYr1r�r��streamreader�streamwriterrr,)rrwr!�srwrrr
�test_streamreaderwriter�s


�z$WithStmtTest.test_streamreaderwriterN)rrrr�r�rrrr
r��sr�c@seZdZdd�Zdd�ZdS)�	TypesTestcCsftjtjtjtjtjtjtjtjtj	tj
tjtjg}t
td�rJ|�tj�|D]}|�t|d�qNdS)N�mbcs_decoderl)r1r/�utf_8_decoder�r�r2r�r�r��utf_32_ex_decode�latin_1_decode�ascii_decoderx�hasattrr_r�r�r3)rZdecodersr�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ሴrts\u1234�
\U00110000z
\U00110000r��r�rdr�)z(\x5c\x55\x30\x30\x31\x31\x30\x30\x30\x30rd)rr1�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r
r��sr�c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�UnicodeEscapeTestcCs(|�t�d�d�|�t�d�d�dS�NrEr;rD�rEr)rr1�unicode_escape_encoder�r[rrr
r<!	szUnicodeEscapeTest.test_emptycCs@tj}tdd�D]*}|dkr|�|t|��t|g�df�qdS)N� ��\r/)r1r�r0rr�rG�rrAr�rrr
�test_raw_encode%	sz!UnicodeEscapeTest.test_raw_encodecCsFtj}td�D]2}|dkr|�|t|g�d�t|�ddf�qdS)NrIr�rU�0r)r1r�r0rrGr�rVrrr
�test_raw_decode+	sz!UnicodeEscapeTest.test_raw_decodecCs�tj}t||�}|dd�|dd�|dd�|dd�td	�D]&}t|�d
kr@|t|�d|���q@tdd
�D]}|t|�d|���qr|dd�|dd�dS)N�	s\tres\nrgs\r�\s\\r�z	

r�r�rI�€�\u20ac�𝄠�
\U0001d120)r1r�rr0r�rA�rrArr�rrr
�test_escape_encode1	s





z$UnicodeEscapeTest.test_escape_encodec
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%�|d&d'�td(d)�D]�}t|g�}|d*k�r0|�t��|d+|d,t|��W5QRX|��d-kr�|�t��$|d+|��d,t|d.��W5QRXq�|�t��|d/d0�W5QRX|�t��|d1d2�W5QRX|�t��|d3d4�W5QRXdS)5NrXr�rZz["]r[z[']r\z[\]r]z[]r^z[]r_z[	]r`z[
]raz[]rbz[]rcz[
]rdrez[8]rfz[!]rgz[!8]rhz[A]riz[A0]rjrkr�r�r�r�rlrms	abfnrtuvxrTr�sUNr�rnz\8roz\9rpu\ú)	r1r�rr0rGrqr�r�rrrsrrr
�test_escape_decode@	sJ























 *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��ur7��Ur7rTrU�[\�]�]\r�r�r��[�]�r��rErdr�)r1r�r0r�r�rr�rr3rJr=r<rprrr
�test_decode_errorsg	s"�� 
�z$UnicodeEscapeTest.test_decode_errorsN�	rrrr<r�r�r�r�r�rrrr
r� 	s'r�c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�RawUnicodeEscapeTestcCs(|�t�d�d�|�t�d�d�dSr�)rr1�raw_unicode_escape_encoder�r[rrr
r<y	szRawUnicodeEscapeTest.test_emptycCs6tj}td�D]"}|�|t|��t|g�df�qdS)NrIr/)r1r�r0rr�rGr�rrr
r�}	sz$RawUnicodeEscapeTest.test_raw_encodecCs>tj}td�D]*}|�|t|g�d�t|�ddf�qdS)NrIrUr�r)r1r�r0rrGr�rVrrr
r��	sz$RawUnicodeEscapeTest.test_raw_decodecCsZtj}t||�}td�D](}|dkr|dt|�dt|g��q|dd�|dd�dS)	NrI�uUr�rTr�r�r�r�)r1r�rr0r�rGr�rrr
r��	s

z'RawUnicodeEscapeTest.test_escape_encodecCsZtj}t||�}td�D](}|dkr|dt|g�dt|��q|dd�|dd�dS)	NrIr�rTr�r�r�r�r�)r1r�rr0rGr�)rr3rr�rrr
r��	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�rTrUr�r�r�r�r�r�r�r�r�r�)r1r�r0r�r�rrr�rrr
r��	s"�� 
�z'RawUnicodeEscapeTest.test_decode_errorsNr�rrrr
r�x	s		r�c@seZdZdd�ZdS)�EscapeEncodeTestc
Cstddddddddg}|D]2\}}|j|d	��|�t�|�|�W5QRXq|�ttjd
�|�ttjtd��dS)N)rDr;)�foobar)r�rt)s	spameggs)sspam\x00eggs�	)sa'b)sa\'br�)sb\c)sb\\cr�)sc
d)sc\ndr�)sd
e)sd\rer�)sfg)sf\x7fgr�rr�r6)r�rr1�
escape_encoder�r3rS)rr�rp�outputrrr
r��	s�
z#EscapeEncodeTest.test_escape_encodeN)rrrr�rrrr
r��	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	����rr3rAr[rrr
�	test_utf8�	s����zSurrogateEscapeTest.test_utf8cCs,|�d�dd�d�|�d�dd�d�dS)Nr�rr�r�r�r[rrr
r$�	s��zSurrogateEscapeTest.test_asciicCs,|�d�dd�d�|�d�dd�d�dS)Nsfoo�barz
iso-8859-3r�u	foo�barr�r[rrr
�test_charmap�	s��z SurrogateEscapeTest.test_charmapcCs|�d�dd�d�dS)Nu�����r�r�s���r�r[rrr
�test_latin1�	s�zSurrogateEscapeTest.test_latin1N)rrrr�r$r�r�rrrr
r��	sr�c@seZdZdd�ZdS)�BomTestc
Cs6d}d}|�tjtj�|D�]}tjtjd|d��V}|�|�|�|�|�d�|�|�	�|d�|�d�|�|�	�|d�W5QRXtjtjd|d��R}|�|d�|�
|��d�|�d�|�|�|�d�|�|�	�|�W5QRXtjtjd|d��Z}|j�|d�|�
|j��d�|j�d�|j�|�|�d�|�|�	�|�W5QRXtjtjd|d��F}|�|�|�|���|�|�|�d�|�|�	�|d�W5QRXtjtjd|d��N}|j�|�|j�|j���|j�|�|�d�|�|�	�|d�W5QRXqdS)NZ
1234567890)r�r�r�r�r�r�r�r�rr)
r�rr�r�r1r�r(rhrr,ZassertNotEqual�tellr|)rrpr�r:rwrrr
�
test_seek0�	sJ












zBomTest.test_seek0N)rrrr�rrrr
r��	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_codecrM�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]l}|j|d��Vt�|�|�\}}|�|t|��t�|�|�\}}|�|t|��|�||�W5QRXqdS)NrIr�)	rGr0�bytes_transform_encodingsr�r1r�rrr�)rZbinputr:�or*r<rrr
rc:
szTransformCodecTest.test_basicsc
CsZtD]P}|j|d��:t�d|�}t�|�t�|��}|��}|�|d�W5QRXqdS�Nr�r
)	r�r�r1rArLrXrYr,r�rr:Zsinr`Zsoutrrr
�	test_readE
szTransformCodecTest.test_readc
CsZtD]P}|j|d��:t�d|�}t�|�t�|��}|��}|�|d�W5QRXqdSr�)	r�r�r1rArLrXrYr^rr�rrr
rnM
sz TransformCodecTest.test_readlinec
Cs�d}tD]�}|j|d��n|}t|�}t�||�}t�||�}|�||�t|�}t�||�}|�||�t�||�}|�||�W5QRXqdS)Ns12345�r�)r�r��
memoryviewr1rArr3)rZoriginalr:rpZviewZview_encodedZview_decodedrrr
�test_buffer_api_usageU
sz(TransformCodecTest.test_buffer_api_usagecCshd}tD]Z}|j|d��Dd}|�|�}|�t|��}|�|�W5QRX|�|jj�W5QRXqdS)Nzbad input typer�zM{!r} is not a text encoding; use codecs.encode\(\) to handle arbitrary codecs)	r�r��formatr�r�rA�assertIsNoner�	__cause__)r�	bad_inputr:�fmt�msg�failurerrr
�0test_text_to_binary_blacklists_binary_transformsg
s
zCTransformCodecTest.test_text_to_binary_blacklists_binary_transformsc	Cs*d}|�t|��d�d�W5QRXdS)NzR^'rot_13' is not a text encoding; use codecs.encode\(\) to handle arbitrary codecszjust an example messager�)r�r�rA�rr�rrr
�.test_text_to_binary_blacklists_text_transformss
szATransformCodecTest.test_text_to_binary_blacklists_text_transformscCs�d}tD]~}|j|d��ht�||�}d}|�|�}|�t|��|�|�W5QRX|�t|��t|��|�W5QRXW5QRXqdS)Ns6encode first to ensure we meet any format restrictionsr�zM{!r} is not a text encoding; use codecs.decode\(\) to handle arbitrary codecs)	r�r�r1rAr�r�r�r3rS)rrpr:Zencoded_datar�r�rrr
�0test_binary_to_text_blacklists_binary_transformsz
s
zCTransformCodecTest.test_binary_to_text_blacklists_binary_transformscCsbdtd�fD]P}|j|d��:d}|�t|��}|�d�W5QRX|�|jj�W5QRXqdS)Ns	immutablesmutable)r�zR^'rot_13' is not a text encoding; use codecs.decode\(\) to handle arbitrary codecsr�)rSr�r�r�r3r�rr�)rr�r�r�rrr
�.test_binary_to_text_blacklists_text_transforms�
szATransformCodecTest.test_binary_to_text_blacklists_text_transformszRequires zlib supportc	CsBd}|�t|��}t�dd�W5QRX|�|jjt|j��dS)Nz(^decoding with 'zlib_codec' codec failed�hellor��r�r�r1r3r5rr�r_�rr�r�rrr
�!test_custom_zlib_error_is_wrapped�
s
�z4TransformCodecTest.test_custom_zlib_error_is_wrappedc	CsBd}|�t|��}t�dd�W5QRX|�|jjt|j��dS)Nz'^decoding with 'hex_codec' codec failedr�r�r�r�rrr
� test_custom_hex_error_is_wrapped�
s
�z3TransformCodecTest.test_custom_hex_error_is_wrappedcCs\t��D]N\}}t�|�j}|D]4}|j|d��t�|�}|�|j|�W5QRXq qdS)N)�alias)�transform_aliases�itemsr1r�r�r�r)r�
codec_name�aliasesZ
expected_namer�r!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
)r1rArr3)rrUZ	unescapedrrr
�test_quopri_stateless�
sz(TransformCodecTest.test_quopri_statelesscCs|�ttjdd�dS)NrDzuu-codec)r�rwr1r3r[rrr
�test_uu_invalid�
sz"TransformCodecTest.test_uu_invalidN)rrrrcr�rnr�r�r�r�r��unittest�
skipUnlessr�r�r�r�r�r�rrrr
r�8
s


r�cCs
t�|�Sr)�_TEST_CODECS�get�r�rrr
�_get_test_codec�
sr)�
_forget_codeccCsdSrrrrrr
r�
src@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)	�reprrC�idrm�normalize_encodingr|r��RuntimeError�obj_to_raise)rZ	unique_idrrr
r��
s		zExceptionChainingTest.setUpcCsFt�|jd�tj�|jd�zt|j�Wntk
r@YnXdSr)r�popr�rm�_cacher�KeyErrorr[rrr
�tearDown�
szExceptionChainingTest.tearDowncCs tj|||jd�}|t|j<dS)N)r�)r1r�r�r)rrAr3Z
codec_inforrr
�	set_codec�
s�zExceptionChainingTest.set_codecc	csVd�||j|j|�}|�||��}|VW5QRX|�|jj|�|�|jjj�dS)Nz${} with {!r} codec failed \({}: {}\))	r�r�rr�r5rr�ZassertIsNotNone�
__traceback__)rZ	operation�exc_typer�Zfull_msgZcaughtrrr
�
assertWrapped�
s�z#ExceptionChainingTest.assertWrappedcOs
|j�dSr�r
)r�args�kwdsrrr
�	raise_objszExceptionChainingTest.raise_objc	Cs�||_|�|j|j�|�d||��d�|j�W5QRX|�d||��t�d|j�W5QRX|�d||��d�|j�W5QRX|�d||��t�d|j�W5QRXdS)Nr:�	str_inputZdecoding�bytes input)r
rrrrAr�r1r3)rr
r�rrrr
�
check_wrappedsz#ExceptionChainingTest.check_wrappedcCs|�td�dS)NrE�rr	r[rrr
�test_raise_by_typesz(ExceptionChainingTest.test_raise_by_typecCsd}|�t|�|�dS)N�This should be wrappedrr�rrr
�test_raise_by_valuesz)ExceptionChainingTest.test_raise_by_valuecCs*d}Gdd�dt�}|�||�||�dS)Nrc@seZdZdZdS)zWExceptionChainingTest.test_raise_grandchild_subclass_exact_size.<locals>.MyRuntimeErrorrN)rrr�	__slots__rrrr
�MyRuntimeErrorsr�r	r�rr�rrrr
�)test_raise_grandchild_subclass_exact_sizesz?ExceptionChainingTest.test_raise_grandchild_subclass_exact_sizecCs*d}Gdd�dt�}|�||�||�dS)Nrc@seZdZdS)zVExceptionChainingTest.test_raise_subclass_with_weakref_support.<locals>.MyRuntimeErrorN)rrrrrrr
r srr r!rrr
�(test_raise_subclass_with_weakref_supportsz>ExceptionChainingTest.test_raise_subclass_with_weakref_supportc	s��fdd�}|�||�|�t|��d�|j�W5QRX|�t|��t�d|j�W5QRX|�t|��d�|j�W5QRX|�t|��t�d|j�W5QRXdS)Ncs��dSrr�rrrrr
r%sz:ExceptionChainingTest.check_not_wrapped.<locals>.raise_obj�	str inputr)rr�r	rAr�r1r3)rr
r�rrrr
�check_not_wrapped$sz'ExceptionChainingTest.check_not_wrappedcCs Gdd�dt�}|�|d�dS)Nc@seZdZdd�ZdS)zKExceptionChainingTest.test_init_override_is_not_wrapped.<locals>.CustomInitcSsdSrrr[rrr
r&3szTExceptionChainingTest.test_init_override_is_not_wrapped.<locals>.CustomInit.__init__N)rrrr&rrrr
�
CustomInit2sr'rE�r	r&)rr'rrr
�!test_init_override_is_not_wrapped1sz7ExceptionChainingTest.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r
r*9szQExceptionChainingTest.test_new_override_is_not_wrapped.<locals>.CustomNew.__new__)rrrr*rrrrr
�	CustomNew8sr,rEr()rr,rrr
� test_new_override_is_not_wrapped7sz6ExceptionChainingTest.test_new_override_is_not_wrappedcCs(d}t|�}d|_|�|d�|��dS)NzThis should NOT be wrappedr/z^{}$)r	�attrr&r�)rr�rrrr
�&test_instance_attribute_is_not_wrapped=sz<ExceptionChainingTest.test_instance_attribute_is_not_wrappedcCs|�td�d�dS)Nr/�1�r&r	r[rrr
�test_non_str_arg_is_not_wrappedCsz5ExceptionChainingTest.test_non_str_arg_is_not_wrappedcCsd}|�tddd�|�dS)Nz^\('a', 'b', 'c'\)$rjr�rJr1)rZmsg_rerrr
�!test_multiple_args_is_not_wrappedFsz7ExceptionChainingTest.test_multiple_args_is_not_wrappedc	Cs�d�|j�}|�t|��d�|j�W5QRX|�t|��t�d|j�W5QRX|�t|��d�|j�W5QRX|�t|��t�d|j�W5QRXdS)Nz^unknown encoding: {}$r%r)r�r�r�r�rAr1r3r�rrr
�%test_codec_lookup_failure_not_wrappedKsz;ExceptionChainingTest.test_codec_lookup_failure_not_wrappedc	Cs�dd�}dd�}|�||�t�d|j�}|�|d�t�d|j�}|�|d�d}|�|j�}|�t|��d�|j�W5QRXd	}|�|j�}|�t|��d
�|j�W5QRXdS)Nc_sdS)N)�
not bytes!rrr$rrr
�
encode_to_str]szSExceptionChainingTest.test_unflagged_non_text_codec_handling.<locals>.encode_to_strc_sdS)N)�not str!rrr$rrr
�decode_to_bytes_szUExceptionChainingTest.test_unflagged_non_text_codec_handling.<locals>.decode_to_bytesr5r7zd^{!r} encoder returned 'str' instead of 'bytes'; use codecs.encode\(\) to encode to arbitrary types$rzd^{!r} decoder returned 'bytes' instead of 'str'; use codecs.decode\(\) to decode to arbitrary types$r)	rr1rAr�rr3r�r�r3)rr6r8rU�decodedr�r�rrr
�&test_unflagged_non_text_codec_handlingWsz<ExceptionChainingTest.test_unflagged_non_text_codec_handlingN)rrrr�rr�
contextlib�contextmanagerrrr	rrrr"r#r&r)r-r/r2r3r4r:rrrr
r�
s&	

rZwin32z"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)Nrrj�arm)r�rwr1�code_page_encode�code_page_decode�OSErrorr[rrr
�test_invalid_code_pagezsz#CodePageTest.test_invalid_code_pagec	CsJ|�tdtjdd�|�tdtjdddd�|�tdtj|jddd�dS)	Nr��ÿs�r�T�CP_UTF8r�)r�r�r1r@r�rArFr[rrr
�test_code_page_name�s&���z CodePageTest.test_code_page_namecCs�|D]�\}}}|dk	r�zt�|||d�}Wn8tk
rb}z|�d||||f�W5d}~XYnX|�|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 != %ar/)	r1rAr��failrZassertGreaterEqualZassertLessEqualrr�)rr r�r�r�r�r9�errrrr
�check_decode�s,
����zCodePageTest.check_decodecCs�|D]�\}}}|dk	r�zt�|||�}Wn8tk
r`}z|�d||||f�W5d}~XYnX|�|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 != %ar/)r1r@r�rHrrr�)rr r��textr�r�rUrIrrr
�check_encode�s(
����zCodePageTest.check_encodecCs|�dd�|�dd�dS)NrD)�r�r�r�)�d騾r�����)rEr�N)r�r�rY)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)�[�]r�r�)rPr�N)�r�r�r�)rOr�rN)r�r�N)r�r�r�)r�r�u[�])r�r�z[\xff])r�r�rP)r�r�N)��abcr�N)rRr�zabc)rRr�u�abc)rRr�z\x81abc�rLrJr[rrr
�
test_cp932�szCodePageTest.test_cp932cCs|�dd�|�dd�dS)Ni�)rM)�é€r���)rEr�r�)�Łr�N)rWr�rD)rWr��L)��r���)rYr�N)rQ)rVr�rU)r�r�rErSr[rrr
�test_cp1252�szCodePageTest.test_cp1252cCs d}|�|d�|�|d�dS)N��)rM)rUr��+AOkgrA-)r|r��+2//f/w-)r�r��+3IA-)r�r��+//0-)rQ)r]r�rU)r^r�r|)r_r�r�)r`r�r�)s[+/]r�r�)r�r�r�rS�rr rrr
�test_cp_utf7�szCodePageTest.test_cp_utf7cCs,|�dd�|�|jd�|�|jd�dS)NrD))���r��騾)rcr�u�騾))��􏿿r�r|)rer�u�􏿿))�	[􏿿�]r�s[􏿿])rfr�s[􏿿?])rJrFrLr[rrr
�test_multibyte_encoding�sz$CodePageTest.test_multibyte_encodingcCsztjrtj�d�dtdd	�d�D]>}t|�rL|�t�	|d�dd
|���q"tjr"t
d|���q"|�t�	dd�d�dS)Nre�,��-��.��1��3��5�i��i��r\r�rqr z  skipping cp=r>)u	r�)rhrirjrkrlrm)r\)r�verboser��stdoutr(r0r"rr1rA�printrarrr
�test_code_page_decode_flags�s�
�z(CodePageTest.test_code_page_decode_flagscCstt�dddd�}|�|d�t�dddd�}|�|d�t�dddd�}|�|d	�t�dd
dd�}|�|d�dS)NrD��r�Fr�s��)rdrs��)u騾騾r7r�rq)r1rAr)rr9rrr
�test_incrementals(���zCodePageTest.test_incrementalc	Cs6tjddd��t�d�}|�|jd�W5QRXdS)Nz_winapi.GetACPrm)Zreturn_valueZcp123rT)rr�r1r�rr�)r�codecrrr
�test_mbcs_alias%s
zCodePageTest.test_mbcs_aliasl�F)r*ZmemuseZdry_runcCs�d|ddd}|�t|�|d�t�d|dd�}|�|dt|��~|�t|d	�|d�|�|d	dd
�d�|�|d	dd�d
�dS)Ns01234567rvr/s
��������rrDr�TrrdZ
0123456701i��u(6701234567�����������rrr1rA�rr*rUr9rrr
�test_large_input,s��zCodePageTest.test_large_inputrtcCs�d|d}|�t|�|dd�t�d|dd�}|�|dt|��~|�t|d�|�|�|ddd�d	�|�|dd
d�d�dS)Ns
0123456턀rvrdr>r�Tr/ru0123456턀01i����u56턀0123456턀rwrxrrr
�test_large_utf8_input>sz"CodePageTest.test_large_utf8_inputN)rrrrFrCrGrJrLrTr[rbrgrqrsrurZ
bigmemtestryrzrrrr
r=us !
r=c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�	ASCIITestcCs|�d�d�d�dS)NrVrsabc123r�r[rrr
rNszASCIITest.test_encodec
CsDdD]:\}}}|j|||d��|�|�d|�|�W5QRXqdS)N))�	[€ÿ€]r�rY)r|r�s[???])r|r�s[&#128;&#255;&#8364;])u
[€ÿ€򫳞]r�s[\x80\xff\u20ac\U000abcde]�r�r�r�r�r�r�rrAr�rrr
�test_encode_errorQs��zASCIITest.test_encode_errorc	Cs&|�t��d�dd�W5QRXdS)Nu�ÿrr��r�r�rAr[rrr
�!test_encode_surrogateescape_error_sz+ASCIITest.test_encode_surrogateescape_errorcCs|�d�d�d�dS)Nr�rr�)rr3r[rrr
r�dszASCIITest.test_decodec
CsDdD]:\}}}|j|||d��|�|�d|�|�W5QRXqdS)Nr�r�rr0r�rrr
r�gs��zASCIITest.test_decode_errorN)rrrrrr�r�r�rrrr
r{Ms
r{c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�
Latin1Testc
Cs>dD]4\}}|j||d��|�|�d�|�W5QRXqdS)N))r�r�)u€éÿs��rpr��latin1r~�rrpr�rrr
ruszLatin1Test.test_encodec
CsDdD]:\}}}|j|||d��|�|�d|�|�W5QRXqdS)N))�[€�]r�rY)r�r�s[??])u	[€򫳞]r�s[\u20ac\U000abcde])r�r�s[&#8364;&#56448;]r}r�r�r~r�rrr
�test_encode_errors}s��zLatin1Test.test_encode_errorsc	Cs&|�t��d�dd�W5QRXdS)Nu�€r�r�r�r[rrr
r��sz,Latin1Test.test_encode_surrogateescape_errorc
Cs>dD]4\}}|j||d��|�|�d�|�W5QRXqdS)N))r�r�)r�u[€ÿ]r�r�r0r�rrr
r��szLatin1Test.test_decodeN)rrrrr�r�r�rrrr
r�tsr�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�StreamRecoderTestcCsRt��}t�d�}t�||j|jtjj	tjj
�}|�ddg�|�|�
�d�dS)Nrr?�bsab)rXrYr1r�r�rAr3rmrr�r��
writelinesrr�)r�biort�srrrr
�test_writelines�s
�z!StreamRecoderTest.test_writelinescCs^t��}t�d�}t�||j|jtjj	tjj
�}d}|�|�d��|�|�
�|�d��dS)Nr�uàñér�)rXrYr1r�r�rAr3rmrSr�r�r(rr�)rr�rtr�rKr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
rD)rXrYrAr1r�rr^rh�rr�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
)	rXrYrAr1r�rhr(rr^r�rrr
�test_seeking_write�s


z$StreamRecoderTest.test_seeking_writeN)rrrr�r�r�r�rrrr
r��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().
    )ruulatin1:§éuu255:ÿu
UCS:é€􏿿usurrogates:��)s
blatin1:��sb255:�u��r�cCst�|d|�Sr))rfZEncodeLocaleEx)rrKr�rrr
rA�szLocaleCodecTest.encodecCs�|jD]�}|j|d��~z|�|j|�}WnLtk
rv|�t��}|�||�W5QRXt|j�}|�	|d�YnX|�||�}|�
||�W5QRXqdS)N)rKz!encode error: pos=[0-9]+, reason=)�STRINGSr�rA�ENCODINGr�r�r	rCrZassertRegexr)rr�rKr�r�errmsgrUrrr
�check_encode_strings�s

z$LocaleCodecTest.check_encode_stringscCs|�d�dS�Nr��r�r[rrr
�test_encode_strict�sz"LocaleCodecTest.test_encode_strictcCs|�d�dS�Nr�r�r[rrr
�test_encode_surrogateescape�sz+LocaleCodecTest.test_encode_surrogateescapec
Csdz|�dd�WnDtk
rT}z&t|�dkrB|�|j�d��n�W5d}~XYnX|�d�dS)NrEr��unsupported error handlerz4 encoder doesn't support surrogatepass error handler)rArwrCr�r�r��rrrrr
�test_encode_surrogatepass�sz)LocaleCodecTest.test_encode_surrogatepassc	Cs8|�t��}|�dd�W5QRX|�t|j�d�dS)NrEr�r�)r�rwrArrCr�rrrrr
�%test_encode_unsupported_error_handler�sz5LocaleCodecTest.test_encode_unsupported_error_handlercCst�|d|�Sr))rfZDecodeLocaleEx)rrUr�rrr
r3�szLocaleCodecTest.decodecCs6|jdk}|rd}nd}t|j�}|jD]f}z$|�|j|�}||krN|�|�Wntk
rhd}YnX|r(|�|jd�}||kr(|�|�q(|D]�}|j|d���z|�|j|�}WnTt	k
�r|�
t��}	|�||�W5QRXt|	j
�}
|�|
�d�|
�YnX|�||�}|�||�W5QRXq�dS)Nr�r�r�r�)rUzdecode error: )r�rK�
BYTES_STRINGSr�rAr_r�r�r3r�r�r	rCrr8�
startswithr)rr�Zis_utf8Z
encode_errorsZstringsrKrUZencoded2r�rr�r9rrr
�check_decode_strings�s6




z$LocaleCodecTest.check_decode_stringscCs|�d�dSr��r�r[rrr
�test_decode_strict!
sz"LocaleCodecTest.test_decode_strictcCs|�d�dSr�r�r[rrr
�test_decode_surrogateescape$
sz+LocaleCodecTest.test_decode_surrogateescapec
Csdz|�dd�WnDtk
rT}z&t|�dkrB|�|j�d��n�W5d}~XYnX|�d�dS)NrDr�r�z4 decoder doesn't support surrogatepass error handler)r3rwrCr�r�r�r�rrr
�test_decode_surrogatepass'
sz)LocaleCodecTest.test_decode_surrogatepassc	Cs8|�t��}|�dd�W5QRX|�t|j�d�dS)NrDr�r�)r�rwr3rrCrr�rrr
�%test_decode_unsupported_error_handler3
sz5LocaleCodecTest.test_decode_unsupported_error_handlerN)r�)r�)rrrr-r��getfilesystemencodingr�r�r�Z
SURROGATESrAr�r�r�r�r�r3r�r�r�r�r�rrrr
r��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)r1rAr)r�
ciphertextrrr
r;
szRot13Test.test_encodecCst�dd�}|�|d�dS)Nz
Rg gh, Oehgr?r�z
Et tu, Brute?)r1r3r)r�	plaintextrrr
r�?
szRot13Test.test_decodecCs&t�d��}|�d�}|�|d�dS)Nr�zABBA nag Cheryl BakerzNOON ant Purely Onxre)r1r@rAr)rr�r�rrr
r�C
s
z!Rot13Test.test_incremental_encodecCs&t�d��}|�d�}|�|d�dS)Nr�zterra Ares envy thazgreen Nerf rail gun)r1r2r3r)rr�r�rrr
r�H
s
z!Rot13Test.test_incremental_decodeN)rrrr-rr�r�r�rrrr
r�9
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)rXrLrmr�r�rhr,r)rZinfileZoutfileZ
plain_textrrr
�test_rot13_funcS
s

�zRot13UtilTest.test_rot13_funcN)rrrr-r�rrrr
r�N
sr��__main__)Tr1r;rXr�r�r�rmrZtestrrf�ImportErrorrrZSIZEOF_WCHAR_TZsizeofZc_wcharrr"rr#r.rCZTestCaser�r�r�r�r�r�r�rr1r5r?rQr{r<rrprrxr�r�r�r�r�r�r\r�r_r^rUror�r�r�r�r�r�r�r�r�r�r�r�rrr��_codecsrrr��platformr=r{r�r�ZskipIfr�r�r�r�mainrrrr
�<module>s4
"V`..V,,^V@
�g#��]u
�h

�y)X2":��




#�W'%.q