B
    2*™\g ã            f   @   s^  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 yd dl
Z
W n ek
rx   dZ
dZY nX e
 e
j¡Zdd„ ZG dd„ deƒZG d	d
„ d
ƒZG dd„ deƒZG dd„ deejƒZG dd„ deejƒZG dd„ deejƒZG dd„ deejƒZG dd„ deejƒZG dd„ deejƒZG dd„ deejƒZe ejdkd¡G dd„ deejƒƒZG dd „ d eejƒZG d!d"„ d"ejƒZ G d#d$„ d$ejƒZ!G d%d&„ d&eejƒZ"G d'd(„ d(ejƒZ#G d)d*„ d*ejƒZ$d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=gZ%x(e%D ] Z&e'e&ƒd>kre(e)e&ƒƒ qW G d?d@„ d@ejƒZ*G dAdB„ dBejƒZ+dCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldHdmdng-Z,G dodp„ dpejƒZ-G dqdr„ drejƒZ.G dsdt„ dtejƒZ/G dudv„ dvejƒZ0G dwdx„ dxejƒZ1dydzd{d|d}d~dd€dd‚dƒd„d…d†d‡dˆd‰dŠd‹dŒddŽddd‘d’d“d”d•d–d—d˜d™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ÞgfZ2e3e dßƒrôe2 4dà¡ e3e dáƒr
e2 4dâ¡ dÒdÙgZ5G dãdä„ däejeƒZ6G dådæ„ dæejƒZ7G dçdè„ dèejƒZ8G dédê„ dêejƒZ9G dëdì„ dìejƒZ:G dídî„ dîejƒZ;G dïdð„ dðejƒZ<G dñdò„ dòejƒZ=G dódô„ dôejƒZ>dõdöd÷døgZ?dùdúgdûgdüdýdþgdÿgd gdœZ@yd dlAZAW n ek
r   dZAY n X e? 4d¡ ddge@d< yd dlBZBW n ek
rN   Y nX e? 4d¡ dge@d< G dd„ dejƒZCi ZDd	d
„ ZEe  FeE¡ yd dlGmHZH W n" ek
rÐ   dd„ ZHY nX G dd„ dejƒZIe ejdkd¡G dd„ dejƒƒZJG dd„ dejƒZKG dd„ dejƒZLeMdkrZe N¡  dS (  é    N)Úmock)Úsupportéÿÿÿÿc                s   ‡ ‡fdd„}|S )Nc                s   ˆ  ˆ | ƒ|t| ƒf¡ d S )N)ÚassertEqualÚlen)ÚinputÚexpect)ÚcoderÚself© ú;C:\ALexclude\prg\programme\Python37\Lib\test\test_codecs.pyÚcheck   s    zcoding_checker.<locals>.checkr   )r
   r	   r   r   )r	   r
   r   Úcoding_checker   s    r   c               @   s*   e Zd ZdZdd„ Zdd„ Zd
dd„Zd	S )ÚQueuezF
    queue: write bytes at one end, read bytes from the other end
    c             C   s
   || _ d S )N)Ú_buffer)r
   Úbufferr   r   r   Ú__init__   s    zQueue.__init__c             C   s   |  j |7  _ d S )N)r   )r
   Úcharsr   r   r   Úwrite!   s    zQueue.writer   c             C   sH   |dk r"| j }| j d d… | _ |S | j d |… }| j |d … | _ |S d S )Nr   )r   )r
   ÚsizeÚsr   r   r   Úread$   s    z
Queue.readN)r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r   r      s   r   c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚMixInCheckStateHandlingc       	      C   sÖ   xÐt t|ƒd ƒD ]¼}t |¡ƒ }| |d |… ¡}| ¡ }|  |d t¡ |d s”| |d d d… df¡ |  	| |d ¡ ¡ |  
|| ¡ ¡ t |¡ƒ }| |¡ | ||d … d¡}|  
||| ¡ qW d S )Né   r   T)Úranger   ÚcodecsÚgetincrementaldecoderÚdecodeÚgetstateÚassertIsInstanceÚintÚsetstateÚ
assertTruer   )	r
   ÚencodingÚur   ÚiÚdÚpart1ÚstateÚpart2r   r   r   Úcheck_state_handling_decode0   s    
z3MixInCheckStateHandling.check_state_handling_decodec       	      C   s~   xxt t|ƒd ƒD ]d}t |¡ƒ }| |d |… ¡}| ¡ }t |¡ƒ }| |¡ | ||d … d¡}|  ||| ¡ qW d S )Nr   T)r   r   r   ÚgetincrementalencoderÚencoder"   r%   r   )	r
   r'   r(   r   r)   r*   r+   r,   r-   r   r   r   Úcheck_state_handling_encodeF   s    
z3MixInCheckStateHandling.check_state_handling_encodeN)r   r   r   r.   r1   r   r   r   r   r   /   s   r   c               @   sP   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dZ
dd„ ZdS )ÚReadTestc       
   	   C   sœ  t dƒ}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 |  	| dd¡d¡ |  	|jd¡ | ¡  d}x@t| | j¡|ƒD ]*\}}|| t|gƒ¡7 }|  	||¡ qW |  	| dd¡d¡ |  	|jd¡ | | j¡}	|  	|d t dd„ |	D ƒ| j¡¡¡ d S )Nó    Ú Tc             S   s   g | ]}t |gƒ‘qS r   )Úbytes)Ú.0Úcr   r   r   ú
<listcomp>z   s    z*ReadTest.check_partial.<locals>.<listcomp>)r   r   Ú	getreaderr'   Úzipr0   r   r5   r   r   Ú
bytebufferr    r!   r   ÚresetÚjoinÚ
iterdecode)
r
   r   ZpartialresultsÚqÚrÚresultr7   Zpartialresultr*   Úencodedr   r   r   Úcheck_partialR   s6    zReadTest.check_partialc                sÐ  ‡fdd„‰ d‡ fdd„	}d}d}d}ˆ  ||dƒ|¡ ˆ  ||d	ƒ|¡ ˆ  ||dd
ƒ|¡ ˆ  ||d	d
ƒ|¡ d}g }g }xDt|ƒD ]8\}}	| |d d d |	 ¡ | |d d d ¡ qˆW ˆ  |d |¡dƒd |¡¡ ˆ  |d |¡d	ƒd |¡¡ xÊtdƒD ]¾}
x¶|D ]®}	d
|
d |	 d  }ˆ |ƒ}xBtd
ƒD ]6}ˆ  |jdd|
d |	 ¡ ˆ  |jddd¡ q>W ˆ |ƒ}x>td
ƒD ]2}ˆ  |jd	d|
d ¡ ˆ  |jd	dd¡ qŠW qW q
W d S )Nc                s"   t  |  ˆ j¡¡}t ˆ j¡|ƒS )N)ÚioÚBytesIOr0   r'   r   r9   )r   Ústream)r
   r   r   r9   ~   s    z)ReadTest.test_readline.<locals>.getreaderTc                s:   ˆ | ƒ}g }x"|j ||d}|s"P | |¡ qW d |¡S )N)r   Úkeependsú|)ÚreadlineÚappendr=   )r   rG   r   ÚreaderÚlinesÚline)r9   r   r   Úreadalllines‚   s    z,ReadTest.test_readline.<locals>.readalllinesu   foo
bar
bazspamâ€¨eggsu   foo
|bar
|baz|spamâ€¨|eggszfoo|bar|baz|spam|eggsFé
   )Ú
z
úu   â€¨éÈ   u   ã‚r4   rH   éP   Úazxxx
)rG   Úxxx)TN)r   Ú	enumeraterJ   r=   r   rI   )r
   rN   r   Z	sexpectedZsexpectednoendsZlineendsZvwZvwor)   Zlineendr   rK   r   )r9   r
   r   Útest_readline}   sH    






zReadTest.test_readlinec                s6  ddddg}d  |¡‰ ‡ ‡fdd„}|ƒ }ˆ | ¡ |d ¡ ˆ | ¡ d  |d	d … ¡¡ ˆ | ¡ d¡ |ƒ }ˆ | ¡ |d ¡ ˆ | d	¡|d	 d ¡ ˆ | d¡d¡ ˆ | d
¡ˆ t|d ƒd	 d … d d
… ¡ |ƒ }ˆ | ¡ |d ¡ ˆ | ¡ |d	d … ¡ ˆ | ¡ d¡ |ƒ }ˆ |jdddˆ d d… ¡ ˆ | ¡ ˆ dd … ¡ ˆ | ¡ d¡ |ƒ }ˆ |jdddˆ d d… ¡ ˆ | d	¡ˆ d ¡ ˆ | d¡d¡ ˆ | d
¡ˆ dd… ¡ |ƒ }ˆ |jdddˆ d d… ¡ ˆ | ¡ |d dd … g|d	d …  ¡ ˆ | ¡ d¡ d S )NzHumpty 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.r4   c                 s"   t  ˆ  ˆj¡¡} t ˆj¡| ƒS )N)rD   rE   r0   r'   r   r9   )rF   )Údatar
   r   r   r9   ¾   s    z8ReadTest.test_mixed_readline_and_read.<locals>.getreaderr   r   éd   é(   é   )r   r   é   éj   )r=   r   rI   r   r   Ú	readlines)r
   rL   r9   Úfr   )rX   r
   r   Útest_mixed_readline_and_read¸   s@    
.*z%ReadTest.test_mixed_readline_and_readc          =   C   sÐ   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/d0d1d2d3d4d5d6g=}t  d7 |¡ | j¡¡}t | j¡|ƒ}x$t|ƒD ]\}}|  ||| ¡ q°W d S )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
zimport logging
z+log=logging.getLogger("Snakelets.logger")
zuser=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")
zshowdate=None
zarg=self.Request.getArg()
zif arg=="today":
z,    #-------------------- TODAY'S ARTICLES
z-    self.write("<h2>Today's articles</h2>")
z(    showdate = frog.util.isodatestr() 
z.    entries = readArticlesFromDate(showdate)
zelif arg=="active":
z4    #-------------------- ACTIVE ARTICLES redirect
z     self.Yredirect("active.y")
zelif arg=="login":
z/    #-------------------- LOGIN PAGE redirect
z    self.Yredirect("login.y")
zelif 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))
zelse:
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   )	rD   rE   r=   r0   r'   r   r9   rV   r   )r
   r   rF   rK   r)   rM   r   r   r   Útest_bug1175396è   s‚    zReadTest.test_bug1175396c             C   sN  t dƒ}t | j¡|ƒ}t | j¡|ƒ}| d¡ |  |jddd¡ | d¡ |  |jddd¡ |  |jddd¡ | d	¡ |  |jddd	¡ |  |jddd¡ | d¡ |  |jd
dd¡ | d¡ |  |jd
dd¡ |  |jd
dd¡ | d	¡ |  |jd
dd	¡ |  |jd
dd¡ | d¡ |  |jd
dd¡ d S )Nr3   zfooF)rG   Úfooz
barr4   ZbarZbazTrP   zbarzfoo
)r   r   Ú	getwriterr'   r9   r   r   rI   )r
   r?   ÚwriterrK   r   r   r   Útest_readlinequeue-  s*    






zReadTest.test_readlinequeuec             C   s~   d}d}d}|| |   | j¡}t |¡}t | j¡|ƒ}|  | ¡ |¡ |  | ¡ |¡ |  | ¡ |¡ |  | ¡ d¡ d S )NzAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
z`offending line: ladfj askldfj klasdj fskla dfzaskdj fasklfj laskd fjasklfzzzzaa%whereisthis!!!
znext line.
r4   )r0   r'   rD   rE   r   r9   r   rI   )r
   Ús1Ús2Ús3r   rF   rK   r   r   r   Útest_bug1098990_aH  s    
zReadTest.test_bug1098990_ac       	      C   s®   d}d}d}d}d}|| | | |   | j¡}t |¡}t | j¡|ƒ}|  | ¡ |¡ |  | ¡ |¡ |  | ¡ |¡ |  | ¡ |¡ |  | ¡ |¡ |  | ¡ d¡ d S )Nzaaaaaaaaaaaaaaaaaaaaaaaa
zbbbbbbbbbbbbbbbbbbbbbbbb
zstillokay:bbbbxx
zbroken!!!!badbad
zagainokay.
r4   )r0   r'   rD   rE   r   r9   r   rI   )	r
   rf   rg   rh   Zs4Zs5r   rF   rK   r   r   r   Útest_bug1098990_bU  s    
zReadTest.test_bug1098990_bu   ï¿½c       	      C   s  |   tdj| j¡ |  d | jd¡d | j¡¡ |  d | jd¡d | j¡¡ |  d | jd¡d | j¡¡ |  d | jd¡d	 | j¡¡ |  d | jd
¡d | j¡¡ |  d | jd¡d	 | j¡¡ |  d | jd
¡d | j¡¡ d | j¡}xdD ]\}}| | j¡t|ƒd … }| | j¡t|ƒd … }|d | }|| | j | }|   t|j| j¡ |  | | jd¡|¡ |  | | jd¡|¡ |  | | jd¡|| ¡ |  | | jd
¡|| j	 | ¡ d 
dd„ | jD ƒ¡}|  | | jd¡|| | ¡ qøW d S )Nu   í €u   [í²€]Úbackslashreplacez[\udc80]ÚnamereplaceÚxmlcharrefreplacez
[&#56448;]Úignorez[]Úreplacez[?]u   [í €í²€]z[??]r4   ))u   ð¿¿ÚA)ú[ú])rp   u   ð¿¿u   í²€Úsurrogatepassc             s   s   | ]}d | V  qdS )z\x%02xNr   )r6   Úbr   r   r   ú	<genexpr>  s   z0ReadTest.test_lone_surrogates.<locals>.<genexpr>)ÚassertRaisesÚUnicodeEncodeErrorr0   r'   r   r   Úill_formed_sequenceÚUnicodeDecodeErrorr!   Úill_formed_sequence_replacer=   )	r
   ZbomZbeforeZafterZbefore_sequenceZafter_sequenceZtest_stringZtest_sequencerk   r   r   r   Útest_lone_surrogatesh  sJ    


zReadTest.test_lone_surrogatesN)r   r   r   rC   rW   r`   ra   re   ri   rj   rz   r{   r   r   r   r   r2   Q   s   +;0Er2   c               @   sd   e Zd ZdZejdkrdZndZdZdZdd„ Z	d	d
„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )Ú	UTF32Testzutf-32Úlittles   €Ü  s     Ü€s$   ÿþ  s   p   a   m   s   p   a   m   s$     þÿ   s   p   a   m   s   p   a   mc             C   s€   t  | j¡\}}}}t ¡ }||ƒ}| d¡ | d¡ | ¡ }|  || jkpV|| j	k¡ t |¡}||ƒ}|  
| ¡ d¡ d S )NÚspamÚspamspam)r   Úlookupr'   rD   rE   r   Úgetvaluer&   ÚspamleÚspamber   r   )r
   Ú_rK   rd   r   r_   r*   r   r   r   Útest_only_one_bom£  s    


zUTF32Test.test_only_one_bomc             C   sT   t  d¡}t | j¡|ƒ}|  t|j¡ t  d¡}t | j¡|ƒ}|  t|j¡ d S )Ns   ÿÿÿÿs   ÿÿÿÿÿÿÿÿ)rD   rE   r   r9   r'   rv   ÚUnicodeErrorr   )r
   r   r_   r   r   r   Útest_badbom²  s    

zUTF32Test.test_badbomc             C   s@   |   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g¡ d S )Nu    Ã¿Ä€ï¿¿ð€€r4   ú u    Ã¿u    Ã¿Ä€u    Ã¿Ä€ï¿¿)rC   )r
   r   r   r   Útest_partial»  s4    zUTF32Test.test_partialc             C   s0   |   dt ddd¡¡ |   dt ddd¡¡ d S )N)u   ï¿½r   ó   ro   T)r4   r   rn   )r   r   Úutf_32_decode)r
   r   r   r   Útest_handlersÚ  s    zUTF32Test.test_handlersc             C   s   |   ttjddd¡ d S )Nó   ÿÚstrictT)rv   ry   r   r‹   )r
   r   r   r   Útest_errorsà  s    
zUTF32Test.test_errorsc             C   s(   |   | jd| j¡ |   | jd| j¡ d S )Nr   )r.   r'   r‚   rƒ   )r
   r   r   r   Útest_decoder_stateä  s    
zUTF32Test.test_decoder_statec             C   s8   d}|   dt |¡d ¡ d}|   dt |¡d ¡ d S )Ns  ÿþ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  u   ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€r   s    þÿ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                )r   r   r‹   )r
   Z
encoded_leZ
encoded_ber   r   r   Útest_issue8941ê  s    zUTF32Test.test_issue8941N)r   r   r   r'   ÚsysÚ	byteorderrx   r‚   rƒ   r…   r‡   r‰   rŒ   r   r   r‘   r   r   r   r   r|   •  s   
	r|   c               @   s4   e Zd ZdZdZdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚUTF32LETestz	utf-32-les   €Ü  c             C   s8   |   dddddddddddddddddddddg¡ d S )Nu    Ã¿Ä€ï¿¿ð€€r4   rˆ   u    Ã¿u    Ã¿Ä€u    Ã¿Ä€ï¿¿)rC   )r
   r   r   r   r‰   ù  s,    zUTF32LETest.test_partialc             C   s   |   d | j¡d¡ d S )Nu   ðˆƒs    )r   r0   r'   )r
   r   r   r   Útest_simple  s    zUTF32LETest.test_simplec             C   s   |   ttjddd¡ d S )Nr   rŽ   T)rv   ry   r   Úutf_32_le_decode)r
   r   r   r   r     s    
zUTF32LETest.test_errorsc             C   s   d}|   dt |¡d ¡ d S )Ns                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   u   ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€r   )r   r   r–   )r
   rB   r   r   r   r‘     s    zUTF32LETest.test_issue8941N)	r   r   r   r'   rx   r‰   r•   r   r‘   r   r   r   r   r”   õ  s   r”   c               @   s4   e Zd ZdZdZdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚUTF32BETestz	utf-32-bes     Ü€c             C   s8   |   dddddddddddddddddddddg¡ d S )Nu    Ã¿Ä€ï¿¿ð€€r4   rˆ   u    Ã¿u    Ã¿Ä€u    Ã¿Ä€ï¿¿)rC   )r
   r   r   r   r‰   '  s,    zUTF32BETest.test_partialc             C   s   |   d | j¡d¡ d S )Nu   ðˆƒs    )r   r0   r'   )r
   r   r   r   r•   B  s    zUTF32BETest.test_simplec             C   s   |   ttjddd¡ d S )Nr   rŽ   T)rv   ry   r   Úutf_32_be_decode)r
   r   r   r   r   E  s    
zUTF32BETest.test_errorsc             C   s   d}|   dt |¡d ¡ d S )Ns                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   u   ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€ð€€r   )r   r   r˜   )r
   rB   r   r   r   r‘   I  s    zUTF32BETest.test_issue8941N)	r   r   r   r'   rx   r‰   r•   r   r‘   r   r   r   r   r—   #  s   r—   c               @   sd   e Zd ZdZejdkrdZndZdZdZdd„ Z	d	d
„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )Ú	UTF16Testzutf-16r}   s   €Üs   Ü€s   ÿþs p a m s p a m s   þÿ s p a m s p a mc             C   s€   t  | j¡\}}}}t ¡ }||ƒ}| d¡ | d¡ | ¡ }|  || jkpV|| j	k¡ t |¡}||ƒ}|  
| ¡ d¡ d S )Nr~   r   )r   r€   r'   rD   rE   r   r   r&   r‚   rƒ   r   r   )r
   r„   rK   rd   r   r_   r*   r   r   r   r…   [  s    


zUTF16Test.test_only_one_bomc             C   sT   t  d¡}t | j¡|ƒ}|  t|j¡ t  d¡}t | j¡|ƒ}|  t|j¡ d S )Ns   ÿÿs   ÿÿÿÿ)rD   rE   r   r9   r'   rv   r†   r   )r
   r   r_   r   r   r   r‡   j  s    

zUTF16Test.test_badbomc             C   s,   |   dddddddddddddddg¡ d S )Nu    Ã¿Ä€ï¿¿ð€€r4   rˆ   u    Ã¿u    Ã¿Ä€u    Ã¿Ä€ï¿¿)rC   )r
   r   r   r   r‰   s  s     zUTF16Test.test_partialc             C   s0   |   dt ddd¡¡ |   dt ddd¡¡ d S )N)u   ï¿½r   rŠ   ro   T)r4   r   rn   )r   r   Úutf_16_decode)r
   r   r   r   rŒ   ˆ  s    zUTF16Test.test_handlersc             C   s   |   ttjddd¡ d S )Nr   rŽ   T)rv   ry   r   rš   )r
   r   r   r   r   Ž  s    
zUTF16Test.test_errorsc             C   s(   |   | jd| j¡ |   | jd| j¡ d S )Nr   )r.   r'   r‚   rƒ   )r
   r   r   r   r   ’  s    
zUTF16Test.test_decoder_statec          	   C   s”   d}|  | j¡}|  tjtj¡ ttjdƒ}| |¡ W d Q R X t dt	f¡ t
jtjd| jd}W d Q R X | |  | ¡ |¡ W d Q R X d S )NzHello
world
Úwbr4   ÚU)r'   )r0   r'   Ú
addCleanupr   ÚunlinkÚTESTFNÚopenr   Úcheck_warningsÚDeprecationWarningr   r   r   )r
   rf   r   ÚfprK   r   r   r   Útest_bug691291˜  s    zUTF16Test.test_bug691291N)r   r   r   r'   r’   r“   rx   r‚   rƒ   r…   r‡   r‰   rŒ   r   r   r¤   r   r   r   r   r™   Q  s   
	r™   c               @   s,   e Zd ZdZdZdd„ Zdd„ Zdd„ Zd	S )
ÚUTF16LETestz	utf-16-les   €Üc             C   s(   |   dddddddddddddg¡ d S )Nu    Ã¿Ä€ï¿¿ð€€r4   rˆ   u    Ã¿u    Ã¿Ä€u    Ã¿Ä€ï¿¿)rC   )r
   r   r   r   r‰   «  s    zUTF16LETest.test_partialc             C   sP   dddddddg}x8|D ]0\}}|   ttj|dd	¡ |  | d
d¡|¡ qW d S )N)r   u   ï¿½)s   A Zu   Aï¿½)s	   A B C D Zu   ABCDï¿½)s    Øu   ï¿½)s    ØAu   ï¿½)s    ØA u   ï¿½A)s    ÜA u   ï¿½ArŽ   Tzutf-16lero   )rv   ry   r   Úutf_16_le_decoder   r!   )r
   ÚtestsÚrawÚexpectedr   r   r   r   ¾  s    

zUTF16LETest.test_errorsc             C   s,   |   d | j¡d¡ |   d | j¡d¡ d S )Nu   ðˆƒs    ØÞ)r   r0   r'   r!   )r
   r   r   r   Útest_nonbmpÍ  s    zUTF16LETest.test_nonbmpN)r   r   r   r'   rx   r‰   r   rª   r   r   r   r   r¥   §  s
   r¥   c               @   s,   e Zd ZdZdZdd„ Zdd„ Zdd„ Zd	S )
ÚUTF16BETestz	utf-16-bes   Ü€c             C   s(   |   dddddddddddddg¡ d S )Nu    Ã¿Ä€ï¿¿ð€€r4   rˆ   u    Ã¿u    Ã¿Ä€u    Ã¿Ä€ï¿¿)rC   )r
   r   r   r   r‰   ×  s    zUTF16BETest.test_partialc             C   sP   dddddddg}x8|D ]0\}}|   ttj|dd	¡ |  | d
d¡|¡ qW d S )N)r   u   ï¿½)s    Aÿu   Aï¿½)s	    A B C DZu   ABCDï¿½)s   Ø u   ï¿½)s   Ø Üu   ï¿½)s   Ø  Au   ï¿½A)s   Ü  Au   ï¿½ArŽ   Tzutf-16bero   )rv   ry   r   Úutf_16_be_decoder   r!   )r
   r§   r¨   r©   r   r   r   r   ê  s    

zUTF16BETest.test_errorsc             C   s,   |   d | j¡d¡ |   d | j¡d¡ d S )Nu   ðˆƒs   Ø Þ)r   r0   r'   r!   )r
   r   r   r   rª   ù  s    zUTF16BETest.test_nonbmpN)r   r   r   r'   rx   r‰   r   rª   r   r   r   r   r«   Ó  s
   r«   c                   sL   e Zd ZdZdZdZdZdd„ Zdd„ Zd	d
„ Z	‡ fdd„Z
dd„ Z‡  ZS )ÚUTF8Testzutf-8s   í²€u	   ï¿½ï¿½ï¿½r3   c             C   s.   |   ddddddddddddddddg¡ d S )Nu    Ã¿ß¿à €ï¿¿ð€€rˆ   u    Ã¿u    Ã¿ß¿u    Ã¿ß¿à €u    Ã¿ß¿à €ï¿¿)rC   )r
   r   r   r   r‰     s"    zUTF8Test.test_partialc             C   s    d}|   | j|| | j¡¡ d S )Nu    Â€Ã¿Ä€ß¿à €ï¿¿ô¿¿)r.   r'   r0   )r
   r(   r   r   r   r     s    zUTF8Test.test_decoder_statec          
   C   sJ   xDdD ]<\}}}| j |||d |  | | j|¡|¡ W d Q R X qW d S )N))s   [€ÿ]rn   z[])s   [€ÿ]ro   u   [ï¿½ï¿½])s   [€ÿ]Úsurrogateescapeu   [í²€í³¿])s   [€ÿ]rk   z
[\x80\xff])rX   Úerror_handlerr©   )ÚsubTestr   r!   r'   )r
   rX   r¯   r©   r   r   r   Útest_decode_error   s    
zUTF8Test.test_decode_errorc          	      sn   t ƒ  ¡  |  d | jd¡| jd ¡ |  t¡}d | jd¡ W d Q R X |j}|  |j	|j
|j… d¡ d S )Nu   [í²€]r®   s   [€]u   [í²€í €í¿¿]u   í €í¿¿)Úsuperr{   r   r0   r'   ÚBOMrv   rw   Ú	exceptionÚobjectÚstartÚend)r
   ÚcmÚexc)Ú	__class__r   r   r{   ,  s    
zUTF8Test.test_lone_surrogatesc          	   C   sÜ   |   d | jd¡| jd ¡ |   d | jd¡| jd ¡ |   d | jd¡| jd ¡ |   d | jd¡d¡ |   d | jd¡d¡ |  t d¡¡ |  t	¡ d | jd¡ W d Q R X |  t	¡ d	 | jd¡ W d Q R X d S )
Nu	   abcí €defrs   s	   abcí €defu   ð¿¿í €s   ð¿¿í €u   [í €í²€]s   [í €í²€]s   abcí s   abcí z)
r   r0   r'   r³   r!   r&   r   Úlookup_errorrv   ry   )r
   r   r   r   Útest_surrogatepass_handler8  s    z#UTF8Test.test_surrogatepass_handler)r   r   r   r'   rx   rz   r³   r‰   r   r±   r{   r¼   Ú__classcell__r   r   )rº   r   r­   ÿ  s   r­   Úwin32zcp65001 is a Windows-only codecc               @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚCP65001TestÚcp65001c             C   s¬   ddddddddd	g	}x|D ]ˆ\}}}|d k	r’y|  d
|¡}W n6 tk
rt } z|  d|||f ¡ W d d }~X Y nX |  ||d||||f ¡ q|  t|j d
|¡ qW d S )N)ÚabcrŽ   s   abc)u   Ã©â‚¬rŽ   s   Ã©â‚¬)u   ô¿¿rŽ   s   ô¿¿)u   í²€rŽ   N)u   í²€rn   r3   )u   í²€ro   ó   ?)u   í²€rk   s   \udc80)u   í²€rl   s   \udc80)u   í²€rs   s   í²€rÀ   z1Unable to encode %a to cp65001 with errors=%r: %sz!%a.encode("cp65001", %r)=%a != %a)r0   rw   Úfailr   rv   )r
   r§   ÚtextÚerrorsr©   rB   Úerrr   r   r   Útest_encodeQ  s*     zCP65001Test.test_encodec             C   s²   ddddddddd	d
ddg}x|D ]ˆ\}}}|d k	r˜y|  d|¡}W n6 tk
rz } z|  d|||f ¡ W d d }~X Y nX |  ||d||||f ¡ q"|  t|j d|¡ q"W d S )N)s   abcrŽ   rÁ   )s   Ã©â‚¬rŽ   u   Ã©â‚¬)s   ô¿¿rŽ   u   ô¿¿)s   ï¿½rŽ   u   ï¿½)s   [Ã©]rŽ   u   [Ã©])s   [ÿ]rŽ   N)s   [ÿ]rn   z[])s   [ÿ]ro   u   [ï¿½])s   [ÿ]r®   u   [í³¿])s   [í²€]rŽ   N)s   [í²€]rn   z[])s   [í²€]ro   u   [ï¿½ï¿½ï¿½]rÀ   z3Unable to decode %a from cp65001 with errors=%r: %sz!%a.decode("cp65001", %r)=%a != %a)r!   ry   rÃ   r   rv   )r
   r§   r¨   rÅ   r©   ÚdecodedrÆ   r   r   r   Útest_decodek  s0     zCP65001Test.test_decodec             C   sœ   |   tdjd¡ |   tdj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 S )Nu   í €rÀ   s   í €u   [í²€]rk   s   [\udc80]rl   rm   s
   [&#56448;]r®   s   [€]rn   s   []ro   s   [?])rv   rw   r0   ry   r!   r   )r
   r   r   r   r{   ‰  s    z CP65001Test.test_lone_surrogatesc             C   sd   |   d dd¡d¡ |   d dd¡d¡ |   d dd¡d¡ |   d dd¡d¡ |  t d¡¡ d S )Nu	   abcí €defrÀ   rs   s	   abcí €defu   ð¿¿í €s   ð¿¿í €)r   r0   r!   r&   r   r»   )r
   r   r   r   r¼   ™  s    z&CP65001Test.test_surrogatepass_handlerN)r   r   r   r'   rÇ   rÉ   r{   r¼   r   r   r   r   r¿   L  s
   r¿   c               @   s8   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )ÚUTF7Testzutf-7c             C   s  d}|   | | j¡| d¡¡ |   | d¡ | j¡|¡ d}|   | | j¡| d¡¡ |   | d¡ | j¡|¡ |   d | j¡d¡ |   d | j¡d¡ d}|   | | j¡| d¡¡ |   | d¡ | j¡|¡ d ttttdƒƒ ¡ ƒt|| d	 | ƒ ƒ¡}|   | | j¡d
¡ d S )NzGABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'(),-./:?Úasciiz !"#$%&*;<=>@[]^_`{|}za+bs   a+-bz 	
r4   é€   ú+sX   +AAAAAQACAAMABAAFAAYABwAIAAsADAAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwBcAH4Afw-)	r   r0   r'   r!   r=   ÚsortedÚsetr5   r   )r
   Zset_dZset_oZwsZother_asciir   r   r   Ú
test_ascii¨  s    zUTF7Test.test_asciic          #   C   sP   |   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g ¡ d S )Nu   a+-b cÂ€dÄ€eð€€frT   za+za+-za+-bza+-b za+-b cu   a+-b cÂ€u	   a+-b cÂ€du   a+-b cÂ€dÄ€u   a+-b cÂ€dÄ€eu   a+-b cÂ€dÄ€eð€€)rC   )r
   r   r   r   r‰   Â  sD    zUTF7Test.test_partialc             C   s‚   ddddddddd	d
ddddddddddg}xP|D ]H\}}| j |d. |  ttj|dd¡ |  | dd¡|¡ W d Q R X q2W d S )N)s   ÿbu   ï¿½b)s   aÿbu   aï¿½b)s   aÿÿbu   aï¿½ï¿½b)s   a+IKu   aï¿½)s   a+IK-bu   aï¿½b)s   a+IK,bu   aï¿½b)s   a+IKxu   aâ‚¬ï¿½)s   a+IKx-bu   aâ‚¬ï¿½b)s   a+IKwgru   aâ‚¬ï¿½)s	   a+IKwgr-bu   aâ‚¬ï¿½b)s   a+IKwgr,u   aâ‚¬ï¿½)s
   a+IKwgr,-bu	   aâ‚¬ï¿½-b)s   a+IKwgrBu
   aâ‚¬â‚¬ï¿½)s
   a+IKwgrB-bu   aâ‚¬â‚¬ï¿½b)s
   a+/,+IKw-bu   aï¿½â‚¬b)s   a+//,+IKw-bu   aï¿½â‚¬b)s   a+///,+IKw-bu   aï¿¿ï¿½â‚¬b)s   a+////,+IKw-bu   aï¿¿ï¿½â‚¬b)s   a+IKw-bÿu   aâ‚¬bï¿½)s   a+IKwÿbu   aâ‚¬ï¿½b)r¨   rŽ   Tzutf-7ro   )r°   rv   ry   r   Úutf_7_decoder   r!   )r
   r§   r¨   r©   r   r   r   r   é  s2    

zUTF7Test.test_errorsc             C   sÌ   |   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¡ d S )Nu   ð’ s   +2AHcoA-u   í í² s   +2AHcoAu   â‚¬ð’ s
   +IKzYAdyg-s	   +IKzYAdygu
   â‚¬â‚¬ð’ s   +IKwgrNgB3KA-s   +IKwgrNgB3KA)r   r0   r'   r!   )r
   r   r   r   rª     s    zUTF7Test.test_nonbmpc             C   s`   ddddddddd	d
dddg}x<|D ]4\}}| j |d |  | dd¡|¡ W d Q R X q$W d S )N)s   a+2AE-bu   aí b)s   a+2AEÿbu   aï¿½b)s   a+2AEu   aï¿½)s   a+2AEA-bu   aï¿½b)s   a+2AH-bu   aï¿½b)s
   a+IKzYAQ-bu   aâ‚¬í b)s
   a+IKzYAQÿbu   aâ‚¬ï¿½b)s   a+IKzYAQA-bu   aâ‚¬ï¿½b)s
   a+IKzYAd-bu   aâ‚¬ï¿½b)s   a+IKwgrNgB-bu   aâ‚¬â‚¬í b)s   a+IKwgrNgBÿbu   aâ‚¬â‚¬ï¿½b)s
   a+IKwgrNgBu
   aâ‚¬â‚¬ï¿½)s   a+IKwgrNgBA-bu   aâ‚¬â‚¬ï¿½b)r¨   zutf-7ro   )r°   r   r!   )r
   r§   r¨   r©   r   r   r   r{     s     zUTF7Test.test_lone_surrogatesN)	r   r   r   r'   rÐ   r‰   r   rª   r{   r   r   r   r   rÊ   ¥  s   'rÊ   c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚUTF16ExTestc             C   s   |   ttjdddd¡ d S )Nr   rŽ   r   T)rv   ry   r   Úutf_16_ex_decode)r
   r   r   r   r   ,  s    zUTF16ExTest.test_errorsc             C   s   |   ttj¡ d S )N)rv   Ú	TypeErrorr   rÓ   )r
   r   r   r   Útest_bad_args/  s    zUTF16ExTest.test_bad_argsN)r   r   r   r   rÕ   r   r   r   r   rÒ   *  s   rÒ   c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚReadBufferTestc             C   s&   dd l }|  t |  dd¡¡d¡ d S )Nr   rt   s   spam)s   spamé   )Úarrayr   r   Úreadbuffer_encode)r
   rØ   r   r   r   Ú
test_array4  s    zReadBufferTest.test_arrayc             C   s   |   t d¡d¡ d S )Nr4   )r3   r   )r   r   rÙ   )r
   r   r   r   Ú
test_empty;  s    zReadBufferTest.test_emptyc             C   s"   |   ttj¡ |   ttjd¡ d S )Né*   )rv   rÔ   r   rÙ   )r
   r   r   r   rÕ   >  s    zReadBufferTest.test_bad_argsN)r   r   r   rÚ   rÛ   rÕ   r   r   r   r   rÖ   2  s   rÖ   c               @   s>   e Zd ZdZejZdd„ Zdd„ Zdd„ Z	dd	„ Z
d
d„ ZdS )ÚUTF8SigTestz	utf-8-sigc             C   s:   |   ddddddddddddddddddddddg¡ d S )	Nu   ï»¿ Ã¿ß¿à €ï¿¿ð€€r4   u   ï»¿u   ï»¿ u   ï»¿ Ã¿u   ï»¿ Ã¿ß¿u   ï»¿ Ã¿ß¿à €u   ï»¿ Ã¿ß¿à €ï¿¿)rC   )r
   r   r   r   r‰   F  s.    zUTF8SigTest.test_partialc             C   s   |   tddƒd¡ d S )Ns   ï»¿z	utf-8-sigr4   )r   Ústr)r
   r   r   r   Útest_bug1601501b  s    zUTF8SigTest.test_bug1601501c             C   s,   t  d¡ƒ }d}|  | | d¡¡|¡ d S )Nz	utf-8-sigr~   )r   r    r   r!   r0   )r
   r*   r   r   r   r   Útest_bomf  s    zUTF8SigTest.test_bomc       	      C   s¤   d}t jd }t  d¡}x†d gttddƒƒ dddd	d
g D ]`}|t |¡ƒ}t ¡ }x0|d k	rl| |¡}n| ¡ }|szP | 	|¡ qXW | 
¡ }|  ||¡ q<W d S )Nu   ABCÂ¡âˆ€XYZs   ABCÂ¡âˆ€XYZz	utf-8-sigr   é   é@   rÌ   é   i   i   )r   ÚBOM_UTF8r9   Úlistr   rD   rE   ÚStringIOr   r   r   r   )	r
   Ú	unistringÚ
bytestringrK   ÚsizehintÚistreamÚostreamrX   Úgotr   r   r   Útest_stream_bomk  s     

zUTF8SigTest.test_stream_bomc       	      C   sž   d}d}t  d¡}x†d gttddƒƒ dddd	d
g D ]`}|t |¡ƒ}t ¡ }x0|d k	rf| |¡}n| ¡ }|stP | |¡ qRW | 	¡ }|  
||¡ q6W d S )Nu   ABCÂ¡âˆ€XYZs   ABCÂ¡âˆ€XYZz	utf-8-sigr   rá   râ   rÌ   rã   i   i   )r   r9   rå   r   rD   rE   ræ   r   r   r   r   )	r
   rç   rè   rK   ré   rê   rë   rX   rì   r   r   r   Útest_stream_bare  s     
zUTF8SigTest.test_stream_bareN)r   r   r   r'   r   rä   r³   r‰   rß   rà   rí   rî   r   r   r   r   rÝ   B  s   rÝ   c               @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚEscapeDecodeTestc             C   s*   |   t d¡d¡ |   t tƒ ¡d¡ d S )Nr3   )r3   r   )r   r   Úescape_decodeÚ	bytearray)r
   r   r   r   rÛ   ˜  s    zEscapeDecodeTest.test_emptyc             C   sJ   t j}x>tdƒD ]2}t|gƒ}|dkr|  ||d ƒ|d df¡ qW d S )Nrã   ó   \ó   0é   )r   rð   r   r5   r   )r
   r!   rt   r   r   r   Útest_rawœ  s
    
zEscapeDecodeTest.test_rawc          
   C   s¼  t j}t| |ƒ}|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!ƒ x~td%d&ƒD ]p}t|gƒ}|d'kr$|  t¡ |d(| d(| ƒ W d Q R X |  t¡  |d(| ¡  d(| ¡  ƒ W d Q R X qäW |  t¡ |d)d)ƒ W d Q R X |  t¡ |d*d*ƒ W d Q R X |  t¡ |d+d+ƒ W d Q R X d S ),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   é{   s   abfnrtvxrò   s   \8s   \9s   \ú)r   rð   r   r   r5   ÚassertWarnsr¢   Úupper)r
   r!   r   r)   rt   r   r   r   Útest_escape£  sF    






















(zEscapeDecodeTest.test_escapec             C   sŠ   t j}|  t|d¡ |  t|d¡ |  |ddƒd¡ |  |ddƒd¡ |  t|d¡ |  t|d	¡ |  |d
dƒd¡ |  |d
dƒd¡ d S )Ns   \xs   [\x]s   [\x]\xrn   )s   []r\   ro   )s   [?]?r\   s   \x0s   [\x0]s   [\x0]\x0)s   []é   )s   [?]?rû   )r   rð   rv   Ú
ValueErrorr   )r
   r!   r   r   r   r   È  s    zEscapeDecodeTest.test_errorsN)r   r   r   rÛ   rõ   rú   r   r   r   r   r   rï   —  s   %rï   c               @   s   e Zd Zdd„ ZdS )ÚRecodingTestc             C   s8   t  ¡ }t |dd¡}| d¡ | ¡  |  |j¡ d S )NÚunicode_internalzutf-8rT   )rD   rE   r   ÚEncodedFiler   Úcloser&   Úclosed)r
   r_   Úf2r   r   r   Útest_recodingÕ  s
    
zRecodingTest.test_recodingN)r   r   r   r  r   r   r   r   rý   Ô  s   rý   )u"   Ù„ÙŠÙ‡Ù…Ø§Ø¨ØªÙƒÙ„Ù…ÙˆØ´Ø¹Ø±Ø¨ÙŠØŸs   egbpdaj6bu4bxfgehfvwxn)u   ä»–ä»¬ä¸ºä»€ä¹ˆä¸è¯´ä¸­æ–‡s   ihqwcrb4cv8a8dqg056pqjye)u   ä»–å€‘çˆ²ä»€éº½ä¸èªªä¸­æ–‡s   ihqwctvzc91f659drss3x8bo0yb)u   ProÄprostÄ›nemluvÃ­Äeskys   Proprostnemluvesky-uyb24dma41a)u,   ×œ×ž×”×”××¤×©×•×˜×œ××ž×“×‘×¨×™××¢×‘×¨×™×ªs   4dbcagdahymbxekheh6e0a7fei0b)uZ   à¤¯à¤¹à¤²à¥‹à¤—à¤¹à¤¿à¤¨à¥à¤¦à¥€à¤•à¥à¤¯à¥‹à¤‚à¤¨à¤¹à¥€à¤‚à¤¬à¥‹à¤²à¤¸à¤•à¤¤à¥‡à¤¹à¥ˆà¤‚s,   i1baa7eci9glrd9b2ae1bj0hfcgg6iyaf8o0a1dig0cd)u6   ãªãœã¿ã‚“ãªæ—¥æœ¬èªžã‚’è©±ã—ã¦ãã‚Œãªã„ã®ã‹s&   n8jok5ay5dzabd5bym9f0cm5685rrjetr6pdxa)uH   ì„¸ê³„ì˜ëª¨ë“ ì‚¬ëžŒë“¤ì´í•œêµ­ì–´ë¥¼ì´í•´í•œë‹¤ë©´ì–¼ë§ˆë‚˜ì¢‹ì„ê¹ŒsE   989aomsvi5e83db1d2a355cv1e0vak1dwrv93d5xbh15a0dt30a5jpsd879ccm6fea98c)u8   Ð¿Ð¾Ñ‡ÐµÐ¼ÑƒÐ¶ÐµÐ¾Ð½Ð¸Ð½ÐµÐ³Ð¾Ð²Ð¾Ñ€ÑÑ‚Ð¿Ð¾Ñ€ÑƒÑÑÐºÐ¸s    b1abfaaepdrnnbgefbaDotcwatmq2g4l)u*   PorquÃ©nopuedensimplementehablarenEspaÃ±ols-   PorqunopuedensimplementehablarenEspaol-fmd56a)u-   Táº¡isaohá»khÃ´ngthá»ƒchá»‰nÃ³itiáº¿ngViá»‡ts,   TisaohkhngthchnitingVit-kjcr8268qyxafd2f1b9g)u   3å¹´Bçµ„é‡‘å…«å…ˆç”Ÿs   3B-ww4c5e180e575a65lsy2b)u"   å®‰å®¤å¥ˆç¾Žæµ-with-SUPER-MONKEYSs(   -with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n)u'   Hello-Another-Way-ãã‚Œãžã‚Œã®å ´æ‰€s(   Hello-Another-Way--fc4qua05auwb3674vfr0b)u   ã²ã¨ã¤å±‹æ ¹ã®ä¸‹2s   2-u9tlzr9756bt3uc0v)u   Majiã§Koiã™ã‚‹5ç§’å‰s   MajiKoi5-783gue6qz075azm5e)u   ãƒ‘ãƒ•ã‚£ãƒ¼deãƒ«ãƒ³ãƒs   de-jg4avhby1noc0d)u   ãã®ã‚¹ãƒ”ãƒ¼ãƒ‰ã§s   d9juau41awczczp)z-> $1.00 <-s   -> $1.00 <--rô   c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚPunycodeTestc             C   s<   x6t D ].\}}|  t| d¡dƒ ¡ t|dƒ ¡ ¡ qW d S )NÚpunycoderË   )Úpunycode_testcasesr   rÞ   r0   Úlower)r
   ÚuniÚpunyr   r   r   rÇ   M  s    zPunycodeTest.test_encodec             C   sJ   xDt D ]<\}}|  || d¡¡ | d¡ d¡}|  || d¡¡ qW d S )Nr  rË   )r  r   r!   r0   )r
   r  r	  r   r   r   rÉ   Y  s    zPunycodeTest.test_decodeN)r   r   r   rÇ   rÉ   r   r   r   r   r  L  s   r  c               @   s\   e Zd Ze edkd¡dd„ ƒZe edkd¡dd„ ƒZe edkd¡dd„ ƒZd	d
„ Z	dS )ÚUnicodeInternalTestr×   zspecific to 32-bit wchar_tc          
   C   sH  dddg}dddddg}xL|D ]D\}}t jd	kr<tt|ƒƒ}t ¡  |  || d
¡¡ W d Q R X qW xL|D ]D}t jd	kr†tt|ƒƒ}t dtf¡ |  	t
|jd
¡ W d Q R X qlW t jd	krÈd}d}nd}d}t ¡  |  	t
|jd
¡ W d Q R X t ¡  |  | d
d¡d¡ W d Q R X t ¡  |  | d
d¡|¡ W d Q R X d S )N)s    ÿÿu   ô¿¿)s     u   Ä)r3   r4   s   ÿÿÿs   €   s      ó    s        r}   rþ   z*unicode_internal codec has been deprecateds      z\x00\x00\x11\x00s      z\x00\x11\x00\x00ro   u   ï¿½rk   )r’   r“   r5   Úreversedr   r¡   r   r!   r¢   rv   ry   )r
   ÚokZnot_okZinternalr  ZinvalidZinvalid_backslashreplacer   r   r   Útest_bug1251300a  sD    

 







z#UnicodeInternalTest.test_bug1251300c          
   C   s   y(t  dtf¡ d d¡ W d Q R X W nZ tk
r‚ } z<|  d|j¡ |  d|j¡ |  d|j¡ |  d|j	¡ W d d }~X Y n
X |  
¡  d S )Nz*unicode_internal codec has been deprecateds         rþ   r×   rû   )r   r¡   r¢   r!   ry   r   r'   rµ   r¶   r·   rÃ   )r
   Zexr   r   r   Útest_decode_error_attributes  s    
 z0UnicodeInternalTest.test_decode_error_attributesc          	   C   sx   t  dt j¡ t  d¡}t dtf¡< d d¡ ¡ }|t	d|d d… |dd … f dƒdƒ}W d Q R X |  
d|¡ d S )	Nr
  rþ   z*unicode_internal codec has been deprecatedÚabz%s""""%sr×   rË   )r  é   )r   Úregister_errorÚignore_errorsÚ
getdecoderr   r¡   r¢   r0   r!   r5   r   )r
   Údecoderr  Zignoredr   r   r   Útest_decode_callback›  s    

z(UnicodeInternalTest.test_decode_callbackc          	   C   sf   t  dtf¡N t d¡}|  |dƒd d¡ |  |dƒd d¡ |  t d¡d d¡ W d Q R X d S )	Nz*unicode_internal codec has been deprecatedrþ   rT   r   u   Ã©Å‚rô   s   \x00r×   )r   r¡   r¢   r   Ú
getencoderr   Úescape_encode)r
   Úencoderr   r   r   Útest_encode_length§  s    

z&UnicodeInternalTest.test_encode_lengthN)
r   r   r   ÚunittestÚ
skipUnlessÚSIZEOF_WCHAR_Tr  r  r  r  r   r   r   r   r
  `  s   ,r
  )s%   fooÂ­Íá †á ‹barâ€‹â bazï¸€ï¸ˆï¸ï»¿s	   foobarbaz)s   CAFEs   cafe)s   ÃŸs   ss)s   Ä°s   iÌ‡)s   ÅƒÍºs   Å„ Î¹)NN)s   jÌŒÂ Âªs   Ç° a)s   á¾·s   á¾¶Î¹)s   Ç°s   Ç°)s   Îs   Î)s   Î°s   Î°)s   áº–s   áº–)s   á½–s   á½–)ó    r  )s   Â r  )s   áš€N)s   â€€r  )s   â€‹r3   )s   ã€€r  )s   s   )s   Â…N)s   á ŽN)s   ï»¿r3   )s   ð…µN)s   ï„£N)s   ó±ˆ´N)s   ôˆ´N)s   ò¿¾N)s   ô¿¿N)s   í½‚N)s   ï¿½N)s   â¿µN)s   Ís   Ì)s   â€ŽN)s   â€ªN)s   ó €N)s   ó ‚N)s   fooÖ¾barN)s	   fooïµbarN)s	   fooï¹¶bars	   foo ÙŽbar)s   Ø§1N)s   Ø§1Ø¨s   Ø§1Ø¨)s   XÂ­ÃŸÄ°â„¡jÌŒÂ ÂªÎ°â€€s   xssiÌ‡telÇ° aÎ° )s   XÃŸãŒ–Ä°â„¡â’ŸãŒ€s*   xssã‚­ãƒ­ãƒ¡ãƒ¼ãƒˆãƒ«iÌ‡tel(d)ã‚¢ãƒ‘ãƒ¼ãƒˆc               @   s   e Zd Zdd„ ZdS )ÚNameprepTestc             C   s¶   ddl m} x¤ttƒD ]˜\}\}}|d kr,qt|ddƒ}|d krP|  t||¡ qt|ddƒ}y|  ||ƒ|¡ W q tk
r¬ } zt	 
d|d t|ƒf ¡‚W d d }~X Y qX qW d S )Nr   )Únameprepzutf-8rs   zTest 3.%d: %sr   )Zencodings.idnar   rV   Únameprep_testsrÞ   rv   r†   r   Ú	Exceptionr   Z
TestFailed)r
   r   ÚposZorigZpreppedÚer   r   r   Útest_nameprepL  s    zNameprepTest.test_nameprepN)r   r   r   r%  r   r   r   r   r  K  s   r  c               @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚIDNACodecTestc             C   sL   |   tddƒd¡ |   tddƒd¡ |   tddƒd¡ |   tddƒd	¡ d S )
Ns
   python.orgÚidnaz
python.orgs   python.org.zpython.org.s   xn--pythn-mua.orgu   pythÃ¶n.orgs   xn--pythn-mua.org.u   pythÃ¶n.org.)r   rÞ   )r
   r   r   r   Útest_builtin_decode`  s    z!IDNACodecTest.test_builtin_decodec             C   sL   |   d d¡d¡ |   d d¡d¡ |   d d¡d¡ |   d d¡d	¡ d S )
Nz
python.orgr'  s
   python.orgzpython.org.s   python.org.u   pythÃ¶n.orgs   xn--pythn-mua.orgu   pythÃ¶n.org.s   xn--pythn-mua.org.)r   r0   )r
   r   r   r   Útest_builtin_encodef  s    z!IDNACodecTest.test_builtin_encodec             C   s2   t  d¡t d¡ƒ}| d¡ |  | ¡ d¡ d S )Nr'  s   abcé   r4   )r   r9   rD   rE   r   r   )r
   r@   r   r   r   Útest_streaml  s    
zIDNACodecTest.test_streamc             C   s<  |   d t dd„ dD ƒd¡¡d¡ |   d t dd„ dD ƒd¡¡d	¡ |   d t d
d„ dD ƒd¡¡d¡ |   d t dd„ dD ƒd¡¡d¡ t d¡ƒ }|   | d¡d¡ |   | d¡d¡ |   | d¡d¡ |   | dd¡d¡ | ¡  |   | d¡d¡ |   | d¡d¡ |   | d¡d¡ |   | dd¡d¡ d S )Nr4   c             s   s   | ]}t |gƒV  qd S )N)r5   )r6   r7   r   r   r   ru   s  s    z8IDNACodecTest.test_incremental_decode.<locals>.<genexpr>s
   python.orgr'  z
python.orgc             s   s   | ]}t |gƒV  qd S )N)r5   )r6   r7   r   r   r   ru   w  s    s   python.org.zpython.org.c             s   s   | ]}t |gƒV  qd S )N)r5   )r6   r7   r   r   r   ru   {  s    s   xn--pythn-mua.org.u   pythÃ¶n.org.c             s   s   | ]}t |gƒV  qd S )N)r5   )r6   r7   r   r   r   ru     s    s   xn--xams	   ple-9ta.ou	   Ã¤xample.s   rgr3   TZorgs   rg.zorg.)r   r=   r   r>   r    r!   r<   )r
   r  r   r   r   Útest_incremental_decodeq  s,    z%IDNACodecTest.test_incremental_decodec             C   sð   |   d t dd¡¡d¡ |   d t dd¡¡d¡ |   d t dd¡¡d¡ |   d t dd¡¡d¡ t d¡ƒ }|   | d	¡d¡ |   | d
¡d¡ |   | dd¡d¡ | ¡  |   | d	¡d¡ |   | d¡d¡ |   | dd¡d¡ d S )Nr3   z
python.orgr'  s
   python.orgzpython.org.s   python.org.u   pythÃ¶n.org.s   xn--pythn-mua.org.u   Ã¤xz	ample.orgs   xn--xample-9ta.r4   Ts   orgz
ample.org.s   xn--xample-9ta.org.)r   r=   r   Ú
iterencoder/   r0   r<   )r
   r  r   r   r   Útest_incremental_encode  s(    z%IDNACodecTest.test_incremental_encodec             C   sN   d  dd¡ d dd¡ x0dD ](}|  tdj d|¡ |  tdjd|¡ qW dS )z$Only supports "strict" error handlerz
python.orgr'  rŽ   s
   python.org)rn   ro   rk   r®   N)r0   r!   rv   r"  )r
   rÅ   r   r   r   r   «  s    
zIDNACodecTest.test_errorsN)	r   r   r   r(  r)  r+  r,  r.  r   r   r   r   r   r&  _  s   r&  c               @   sl   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )ÚCodecsModuleTestc             C   sx   |   t dd¡d¡ |  ttj¡ |   t d¡d¡ |  ttjdd¡ |   tjdddd¡ |   tjd	dd
dd¡ d S )Ns   äöüzlatin-1u   Ã¤Ã¶Ã¼s   abcrÁ   r   rË   )Úobjr'   s   [ÿ]rn   )rÅ   z[])r   r   r!   rv   rÔ   ry   )r
   r   r   r   rÉ   ¸  s    zCodecsModuleTest.test_decodec             C   sŠ   |   t dd¡d¡ |  ttj¡ |  ttjdd¡ |   t d¡d¡ |  ttjdd	¡ |   tjddd
d¡ |   tjdd	ddd¡ d S )Nu   Ã¤Ã¶Ã¼zlatin-1s   äöürb   Ú__spam__rÁ   s   abcu   Ã¿ffrË   )r0  r'   u   [Ã¿]rn   )rÅ   s   [])r   r   r0   rv   rÔ   ÚLookupErrorrw   )r
   r   r   r   rÇ   Å  s    zCodecsModuleTest.test_encodec             C   s"   |   ttj¡ |   ttjd¡ d S )NrÜ   )rv   rÔ   r   Úregister)r
   r   r   r   Útest_registerÓ  s    zCodecsModuleTest.test_registerc             C   s2   |   ttj¡ |   ttjd¡ |   ttjd¡ d S )Nr1  ú )rv   rÔ   r   r€   r2  )r
   r   r   r   Útest_lookup×  s    zCodecsModuleTest.test_lookupc             C   s"   |   ttj¡ |   ttjd¡ d S )Nr1  )rv   rÔ   r   r  r2  )r
   r   r   r   Útest_getencoderÜ  s    z CodecsModuleTest.test_getencoderc             C   s"   |   ttj¡ |   ttjd¡ d S )Nr1  )rv   rÔ   r   r  r2  )r
   r   r   r   Útest_getdecoderà  s    z CodecsModuleTest.test_getdecoderc             C   s"   |   ttj¡ |   ttjd¡ d S )Nr1  )rv   rÔ   r   r9   r2  )r
   r   r   r   Útest_getreaderä  s    zCodecsModuleTest.test_getreaderc             C   s"   |   ttj¡ |   ttjd¡ d S )Nr1  )rv   rÔ   r   rc   r2  )r
   r   r   r   Útest_getwriterè  s    zCodecsModuleTest.test_getwriterc             C   sn   t  t j¡}|  t jt j|¡ yt  t jd¡ W n  t jk
rP   |  d¡ Y nX t d¡}|  |j	d¡ d S )NÚtr_TRztest needs Turkish localeÚASCIIrË   )
ÚlocaleÚ	setlocaleÚLC_CTYPEr   ÚErrorZskipTestr   r€   r   Úname)r
   Z	oldlocaler7   r   r   r   Útest_lookup_issue1813ì  s    
z&CodecsModuleTest.test_lookup_issue1813c             C   s0   d}|   |tj¡ xtjD ]}tt|ƒ qW d S )N),r0   r!   r3  Ú	CodecInfoÚCodecÚIncrementalEncoderÚIncrementalDecoderÚStreamReaderÚStreamWriterr€   r  r  r/   r    r9   rc   r  r»   Ústrict_errorsÚreplace_errorsr  Úxmlcharrefreplace_errorsÚbackslashreplace_errorsÚnamereplace_errorsr    rÿ   r-  r>   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)ZassertCountEqualr   Ú__all__Úgetattr)r
   Zapir   r   r   Útest_allù  s    zCodecsModuleTest.test_allc             C   sb   |   tjtj¡ xLdD ]D}|  |¡0 t tj|d¡}|  |tj¡ W d Q R X W d Q R X qW d S )N)Úwr@   zr+zw+rT   za+rË   )	r   r   rž   rŸ   r°   r   r    r#   rZ  )r
   ÚmodeÚfiler   r   r   Ú	test_open  s
    
zCodecsModuleTest.test_openc             C   s‚   |   ttjdd¡ |   ttjdd¡ |   ttjdd¡ |   ttjdd¡ x4dD ],}|   ttjdd|¡ |   ttjdd|¡ qNW d S )NrÁ   Z	undefineds   abcr4   r3   )rŽ   rn   ro   rk   )rv   r†   r   r0   r!   )r
   rÅ   r   r   r   Útest_undefined  s    
zCodecsModuleTest.test_undefinedN)r   r   r   rÉ   rÇ   r4  r6  r7  r8  r9  r:  rB  r^  rb  rc  r   r   r   r   r/  ¶  s   r/  c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚStreamReaderTestc             C   s   t  d¡| _t d¡| _d S )Nzutf-8s   í•œ
ê¸€)r   r9   rK   rD   rE   rF   )r
   r   r   r   ÚsetUp%  s    zStreamReaderTest.setUpc             C   s$   |   | j¡}|  | ¡ ddg¡ d S )Nu   í•œ
u   ê¸€)rK   rF   r   r^   )r
   r_   r   r   r   Útest_readlines)  s    zStreamReaderTest.test_readlinesN)r   r   r   re  rf  r   r   r   r   rd  #  s   rd  c               @   s   e Zd Zdd„ ZdS )ÚEncodedFileTestc             C   s\   t  d¡}t |dd¡}|  | ¡ d¡ t  ¡ }t |dd¡}| d¡ |  | ¡ d¡ d S )Ns   í•œ
ê¸€z	utf-16-lezutf-8s   \Õ
  ®zlatin-1s   Ã¼ó   ü)rD   rE   r   rÿ   r   r   r   r   )r
   r_   Úefr   r   r   Ú
test_basic0  s    

zEncodedFileTest.test_basicN)r   r   r   rj  r   r   r   r   rg  .  s   rg  rË   Úbig5Ú	big5hkscsÚcharmapÚcp037Zcp1006Úcp1026Úcp1125Úcp1140Úcp1250Úcp1251Úcp1252Úcp1253Úcp1254Úcp1255Úcp1256Úcp1257Úcp1258Úcp424Úcp437Úcp500Zcp720Zcp737Úcp775Úcp850Úcp852Úcp855Zcp856Úcp857Úcp858Úcp860Úcp861Úcp862Úcp863Úcp864Úcp865Úcp866Úcp869Zcp874Zcp875Ú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_turkishZpalmosÚptcp154r  Zraw_unicode_escapeÚ	shift_jisÚshift_jis_2004Úshift_jisx0213Útis_620Zunicode_escaperþ   Úutf_16Ú	utf_16_beÚ	utf_16_leÚutf_7Úutf_8Úmbcs_encodeÚmbcsÚ
oem_encodeZoemc               @   sJ   e Zd Zdd„ Zejdd„ ƒZdd„ Zdd„ Zd	d
„ Z	dd„ Z
dd„ ZdS )ÚBasicUnicodeTestc          
      s
  d}xþt D ]ô}t |¡j}| d¡r2|d7 }n|dkr>d}|  | dd¡| dd¡¡ t ¡ R t 	|¡|ƒ\}}|  |t
|ƒd| ¡ t |¡|ƒ\}}|  ||d| ¡ W d Q R X |tkrvtdƒ}t |¡|ƒ}d}	x>|D ]6}
| |
¡ | ¡ }|  t|ƒtkt|ƒ¡ |	|7 }	qäW tdƒ}t |¡|ƒ}d}x*|	D ]"}
| t|
gƒ¡ || ¡ 7 }q>W |  ||d| ¡ |tkryt |¡ƒ ‰W n tk
r¤   Y nÜX d}	x|D ]}
|	ˆ |
¡7 }	q°W |	ˆ dd	¡7 }	t |¡ƒ ‰ d}x"|	D ]}
|ˆ  t|
gƒ¡7 }qîW |ˆ  dd	¡7 }|  ||d| ¡ d t t ||¡|¡¡}|  ||d| ¡ d t t d|¡|¡¡}|  |d¡ |d
kryt |¡dƒ‰W n tk
r°   Y qX d ‡fdd„|D ƒ¡}	t |¡dƒ‰ d ‡ fdd„|	D ƒ¡}|  ||d| ¡ qW d S )NÚabc123Z_codecr³  r„   ú-zencoding=%rr3   r4   T)r'  rÅ  rn   c             3   s   | ]}ˆ   |¡V  qd S )N)r0   )r6   r7   )r  r   r   ru   ü  s    z/BasicUnicodeTest.test_basics.<locals>.<genexpr>c             3   s   | ]}ˆ   t|gƒ¡V  qd S )N)r!   r5   )r6   r7   )r  r   r   ru   þ  s   )Úall_unicode_encodingsr   r€   rA  Úendswithr   ro   r   r¡   r  r   r  Úbroken_unicode_with_statefulr   rc   r   r   r&   Útyper5   r9   r/   r2  r0   r    r!   r=   r>   r-  )r
   r   r'   rA  rt   r   r   r?   rd   Úencodedresultr7   ÚchunkrK   ÚdecodedresultrA   r   )r  r  r   Útest_basics´  s|    










zBasicUnicodeTest.test_basicsc          	      sL  ddl m}m} d}x0tD ]&}|tkry||ƒ‰W n tk
rJ   Y n‚X d}x|D ]}|ˆ |¡7 }qVW |ˆ dd¡7 }||ƒ‰ d}x |D ]}|ˆ  t|gƒ¡7 }qŽW |ˆ  dd¡7 }|  	||d| ¡ |dkry||d	ƒ‰W n tk
rö   Y qX d 
‡fd
d„|D ƒ¡}||d	ƒ‰ d 
‡ fdd„|D ƒ¡}|  	||d| ¡ qW d S )Nr   )Úcodec_incrementalencoderÚcodec_incrementaldecoderrÈ  r3   r4   Tzencoding=%r)r'  rÅ  rn   c             3   s   | ]}ˆ   |¡V  qd S )N)r0   )r6   r7   )Úcencoderr   r   ru   #  s    z4BasicUnicodeTest.test_basics_capi.<locals>.<genexpr>c             3   s   | ]}ˆ   t|gƒ¡V  qd S )N)r!   r5   )r6   r7   )Úcdecoderr   r   ru   %  s   )Z	_testcapirÒ  rÓ  rÊ  rÌ  r2  r0   r!   r5   r   r=   )r
   rÒ  rÓ  r   r'   rÎ  r7   rÐ  r   )rÕ  rÔ  r   Útest_basics_capi  s<    




z!BasicUnicodeTest.test_basics_capic             C   sz   dd }xlt D ]d}|dkrq|tkr&qt |¡t | |¡¡ƒ}x0tdƒD ]$}| dd¡ | 	¡ }|  
||¡ qJW qW d S )Nz%s
%s
)AX  abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123AX  def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456r'  r[   r   )rÊ  rÌ  r   r9   rD   rE   r0   r   Úseekr   r   )r
   r   r'   rK   ÚtrX   r   r   r   Ú	test_seek*  s    
zBasicUnicodeTest.test_seekc             C   s>   x8t D ]0}t |¡}|  t|¡ |dkr|  t|d¡ qW d S )N)r'  r  rÜ   )rÊ  r   r  rv   rÔ   )r
   r'   r  r   r   r   Útest_bad_decode_args9  s
    

z%BasicUnicodeTest.test_bad_decode_argsc          
   C   s<   x6t D ].}t |¡}t ¡  |  t|¡ W d Q R X qW d S )N)rÊ  r   r  r   r¡   rv   rÔ   )r
   r'   r  r   r   r   Útest_bad_encode_args@  s    


z%BasicUnicodeTest.test_bad_encode_argsc             C   s&   ddl m} t|jƒ}|  ||¡ d S )Nr   )rq  )Ú	encodingsrq  rÍ  Úencoding_tabler   )r
   rq  Z
table_typer   r   r   Ú"test_encoding_map_type_initializedG  s    
z3BasicUnicodeTest.test_encoding_map_type_initializedc             C   sF   d}x<t D ]4}|tkr
|  ||| |¡¡ |  ||| |¡¡ q
W d S )NrÈ  )rÊ  rÌ  r.   r0   r1   )r
   r(   r'   r   r   r   r   M  s
    
z#BasicUnicodeTest.test_decoder_stateN)r   r   r   rÑ  r   Zcpython_onlyrÖ  rÙ  rÚ  rÛ  rÞ  r   r   r   r   r   rÇ  ³  s   O'rÇ  c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚCharmapTestc             C   s  |   t ddd¡d¡ |   t ddd¡d¡ |  ttjddd¡ |  ttjddd¡ |   t dd	d¡d
¡ |   t dd	d¡d
¡ |   t ddd¡d¡ |   t ddd¡d¡ |   t ddd¡d¡ |   t ddd¡d¡ ttdƒƒ}|   t |dd¡dt|ƒf¡ d S )Ns    rŽ   rÁ   )rÁ   r*  u   ô¿¿bc)u   ô¿¿bcr*  r  u   abï¿¾ro   )u   abï¿½r*  rk   )zab\x02r*  rn   )r  r*  rã   r4   )r   r   Úcharmap_decoderv   ry   r5   r   r   )r
   Úallbytesr   r   r   Útest_decode_with_string_mapW  s@    z'CharmapTest.test_decode_with_string_mapc          
   C   s   |   t ddddddœ¡d¡ |   t dddd	d
dœ¡d¡ |   t ddddddœ¡d¡ |   t ddddddœ¡d¡ |  ttjdddddœ¡ |  ttjddddd dœ¡ |  ttjddddddœ¡ |   t dddddœ¡d¡ |   t ddddd dœ¡d¡ |   t ddddddœ¡d¡ |   t dddddœ¡d¡ |   t ddddd dœ¡d¡ |   t ddddddœ¡d¡ |   t dddddœ¡d¡ |   t ddddd dœ¡d¡ |   t ddddddœ¡d¡ ttdƒƒ}|   t |di ¡dt|ƒf¡ d S )Ns    rŽ   rT   rt   r7   )r   r   rô   )rÁ   r*  ZAaZBbZCc)ZAaBbCcr*  u   ô¿¿)u   ô¿¿bcr*  r4   )r  r*  )r   r   u   ï¿¾ro   )u   abï¿½r*  rk   )zab\x02r*  rn   rã   )r   r   rà  rv   ry   r5   r   r   )r
   rá  r   r   r   Útest_decode_with_int2str_mapŽ  s‚    


z(CharmapTest.test_decode_with_int2str_mapc          
   C   sŒ  t dƒ}t dƒ}t dƒ}|  t dd|||dœ¡d¡ |  t ddd||dœ¡d	¡ |  t ddtj||dœ¡ttjƒd
 df¡ |  ttjddtjd ||dœ¡ |  t	tjdd||dœ¡ |  t	tjdd||ddœ¡ |  t dd||dœ¡d¡ |  t dd||ddœ¡d¡ |  t dd||dœ¡d¡ |  t dd||ddœ¡d¡ |  t dd||dœ¡d¡ |  t dd||ddœ¡d¡ d S )NrT   rt   r7   s    rŽ   )r   r   rô   )rÁ   r*  iÿÿ )u   ô¿¿bcr*  Zbcr*  r   )r   r   iþÿ  ro   )u   abï¿½r*  rk   )zab\x02r*  rn   )r  r*  )
Úordr   r   rà  r’   Ú
maxunicodeÚchrrv   rÔ   ry   )r
   rT   rt   r7   r   r   r   Útest_decode_with_int2int_mapö  s`    


z(CharmapTest.test_decode_with_int2int_mapN)r   r   r   râ  rã  rç  r   r   r   r   rß  V  s   7hrß  c               @   s   e Zd Zdd„ Zdd„ ZdS )ÚWithStmtTestc          	   C   sD   t  d¡}t |dd¡}|  | ¡ d¡ W d Q R X |  |j¡ d S )Ns   Ã¼zlatin-1zutf-8rh  )rD   rE   r   rÿ   r   r   r&   r  )r
   r_   ri  r   r   r   Útest_encodedfileC	  s    
zWithStmtTest.test_encodedfilec          	   C   sH   t  d¡}t d¡}t ||j|jd¡}|  | ¡ d¡ W d Q R X d S )Ns   Ã¼zutf-8rŽ   õ   Ã¼)	rD   rE   r   r€   rZ  ÚstreamreaderÚstreamwriterr   r   )r
   r_   ÚinfoÚsrwr   r   r   Útest_streamreaderwriterI	  s
    


z$WithStmtTest.test_streamreaderwriterN)r   r   r   ré  rï  r   r   r   r   rè  B	  s   rè  c               @   s   e Zd Zdd„ Zdd„ ZdS )Ú	TypesTestc             C   sj   t jt jt jt jt jt jt jt jt j	t j
t jt jg}tt dƒrJ| t j¡ x|D ]}|  t|d¡ qPW d S )NÚmbcs_decoderU   )r   rÑ   Úutf_8_decoder¦   r¬   rÓ   r‹   r–   r˜   Úutf_32_ex_decodeÚlatin_1_decodeÚascii_decoderà  ÚhasattrrJ   rñ  rv   rÔ   )r
   Zdecodersr  r   r   r   Útest_decode_unicodeR	  s     

zTypesTest.test_decode_unicodec             C   s¼   |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |  ttjd¡ |   t dd¡d¡ |   t dd¡d	¡ |  ttjd¡ |   t dd¡d¡ |   t dd¡d	¡ d S )
Nz\u1234)u   áˆ´r\   s   \u1234s
   \U00110000z
\U00110000ro   )u   ï¿½rO   rk   )z(\x5c\x55\x30\x30\x31\x31\x30\x30\x30\x30rO   )r   r   Úunicode_escape_decodeÚraw_unicode_escape_decoderv   ry   )r
   r   r   r   Útest_unicode_escapeg	  s    zTypesTest.test_unicode_escapeN)r   r   r   r÷  rú  r   r   r   r   rð  Q	  s   rð  c               @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚUnicodeEscapeTestc             C   s(   |   t d¡d¡ |   t d¡d¡ d S )Nr4   )r3   r   r3   )r4   r   )r   r   Úunicode_escape_encoderø  )r
   r   r   r   rÛ   {	  s    zUnicodeEscapeTest.test_emptyc             C   sD   t j}x8tddƒD ]*}|dkr|  |t|ƒƒt|gƒdf¡ qW d S )Né    é   é\   r   )r   rü  r   r   ræ  r5   )r
   r0   rt   r   r   r   Útest_raw_encode	  s    z!UnicodeEscapeTest.test_raw_encodec             C   sJ   t j}x>tdƒD ]2}|dkr|  |t|gƒd ƒt|ƒd df¡ qW d S )Nrã   rÿ  ró   Ú0rô   )r   rø  r   r   r5   ræ  )r
   r!   rt   r   r   r   Útest_raw_decode…	  s    z!UnicodeEscapeTest.test_raw_decodec             C   s®   t j}t| |ƒ}|ddƒ |ddƒ |ddƒ |ddƒ x2td	ƒD ]&}t|ƒd
krB|t|ƒd|  ¡ ƒ qBW x(tddƒD ]}|t|ƒd|  ¡ ƒ qxW |ddƒ |ddƒ d S )Nú	s   \trP   s   \nrQ   s   \rú\s   \\rý  z	
z\x%02xrþ  rã   u   â‚¬s   \u20acu   ð„ s
   \U0001d120)r   rü  r   r   ræ  r0   )r
   r0   r   rt   r   r   r   Útest_escape_encode‹	  s    





z$UnicodeEscapeTest.test_escape_encodec          
   C   sÚ  t j}t| |ƒ}|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'ƒ x’td(d)ƒD ]„}t|gƒ}|d*kr2|  t¡ |d+| d,t|ƒ ƒ W d Q R X | ¡ d-krî|  t¡$ |d+| ¡  d,t|d. ƒ ƒ W d Q R X qîW |  t¡ |d/d0ƒ W d Q R X |  t¡ |d1d2ƒ W d Q R X |  t¡ |d3d4ƒ W d Q R X d S )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ö   r÷   s	   abfnrtuvxrò   r  s   UNrý  s   \8z\8s   \9z\9s   \úu   \Ãº)	r   rø  r   r   r5   rø   r¢   ræ  rù   )r
   r!   r   r)   rt   r   r   r   Útest_escape_decodeš	  sJ    























 ,z$UnicodeEscapeTest.test_escape_decodec          	   C   sì   t j}x®dD ]¦\}}xœt|ƒD ]}|  t|d| d|  ¡ |  t|d| d|  d ¡ d| d|  d | d|  }|  ||dƒdt|ƒf¡ |  ||d	ƒd
t|ƒf¡ qW qW |  t|d¡ |  |ddƒd¡ |  |dd	ƒd¡ d S )N))ó   xrô   )ó   ur×   )ó   Ur×   rò   ró   s   [\ó   ]s   ]\rn   z[]ro   u   [ï¿½]ï¿½s
   \U00110000)r4   rO   )u   ï¿½rO   )r   rø  r   rv   ry   r   r   )r
   r!   r7   r*   r)   rX   r   r   r   Útest_decode_errorsÁ	  s     z$UnicodeEscapeTest.test_decode_errorsN)	r   r   r   rÛ   r   r  r  r  r  r   r   r   r   rû  z	  s   'rû  c               @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚRawUnicodeEscapeTestc             C   s(   |   t d¡d¡ |   t d¡d¡ d S )Nr4   )r3   r   r3   )r4   r   )r   r   Úraw_unicode_escape_encoderù  )r
   r   r   r   rÛ   Ó	  s    zRawUnicodeEscapeTest.test_emptyc             C   s:   t j}x.tdƒD ]"}|  |t|ƒƒt|gƒdf¡ qW d S )Nrã   r   )r   r  r   r   ræ  r5   )r
   r0   rt   r   r   r   r   ×	  s    z$RawUnicodeEscapeTest.test_raw_encodec             C   sB   t j}x6tdƒD ]*}|  |t|gƒd ƒt|ƒd df¡ qW d S )Nrã   ró   r  rô   )r   rù  r   r   r5   ræ  )r
   r!   rt   r   r   r   r  Ü	  s    z$RawUnicodeEscapeTest.test_raw_decodec             C   s^   t j}t| |ƒ}x4tdƒD ](}|dkr|dt|ƒ dt|gƒ ƒ qW |ddƒ |ddƒ d S )	Nrã   s   uUr  rò   u   â‚¬s   \u20acu   ð„ s
   \U0001d120)r   r  r   r   ræ  r5   )r
   r0   r   rt   r   r   r   r  á	  s    
 
z'RawUnicodeEscapeTest.test_escape_encodec             C   s^   t j}t| |ƒ}x4tdƒD ](}|dkr|dt|gƒ dt|ƒ ƒ qW |ddƒ |ddƒ d S )	Nrã   s   uUrò   r  s   \u20acu   â‚¬s
   \U0001d120u   ð„ )r   rù  r   r   r5   ræ  )r
   r!   r   rt   r   r   r   r  ê	  s    
 
z'RawUnicodeEscapeTest.test_escape_decodec          	   C   sì   t j}x®dD ]¦\}}xœt|ƒD ]}|  t|d| d|  ¡ |  t|d| d|  d ¡ d| d|  d | d|  }|  ||dƒdt|ƒf¡ |  ||d	ƒd
t|ƒf¡ qW qW |  t|d¡ |  |ddƒd¡ |  |dd	ƒd¡ d S )N))r  r×   )r	  r×   rò   ró   s   [\r
  s   ]\rn   z[]ro   u   [ï¿½]ï¿½s
   \U00110000)r4   rO   )u   ï¿½rO   )r   rù  r   rv   ry   r   r   )r
   r!   r7   r*   r)   rX   r   r   r   r  ó	  s     z'RawUnicodeEscapeTest.test_decode_errorsN)	r   r   r   rÛ   r   r  r  r  r  r   r   r   r   r  Ò	  s   		r  c               @   s   e Zd Zdd„ ZdS )ÚEscapeEncodeTestc          
   C   sx   ddddddddg}x:|D ]2\}}| j |d	 |  t |¡|¡ W d Q R X qW |  ttjd
¡ |  ttjtdƒ¡ d S )N)r3   )r3   r   )s   foobar)s   foobarr\   )s	   spam eggs)s   spam\x00eggsé	   )s   a'b)s   a\'br*  )s   b\c)s   b\\cr*  )s   c
d)s   c\ndr*  )s   de)s   d\rer*  )s   fg)s   f\x7fgr*  )rX   r~   s   spam)r°   r   r   r  rv   rÔ   rñ   )r
   r§   rX   Úoutputr   r   r   r  
  s     z#EscapeEncodeTest.test_escape_encodeN)r   r   r   r  r   r   r   r   r  
  s   r  c               @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚSurrogateEscapeTestc             C   sT   |   d dd¡d¡ |   d dd¡d¡ |   d dd¡d¡ |   d dd¡d¡ d S )Ns   foo€barzutf-8r®   u	   fooí²€bars   í°€u	   í³­í²°í²€)r   r!   r0   )r
   r   r   r   Ú	test_utf8
  s    zSurrogateEscapeTest.test_utf8c             C   s,   |   d dd¡d¡ |   d dd¡d¡ d S )Ns   foo€barrË   r®   u	   fooí²€bar)r   r!   r0   )r
   r   r   r   rÐ   &
  s    zSurrogateEscapeTest.test_asciic             C   s,   |   d dd¡d¡ |   d dd¡d¡ d S )Ns   foo¥barz
iso-8859-3r®   u	   fooí²¥bar)r   r!   r0   )r
   r   r   r   Útest_charmap-
  s    z SurrogateEscapeTest.test_charmapc             C   s   |   d dd¡d¡ d S )Nu   í³¤í³«í³¯í³¶í³¼zlatin-1r®   s   äëïöü)r   r0   )r
   r   r   r   Útest_latin14
  s    zSurrogateEscapeTest.test_latin1N)r   r   r   r  rÐ   r  r  r   r   r   r   r  
  s   r  c               @   s   e Zd Zdd„ ZdS )ÚBomTestc          
   C   s<  d}d}|   tjtj¡ x|D ]}tjtjd|dV}| |¡ | |¡ | d¡ |  | 	¡ |d ¡ | d¡ |  | 	¡ |d ¡ W d Q R X tjtjd|dR}| |d ¡ |  
| ¡ d¡ | d¡ | |¡ | d¡ |  | 	¡ |¡ W d Q R X tjtjd|dZ}|j |d ¡ |  
|j ¡ d¡ |j d¡ |j |¡ | d¡ |  | 	¡ |¡ W d Q R X tjtjd|dF}| |¡ | | ¡ ¡ | |¡ | d¡ |  | 	¡ |d ¡ W d Q R X tjtjd|dN}|j |¡ |j |j ¡ ¡ |j |¡ | d¡ |  | 	¡ |d ¡ W d Q R X q W d S )NZ
1234567890)zutf-16z	utf-16-lez	utf-16-bezutf-32z	utf-32-lez	utf-32-bezw+)r'   r   rô   )r   r   rž   rŸ   r   r    r   r×  r   r   ZassertNotEqualÚtellrd   )r
   rX   r§   r'   r_   r   r   r   Ú
test_seek0;
  sJ    











zBomTest.test_seek0N)r   r   r   r  r   r   r   r   r  :
  s   r  Ú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_codecr:   ÚzlibÚ	bz2_codecÚbz2c               @   s€   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
e ed¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTransformCodecTestc          
   C   s†   t tdƒƒ}xttD ]l}| j|dV t |¡|ƒ\}}|  |t|ƒ¡ t |¡|ƒ\}}|  |t|ƒ¡ |  ||¡ W d Q R X qW d S )Nrã   )r'   )	r5   r   Úbytes_transform_encodingsr°   r   r  r   r   r  )r
   Zbinputr'   Úor   r)   r   r   r   rÑ  ”
  s    
zTransformCodecTest.test_basicsc          
   C   s^   xXt D ]P}| j|d: t d|¡}t |¡t |¡ƒ}| ¡ }|  |d¡ W d Q R X qW d S )N)r'   ó   €)	r*  r°   r   r0   r9   rD   rE   r   r   )r
   r'   ÚsinrK   Úsoutr   r   r   Ú	test_readŸ
  s    
zTransformCodecTest.test_readc          
   C   s^   xXt D ]P}| j|d: t d|¡}t |¡t |¡ƒ}| ¡ }|  |d¡ W d Q R X qW d S )N)r'   r,  )	r*  r°   r   r0   r9   rD   rE   rI   r   )r
   r'   r-  rK   r.  r   r   r   rW   §
  s    
z TransformCodecTest.test_readlinec          
   C   s–   d}xŒt D ]„}| j|dn |}t|ƒ}t ||¡}t ||¡}|  ||¡ t|ƒ}t ||¡}|  ||¡ t ||¡}|  ||¡ W d Q R X q
W d S )Ns   12345€)r'   )r*  r°   Ú
memoryviewr   r0   r   r!   )r
   Zoriginalr'   rX   ZviewZview_encodedZview_decodedr   r   r   Útest_buffer_api_usage¯
  s    
z(TransformCodecTest.test_buffer_api_usagec             C   sl   d}xbt D ]Z}| j|dD d}| |¡}|  t|¡}| |¡ W d Q R X |  |jj¡ W d Q R X q
W d S )Nzbad input type)r'   zM{!r} is not a text encoding; use codecs.encode\(\) to handle arbitrary codecs)	r*  r°   ÚformatÚassertRaisesRegexr2  r0   ÚassertIsNoner´   Ú	__cause__)r
   Ú	bad_inputr'   ÚfmtÚmsgÚfailurer   r   r   Ú0test_text_to_binary_blacklists_binary_transformsÁ
  s    

zCTransformCodecTest.test_text_to_binary_blacklists_binary_transformsc          	   C   s*   d}|   t|¡ d d¡ W d Q R X d S )NzR^'rot_13' is not a text encoding; use codecs.encode\(\) to handle arbitrary codecszjust an example messager$  )r3  r2  r0   )r
   r8  r   r   r   Ú.test_text_to_binary_blacklists_text_transformsÍ
  s    zATransformCodecTest.test_text_to_binary_blacklists_text_transformsc             C   s   d}x†t D ]~}| j|dh t ||¡}d}| |¡}|  t|¡ | |¡ W d Q R X |  t|¡ t|ƒ |¡ W d Q R X W d Q R X q
W d S )Ns6   encode first to ensure we meet any format restrictions)r'   zM{!r} is not a text encoding; use codecs.decode\(\) to handle arbitrary codecs)	r*  r°   r   r0   r2  r3  r2  r!   rñ   )r
   rX   r'   Zencoded_datar7  r8  r   r   r   Ú0test_binary_to_text_blacklists_binary_transformsÔ
  s    

zCTransformCodecTest.test_binary_to_text_blacklists_binary_transformsc             C   sf   x`dt dƒfD ]P}| j|d: d}|  t|¡}| d¡ W d Q R X |  |jj¡ W d Q R X qW d S )Ns	   immutables   mutable)r6  zR^'rot_13' is not a text encoding; use codecs.decode\(\) to handle arbitrary codecsr$  )rñ   r°   r3  r2  r!   r4  r´   r5  )r
   r6  r8  r9  r   r   r   Ú.test_binary_to_text_blacklists_text_transformsã
  s    zATransformCodecTest.test_binary_to_text_blacklists_text_transformszRequires zlib supportc          	   C   sB   d}|   t|¡}t dd¡ W d Q R X |  |jjt|jƒ¡ d S )Nz(^decoding with 'zlib_codec' codec faileds   hellor%  )r3  r"  r   r!   r#   r´   r5  rÍ  )r
   r8  r9  r   r   r   Ú!test_custom_zlib_error_is_wrappedí
  s
    
z4TransformCodecTest.test_custom_zlib_error_is_wrappedc          	   C   sB   d}|   t|¡}t dd¡ W d Q R X |  |jjt|jƒ¡ d S )Nz'^decoding with 'hex_codec' codec faileds   hellor  )r3  r"  r   r!   r#   r´   r5  rÍ  )r
   r8  r9  r   r   r   Ú test_custom_hex_error_is_wrappedö
  s
    
z3TransformCodecTest.test_custom_hex_error_is_wrappedc             C   sd   x^t  ¡ D ]R\}}t |¡j}x<|D ]4}| j|d t |¡}|  |j|¡ W d Q R X q$W q
W d S )N)Úalias)Útransform_aliasesÚitemsr   r€   rA  r°   r   )r
   Ú
codec_nameÚaliasesZexpected_namer@  rí  r   r   r   Útest_aliases  s    

zTransformCodecTest.test_aliasesc             C   s4   t  dd¡}|  |d¡ d}|  t  |d¡|¡ d S )Ns   space tab	eol 
zquopri-codecs   space=20tab=09eol=20
s   space tab eol
)r   r0   r   r!   )r
   rB   Z	unescapedr   r   r   Útest_quopri_stateless
  s    z(TransformCodecTest.test_quopri_statelessc             C   s   |   ttjdd¡ d S )Nr3   zuu-codec)rv   rü   r   r!   )r
   r   r   r   Útest_uu_invalid  s    z"TransformCodecTest.test_uu_invalidN)r   r   r   rÑ  r/  rW   r1  r:  r;  r<  r=  r  r  r&  r>  r?  rE  rF  rG  r   r   r   r   r)  ’
  s   
	r)  c             C   s
   t  | ¡S )N)Ú_TEST_CODECSÚget)rC  r   r   r   Ú_get_test_codec!  s    rJ  )Ú_forget_codecc             C   s   d S )Nr   )rC  r   r   r   rK  )  s    rK  c               @   s¦   e Zd Zdd„ Zdd„ Zdd„ Zejdd„ ƒZd	d
„ Z	e
fdd„Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%S )&ÚExceptionChainingTestc             C   s.   t | ƒtt| ƒƒ }t |¡ ¡ | _t| _d S )N)	ÚreprrÞ   ÚidrÜ  Únormalize_encodingr  rC  ÚRuntimeErrorÚobj_to_raise)r
   Z	unique_idr   r   r   re  /  s    		zExceptionChainingTest.setUpc             C   sF   t  | jd ¡ tj | jd ¡ yt| jƒ W n tk
r@   Y nX d S )N)rH  ÚpoprC  rÜ  Ú_cacherK  ÚKeyError)r
   r   r   r   ÚtearDownD  s    zExceptionChainingTest.tearDownc             C   s    t j||| jd}|t| j< d S )N)rA  )r   rC  rC  rH  )r
   r0   r!   Z
codec_infor   r   r   Ú	set_codecM  s    
zExceptionChainingTest.set_codecc          	   c   sV   d  || j|j|¡}|  ||¡}|V  W d Q R X |  |jj|¡ |  |jjj¡ d S )Nz${} with {!r} codec failed \({}: {}\))	r2  rC  r   r3  r#   r´   r5  ZassertIsNotNoneÚ__traceback__)r
   Z	operationÚexc_typer8  Zfull_msgZcaughtr   r   r   ÚassertWrappedR  s    z#ExceptionChainingTest.assertWrappedc             O   s
   | j ‚d S )N)rQ  )r
   ÚargsÚkwdsr   r   r   Ú	raise_obj[  s    zExceptionChainingTest.raise_objc          	   C   s¶   || _ |  | j| j¡ |  d||¡ d | j¡ W d Q R X |  d||¡ t d| j¡ W d Q R X |  d||¡ d | j¡ W d Q R X |  d||¡ t d| j¡ W d Q R X d S )Nr'   Ú	str_inputZdecodings   bytes input)rQ  rV  r\  rY  r0   rC  r   r!   )r
   rQ  r8  rX  r   r   r   Úcheck_wrapped_  s    z#ExceptionChainingTest.check_wrappedc             C   s   |   td¡ d S )Nr4   )r^  rP  )r
   r   r   r   Útest_raise_by_typek  s    z(ExceptionChainingTest.test_raise_by_typec             C   s   d}|   t|ƒ|¡ d S )NzThis should be wrapped)r^  rP  )r
   r8  r   r   r   Útest_raise_by_valuen  s    z)ExceptionChainingTest.test_raise_by_valuec             C   s*   d}G dd„ dt ƒ}|  ||ƒ||¡ d S )NzThis should be wrappedc               @   s   e Zd ZdZdS )zWExceptionChainingTest.test_raise_grandchild_subclass_exact_size.<locals>.MyRuntimeErrorr   N)r   r   r   Ú	__slots__r   r   r   r   ÚMyRuntimeErrort  s   rb  )rP  r^  )r
   r8  rb  r   r   r   Ú)test_raise_grandchild_subclass_exact_sizer  s    z?ExceptionChainingTest.test_raise_grandchild_subclass_exact_sizec             C   s*   d}G dd„ dt ƒ}|  ||ƒ||¡ d S )NzThis should be wrappedc               @   s   e Zd ZdS )zVExceptionChainingTest.test_raise_subclass_with_weakref_support.<locals>.MyRuntimeErrorN)r   r   r   r   r   r   r   rb  z  s   rb  )rP  r^  )r
   r8  rb  r   r   r   Ú(test_raise_subclass_with_weakref_supportx  s    z>ExceptionChainingTest.test_raise_subclass_with_weakref_supportc          	      s°   ‡ fdd„}|   ||¡ |  t|¡ d | j¡ W d Q R X |  t|¡ t d| j¡ W d Q R X |  t|¡ d | j¡ W d Q R X |  t|¡ t d| j¡ W d Q R X d S )Nc                 s   ˆ ‚d S )Nr   )rZ  r[  )rQ  r   r   r\    s    z:ExceptionChainingTest.check_not_wrapped.<locals>.raise_objz	str inputs   bytes input)rV  r3  rP  r0   rC  r   r!   )r
   rQ  r8  r\  r   )rQ  r   Úcheck_not_wrapped~  s    z'ExceptionChainingTest.check_not_wrappedc             C   s    G dd„ dt ƒ}|  |d¡ d S )Nc               @   s   e Zd Zdd„ ZdS )zKExceptionChainingTest.test_init_override_is_not_wrapped.<locals>.CustomInitc             S   s   d S )Nr   )r
   r   r   r   r     s    zTExceptionChainingTest.test_init_override_is_not_wrapped.<locals>.CustomInit.__init__N)r   r   r   r   r   r   r   r   Ú
CustomInitŒ  s   rf  r4   )rP  re  )r
   rf  r   r   r   Ú!test_init_override_is_not_wrapped‹  s    z7ExceptionChainingTest.test_init_override_is_not_wrappedc             C   s    G dd„ dt ƒ}|  |d¡ d S )Nc                   s   e Zd Z‡ fdd„Z‡  ZS )zIExceptionChainingTest.test_new_override_is_not_wrapped.<locals>.CustomNewc                s   t ƒ  | ¡S )N)r²   Ú__new__)Úcls)rº   r   r   rh  “  s    zQExceptionChainingTest.test_new_override_is_not_wrapped.<locals>.CustomNew.__new__)r   r   r   rh  r½   r   r   )rº   r   Ú	CustomNew’  s   rj  r4   )rP  re  )r
   rj  r   r   r   Ú test_new_override_is_not_wrapped‘  s    z6ExceptionChainingTest.test_new_override_is_not_wrappedc             C   s(   d}t |ƒ}d|_|  |d |¡¡ d S )NzThis should NOT be wrappedr   z^{}$)rP  Úattrre  r2  )r
   r8  r¹   r   r   r   Ú&test_instance_attribute_is_not_wrapped—  s    z<ExceptionChainingTest.test_instance_attribute_is_not_wrappedc             C   s   |   tdƒd¡ d S )Nr   Ú1)re  rP  )r
   r   r   r   Útest_non_str_arg_is_not_wrapped  s    z5ExceptionChainingTest.test_non_str_arg_is_not_wrappedc             C   s   d}|   tdddƒ|¡ d S )Nz^\('a', 'b', 'c'\)$rT   rt   r7   )re  rP  )r
   Zmsg_rer   r   r   Ú!test_multiple_args_is_not_wrapped   s    z7ExceptionChainingTest.test_multiple_args_is_not_wrappedc          	   C   s¤   d  | j¡}|  t|¡ d | j¡ W d Q R X |  t|¡ t d| j¡ W d Q R X |  t|¡ d | j¡ W d Q R X |  t|¡ t d| j¡ W d Q R X d S )Nz^unknown encoding: {}$z	str inputs   bytes input)r2  rC  r3  r2  r0   r   r!   )r
   r8  r   r   r   Ú%test_codec_lookup_failure_not_wrapped¥  s    z;ExceptionChainingTest.test_codec_lookup_failure_not_wrappedc          	   C   s¼   dd„ }dd„ }|   ||¡ t d | j¡}|  |d¡ t d | j¡}|  |d¡ d}| | j¡}|  t|¡ d | j¡ W d Q R X d	}| | j¡}|  t|¡ d
 | j¡ W d Q R X d S )Nc              _   s   dS )N)z
not bytes!r   r   )rZ  r[  r   r   r   Úencode_to_str·  s    zSExceptionChainingTest.test_unflagged_non_text_codec_handling.<locals>.encode_to_strc              _   s   dS )N)s   not str!r   r   )rZ  r[  r   r   r   Údecode_to_bytes¹  s    zUExceptionChainingTest.test_unflagged_non_text_codec_handling.<locals>.decode_to_bytesz
not bytes!s   not str!zd^{!r} encoder returned 'str' instead of 'bytes'; use codecs.encode\(\) to encode to arbitrary types$r]  zd^{!r} decoder returned 'bytes' instead of 'str'; use codecs.decode\(\) to decode to arbitrary types$s   bytes input)	rV  r   r0   rC  r   r!   r2  r3  rÔ   )r
   rr  rs  rB   rÈ   r7  r8  r   r   r   Ú&test_unflagged_non_text_codec_handling±  s    z<ExceptionChainingTest.test_unflagged_non_text_codec_handlingN)r   r   r   re  rU  rV  Ú
contextlibÚcontextmanagerrY  r\  rP  r^  r_  r`  rc  rd  re  rg  rk  rm  ro  rp  rq  rt  r   r   r   r   rL  -  s$   		rL  z"code pages are specific to Windowsc               @   sx   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zejdddddd„ ƒZdS )ÚCodePageTestiéý  c             C   sL   |   ttjdd¡ |   ttjdd¡ |   ttjdd¡ |   ttjdd¡ d S )Nr   rT   ó   ar÷   )rv   rü   r   Úcode_page_encodeÚcode_page_decodeÚOSError)r
   r   r   r   Útest_invalid_code_pageÕ  s    z#CodePageTest.test_invalid_code_pagec          	   C   sJ   |   tdtjdd¡ |   tdtjdddd¡ |   tdtj| jddd¡ d S )	NrŒ  i¤  õ   Ã¿s    rŽ   TÚCP_UTF8r   )r3  rw   r   ry  ry   rz  r~  )r
   r   r   r   Útest_code_page_nameÛ  s    z CodePageTest.test_code_page_namec             C   sÎ   xÈ|D ]À\}}}|d k	r°yt  |||d¡}W n8 tk
rd } z|  d||||f ¡ W d d }~X Y nX |  |d |d||||d |f ¡ |  |d d¡ |  |d t|ƒ¡ q|  tt j|||d¡ qW d S )NTz2Unable to decode %a from "cp%s" with errors=%r: %sr   z%a.decode("cp%s", %r)=%a != %ar   )	r   rz  ry   rÃ   r   ZassertGreaterEqualZassertLessEqualr   rv   )r
   Úcpr§   r¨   rÅ   r©   rÈ   rÆ   r   r   r   Úcheck_decodeã  s    "zCodePageTest.check_decodec             C   sº   x´|D ]¬\}}}|d k	ržyt  |||¡}W n8 tk
rb } z|  d||||f ¡ W d d }~X Y nX |  |d |d||||d |f ¡ |  |d t|ƒ¡ q|  tt j|||¡ qW d S )Nz0Unable to encode %a to "cp%s" with errors=%r: %sr   z%a.encode("cp%s", %r)=%a != %ar   )r   ry  rw   rÃ   r   r   rv   )r
   r€  r§   rÄ   rÅ   r©   rB   rÆ   r   r   r   Úcheck_encodeõ  s    "zCodePageTest.check_encodec             C   s   |   dd¡ |  dd¡ d S )Ni¤  ))rÁ   rŽ   s   abc)u   ï½„é¨¾rŽ   s   ‚„é€)r}  rŽ   N)u   [Ã¿]rn   s   [])u   [Ã¿]ro   s   [y])u   [â‚¬]ro   s   [?])u   [Ã¿]rk   s   [\xff])u   [Ã¿]rl   s)   [\N{LATIN SMALL LETTER Y WITH DIAERESIS}])u   [Ã¿]rm   s   [&#255;])u   í³¿rŽ   N)u   [í³¿]r®   s   [ÿ])u   [í³¿]rs   N))s   abcrŽ   rÁ   )s   ‚„é€rŽ   u   ï½„é¨¾)s   [ÿ]rŽ   N)s   [ÿ]rn   z[])s   [ÿ]ro   u   [ï¿½])s   [ÿ]rk   z[\xff])s   [ÿ]r®   u   [í³¿])s   [ÿ]rs   N)s    abcrŽ   N)s    abcrn   z abc)s    abcro   u   ï¿½ abc)s    abcrk   z\x81 abc)r‚  r  )r
   r   r   r   Ú
test_cp932  s    zCodePageTest.test_cp932c             C   s   |   dd¡ |  dd¡ d S )Niä  ))rÁ   rŽ   s   abc)u   Ã©â‚¬rŽ   s   é€)r}  rŽ   r   )u   ÅrŽ   N)u   Årn   r3   )u   Åro   ó   L)u   í²˜r®   ó   ˜)u   í²˜rs   N))s   abcrŽ   rÁ   )s   é€rŽ   u   Ã©â‚¬)r   rŽ   r}  )r‚  r  )r
   r   r   r   Útest_cp1252&  s    
zCodePageTest.test_cp1252c             C   s    d}|   |d¡ |  |d¡ d S )Nièý  ))rÁ   rŽ   s   abc)u   Ã©â‚¬rŽ   s   +AOkgrA-)u   ô¿¿rŽ   s   +2//f/w-)u   í²€rŽ   s   +3IA-)u   ï¿½rŽ   s   +//0-))s   abcrŽ   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€  r   r   r   Útest_cp_utf78  s
    zCodePageTest.test_cp_utf7c             C   s,   |   dd¡ |   | jd¡ |  | jd¡ d S )Ni¤  ))s   „é€rn   u   é¨¾)s   „é€ro   u   ï¿½é¨¾))s   ÿô¿¿rn   u   ô¿¿)s   ÿô¿¿ro   u   ï¿½ô¿¿))u	   [ô¿¿í²€]rn   s   [ô¿¿])u	   [ô¿¿í²€]ro   s   [ô¿¿?])r  r~  r‚  )r
   r   r   r   Útest_multibyte_encodingL  s    z$CodePageTest.test_multibyte_encodingc             C   st   t  dddd¡}|  |d¡ t  dddd¡}|  |d¡ t  dddd¡}|  |d	¡ t  dd
dd¡}|  |d¡ d S )Ni¤  ó   ‚rŽ   F)r4   r   s   é€é)u   é¨¾rô   s   é€é€)u   é¨¾é¨¾r×   s   abc)rÁ   r*  )r   rz  r   )r
   rÈ   r   r   r   Útest_incrementalZ  s    zCodePageTest.test_incrementalc          	   C   s6   t jddd t d¡}|  |jd¡ W d Q R X d S )Nz_winapi.GetACPr÷   )Zreturn_valueZcp123rÅ  )r   Zpatchr   r€   r   rA  )r
   Úcodecr   r   r   Útest_mbcs_aliasm  s    
zCodePageTest.test_mbcs_aliasl        é   F)r   ZmemuseZdry_runc             C   sŽ   dd d }|   t|ƒd¡ t d|dd¡}|   |d t|ƒ¡ ~|   t|d	 ƒ|d ¡ |   |d	 d d
… d¡ |   |d	 dd … d¡ d S )Ns   01234567iÿÿÿs
   …†êëìïüýþÿl       i¤  r®   Tr   r   rO   Z
0123456701iìÿÿÿu(   6701234567í²…í²†í³ªí³«í³¬í³¯í³¼í³½í³¾í³¿)r   r   r   rz  )r
   rB   rÈ   r   r   r   Útest_large_inputt  s    zCodePageTest.test_large_inputN)r   r   r   r~  r|  r  r  r‚  rƒ  r†  r‡  rˆ  rŠ  rŒ  r   Z
bigmemtestrŽ  r   r   r   r   rw  Ï  s   !rw  c               @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )Ú	ASCIITestc             C   s   |   d d¡d¡ d S )NrÈ  rË   s   abc123)r   r0   )r
   r   r   r   rÇ   ˆ  s    zASCIITest.test_encodec          
   C   sH   xBdD ]:\}}}| j |||d |  | d|¡|¡ W d Q R X qW d S )N))u	   [Â€Ã¿â‚¬]rn   s   [])u	   [Â€Ã¿â‚¬]ro   s   [???])u	   [Â€Ã¿â‚¬]rm   s   [&#128;&#255;&#8364;])u   [Â€Ã¿â‚¬ò«³ž]rk   s   [\x80\xff\u20ac\U000abcde])u   [í²€í³¿]r®   s   [€ÿ])rX   r¯   r©   rË   )r°   r   r0   )r
   rX   r¯   r©   r   r   r   Útest_encode_error‹  s    
zASCIITest.test_encode_errorc          	   C   s&   |   t¡ d dd¡ W d Q R X d S )Nu   í²€Ã¿rË   r®   )rv   rw   r0   )r
   r   r   r   Ú!test_encode_surrogateescape_error™  s    z+ASCIITest.test_encode_surrogateescape_errorc             C   s   |   d d¡d¡ d S )Ns   abcrË   rÁ   )r   r!   )r
   r   r   r   rÉ   ž  s    zASCIITest.test_decodec          
   C   sH   xBdD ]:\}}}| j |||d |  | d|¡|¡ W d Q R X qW d S )N))s   [€ÿ]rn   z[])s   [€ÿ]ro   u   [ï¿½ï¿½])s   [€ÿ]r®   u   [í²€í³¿])s   [€ÿ]rk   z
[\x80\xff])rX   r¯   r©   rË   )r°   r   r!   )r
   rX   r¯   r©   r   r   r   r±   ¡  s    
zASCIITest.test_decode_errorN)r   r   r   rÇ   r  r‘  rÉ   r±   r   r   r   r   r  ‡  s
   r  c               @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
Ú
Latin1Testc          
   C   sB   x<dD ]4\}}| j ||d |  | d¡|¡ W d Q R X qW d S )N))rÁ   s   abc)u   Â€Ã©Ã¿s   €éÿ)rX   r©   Úlatin1)r°   r   r0   )r
   rX   r©   r   r   r   rÇ   ¯  s    zLatin1Test.test_encodec          
   C   sH   xBdD ]:\}}}| j |||d |  | d|¡|¡ W d Q R X qW d S )N))u   [â‚¬í²€]rn   s   [])u   [â‚¬í²€]ro   s   [??])u	   [â‚¬ò«³ž]rk   s   [\u20ac\U000abcde])u   [â‚¬í²€]rm   s   [&#8364;&#56448;])u   [í²€í³¿]r®   s   [€ÿ])rX   r¯   r©   r“  )r°   r   r0   )r
   rX   r¯   r©   r   r   r   Útest_encode_errors·  s    
zLatin1Test.test_encode_errorsc          	   C   s&   |   t¡ d dd¡ W d Q R X d S )Nu   í²€â‚¬r“  r®   )rv   rw   r0   )r
   r   r   r   r‘  Å  s    z,Latin1Test.test_encode_surrogateescape_errorc          
   C   sB   x<dD ]4\}}| j ||d |  | d¡|¡ W d Q R X qW d S )N))s   abcrÁ   )s   [€ÿ]u   [Â€Ã¿])rX   r©   r“  )r°   r   r!   )r
   rX   r©   r   r   r   rÉ   Ê  s    zLatin1Test.test_decodeN)r   r   r   rÇ   r”  r‘  rÉ   r   r   r   r   r’  ®  s   r’  Ú__main__)Or   ru  rD   r=  r’   r  rÜ  r   Ztestr   ZctypesÚImportErrorr  ZsizeofZc_wcharr   rµ   r   r   r2   ZTestCaser|   r”   r—   r™   r¥   r«   r­   r  Úplatformr¿   rÊ   rÒ   rÖ   rÝ   rï   rý   r  r)   r   ÚprintrM  r  r
  r!  r  r&  r/  rd  rg  rÊ  rö  rJ   rÌ  rÇ  rß  rè  rð  rû  r  r  r  r  r*  rA  r&  r(  r)  rH  rJ  r3  Ú_codecsrK  rL  rw  r  r’  r   Úmainr   r   r   r   Ú<module>   s  
"  F`..V,,MW U=

TWm

 $ m)X2":
 
 #
 7'%