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

��g�	�f@svddlZddlZddlZddlZddlZddlZddlZddlmZddlm	Z	yddl
Z
Wnek
rxdZ
dZYnXe
�
e
j�Zdd�ZGdd�de�ZGd	d
�d
�ZGdd�de�ZGd
d�deej�ZGdd�deej�ZGdd�deej�ZGdd�deej�ZGdd�deej�ZGdd�deej�ZGdd�deej�Ze�ejdkd�Gdd�deej��ZGdd �d eej�ZGd!d"�d"ej�Z Gd#d$�d$ej�Z!Gd%d&�d&eej�Z"Gd'd(�d(ej�Z#Gd)d*�d*ej�Z$d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=gZ%x(e%D] Z&e'e&�d>k�re(e)e&���qWGd?d@�d@ej�Z*GdAdB�dBej�Z+dCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldHdmdng-Z,Gdodp�dpej�Z-Gdqdr�drej�Z.Gdsdt�dtej�Z/Gdudv�dvej�Z0Gdwdx�dxej�Z1dydzd{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�d�d�d�d�d�d�d�gfZ2e3ed߃�r�e2�4d�e3ed��r
e2�4d�d�d�gZ5Gd�d�d�eje�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<Gd�d�d�ej�Z=Gd�d�d�ej�Z>d�d�d�d�gZ?d�d�gd�gd�d�d�gd�g�dg�d�Z@yddlAZAWnek
�rdZAYn Xe?�4�d��d�dge@�d<yddlBZBWnek
�rNYnXe?�4�d��dge@�d<G�d�d��dej�ZCiZD�d	�d
�ZEe�FeE�yd�dlGmHZHWn"ek
�r��d�d
�ZHYnXG�d�d��dej�ZIe�ejdk�d�G�d�d��dej��ZJG�d�d��dej�ZKG�d�d��dej�ZLG�d�d��dej�ZMeN�dk�rre�O�dS(�N)�mock)�support���cs��fdd�}|S)Ncs���|�|t|�f�dS)N)�assertEqual�len)�input�expect)�coder�self��,/usr/local/lib/python3.7/test/test_codecs.py�checkszcoding_checker.<locals>.checkr)r
r	r
r)r	r
r�coding_checkersrc@s*eZdZdZdd�Zdd�Zd
dd�Zd	S)�QueuezF
    queue: write bytes at one end, read bytes from the other end
    cCs
||_dS)N)�_buffer)r
�bufferrrr�__init__szQueue.__init__cCs|j|7_dS)N)r)r
�charsrrr�write!szQueue.writercCsH|dkr"|j}|jdd�|_|S|jd|�}|j|d�|_|SdS)Nr)r)r
�size�srrr�read$sz
Queue.readN)r)�__name__�
__module__�__qualname__�__doc__rrrrrrrrsrc@seZdZdd�Zdd�ZdS)�MixInCheckStateHandlingc	Cs�x�tt|�d�D]�}t�|��}|�|d|��}|��}|�|dt�|ds�|�|ddd�df�|�	|�|d��|�
||���t�|��}|�|�|�||d�d�}|�
|||�qWdS)N�rT)�ranger�codecs�getincrementaldecoder�decode�getstate�assertIsInstance�int�setstate�
assertTruer)	r
�encoding�ur�i�d�part1�state�part2rrr�check_state_handling_decode0s
z3MixInCheckStateHandling.check_state_handling_decodec	Cs~xxtt|�d�D]d}t�|��}|�|d|��}|��}t�|��}|�|�|�||d�d�}|�|||�qWdS)NrT)rrr�getincrementalencoder�encoder"r%r)	r
r'r(rr)r*r+r,r-rrr�check_state_handling_encodeFs
z3MixInCheckStateHandling.check_state_handling_encodeN)rrrr.r1rrrrr/src@sXeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dZ
dd�Zdd�ZdS)�ReadTestc
	Cs�td�}t�|j�|�}d}xFt|�|j�|�D]0\}}|�t|g��||��7}|�	||�q0W|�	|��d�|�	|j
d�t�|j��}d}x>t|�|j�|�D](\}}||�t|g��7}|�	||�q�W|�	|�dd�d�|�	|j
d�|��d}x@t|�|j�|�D]*\}}||�t|g��7}|�	||��qW|�	|�dd�d�|�	|j
d�|�|j�}	|�	|d�t�dd�|	D�|j���dS)N��TcSsg|]}t|g��qSr)�bytes)�.0�crrr�
<listcomp>zsz*ReadTest.check_partial.<locals>.<listcomp>)rr�	getreaderr'�zipr0rr5rr�
bytebufferr r!r�reset�join�
iterdecode)
r
rZpartialresults�q�r�resultr7Z
partialresultr*�encodedrrr�
check_partialRs6zReadTest.check_partialcs��fdd��d�fdd�	}d}d}d}��||d�|���||d	�|���||dd
�|���||d	d
�|�d}g}g}xDt|�D]8\}}	|�|ddd
|	�|�|ddd
�q�W��|d�|�d�d�|����|d�|�d	�d�|��x�td�D]�}
x�|D]�}	d
|
d|	d}�|�}xBtd
�D]6}��|jdd�|
d|	���|jdd�d��q>W�|�}x>td
�D]2}��|jd	d�|
d���|jd	d�d��q�W�qW�q
WdS)Ncs"t�|��j��}t��j�|�S)N)�io�BytesIOr0r'rr9)r�stream)r
rrr9~sz)ReadTest.test_readline.<locals>.getreaderTcs:�|�}g}x"|j||d�}|s"P|�|�qWd�|�S)N)r�keepends�|)�readline�appendr=)rrGr�reader�lines�line)r9rr�readalllines�sz,ReadTest.test_readline.<locals>.readalllinesufoo
bar
baz
spam
eggsufoo
|bar
|baz
|spam
|eggszfoo|bar|baz|spam|eggsF�
)�
z
�
u
��uあr4rH�P�azxxx
)rG�xxx)TN)r�	enumeraterJr=rrI)r
rNrZ	sexpectedZsexpectednoendsZlineendsZvwZvwor)ZlineendrrKr)r9r
r�
test_readline}sH






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.r4cs"t����j��}t��j�|�S)N)rDrEr0r'rr9)rF)�datar
rrr9�sz8ReadTest.test_mixed_readline_and_read.<locals>.getreaderrr�d�(�)rr��j)r=rrIrr�	readlines)r
rLr9�fr)rXr
r�test_mixed_readline_and_read�s@
.*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�|�}x$t|�D]\}}|�|||�q�WdS)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<%
z
zimport 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                
r4)	rDrEr=r0r'rr9rVr)r
rrFrKr)rMrrr�test_bug1175396�s�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)Nr3zfoo
F)rG�fooz
bar
r4ZbarZbazTrPzbar
zfoo
)rr�	getwriterr'r9rrrI)r
r?�writerrKrrr�test_readlinequeue-s*






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.
r4)r0r'rDrErr9rrI)r
�s1�s2�s3rrFrKrrr�test_bug1098990_aHs
zReadTest.test_bug1098990_ac	Cs�d}d}d}d}d}|||||�|j�}t�|�}t�|j�|�}|�|��|�|�|��|�|�|��|�|�|��|�|�|��|�|�|��d�dS)Nzaaaaaaaaaaaaaaaaaaaaaaaa
zbbbbbbbbbbbbbbbbbbbbbbbb
zstillokay:bbbbxx
zbroken!!!!badbad
zagainokay.
r4)r0r'rDrErr9rrI)	r
rfrgrhZs4Zs5rrFrKrrr�test_bug1098990_bUs
zReadTest.test_bug1098990_bu�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�}�xdD�]\}}|�|j�t|�d�}|�|j�t|�d�}|d|}|||j|}|�t|j|j�|�|�|jd�|�|�|�|jd�|�|�|�|jd�||�|�|�|jd
�||j	|�d�
dd�|jD��}|�|�|jd�|||�q�WdS)Nu�u[�]�backslashreplacez[\udc80]�namereplace�xmlcharrefreplacez
[&#56448;]�ignorez[]�replacez[?]u[��]z[??]r4))u𐿿�A)�[�])rpu𐿿u��
surrogatepasscss|]}d|VqdS)z\x%02xNr)r6�brrr�	<genexpr>�sz0ReadTest.test_lone_surrogates.<locals>.<genexpr>)�assertRaises�UnicodeEncodeErrorr0r'rr�ill_formed_sequence�UnicodeDecodeErrorr!�ill_formed_sequence_replacer=)	r
ZbomZbeforeZafterZbefore_sequenceZafter_sequenceZtest_stringZ
test_sequencerkrrr�test_lone_surrogateshsJ


zReadTest.test_lone_surrogatescCs�d�|jd�}x\tdt|��D]J}t�|j�d�}|�|�|d|��d�|�|�||d�d�d�qWd�|jd�}xftdt|��D]T}t�|j�d�}|�|�|d|��d�|jdk}|�|�||d�|�d�q�WdS)Nu�rsrr4Tu��cp65001)r0r'rrrr rr!)r
rXr)�dec�finalrrr�test_incremental_surrogatepass�s 
z'ReadTest.test_incremental_surrogatepassN)
rrrrCrWr`rarerirjrzr{rrrrrr2Qs+;0E
,r2c@sdeZdZdZejdkrdZndZdZdZdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Zdd�ZdS)�	UTF32Testzutf-32�littles��s܀s$��spamspams$��spamspamcCs�t�|j�\}}}}t��}||�}|�d�|�d�|��}|�||jkpV||j	k�t�|�}||�}|�
|��d�dS)N�spam�spamspam)r�lookupr'rDrEr�getvaluer&�spamle�spamberr)r
�_rKrdrr_r*rrr�test_only_one_bom�s


zUTF32Test.test_only_one_bomcCsTt�d�}t�|j�|�}|�t|j�t�d�}t�|j�|�}|�t|j�dS)Ns����s��������)rDrErr9r'rv�UnicodeErrorr)r
rr_rrr�test_badbom�s

zUTF32Test.test_badbomcCs@|�dddddddddddddddddddddddddg�dS)NuÿĀ￿𐀀r4�uÿuÿĀuÿĀ￿)rC)r
rrr�test_partial�s4zUTF32Test.test_partialcCs0|�dt�ddd��|�dt�ddd��dS)N)u�r�roT)r4rrn)rr�
utf_32_decode)r
rrr�
test_handlers�szUTF32Test.test_handlerscCs|�ttjddd�dS)N���strictT)rvryrr�)r
rrr�test_errors�s
zUTF32Test.test_errorscCs(|�|jd|j�|�|jd|j�dS)Nr�)r.r'r�r�)r
rrr�test_decoder_state�s
zUTF32Test.test_decoder_statecCs8d}|�dt�|�d�d}|�dt�|�d�dS)Ns��u𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀rs��)rrr�)r
Z
encoded_leZ
encoded_berrr�test_issue8941�szUTF32Test.test_issue8941N)rrrr'�sys�	byteorderrxr�r�r�r�r�r�r�r�r�rrrrr��s
	r�c@s4eZdZdZdZdd�Zdd�Zdd�Zd	d
�ZdS)�UTF32LETestz	utf-32-les��cCs8|�dddddddddddddddddddddg�dS)NuÿĀ￿𐀀r4r�uÿuÿĀuÿĀ￿)rC)r
rrrr�
s,zUTF32LETest.test_partialcCs|�d�|j�d�dS)Nu𐈃s)rr0r')r
rrr�test_simple%szUTF32LETest.test_simplecCs|�ttjddd�dS)Nr�r�T)rvryr�utf_32_le_decode)r
rrrr�(s
zUTF32LETest.test_errorscCsd}|�dt�|�d�dS)Nsu𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀r)rrr�)r
rBrrrr�,szUTF32LETest.test_issue8941N)	rrrr'rxr�r�r�r�rrrrr�sr�c@s4eZdZdZdZdd�Zdd�Zdd�Zd	d
�ZdS)�UTF32BETestz	utf-32-bes܀cCs8|�dddddddddddddddddddddg�dS)NuÿĀ￿𐀀r4r�uÿuÿĀuÿĀ￿)rC)r
rrrr�8s,zUTF32BETest.test_partialcCs|�d�|j�d�dS)Nu𐈃s)rr0r')r
rrrr�SszUTF32BETest.test_simplecCs|�ttjddd�dS)Nr�r�T)rvryr�utf_32_be_decode)r
rrrr�Vs
zUTF32BETest.test_errorscCsd}|�dt�|�d�dS)Nsu𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀r)rrr�)r
rBrrrr�ZszUTF32BETest.test_issue8941N)	rrrr'rxr�r�r�r�rrrrr�4sr�c@sdeZdZdZejdkrdZndZdZdZdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Zdd�ZdS)�	UTF16Testzutf-16r�s��s܀s��spamspams��spamspamcCs�t�|j�\}}}}t��}||�}|�d�|�d�|��}|�||jkpV||j	k�t�|�}||�}|�
|��d�dS)Nr�r�)rr�r'rDrErr�r&r�r�rr)r
r�rKrdrr_r*rrrr�ls


zUTF16Test.test_only_one_bomcCsTt�d�}t�|j�|�}|�t|j�t�d�}t�|j�|�}|�t|j�dS)Ns��s����)rDrErr9r'rvr�r)r
rr_rrrr�{s

zUTF16Test.test_badbomcCs,|�dddddddddddddddg�dS)NuÿĀ￿𐀀r4r�uÿuÿĀuÿĀ￿)rC)r
rrrr��s zUTF16Test.test_partialcCs0|�dt�ddd��|�dt�ddd��dS)N)u�rr�roT)r4rrn)rr�
utf_16_decode)r
rrrr��szUTF16Test.test_handlerscCs|�ttjddd�dS)Nr�r�T)rvryrr�)r
rrrr��s
zUTF16Test.test_errorscCs(|�|jd|j�|�|jd|j�dS)Nr�)r.r'r�r�)r
rrrr��s
zUTF16Test.test_decoder_statec	Cs�d}|�|j�}|�tjtj�ttjd��}|�|�WdQRXt�dt	f��t
jtjd|jd�}WdQRX|�|�|��|�WdQRXdS)NzHello
world
�wbr4�U)r')
r0r'�
addCleanupr�unlink�TESTFN�openr�check_warnings�DeprecationWarningrrr)r
rfr�fprKrrr�test_bug691291�szUTF16Test.test_bug691291N)rrrr'r�r�rxr�r�r�r�r�r�r�r�r�rrrrr�bs
	r�c@s,eZdZdZdZdd�Zdd�Zdd�Zd	S)
�UTF16LETestz	utf-16-les��cCs(|�dddddddddddddg�dS)NuÿĀ￿𐀀r4r�uÿuÿĀuÿĀ￿)rC)r
rrrr��szUTF16LETest.test_partialcCsPdddddddg}x8|D]0\}}|�ttj|dd	�|�|�d
d�|�qWdS)N)r�u�)sAZuA�)s	ABCDZuABCD�)s�u�)s�Au�)s�Au�A)s�Au�Ar�Tzutf-16lero)rvryr�utf_16_le_decoderr!)r
�tests�raw�expectedrrrr��s

zUTF16LETest.test_errorscCs,|�d�|j�d�|�d�|j�d�dS)Nu𐈃s��)rr0r'r!)r
rrr�test_nonbmp�szUTF16LETest.test_nonbmpN)rrrr'rxr�r�r�rrrrr��s
r�c@s,eZdZdZdZdd�Zdd�Zdd�Zd	S)
�UTF16BETestz	utf-16-bes܀cCs(|�dddddddddddddg�dS)NuÿĀ￿𐀀r4r�uÿuÿĀuÿĀ￿)rC)r
rrrr��szUTF16BETest.test_partialcCsPdddddddg}x8|D]0\}}|�ttj|dd	�|�|�d
d�|�qWdS)N)r�u�)sA�uA�)s	ABCDZuABCD�)s�u�)s��u�)s�Au�A)s�Au�Ar�Tzutf-16bero)rvryr�utf_16_be_decoderr!)r
r�r�r�rrrr��s

zUTF16BETest.test_errorscCs,|�d�|j�d�|�d�|j�d�dS)Nu𐈃s��)rr0r'r!)r
rrrr�
szUTF16BETest.test_nonbmpN)rrrr'rxr�r�r�rrrrr��s
r�csTeZdZdZdZdZdZdd�Zdd�Zd	d
�Z	�fdd�Z
d
d�Zdd�Z�Z
S)�UTF8Testzutf-8s�u	���r3cCs.|�ddddddddddddddddg�dS)Nuÿ߿ࠀ￿𐀀r�uÿuÿ߿uÿ߿ࠀuÿ߿ࠀ￿)rC)r
rrrr�s"zUTF8Test.test_partialcCs d}|�|j||�|j��dS)Nu€ÿĀ߿ࠀ￿􏿿)r.r'r0)r
r(rrrr�,szUTF8Test.test_decoder_statec
CsJxDdD]<\}}}|j|||d��|�|�|j|�|�WdQRXqWdS)N))s[��]rnz[])s[��]rou[��])s[��]�surrogateescapeu[��])s[��]rkz
[\x80\xff])rX�
error_handlerr�)�subTestrr!r')r
rXr�r�rrr�test_decode_error1s
zUTF8Test.test_decode_errorc	snt���|�d�|jd�|jd�|�t��}d�|jd�WdQRX|j}|�|j	|j
|j�d�dS)Nu[�]r�s[�]u[���]u��)�superr{rr0r'�BOMrvrw�	exception�object�start�end)r
�cm�exc)�	__class__rrr{=s
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�WdQRX|�t	��d	�|jd�WdQRXdS)
Nu	abc�defrss	abc�defu𐿿�s𐿿�u[��]s[��]sabc�sabc�z)
rr0r'r�r!r&r�lookup_errorrvry)r
rrr�test_surrogatepass_handlerIsz#UTF8Test.test_surrogatepass_handlerc
Cs�dddddddg}x(dD] }xd	D]}|�||�q"WqW|�d
�xB|D]:}|j|d��$t�|j��}|�t|j|�WdQRXqLWdS)N������������r�)������s���s���s�s���s�s�)�r�)s�s�s�s�s�s�s�)rX)	rJ�extendr�rr r'rvryr!)r
Zcases�prefix�suffixrXr}rrr�test_incremental_errors\s



z UTF8Test.test_incremental_errors)rrrr'rxrzr�r�r�r�r{r�r��
__classcell__rr)r�rr�sr��win32zcp65001 is a Windows-only codecc@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�CP65001Testr|cCs�ddddddddd	g	}x�|D]�\}}}|dk	r�y|�d
|�}Wn6tk
rt}z|�d|||f�Wdd}~XYnX|�||d||||f�q|�t|jd
|�qWdS)
N)�abcr�sabc)ué€r�sé€)u􏿿r�s􏿿)u�r�N)u�rnr3)u�ro�?)u�rks\udc80)u�rls\udc80)u�rss�r|z1Unable to encode %a to cp65001 with errors=%r: %sz!%a.encode("cp65001", %r)=%a != %a)r0rw�failrrv)r
r��text�errorsr�rB�errrrr�test_encodess* zCP65001Test.test_encodecCs�ddddddddd	d
ddg}x�|D]�\}}}|dk	r�y|�d
|�}Wn6tk
rz}z|�d|||f�Wdd}~XYnX|�||d||||f�q"|�t|jd
|�q"WdS)N)sabcr�r�)sé€r�ué€)s􏿿r�u􏿿)s�r�u�)s[é]r�u[é])s[�]r�N)s[�]rnz[])s[�]rou[�])s[�]r�u[�])s[�]r�N)s[�]rnz[])s[�]rou[���]r|z3Unable to decode %a from cp65001 with errors=%r: %sz!%a.decode("cp65001", %r)=%a != %a)r!ryr�rrv)r
r�r�r�r��decodedr�rrr�test_decode�s0 zCP65001Test.test_decodecCs�|�tdjd�|�tdjd�|�d�dd�d�|�d�dd�d�|�d�dd�d	�|�d�dd
�d�|�d�dd�d
�|�d�dd�d�dS)Nu�r|s�u[�]rks[\udc80]rlrms
[&#56448;]r�s[�]rns[]ros[?])rvrwr0ryr!r)r
rrrr{�sz CP65001Test.test_lone_surrogatescCsd|�d�dd�d�|�d�dd�d�|�d�dd�d�|�d�dd�d�|�t�d��dS)Nu	abc�defr|rss	abc�defu𐿿�s𐿿�)rr0r!r&rr�)r
rrrr��sz&CP65001Test.test_surrogatepass_handlerN)rrrr'r�r�r{r�rrrrr�ns
r�c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�UTF7Testzutf-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 	

r4��+sX+AAAAAQACAAMABAAFAAYABwAIAAsADAAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwBcAH4Afw-)	rr0r'r!r=�sorted�setr5r)r
Zset_dZset_oZwsZother_asciirrr�
test_ascii�szUTF7Test.test_asciic#CsP|�dddddddddddddddddd	d	d	d	d	d
ddddddddddg �dS)
Nua+-bc€dĀe𐀀frTza+za+-za+-bza+-bza+-bcua+-bc€u	a+-bc€dua+-bc€dĀua+-bc€dĀeua+-bc€dĀe𐀀)rC)r
rrrr��sDzUTF7Test.test_partialcCs�ddddddddd	d
ddd
dddddddg}xP|D]H\}}|j|d��.|�ttj|dd�|�|�dd�|�WdQRXq2WdS)N)s�bu�b)sa�bua�b)sa��bua��b)sa+IKua�)sa+IK-bua�b)sa+IK,bua�b)sa+IKxua€�)sa+IKx-bua€�b)sa+IKwgrua€�)s	a+IKwgr-bua€�b)sa+IKwgr,ua€�)s
a+IKwgr,-bu	a€�-b)sa+IKwgrBu
a€€�)s
a+IKwgrB-bua€€�b)s
a+/,+IKw-bua�€b)sa+//,+IKw-bua�€b)sa+///,+IKw-bua￿�€b)s
a+////,+IKw-bua￿�€b)sa+IKw-b�ua€b�)sa+IKw�bua€�b)r�r�Tzutf-7ro)r�rvryr�utf_7_decoderr!)r
r�r�r�rrrr�s2

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+IKwgrNgB3KA)rr0r'r!)r
rrrr�(szUTF7Test.test_nonbmpc
Cs`ddddddddd	d
ddd
g
}x<|D]4\}}|j|d��|�|�dd�|�WdQRXq$WdS)N)sa+2AE-bua�b)sa+2AE�bua�b)sa+2AEua�)sa+2AEA-bua�b)sa+2AH-bua�b)s
a+IKzYAQ-bua€�b)s
a+IKzYAQ�bua€�b)sa+IKzYAQA-bua€�b)s
a+IKzYAd-bua€�b)sa+IKwgrNgB-bua€€�b)sa+IKwgrNgB�bua€€�b)s
a+IKwgrNgBu
a€€�)s
a+IKwgrNgBA-bua€€�b)r�zutf-7ro)r�rr!)r
r�r�r�rrrr{7s zUTF7Test.test_lone_surrogatesN)	rrrr'r�r�r�r�r{rrrrr��s'r�c@seZdZdd�Zdd�ZdS)�UTF16ExTestcCs|�ttjdddd�dS)Nr�r�rT)rvryr�utf_16_ex_decode)r
rrrr�NszUTF16ExTest.test_errorscCs|�ttj�dS)N)rv�	TypeErrorrr�)r
rrr�
test_bad_argsQszUTF16ExTest.test_bad_argsN)rrrr�r�rrrrr�Lsr�c@s$eZdZdd�Zdd�Zdd�ZdS)�ReadBufferTestcCs&ddl}|�t�|�dd��d�dS)Nrrtsspam)sspam�)�arrayrr�readbuffer_encode)r
r�rrr�
test_arrayVszReadBufferTest.test_arraycCs|�t�d�d�dS)Nr4)r3r)rrr�)r
rrr�
test_empty]szReadBufferTest.test_emptycCs"|�ttj�|�ttjd�dS)N�*)rvr�rr�)r
rrrr�`szReadBufferTest.test_bad_argsN)rrrr�r�r�rrrrr�Tsr�c@s>eZdZdZejZdd�Zdd�Zdd�Z	dd	�Z
d
d�ZdS)
�UTF8SigTestz	utf-8-sigcCs:|�ddddddddddddddddddddddg�dS)	Nuÿ߿ࠀ￿𐀀r4uuuÿuÿ߿uÿ߿ࠀuÿ߿ࠀ￿)rC)r
rrrr�hs.zUTF8SigTest.test_partialcCs|�tdd�d�dS)Nsz	utf-8-sigr4)r�str)r
rrr�test_bug1601501�szUTF8SigTest.test_bug1601501cCs,t�d��}d}|�|�|�d��|�dS)Nz	utf-8-sigr�)rr rr!r0)r
r*rrrr�test_bom�szUTF8SigTest.test_bomc	Cs�d}tjd}t�d�}x�dgttdd��dddd	d
gD]`}|t�|��}t��}x0|dk	rl|�|�}n|��}|szP|�	|�qXW|�
�}|�||�q<WdS)NuABC¡∀XYZsABC¡∀XYZz	utf-8-sigr��@r��ii)r�BOM_UTF8r9�listrrDrE�StringIOrrr�r)	r
�	unistring�
bytestringrK�sizehint�istream�ostreamrX�gotrrr�test_stream_bom�s 

zUTF8SigTest.test_stream_bomc	Cs�d}d}t�d�}x�dgttdd��dddd	d
gD]`}|t�|��}t��}x0|dk	rf|�|�}n|��}|stP|�|�qRW|�	�}|�
||�q6WdS)NuABC¡∀XYZsABC¡∀XYZz	utf-8-sigrr�r�r�r�ii)rr9r�rrDrEr�rrr�r)	r
r�r�rKr�r�r�rXrrrr�test_stream_bare�s 
zUTF8SigTest.test_stream_bareN)rrrr'rr�r�r�r�r�rrrrrrr�dsr�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�EscapeDecodeTestcCs*|�t�d�d�|�t�t��d�dS)Nr3)r3r)rr�
escape_decode�	bytearray)r
rrrr��szEscapeDecodeTest.test_emptycCsJtj}x>td�D]2}t|g�}|dkr|�||d�|ddf�qWdS)Nr��\�0�)rrrr5r)r
r!rtrrr�test_raw�s

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!�x~td%d&�D]p}t|g�}|d'k�r$|�t��|d(|d(|�WdQRX|�t�� |d(|��d(|���WdQRXq�W|�t��|d)d)�WdQRX|�t��|d*d*�WdQRX|�t��|d+d+�WdQRXdS),Ns[\
]s[]s[\"]s["]s[\']s[']s[\\]s[\]s[\a]s[]s[\b]s[]s[\t]s[	]s[\n]s[
]s[\v]s[]s[\f]s[]s[\r]s[
]s[\7]s[\78]s[8]s[\41]s[!]s[\418]s[!8]s[\101]s[A]s[\1010]s[A0]s[\501]s[\x41]s[\x410]�a�{sabfnrtvxrs\8s\9s\�)rrrrr5�assertWarnsr��upper)r
r!r
r)rtrrr�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]\xrn)s[]r\ro)s[?]?r\s\x0s[\x0]s[\x0]\x0)s[]�)s[?]?r)rrrv�
ValueErrorr)r
r!rrrr��szEscapeDecodeTest.test_errorsN)rrrr�r	rr�rrrrr�s%rc@seZdZdd�ZdS)�RecodingTestcCs8t��}t�|dd�}|�d�|��|�|j�dS)N�unicode_internalzutf-8rT)rDrEr�EncodedFiler�closer&�closed)r
r_�f2rrr�
test_recoding�s

zRecodingTest.test_recodingN)rrrrrrrrr�sr)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)�PunycodeTestcCs<x6tD].\}}|�t|�d�d���t|d����qWdS)N�punycoder�)�punycode_testcasesrr�r0�lower)r
�uni�punyrrrr�pszPunycodeTest.test_encodecCsJxDtD]<\}}|�||�d��|�d��d�}|�||�d��qWdS)Nrr�)rrr!r0)r
rrrrrr�|szPunycodeTest.test_decodec
Cstddt�fdg}x^|D]V\}}}|j||d��8t|t�rN|�t|jd|�n|�|�d|�|�WdQRXqWdS)Nsxn--w&r�)sxn--w&rnzxn-)rr�r)r�r��
isinstance�	Exceptionrvr!r)r
Z	testcasesrr�r�rrr�test_decode_invalid�s

z PunycodeTest.test_decode_invalidN)rrrr�r�r rrrrrosrc@s\eZdZe�edkd�dd��Ze�edkd�dd��Ze�edkd�dd��Zd	d
�Z	dS)�UnicodeInternalTestr�zspecific to 32-bit wchar_tc
CsHdddg}dddddg}xL|D]D\}}tjd	kr<tt|��}t���|�||�d
��WdQRXqWxL|D]D}tjd	kr�tt|��}t�dtf��|�	t
|jd
�WdQRXqlWtjd	kr�d}d
}nd}d}t���|�	t
|jd
�WdQRXt���|�|�d
d�d�WdQRXt���|�|�d
d�|�WdQRXdS)N)s��u􏿿)suā)r3r4s���s�s��sr�rz*unicode_internal codec has been deprecatedsz\x00\x00\x11\x00sz\x00\x11\x00\x00rou�rk)r�r�r5�reversedrr�rr!r�rvry)r
�okZnot_okZinternalrZinvalidZinvalid_backslashreplacerrr�test_bug1251300�sD

 







z#UnicodeInternalTest.test_bug1251300c
Cs�y(t�dtf��d�d�WdQRXWnZtk
r�}z<|�d|j�|�d|j�|�d|j�|�d|j	�Wdd}~XYn
X|�
�dS)Nz*unicode_internal codec has been deprecatedsrr�r)rr�r�r!ryrr'r�r�r�r�)r
Zexrrr�test_decode_error_attributes�s
 z0UnicodeInternalTest.test_decode_error_attributesc	Csxt�dtj�t�d�}t�dtf��<d�d���}|t	d|dd�|dd�fd�d�}WdQRX|�
d|�dS)	Nr!rz*unicode_internal codec has been deprecated�abz%s""""%sr�r�)r'�)r�register_error�
ignore_errors�
getdecoderrr�r�r0r!r5r)r
�decoderr'Zignoredrrr�test_decode_callback�s

z(UnicodeInternalTest.test_decode_callbackc	Csft�dtf��Nt�d�}|�|d�dd�|�|d�dd�|�t�d�dd�WdQRXdS)	Nz*unicode_internal codec has been deprecatedrrTruéłrs\x00r�)rr�r�r�
getencoderr�
escape_encode)r
�encoderrrr�test_encode_length�s

z&UnicodeInternalTest.test_encode_lengthN)
rrr�unittest�
skipUnless�SIZEOF_WCHAR_Tr%r&r-r1rrrrr!�s,r!)s%foo­͏᠆᠋bar​⁠baz︀︈️s	foobarbaz)sCAFEscafe)sßsss)sİsi̇)sŃͺsń ι)NN)sǰ ªsǰ a)sᾷsᾶι)sǰsǰ)sΐsΐ)sΰsΰ)sẖsẖ)sὖsὖ)� r5)s r5)s N)s r5)s​r3)s r5)ss)s…N)s᠎N)sr3)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)sا1بsا1ب)sX­ßİ℡ǰ ªΰ sxssi̇telǰ aΰ )sXß㌖İ℡⒟㌀s*xssキロメートルi̇tel(d)アパートc@seZdZdd�ZdS)�NameprepTestcCs�ddlm}x�tt�D]�\}\}}|dkr,qt|dd�}|dkrP|�t||�qt|dd�}y|�||�|�Wqtk
r�}zt	�
d|dt|�f��Wdd}~XYqXqWdS)Nr)�nameprepzutf-8rsz
Test 3.%d: %sr)Zencodings.idnar7rV�nameprep_testsr�rvr�rrrZ
TestFailed)r
r7�posZorigZprepped�errr�
test_nameprep{szNameprepTest.test_nameprepN)rrrr;rrrrr6zsr6c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�
IDNACodecTestcCsL|�tdd�d�|�tdd�d�|�tdd�d�|�tdd�d	�dS)
Ns
python.org�idnaz
python.orgspython.org.zpython.org.sxn--pythn-mua.orgupythön.orgsxn--pythn-mua.org.upythön.org.)rr�)r
rrr�test_builtin_decode�sz!IDNACodecTest.test_builtin_decodecCsL|�d�d�d�|�d�d�d�|�d�d�d�|�d�d�d	�dS)
Nz
python.orgr=s
python.orgzpython.org.spython.org.upythön.orgsxn--pythn-mua.orgupythön.org.sxn--pythn-mua.org.)rr0)r
rrr�test_builtin_encode�sz!IDNACodecTest.test_builtin_encodecCs2t�d�t�d��}|�d�|�|��d�dS)Nr=sabc�r4)rr9rDrErr)r
r@rrr�test_stream�s
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)Nr4css|]}t|g�VqdS)N)r5)r6r7rrrru�sz8IDNACodecTest.test_incremental_decode.<locals>.<genexpr>s
python.orgr=z
python.orgcss|]}t|g�VqdS)N)r5)r6r7rrrru�sspython.org.zpython.org.css|]}t|g�VqdS)N)r5)r6r7rrrru�ssxn--pythn-mua.org.upythön.org.css|]}t|g�VqdS)N)r5)r6r7rrrru�ssxn--xams	ple-9ta.ou	äxample.srgr3TZorgsrg.zorg.)rr=rr>r r!r<)r
r,rrr�test_incremental_decode�s,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)Nr3z
python.orgr=s
python.orgzpython.org.spython.org.upythön.org.sxn--pythn-mua.org.uäxz	ample.orgsxn--xample-9ta.r4Tsorgz
ample.org.sxn--xample-9ta.org.)rr=r�
iterencoder/r0r<)r
r0rrr�test_incremental_encode�s(z%IDNACodecTest.test_incremental_encodecCsNd�dd�d�dd�x0dD](}|�tdjd|�|�tdjd|�qWdS)z$Only supports "strict" error handlerz
python.orgr=r�s
python.org)rnrorkr�N)r0r!rvr)r
r�rrrr��s
zIDNACodecTest.test_errorsN)	rrrr>r?rArBrDr�rrrrr<�sr<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)
Ns�zlatin-1uäöüsabcr�r�r�)�objr's[�]rn)r�z[])rrr!rvr�ry)r
rrrr��szCodecsModuleTest.test_decodecCs�|�t�dd�d�|�ttj�|�ttjdd�|�t�d�d�|�ttjdd	�|�tjddd
�d�|�tjdd	dd
�d�dS)Nuäöüzlatin-1s�rb�__spam__r�sabcuÿffr�)rFr'u[ÿ]rn)r�s[])rrr0rvr��LookupErrorrw)r
rrrr��szCodecsModuleTest.test_encodecCs"|�ttj�|�ttjd�dS)Nr�)rvr�r�register)r
rrr�
test_registerszCodecsModuleTest.test_registercCs2|�ttj�|�ttjd�|�ttjd�dS)NrG� )rvr�rr�rH)r
rrr�test_lookupszCodecsModuleTest.test_lookupcCs"|�ttj�|�ttjd�dS)NrG)rvr�rr.rH)r
rrr�test_getencodersz CodecsModuleTest.test_getencodercCs"|�ttj�|�ttjd�dS)NrG)rvr�rr+rH)r
rrr�test_getdecodersz CodecsModuleTest.test_getdecodercCs"|�ttj�|�ttjd�dS)NrG)rvr�rr9rH)r
rrr�test_getreaderszCodecsModuleTest.test_getreadercCs"|�ttj�|�ttjd�dS)NrG)rvr�rrcrH)r
rrr�test_getwriterszCodecsModuleTest.test_getwritercCsnt�tj�}|�tjtj|�yt�tjd�Wn tjk
rP|�d�YnXt�d�}|�|j	d�dS)N�tr_TRztest needs Turkish locale�ASCIIr�)
�locale�	setlocale�LC_CTYPEr��ErrorZskipTestrr�r�name)r
Z	oldlocaler7rrr�test_lookup_issue1813s
z&CodecsModuleTest.test_lookup_issue1813cCs0d}|�|tj�xtjD]}tt|�qWdS)N),r0r!rI�	CodecInfo�Codec�IncrementalEncoder�IncrementalDecoder�StreamReader�StreamWriterr�r.r+r/r r9rcr)r��
strict_errors�replace_errorsr*�xmlcharrefreplace_errors�backslashreplace_errors�namereplace_errorsr�rrCr>r��BOM_BE�BOM_LEr��	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)ZassertCountEqualr�__all__�getattr)r
Zapirrr�test_all(szCodecsModuleTest.test_allcCsb|�tjtj�xLdD]D}|�|��0t�tj|d��}|�|tj�WdQRXWdQRXqWdS)N)�wr@zr+zw+rTza+r�)	r�rr�r�r�rr�r#rp)r
�mode�filerrr�	test_open?s

zCodecsModuleTest.test_opencCs�|�ttjdd�|�ttjdd�|�ttjdd�|�ttjdd�x4dD],}|�ttjdd|�|�ttjdd|�qNWdS)Nr�Z	undefinedsabcr4r3)r�rnrork)rvr�rr0r!)r
r�rrr�test_undefinedFs
zCodecsModuleTest.test_undefinedc
CsVt��}t�d|��8}|�t��t�tjdd�WdQRX|�j	�
�WdQRXdS)Nz
builtins.openZwtzinvalid-encoding)r�	mock_open�patchrvrHrr�rr�rZ
assert_called)r
rzrwrrr�'test_file_closes_if_lookup_error_raisedQs
z8CodecsModuleTest.test_file_closes_if_lookup_error_raisedN)rrrr�r�rJrLrMrNrOrPrXrtrxryr|rrrrrE�s

rEc@seZdZdd�Zdd�ZdS)�StreamReaderTestcCst�d�|_t�d�|_dS)Nzutf-8s한
글)rr9rKrDrErF)r
rrr�setUp\szStreamReaderTest.setUpcCs$|�|j�}|�|��ddg�dS)Nu한
u글)rKrFrr^)r
r_rrr�test_readlines`szStreamReaderTest.test_readlinesN)rrrr~rrrrrr}Zsr}c@seZdZdd�ZdS)�EncodedFileTestcCs\t�d�}t�|dd�}|�|��d�t��}t�|dd�}|�d�|�|��d�dS)Ns한
글z	utf-16-lezutf-8s\�
�zlatin-1sü��)rDrErrrrrr�)r
r_�efrrr�
test_basicgs

zEncodedFileTest.test_basicN)rrrr�rrrrr�esr�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_r�koi8_t�koi8_u�kz1048�latin_1�mac_cyrillic�	mac_greek�mac_iceland�
mac_latin2�	mac_roman�mac_turkishZpalmos�ptcp154rZraw_unicode_escape�	shift_jis�shift_jis_2004�shift_jisx0213�tis_620Zunicode_escaper�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}�x�tD�]�}t�|�j}|�d�r2|d7}n|dkr>d}|�|�dd�|�dd��t���Rt�	|�|�\}}|�|t
|�d|�t�|�|�\}}|�||d|�WdQRX|tk�rvt
d�}t�|�|�}d}	x>|D]6}
|�|
�|��}|�t|�tkt|��|	|7}	q�Wt
d�}t�|�|�}d}
x*|	D]"}
|�t|
g��|
|��7}
�q>W|�|
|d|�|tkryt�|���Wntk
�r�Yn�Xd}	x|D]}
|	��|
�7}	�q�W|	��dd	�7}	t�|���d}
x"|	D]}
|
��t|
g��7}
�q�W|
��dd	�7}
|�|
|d|�d�t�t�||�|��}|�||d|�d�t�t�d|�|��}|�|d�|d
kryt�|�d��Wntk
�r�YqXd��fdd
�|D��}	t�|�d��d��fdd
�|	D��}
|�|
|d|�qWdS)N�abc123Z_codecr�r��-zencoding=%rr3r4T)r=r�rnc3s|]}��|�VqdS)N)r0)r6r7)r0rrru3sz/BasicUnicodeTest.test_basics.<locals>.<genexpr>c3s|]}��t|g��VqdS)N)r!r5)r6r7)r,rrru5s)�all_unicode_encodingsrr�rW�endswithrrorr�r.rr+�broken_unicode_with_statefulrrcrrr&�typer5r9r/rHr0r r!r=r>rC)r
rr'rWrtrrr?rd�
encodedresultr7�chunkrK�
decodedresultrAr)r,r0r�test_basics�s|










zBasicUnicodeTest.test_basicsc	sLddlm}m}d}�x0tD�]&}|tkry||��Wntk
rJYn�Xd}x|D]}|��|�7}qVW|��dd�7}||��d}x |D]}|��t|g��7}q�W|��dd�7}|�	||d|�|dkry||d	��Wntk
r�YqXd�
�fd
d�|D��}||d	��d�
�fdd�|D��}|�	||d|�qWdS)
Nr)�codec_incrementalencoder�codec_incrementaldecoderr�r3r4Tzencoding=%r)r=r�rnc3s|]}��|�VqdS)N)r0)r6r7)�cencoderrrruZsz4BasicUnicodeTest.test_basics_capi.<locals>.<genexpr>c3s|]}��t|g��VqdS)N)r!r5)r6r7)�cdecoderrrru\s)Z	_testcapir�r�r�r�rHr0r!r5rr=)r
r�r�rr'r�r7r�r)r�r�r�test_basics_capi:s<




z!BasicUnicodeTest.test_basics_capicCszdd}xltD]d}|dkrq|tkr&qt�|�t�|�|���}x0td�D]$}|�dd�|�	�}|�
||�qJWqWdS)Nz%s
%s
)AXabc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123AXdef456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456r=r[r)r�r�rr9rDrEr0r�seekrr)r
rr'rK�trXrrr�	test_seekas
zBasicUnicodeTest.test_seekcCs>x8tD]0}t�|�}|�t|�|dkr|�t|d�qWdS)N)r=rr�)r�rr+rvr�)r
r'r,rrr�test_bad_decode_argsps


z%BasicUnicodeTest.test_bad_decode_argsc
Cs<x6tD].}t�|�}t���|�t|�WdQRXqWdS)N)r�rr.rr�rvr�)r
r'r0rrr�test_bad_encode_argsws


z%BasicUnicodeTest.test_bad_encode_argscCs&ddlm}t|j�}|�||�dS)Nr)r�)�	encodingsr�r��encoding_tabler)r
r�Z
table_typerrr�"test_encoding_map_type_initialized~s
z3BasicUnicodeTest.test_encoding_map_type_initializedcCsFd}x<tD]4}|tkr
|�|||�|��|�|||�|��q
WdS)Nr�)r�r�r.r0r1)r
r(r'rrrr��s

z#BasicUnicodeTest.test_decoder_stateN)rrrr�rZcpython_onlyr�r�r�r�r�r�rrrrr��sO'r�c@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)Nsr�r�)r�r@u􏿿bc)u􏿿bcr@r'uab￾ro)uab�r@rk)zab\x02r@rn)r'r@r�r4)rr�charmap_decodervryr5rr)r
�allbytesrrr�test_decode_with_string_map�s@z'CharmapTest.test_decode_with_string_mapc
Cs|�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�dS)Nsr�rTrtr7)rrr)r�r@ZAaZBbZCc)ZAaBbCcr@u􏿿)u􏿿bcr@r4)r'r@)rru￾ro)uab�r@rk)zab\x02r@rnr�)rrr�rvryr5rr)r
r�rrr�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)NrTrtr7sr�)rrr)r�r@i��)u􏿿bcr@Zbcr@r)rri��ro)uab�r@rk)zab\x02r@rn)r'r@)
�ordrrr�r��
maxunicode�chrrvr�ry)r
rTrtr7rrr�test_decode_with_int2int_map-	s`


z(CharmapTest.test_decode_with_int2int_mapN)rrrr�r�r�rrrrr��s7hr�c@seZdZdd�Zdd�ZdS)�WithStmtTestc	CsDt�d�}t�|dd��}|�|��d�WdQRX|�|j�dS)Nsüzlatin-1zutf-8r�)rDrErrrrr&r)r
r_r�rrr�test_encodedfilez	s
zWithStmtTest.test_encodedfilec	CsHt�d�}t�d�}t�||j|jd��}|�|��d�WdQRXdS)Nsüzutf-8r��ü)	rDrErr�rp�streamreader�streamwriterrr)r
r_�info�srwrrr�test_streamreaderwriter�	s



z$WithStmtTest.test_streamreaderwriterN)rrrrrrrrrr�y	sr�c@seZdZdd�Zdd�ZdS)�	TypesTestcCsjtjtjtjtjtjtjtjtjtj	tj
tjtjg}t
td�rJ|�tj�x|D]}|�t|d�qPWdS)N�mbcs_decoderU)rr��utf_8_decoder�r�r�r�r�r��utf_32_ex_decode�latin_1_decode�ascii_decoder��hasattrrJrrvr�)r
Zdecodersr,rrr�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ሴr\s\u1234s
\U00110000z
\U00110000ro)u�rOrk)z(\x5c\x55\x30\x30\x31\x31\x30\x30\x30\x30rO)rr�unicode_escape_decode�raw_unicode_escape_decodervry)r
rrr�test_unicode_escape�	szTypesTest.test_unicode_escapeN)rrrrrrrrrr�	src@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�UnicodeEscapeTestcCs(|�t�d�d�|�t�d�d�dS)Nr4)r3rr3)r4r)rr�unicode_escape_encoder)r
rrrr��	szUnicodeEscapeTest.test_emptycCsDtj}x8tdd�D]*}|dkr|�|t|��t|g�df�qWdS)N� ��\r)rrrrr�r5)r
r0rtrrr�test_raw_encode�	sz!UnicodeEscapeTest.test_raw_encodecCsJtj}x>td�D]2}|dkr|�|t|g�d�t|�ddf�qWdS)Nr�rr�0r)rrrrr5r�)r
r!rtrrr�test_raw_decode�	sz!UnicodeEscapeTest.test_raw_decodecCs�tj}t||�}|dd�|dd�|dd�|dd�x2td	�D]&}t|�d
krB|t|�d|���qBWx(tdd
�D]}|t|�d|���qxW|dd�|dd�dS)N�	s\trPs\nrQs\r�\s\\rz	

z\x%02xrr�u€s\u20acu𝄠s
\U0001d120)rrrrr�r0)r
r0r
rtrrr�test_escape_encode�	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'�x�td(d)�D]�}t|g�}|d*k�r2|�t��|d+|d,t|��WdQRX|��d-kr�|�t��$|d+|��d,t|d.��WdQRXq�W|�t��|d/d0�WdQRX|�t��|d1d2�WdQRX|�t��|d3d4�WdQRXdS)5Ns[\
]z[]s[\"]z["]s[\']z[']s[\\]z[\]s[\a]z[]s[\b]z[]s[\t]z[	]s[\n]z[
]s[\v]z[]s[\f]z[]s[\r]z[
]s[\7]s[\78]z[8]s[\41]z[!]s[\418]z[!8]s[\101]z[A]s[\1010]z[A0]s[\x41]s[\x410]s\u20acu€s
\U0001d120u𝄠r
rs	abfnrtuvxrrsUNrs\8z\8s\9z\9s\�u\ú)	rrrrr5rr�r�r
)r
r!r
r)rtrrr�test_escape_decode�	sJ























 ,z$UnicodeEscapeTest.test_escape_decodec	Cs�tj}x�dD]�\}}x�t|�D]�}|�t|d|d|�|�t|d|d|d�d|d|d|d|}|�||d�dt|�f�|�||d	�d
t|�f�qWqW|�t|d�|�|dd�d�|�|dd	�d
�dS)N))�xr)�ur�)�Ur�rrs[\�]s]\rnz[]rou[�]�s
\U00110000)r4rO)u�rO)rrrrvryrr)r
r!r7r*r)rXrrr�test_decode_errors�	s z$UnicodeEscapeTest.test_decode_errorsN)	rrrr�rrrrr"rrrrr�	s'rc@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�RawUnicodeEscapeTestcCs(|�t�d�d�|�t�d�d�dS)Nr4)r3rr3)r4r)rr�raw_unicode_escape_encoder)r
rrrr�

szRawUnicodeEscapeTest.test_emptycCs:tj}x.td�D]"}|�|t|��t|g�df�qWdS)Nr�r)rr$rrr�r5)r
r0rtrrrr
sz$RawUnicodeEscapeTest.test_raw_encodecCsBtj}x6td�D]*}|�|t|g�d�t|�ddf�qWdS)Nr�rrr)rrrrr5r�)r
r!rtrrrr
sz$RawUnicodeEscapeTest.test_raw_decodecCs^tj}t||�}x4td�D](}|dkr|dt|�dt|g��qW|dd�|dd�dS)	Nr�suUrru€s\u20acu𝄠s
\U0001d120)rr$rrr�r5)r
r0r
rtrrrr
s
 
z'RawUnicodeEscapeTest.test_escape_encodecCs^tj}t||�}x4td�D](}|dkr|dt|g�dt|��qW|dd�|dd�dS)	Nr�suUrrs\u20acu€s
\U0001d120u𝄠)rrrrr5r�)r
r!r
rtrrrr!
s
 
z'RawUnicodeEscapeTest.test_escape_decodec	Cs�tj}x�dD]�\}}x�t|�D]�}|�t|d|d|�|�t|d|d|d�d|d|d|d|}|�||d�dt|�f�|�||d	�d
t|�f�qWqW|�t|d�|�|dd�d�|�|dd	�d
�dS)N))rr�)r r�rrs[\r!s]\rnz[]rou[�]�s
\U00110000)r4rO)u�rO)rrrrvryrr)r
r!r7r*r)rXrrrr"*
s z'RawUnicodeEscapeTest.test_decode_errorsN)	rrrr�rrrrr"rrrrr#	
s		r#c@seZdZdd�ZdS)�EscapeEncodeTestc
Csxddddddddg}x:|D]2\}}|j|d	��|�t�|�|�WdQRXqW|�ttjd
�|�ttjtd��dS)N)r3)r3r)sfoobar)sfoobarr\)s	spameggs)sspam\x00eggs�	)sa'b)sa\'br@)sb\c)sb\\cr@)sc
d)sc\ndr@)sd
e)sd\rer@)sfg)sf\x7fgr@)rXr�sspam)r�rrr/rvr�r)r
r�rX�outputrrrr=
s z#EscapeEncodeTest.test_escape_encodeN)rrrrrrrrr%;
sr%c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�SurrogateEscapeTestcCsT|�d�dd�d�|�d�dd�d�|�d�dd�d�|�d�dd�d�dS)Nsfoo�barzutf-8r�u	foo�bars�u	���)rr!r0)r
rrr�	test_utf8Q
szSurrogateEscapeTest.test_utf8cCs,|�d�dd�d�|�d�dd�d�dS)Nsfoo�barr�r�u	foo�bar)rr!r0)r
rrrr�]
szSurrogateEscapeTest.test_asciicCs,|�d�dd�d�|�d�dd�d�dS)Nsfoo�barz
iso-8859-3r�u	foo�bar)rr!r0)r
rrr�test_charmapd
sz SurrogateEscapeTest.test_charmapcCs|�d�dd�d�dS)Nu�����zlatin-1r�s���)rr0)r
rrr�test_latin1k
szSurrogateEscapeTest.test_latin1N)rrrr)r�r*r+rrrrr(O
sr(c@seZdZdd�ZdS)�BomTestc
Cs<d}d}|�tjtj��x|D�]}tjtjd|d��V}|�|�|�|�|�d�|�|�	�|d�|�d�|�|�	�|d�WdQRXtjtjd|d��R}|�|d�|�
|��d�|�d�|�|�|�d�|�|�	�|�WdQRXtjtjd|d��Z}|j�|d�|�
|j��d�|j�d�|j�|�|�d�|�|�	�|�WdQRXtjtjd|d��F}|�|�|�|���|�|�|�d�|�|�	�|d�WdQRXtjtjd|d��N}|j�|�|j�|j���|j�|�|�d�|�|�	�|d�WdQRXq WdS)NZ
1234567890)zutf-16z	utf-16-lez	utf-16-bezutf-32z	utf-32-lez	utf-32-bezw+)r'rr)
r�rr�r�rr�rr�rrZassertNotEqual�tellrd)r
rXr�r'r_rrr�
test_seek0r
sJ











zBomTest.test_seek0N)rrrr.rrrrr,q
sr,�base64_codec�uu_codec�quopri_codec�	hex_codec�base64�base_64�uu�quopri�quoted_printable�quotedprintable�hex�rot13)r/r0r1r2�rot_13�
zlib_codecr:�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��}xttD]l}|j|d��Vt�|�|�\}}|�|t|��t�|�|�\}}|�|t|��|�||�WdQRXqWdS)Nr�)r')	r5r�bytes_transform_encodingsr�rr.rrr+)r
Zbinputr'�orr)rrrr��
s
zTransformCodecTest.test_basicsc
Cs^xXtD]P}|j|d��:t�d|�}t�|�t�|��}|��}|�|d�WdQRXqWdS)N)r'r�)	rAr�rr0r9rDrErr)r
r'�sinrK�soutrrr�	test_read�
s
zTransformCodecTest.test_readc
Cs^xXtD]P}|j|d��:t�d|�}t�|�t�|��}|��}|�|d�WdQRXqWdS)N)r'r�)	rAr�rr0r9rDrErIr)r
r'rCrKrDrrrrW�
s
z TransformCodecTest.test_readlinec
Cs�d}x�tD]�}|j|d��n|}t|�}t�||�}t�||�}|�||�t|�}t�||�}|�||�t�||�}|�||�WdQRXq
WdS)Ns12345�)r')rAr��
memoryviewrr0rr!)r
Zoriginalr'rXZviewZview_encodedZview_decodedrrr�test_buffer_api_usage�
s
z(TransformCodecTest.test_buffer_api_usagecCsld}xbtD]Z}|j|d��Dd}|�|�}|�t|��}|�|�WdQRX|�|jj�WdQRXq
WdS)Nzbad input type)r'zM{!r} is not a text encoding; use codecs.encode\(\) to handle arbitrary codecs)	rAr��format�assertRaisesRegexrHr0�assertIsNoner��	__cause__)r
�	bad_inputr'�fmt�msg�failurerrr�0test_text_to_binary_blacklists_binary_transforms�
s

zCTransformCodecTest.test_text_to_binary_blacklists_binary_transformsc	Cs*d}|�t|��d�d�WdQRXdS)NzR^'rot_13' is not a text encoding; use codecs.encode\(\) to handle arbitrary codecszjust an example messager;)rIrHr0)r
rNrrr�.test_text_to_binary_blacklists_text_transformsszATransformCodecTest.test_text_to_binary_blacklists_text_transformscCs�d}x�tD]~}|j|d��ht�||�}d}|�|�}|�t|��|�|�WdQRX|�t|��t|��|�WdQRXWdQRXq
WdS)Ns6encode first to ensure we meet any format restrictions)r'zM{!r} is not a text encoding; use codecs.decode\(\) to handle arbitrary codecs)	rAr�rr0rHrIrHr!r)r
rXr'Zencoded_datarMrNrrr�0test_binary_to_text_blacklists_binary_transformss

zCTransformCodecTest.test_binary_to_text_blacklists_binary_transformscCsfx`dtd�fD]P}|j|d��:d}|�t|��}|�d�WdQRX|�|jj�WdQRXqWdS)Ns	immutablesmutable)rLzR^'rot_13' is not a text encoding; use codecs.decode\(\) to handle arbitrary codecsr;)rr�rIrHr!rJr�rK)r
rLrNrOrrr�.test_binary_to_text_blacklists_text_transformsszATransformCodecTest.test_binary_to_text_blacklists_text_transformszRequires zlib supportc	CsBd}|�t|��}t�dd�WdQRX|�|jjt|j��dS)Nz(^decoding with 'zlib_codec' codec failedshellor<)rIrrr!r#r�rKr�)r
rNrOrrr�!test_custom_zlib_error_is_wrapped$s

z4TransformCodecTest.test_custom_zlib_error_is_wrappedc	CsBd}|�t|��}t�dd�WdQRX|�|jjt|j��dS)Nz'^decoding with 'hex_codec' codec failedshellor2)rIrrr!r#r�rKr�)r
rNrOrrr� test_custom_hex_error_is_wrapped-s

z3TransformCodecTest.test_custom_hex_error_is_wrappedcCsdx^t��D]R\}}t�|�j}x<|D]4}|j|d��t�|�}|�|j|�WdQRXq$Wq
WdS)N)�alias)�transform_aliases�itemsrr�rWr�r)r
�
codec_name�aliasesZ
expected_namerVrrrr�test_aliases9s

zTransformCodecTest.test_aliasescCs4t�dd�}|�|d�d}|�t�|d�|�dS)Nsspace tab	eol 
zquopri-codecsspace=20tab=09eol=20
sspace tab eol
)rr0rr!)r
rBZ	unescapedrrr�test_quopri_statelessAsz(TransformCodecTest.test_quopri_statelesscCs|�ttjdd�dS)Nr3zuu-codec)rvrrr!)r
rrr�test_uu_invalidIsz"TransformCodecTest.test_uu_invalidN)rrrr�rErWrGrPrQrRrSr2r3r=rTrUr[r\r]rrrrr@�
s
	r@cCs
t�|�S)N)�_TEST_CODECS�get)rYrrr�_get_test_codecXsr`)�
_forget_codeccCsdS)Nr)rYrrrra`srac@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|_dS)N)	�reprr��idr��normalize_encodingrrY�RuntimeError�obj_to_raise)r
Z	unique_idrrrr~fs		zExceptionChainingTest.setUpcCsFt�|jd�tj�|jd�yt|j�Wntk
r@YnXdS)N)r^�poprYr��_cachera�KeyError)r
rrr�tearDown{szExceptionChainingTest.tearDowncCs tj|||jd�}|t|j<dS)N)rW)rrYrYr^)r
r0r!Z
codec_inforrr�	set_codec�s
zExceptionChainingTest.set_codecc	csVd�||j|j|�}|�||��}|VWdQRX|�|jj|�|�|jjj�dS)Nz${} with {!r} codec failed \({}: {}\))	rHrYrrIr#r�rKZassertIsNotNone�
__traceback__)r
Z	operation�exc_typerNZfull_msgZcaughtrrr�
assertWrapped�sz#ExceptionChainingTest.assertWrappedcOs
|j�dS)N)rg)r
�args�kwdsrrr�	raise_obj�szExceptionChainingTest.raise_objc	Cs�||_|�|j|j�|�d||��d�|j�WdQRX|�d||��t�d|j�WdQRX|�d||��d�|j�WdQRX|�d||��t�d|j�WdQRXdS)Nr'�	str_inputZdecodingsbytes input)rgrlrrror0rYrr!)r
rgrNrnrrr�
check_wrapped�sz#ExceptionChainingTest.check_wrappedcCs|�td�dS)Nr4)rtrf)r
rrr�test_raise_by_type�sz(ExceptionChainingTest.test_raise_by_typecCsd}|�t|�|�dS)NzThis should be wrapped)rtrf)r
rNrrr�test_raise_by_value�sz)ExceptionChainingTest.test_raise_by_valuecCs*d}Gdd�dt�}|�||�||�dS)NzThis should be wrappedc@seZdZdZdS)zWExceptionChainingTest.test_raise_grandchild_subclass_exact_size.<locals>.MyRuntimeErrorrN)rrr�	__slots__rrrr�MyRuntimeError�srx)rfrt)r
rNrxrrr�)test_raise_grandchild_subclass_exact_size�sz?ExceptionChainingTest.test_raise_grandchild_subclass_exact_sizecCs*d}Gdd�dt�}|�||�||�dS)NzThis should be wrappedc@seZdZdS)zVExceptionChainingTest.test_raise_subclass_with_weakref_support.<locals>.MyRuntimeErrorN)rrrrrrrrx�srx)rfrt)r
rNrxrrr�(test_raise_subclass_with_weakref_support�sz>ExceptionChainingTest.test_raise_subclass_with_weakref_supportc	s��fdd�}|�||�|�t|��d�|j�WdQRX|�t|��t�d|j�WdQRX|�t|��d�|j�WdQRX|�t|��t�d|j�WdQRXdS)Ncs��dS)Nr)rprq)rgrrrr�sz:ExceptionChainingTest.check_not_wrapped.<locals>.raise_objz	str inputsbytes input)rlrIrfr0rYrr!)r
rgrNrrr)rgr�check_not_wrapped�sz'ExceptionChainingTest.check_not_wrappedcCs Gdd�dt�}|�|d�dS)Nc@seZdZdd�ZdS)zKExceptionChainingTest.test_init_override_is_not_wrapped.<locals>.CustomInitcSsdS)Nr)r
rrrr�szTExceptionChainingTest.test_init_override_is_not_wrapped.<locals>.CustomInit.__init__N)rrrrrrrr�
CustomInit�sr|r4)rfr{)r
r|rrr�!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��|�S)N)r��__new__)�cls)r�rrr~�szQExceptionChainingTest.test_new_override_is_not_wrapped.<locals>.CustomNew.__new__)rrrr~r�rr)r�r�	CustomNew�sr�r4)rfr{)r
r�rrr� test_new_override_is_not_wrapped�sz6ExceptionChainingTest.test_new_override_is_not_wrappedcCs(d}t|�}d|_|�|d�|��dS)NzThis should NOT be wrappedrz^{}$)rf�attrr{rH)r
rNr�rrr�&test_instance_attribute_is_not_wrapped�sz<ExceptionChainingTest.test_instance_attribute_is_not_wrappedcCs|�td�d�dS)Nr�1)r{rf)r
rrr�test_non_str_arg_is_not_wrapped�sz5ExceptionChainingTest.test_non_str_arg_is_not_wrappedcCsd}|�tddd�|�dS)Nz^\('a', 'b', 'c'\)$rTrtr7)r{rf)r
Zmsg_rerrr�!test_multiple_args_is_not_wrapped�sz7ExceptionChainingTest.test_multiple_args_is_not_wrappedc	Cs�d�|j�}|�t|��d�|j�WdQRX|�t|��t�d|j�WdQRX|�t|��d�|j�WdQRX|�t|��t�d|j�WdQRXdS)Nz^unknown encoding: {}$z	str inputsbytes input)rHrYrIrHr0rr!)r
rNrrr�%test_codec_lookup_failure_not_wrapped�sz;ExceptionChainingTest.test_codec_lookup_failure_not_wrappedc	Cs�dd�}dd�}|�||�t�d|j�}|�|d�t�d|j�}|�|d�d}|�|j�}|�t|��d�|j�WdQRXd	}|�|j�}|�t|��d
�|j�WdQRXdS)Nc_sdS)N)z
not bytes!rr)rprqrrr�
encode_to_str�szSExceptionChainingTest.test_unflagged_non_text_codec_handling.<locals>.encode_to_strc_sdS)N)snot str!rr)rprqrrr�decode_to_bytes�szUExceptionChainingTest.test_unflagged_non_text_codec_handling.<locals>.decode_to_bytesz
not bytes!snot str!zd^{!r} encoder returned 'str' instead of 'bytes'; use codecs.encode\(\) to encode to arbitrary types$rszd^{!r} decoder returned 'bytes' instead of 'str'; use codecs.decode\(\) to decode to arbitrary types$sbytes input)	rlrr0rYrr!rHrIr�)r
r�r�rBr�rMrNrrr�&test_unflagged_non_text_codec_handling�sz<ExceptionChainingTest.test_unflagged_non_text_codec_handlingN)rrrr~rkrl�
contextlib�contextmanagerrorrrfrtrurvryrzr{r}r�r�r�r�r�r�rrrrrbds$		
rbz"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)"�CodePageTesti�cCsL|�ttjdd�|�ttjdd�|�ttjdd�|�ttjdd�dS)NrrT�ar)rvrr�code_page_encode�code_page_decode�OSError)r
rrr�test_invalid_code_pagesz#CodePageTest.test_invalid_code_pagec	CsJ|�tdtjdd�|�tdtjdddd�|�tdtj|jddd�dS)	Nr�i��ÿs�r�T�CP_UTF8r�)rIrwrr�ryr�r�)r
rrr�test_code_page_namesz CodePageTest.test_code_page_namecCs�x�|D]�\}}}|dk	r�yt�|||d�}Wn8tk
rd}z|�d||||f�Wdd}~XYnX|�|d|d||||d|f�|�|dd�|�|dt|��q|�ttj|||d�qWdS)NTz2Unable to decode %a from "cp%s" with errors=%r: %srz%a.decode("cp%s", %r)=%a != %ar)	rr�ryr�rZassertGreaterEqualZassertLessEqualrrv)r
�cpr�r�r�r�r�r�rrr�check_decodes"zCodePageTest.check_decodecCs�x�|D]�\}}}|dk	r�yt�|||�}Wn8tk
rb}z|�d||||f�Wdd}~XYnX|�|d|d||||d|f�|�|dt|��q|�ttj|||�qWdS)Nz0Unable to encode %a to "cp%s" with errors=%r: %srz%a.encode("cp%s", %r)=%a != %ar)rr�rwr�rrrv)r
r�r�r�r�r�rBr�rrr�check_encode,s"zCodePageTest.check_encodecCs|�dd�|�dd�dS)Ni�))r�r�sabc)ud騾r�s���)r�r�N)u[ÿ]rns[])u[ÿ]ros[y])u[€]ros[?])u[ÿ]rks[\xff])u[ÿ]rls)[\N{LATIN SMALL LETTER Y WITH DIAERESIS}])u[ÿ]rms[&#255;])u�r�N)u[�]r�s[�])u[�]rsN))sabcr�r�)s���r�ud騾)s[�]r�N)s[�]rnz[])s[�]rou[�])s[�]rkz[\xff])s[�]r�u[�])s[�]rsN)s�abcr�N)s�abcrnzabc)s�abcrou�abc)s�abcrkz\x81abc)r�r�)r
rrr�
test_cp932<szCodePageTest.test_cp932cCs|�dd�|�dd�dS)Ni�))r�r�sabc)ué€r�s�)r�r�r�)uŁr�N)uŁrnr3)uŁro�L)u�r���)u�rsN))sabcr�r�)s�r�ué€)r�r�r�)r�r�)r
rrr�test_cp1252]s
zCodePageTest.test_cp1252cCs d}|�|d�|�|d�dS)Ni�))r�r�sabc)ué€r�s+AOkgrA-)u􏿿r�s+2//f/w-)u�r�s+3IA-)u�r�s+//0-))sabcr�r�)s+AOkgrA-r�ué€)s+2//f/w-r�u􏿿)s+3IA-r�u�)s+//0-r�u�)s[+/]r�z[])s[�]r�u[ÿ])r�r�)r
r�rrr�test_cp_utf7os
zCodePageTest.test_cp_utf7cCs,|�dd�|�|jd�|�|jd�dS)Ni�))s��rnu騾)s��rou�騾))s�􏿿rnu􏿿)s�􏿿rou�􏿿))u	[􏿿�]rns[􏿿])u	[􏿿�]ros[􏿿?])r�r�r�)r
rrr�test_multibyte_encoding�sz$CodePageTest.test_multibyte_encodingcCsFx,dtdd�d�D]}|�t�|d
�d�qW|�t�dd
�d
�dS)N�,��-��.��1��3��5�i��i����sabc)r�r@r�)u	r@)r�r�r�r�r�r�)r�)rrrr�)r
r�rrr�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)Ni���r�F)r4rs��)u騾rs��)u騾騾r�sabc)r�r@)rr�r)r
r�rrr�test_incremental�szCodePageTest.test_incrementalc	Cs6tjddd��t�d�}|�|jd�WdQRXdS)Nz_winapi.GetACPr)Zreturn_valueZcp123r�)rr{rr�rrW)r
�codecrrr�test_mbcs_alias�s
zCodePageTest.test_mbcs_aliasl�F)rZmemuseZdry_runcCs�d|ddd}|�t|�|d�t�d|dd�}|�|dt|��~|�t|d	�|d�|�|d	dd
�d�|�|d	dd�d
�dS)Ns01234567rrs
��������ri�r�TrrOZ
0123456701i��u(6701234567����������)rrrr�)r
rrBr�rrr�test_large_input�szCodePageTest.test_large_inputr\cCs�d|d}|�t|�|dd�t�d|dd�}|�|dt|��~|�t|d�|�|�|ddd�d	�|�|dd
d�d�dS)Ns
0123456턀rrOi�rnTrru0123456턀01i����u56턀0123456턀)rrrr�)r
rrBr�rrr�test_large_utf8_input�sz"CodePageTest.test_large_utf8_inputN)rrrr�r�r�r�r�r�r�r�r�r�r�r�rZ
bigmemtestr�r�rrrrr�s!	r�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�	ASCIITestcCs|�d�d�d�dS)Nr�r�sabc123)rr0)r
rrrr��szASCIITest.test_encodec
CsHxBdD]:\}}}|j|||d��|�|�d|�|�WdQRXqWdS)N))u	[€ÿ€]rns[])u	[€ÿ€]ros[???])u	[€ÿ€]rms[&#128;&#255;&#8364;])u
[€ÿ€򫳞]rks[\x80\xff\u20ac\U000abcde])u[��]r�s[��])rXr�r�r�)r�rr0)r
rXr�r�rrr�test_encode_error�s
zASCIITest.test_encode_errorc	Cs&|�t��d�dd�WdQRXdS)Nu�ÿr�r�)rvrwr0)r
rrr�!test_encode_surrogateescape_error�sz+ASCIITest.test_encode_surrogateescape_errorcCs|�d�d�d�dS)Nsabcr�r�)rr!)r
rrrr��szASCIITest.test_decodec
CsHxBdD]:\}}}|j|||d��|�|�d|�|�WdQRXqWdS)N))s[��]rnz[])s[��]rou[��])s[��]r�u[��])s[��]rkz
[\x80\xff])rXr�r�r�)r�rr!)r
rXr�r�rrrr��s
zASCIITest.test_decode_errorN)rrrr�r�r�r�r�rrrrr��s
r�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�
Latin1Testc
CsBx<dD]4\}}|j||d��|�|�d�|�WdQRXqWdS)N))r�sabc)u€éÿs��)rXr��latin1)r�rr0)r
rXr�rrrr��szLatin1Test.test_encodec
CsHxBdD]:\}}}|j|||d��|�|�d|�|�WdQRXqWdS)N))u[€�]rns[])u[€�]ros[??])u	[€򫳞]rks[\u20ac\U000abcde])u[€�]rms[&#8364;&#56448;])u[��]r�s[��])rXr�r�r�)r�rr0)r
rXr�r�rrr�test_encode_errors
s
zLatin1Test.test_encode_errorsc	Cs&|�t��d�dd�WdQRXdS)Nu�€r�r�)rvrwr0)r
rrrr�
sz,Latin1Test.test_encode_surrogateescape_errorc
CsBx<dD]4\}}|j||d��|�|�d�|�WdQRXqWdS)N))sabcr�)s[��]u[€ÿ])rXr�r�)r�rr!)r
rXr�rrrr�
szLatin1Test.test_decodeN)rrrr�r�r�r�rrrrr��sr�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�StreamRecoderTestcCsRt��}t�d�}t�||j|jtjj	tjj
�}|�ddg�|�|�
�d�dS)Nr�r��bsab)rDrErr�rqr0r!r�r�r]r^�
writelinesrr�)r
�bior��srrrr�test_writelines"
s
z!StreamRecoderTest.test_writelinescCs^t��}t�d�}t�||j|jtjj	tjj
�}d}|�|�d��|�|�
�|�d��dS)Nr�uàñézutf-8)rDrErr�rqr0r!r�r�r]r^rrr�)r
r�r�r�r�rrr�
test_write*
s
zStreamRecoderTest.test_writecCs|t�d�d��}t�|dd�}|�|��d�|�d�|�|��d�|�|��d�|�|��d�|�|��d�dS)	Nzline1
line2
line3
z	utf-16-lezutf-8sline1
rsline2
sline3
r3)rDrEr0rrrrIr�)r
r�r�rrr�test_seeking_read5
s
z#StreamRecoderTest.test_seeking_readcCs�t�d�d��}t�|dd�}|�d�|�d�|�|��d�|�d�|�|��d�|�|��d	�|�|��d�dS)
Nz
123456789
z	utf-16-lezutf-8rs
abc
s789
rs1
sabc
)	rDrEr0rrr�rrrI)r
r�r�rrr�test_seeking_write@
s


z$StreamRecoderTest.test_seeking_writeN)rrrr�r�r�r�rrrrr�!
sr��__main__)Prr�rDrSr�r2r�rZtestrZctypes�ImportErrorr4ZsizeofZc_wcharrr�rrr2ZTestCaser�r�r�r�r�r�r�r3�platformr�r�r�r�r�rrrr)r�printrcrr!r8r6r<rEr}r�r�r
rJr�r�r�r�rrr#r%r(r,rArWr=r?r@r^r`rI�_codecsrarbr�r�r�r�r�mainrrrr�<module>s
"W`..V,,^WV=

 TWu


$m)X2":

#
N'%.