a
    Rh                    @   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	 zd dl
Z
W n eyr   dZ
Y n0 zd dlZW n ey   dZdZY n0 eejZdd 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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'Z#e#D ] Z$e%e$d(kre&e'e$ qG d)d* d*ejZ(g d+Z)G d,d- d-ejZ*G d.d/ d/ejZ+G d0d1 d1ejZ,G d2d3 d3ejZ-G d4d5 d5ejZ.g d6Z/e0e d7re/1d8 e0e d9re/1d: d;gZ2G d<d= d=ejeZ3G d>d? d?ejZ4G d@dA dAejZ5G dBdC dCejZ6G dDdE dEeejZ7G dFdG dGeejZ8G dHdI dIejZ9G dJdK dKejZ:G dLdM dMejZ;g dNZ<dOdPgdQgg dRdSgdTgdUZ=zd dl>Z>W n ey   dZ>Y n0 e<1dV dWdXge=dV< zd dl?Z?W n ey   Y n0 e<1dY dZge=dY< G d[d\ d\ejZ@i ZAd]d^ ZBe CeB zd d_lDmEZE W n ey@   d`da ZEY n0 G dbdc dcejZFeGejHddkdeG dfdg dgejZIG dhdi diejZJG djdk dkejZKG dldm dmejZLeMe
du dnG dodp dpejZNG dqdr drejZOG dsdt dtejZPeQdukreR  dS )v    N)mock)supportc                    s    fdd}|S )Nc                    s     | |t| f d S N)assertEquallen)inputexpectcoderself 8/opt/python-3.9.24/usr/lib/python3.9/test/test_codecs.pycheck   s    zcoding_checker.<locals>.checkr   )r   r   r   r   r
   r   coding_checker   s    r   c           
         s   ddl m}m}m} ddlm}m mmm	} dddG  fdddt j
}|||||}|d	|d
f}| }	|| d|	S )Nr   )POINTERWINFUNCTYPEWinDLL)BOOLBYTEWCHARUINTDWORD      i  c                       s@   e Zd Zdfd  fd  fdfdfd fgZdS )z'is_code_page_present.<locals>.CPINFOEXWZMaxCharSizeZDefaultCharZLeadByteZUnicodeDefaultCharZCodePageZCodePageNameN)__name__
__module____qualname__Z_fields_r   r   ZMAX_DEFAULTCHARZMAX_LEADBYTESZMAX_PATHr   r   r   r   	CPINFOEXW&   s   


r   ZGetCPInfoExWZkernel32)ctypesr   r   r   Zctypes.wintypesr   r   r   r   r   Z	Structure)
cpr   r   r   r   r   r   Z	prototypeZGetCPInfoExinfor   r   r   is_code_page_present   s     r#   c                   @   s&   e Zd Zdd Zdd Zd	ddZdS )
Queuec                 C   s
   || _ d S r   _buffer)r   bufferr   r   r   __init__7   s    zQueue.__init__c                 C   s   |  j |7  _ d S r   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   )r   r   r   r(   r*   r.   r   r   r   r   r$   3   s   r$   c                   @   s   e Zd Zdd Zdd ZdS )MixInCheckStateHandlingc           	      C   s   t t|d D ]}t| }||d | }| }| |d t |d s||d d d df | 	||d   | 
||  t| }|| |||d  d}| 
|||  qd S )N   r   T)ranger   codecsgetincrementaldecoderdecodegetstateassertIsInstanceintsetstate
assertTruer   	r   encodingur-   idZpart1stateZpart2r   r   r   check_state_handling_decodeI   s    
z3MixInCheckStateHandling.check_state_handling_decodec           	      C   sz   t t|d D ]d}t| }||d | }| }t| }|| |||d  d}| |||  qd S )Nr0   T)r1   r   r2   getincrementalencoderencoder5   r8   r   r:   r   r   r   check_state_handling_encode_   s    
z3MixInCheckStateHandling.check_state_handling_encodeN)r   r   r   r@   rC   r   r   r   r   r/   H   s   r/   c                   @   sX   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d ZdS )ReadTestc           
   	   C   s  t d}t| j|}d}t|| j|D ]0\}}|t|g || 7 }| 	|| q.| 	| d | 	|j
d t| j }d}t|| j|D ](\}}||t|g7 }| 	|| q| 	|ddd | 	|jd |  d}t|| j|D ]*\}}||t|g7 }| 	|| q| 	|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>   rE   z*ReadTest.check_partial.<locals>.<listcomp>)r$   r2   	getreaderr;   ziprB   r*   rH   r.   r   
bytebufferr3   r4   r'   resetjoin
iterdecode)
r   r   ZpartialresultsqrresultrK   Zpartialresultr>   encodedr   r   r   check_partialk   s8    zReadTest.check_partialc                    s  fdd d fdd	}d}d}d} ||d|  ||d	|  ||dd
|  ||d	d
| d}g }g }t|D ]8\}}	||d d d |	  ||d d d  q |d|dd|  |d|d	d| tdD ]}
|D ]}	d
|
d |	 d  } |}td
D ]6} |jdd|
d |	   |jddd q4 |}td
D ]2} |jd	d|
d   |jd	dd q|qqd S )Nc                    s"   t |  j}t j|S r   ioBytesIOrB   r;   r2   rM   )r   streamr   r   r   rM      s    z)ReadTest.test_readline.<locals>.getreaderTc                    s6    | }g }|j ||d}|s q,|| qd|S )N)r,   keepends|)readlineappendrQ   )r   r]   r,   readerlinesline)rM   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
   )

u       u   あrF   r^   P   azxxx
r]   xxx)TN)r   	enumerater`   rQ   r1   r_   )r   rd   r-   Z	sexpectedZsexpectednoendsZlineendsZvwZvwor=   Zlineendr,   ra   r   )rM   r   r   test_readline   sP    





zReadTest.test_readlinec                    s2  g d}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 )N)z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.rF   c                     s"   t  j} tj| S r   rX   )r[   datar   r   r   rM      s    z8ReadTest.test_mixed_readline_and_read.<locals>.getreaderr   r0   d   (      )r,   r)      j   )rQ   r   r_   r.   r   	readlines)r   rb   rM   fr   rp   r   test_mixed_readline_and_read   s:    
.*z%ReadTest.test_mixed_readline_and_readc                 C   sV   g d}t d|| j}t| j|}t|D ]\}}| |||  q8d S )N)=z:<%!--===================================================
z,    BLOG index page: show recent articles,
z7    today's articles, or articles of a specific date.
z>========================================================--%>
z!<%@inputencoding="ISO-8859-1"%>
z<%@pagetemplate=TEMPLATE.y%>
z$<%@import=import frog.util, frog%>
z!<%@import=import frog.objects%>
z9<%@import=from frog.storageerrors import StorageError%>
z<%
rg   zimport logging
z+log=logging.getLogger("Snakelets.logger")
rg   rg   zuser=self.SessionCtx.user
z-storageEngine=self.SessionCtx.storageEngine
rg   rg   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")
rg   zshowdate=None
rg   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() 
.    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))
rz   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                
rF   )	rY   rZ   rQ   rB   r;   r2   rM   rn   r   )r   r-   r[   ra   r=   rc   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 )NrE   zfooFrl   fooz
barrF   ZbarZbazTrf   zbarzfoo
)r$   r2   	getwriterr;   rM   r*   r   r_   )r   rS   writerra   r   r   r   test_readlinequeueF  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.
rF   rB   r;   rY   rZ   r2   rM   r   r_   )r   s1s2s3r-   r[   ra   r   r   r   test_bug1098990_aa  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.
rF   r   )	r   r   r   r   Zs4Zs5r-   r[   ra   r   r   r   test_bug1098990_bn  s    
zReadTest.test_bug1098990_b   �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}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|| |  qd S )Nu      []backslashreplacez[\udc80]namereplacexmlcharrefreplacez
[&#56448;]ignore[]replacez[?]   []z[??]rF   ))   𐿿A)[])r   r      surrogatepassc                 s   s   | ]}d | V  qdS )\x%02xNr   )rJ   br   r   r   	<genexpr>  s   z0ReadTest.test_lone_surrogates.<locals>.<genexpr>)assertRaisesUnicodeEncodeErrorrB   r;   r   r   ill_formed_sequenceUnicodeDecodeErrorr4   ill_formed_sequence_replacerQ   )	r   ZbombeforeZafterZbefore_sequenceZafter_sequenceZtest_stringZtest_sequencer   r   r   r   test_lone_surrogates  sr    









zReadTest.test_lone_surrogatesc                 C   s   d | jd}tdt|D ]J}t| jd}| ||d | d | |||d  dd qd | jd}tdt|D ]H}t| jd}| ||d | d | |||d  d qd S )Nu   r   r0   rF   Tu   )rB   r;   r1   r   r2   r3   r   r4   )r   rq   r=   decr   r   r   test_incremental_surrogatepass  s    z'ReadTest.test_incremental_surrogatepassN)r   r   r   rW   ro   ry   r{   r   r   r   r   r   r   r   r   r   r   rD   j   s   +;0E,rD   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 )	UTF32Testutf-32little          ܀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r2   lookupr;   rY   rZ   r*   getvaluer9   spamlespamber   r.   r   _ra   r~   r-   rx   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 )N   s   rY   rZ   r2   rM   r;   r   UnicodeErrorr.   r   r-   rx   r   r   r   test_badbom  s    

zUTF32Test.test_badbomc                 C   s   |  dg d d S )N    ÿĀ￿𐀀)rF   rF   rF   rF   rF   rF   rF    r   r   r       ÿr   r   r       ÿĀr   r   r       ÿĀ￿r   r   r   r   rW   r\   r   r   r   test_partial  s    zUTF32Test.test_partialc                 C   s0   |  dtddd |  dtddd d S N)r   r0      r   T)rF   r0   r   r   r2   utf_32_decoder\   r   r   r   test_handlers  s    zUTF32Test.test_handlersc                 C   s   |  ttjddd d S N   strictT)r   r   r2   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                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀𐀀r   s                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    r   )r   Z
encoded_leZ
encoded_ber   r   r   test_issue8941  s    zUTF32Test.test_issue8941N)r   r   r   r;   sys	byteorderr   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 )UTF32LETest	utf-32-ler   c                 C   s   |  dg d d S Nr   )rF   rF   rF   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r\   r   r   r   r   "  s    zUTF32LETest.test_partialc                 C   s   |  d| jd d S )N   𐈃s    r   rB   r;   r\   r   r   r   test_simple=  s    zUTF32LETest.test_simplec                 C   s   |  ttjddd d S r   )r   r   r2   utf_32_le_decoder\   r   r   r   r   @  s    
zUTF32LETest.test_errorsc                 C   s   d}|  dt|d  d S )Ns                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   r   r   )r   r2   r   r   rV   r   r   r   r   D  s    zUTF32LETest.test_issue8941N	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 )UTF32BETest	utf-32-ber   c                 C   s   |  dg d d S r   r   r\   r   r   r   r   P  s    zUTF32BETest.test_partialc                 C   s   |  d| jd d S )Nr   s    r   r\   r   r   r   r   k  s    zUTF32BETest.test_simplec                 C   s   |  ttjddd d S r   )r   r   r2   utf_32_be_decoder\   r   r   r   r   n  s    
zUTF32BETest.test_errorsc                 C   s   d}|  dt|d  d S )Ns                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   r   r   )r   r2   r   r   r   r   r   r   r  s    zUTF32BETest.test_issue8941Nr   r   r   r   r   r   L  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 )	UTF16Testutf-16r         ܀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 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   r   r   r   r   r   r   r     s    

zUTF16Test.test_badbomc                 C   s   |  dg d d S )Nr   )rF   rF   rF   r   r   r   r   r   r   r   r   r   r   r   r   r\   r   r   r   r     s    zUTF16Test.test_partialc                 C   s0   |  dtddd |  dtddd d S r   )r   r2   utf_16_decoder\   r   r   r   r     s    zUTF16Test.test_handlersc                 C   s   |  ttjddd d S r   )r   r   r2   r   r\   r   r   r   r     s    
zUTF16Test.test_errorsc                 C   s(   |  | jd| j |  | jd| j d S 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    n1 sL0    Y  tdt	f$ t
jtjd| jd}W d    n1 s0    Y  |  | | | W d    n1 s0    Y  d S )NzHello
world
wbrF   Ur;   )rB   r;   
addCleanupr   unlinkTESTFNopenr*   Zcheck_warningsDeprecationWarningr2   r   r.   )r   r   r-   fpra   r   r   r   test_bug691291  s    (2zUTF16Test.test_bug691291N)r   r   r   r;   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   z  s   
	r   c                   @   s,   e Zd ZdZdZdd Zdd Zdd Zd	S )
UTF16LETest	utf-16-ler   c                 C   s   |  dg d d S Nr   )rF   r   r   r   r   r   r   r   r   r   r   r   r   r\   r   r   r   r     s    zUTF16LETest.test_partialc                 C   sB   g d}|D ]0\}}|  ttj|dd | |dd| qd S )N)r   r   )s   A Z   A�)s	   A B C D Z   ABCD�)s    r   )s    Ar   )s    A    �A)s    A r   r   Tzutf-16ler   )r   r   r2   utf_16_le_decoder   r4   r   testsrawexpectedr   r   r   r     s    	
zUTF16LETest.test_errorsc                 C   s,   |  d| jd |  d| jd d S )Nr   s    ީr   rB   r;   r4   r\   r   r   r   test_nonbmp  s    zUTF16LETest.test_nonbmpNr   r   r   r;   r   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 )
UTF16BETest	utf-16-ber   c                 C   s   |  dg d d S r   r   r\   r   r   r   r      s    zUTF16BETest.test_partialc                 C   sB   g d}|D ]0\}}|  ttj|dd | |dd| qd S )N)r   )s    Ar   )s	    A B C DZr   )s    r   )s    r   )s     Ar   )s     Ar   r   Tzutf-16ber   )r   r   r2   utf_16_be_decoder   r4   r   r   r   r   r     s    	
zUTF16BETest.test_errorsc                 C   s,   |  d| jd |  d| jd d S )Nr   s    r   r\   r   r   r   r   "  s    zUTF16BETest.test_nonbmpNr   r   r   r   r   r     s
   r   c                       sT   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dd Z  ZS )UTF8Testutf-8s   u	   ���rE   c                 C   s   |  dg d d S )N    ÿ߿ࠀ￿𐀀)r   r   r   r       ÿ߿r   r       ÿ߿ࠀr   r       ÿ߿ࠀ￿r   r   r   r   r   r\   r   r   r   r   .  s    zUTF8Test.test_partialc                 C   s    d}|  | j||| j d S )Nu    ÿĀ߿ࠀ￿􏿿)r@   r;   rB   )r   r<   r   r   r   r   D  s    zUTF8Test.test_decoder_statec              	   C   sZ   dD ]P\}}}| j |||d& | || j|| W d    q1 sJ0    Y  qd S )N)   []r   r   )r  r   u   [��])r  surrogateescape   [])r  r   z
[\x80\xff]rq   error_handlerr   )subTestr   r4   r;   r   rq   r  r   r   r   r   test_decode_errorI  s    zUTF8Test.test_decode_errorc                    s   t    | d| jd| jd  | t}d| jd W d    n1 sT0    Y  |j}| |j	|j
|j d d S )Nr   r  s   []u   []u   )superr   r   rB   r;   BOMr   r   	exceptionobjectstartend)r   cmexc	__class__r   r   r   U  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    n1 s0    Y  | t	 d	| jd W d    n1 s0    Y  d S )
Nu	   abcdefr   s	   abcdefu   𐿿s   𐿿r   s   []s   abcs   abcz)
r   rB   r;   r
  r4   r9   r2   lookup_errorr   r   r\   r   r   r   test_surrogatepass_handlera  s(    ,z#UTF8Test.test_surrogatepass_handlerc              	   C   s   g d}dD ]}dD ]}| ||  qq|d |D ]N}| j|d. t| j }| t|j| W d    q81 s|0    Y  q8d S )N)                  r   )         s      s      s   s      s   s   )   r  )s   s   s   s   s   s   s   rq   )	r`   extendr  r2   r3   r;   r   r   r4   )r   Zcasesprefixsuffixrq   r   r   r   r   test_incremental_errorst  s    
z UTF8Test.test_incremental_errors)r   r   r   r;   r   r   r
  r   r   r  r   r  r&  __classcell__r   r   r  r   r   (  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 )UTF7Test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 	
rF      +sX   +AAAAAQACAAMABAAFAAYABwAIAAsADAAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwBcAH4Afw-)	r   rB   r;   r4   rQ   sortedsetrH   r1   )r   Zset_dZset_owsZother_asciir   r   r   
test_ascii  s"    zUTF7Test.test_asciic                 C   s   |  dg d d S )N   a+-b cdĀe𐀀f) rk   rk   a+za+-a+-br3  r3  r3  r3  za+-b a+-b cr4  r4  r4  r4  u   a+-b c	   a+-b cdr5  r5  r5  r5  u   a+-b cdĀ   a+-b cdĀer6  r6  r6  r6  r6  r6  r6  u   a+-b cdĀe𐀀r1  r   r\   r   r   r   r     s    zUTF7Test.test_partialc              	   C   sn   g d}|D ]\\}}| j |d8 | ttj|dd | |dd| W d    q1 s^0    Y  qd S )N))s   bu   �b)s   ab   a�b)s   abu   a��b)s   a+IK   a�)s   a+IK-br7  )s   a+IK,br7  )s   a+IKx   a€�)s   a+IKx-b   a€�b)s   a+IKwgrr9  )s	   a+IKwgr-br:  )s   a+IKwgr,r9  )s
   a+IKwgr,-bu	   a€�-b)s   a+IKwgrB
   a€€�)s
   a+IKwgrB-b   a€€�b)s
   a+/,+IKw-b   a�€b)s   a+//,+IKw-br=  )s   a+///,+IKw-b   a￿�€b)s   a+////,+IKw-br>  )s   a+IKw-bu   a€b�)s   a+IKwbr:  )s   a+@br7  r   r   Tr)  r   )r  r   r   r2   utf_7_decoder   r4   r   r   r   r   r     s    
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   +IKwgrNgB3KAr   r\   r   r   r   r     s     zUTF7Test.test_nonbmpc              	   C   sZ   g d}|D ]H\}}| j |d$ | |dd| W d    q1 sJ0    Y  qd S )N))s   a+2AE-bu   ab)s   a+2AEbr7  )s   a+2AEr8  )s   a+2AEA-br7  )s   a+2AH-br7  )s
   a+IKzYAQ-bu   a€b)s
   a+IKzYAQbr:  )s   a+IKzYAQA-br:  )s
   a+IKzYAd-br:  )s   a+IKwgrNgB-bu   a€€b)s   a+IKwgrNgBbr<  )s
   a+IKwgrNgBr;  )s   a+IKwgrNgBA-br<  r?  r)  r   r  r   r4   r   r   r   r   r     s    zUTF7Test.test_lone_surrogatesN)	r   r   r   r;   r0  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)r   r   r2   utf_16_ex_decoder\   r   r   r   r     s    zUTF16ExTest.test_errorsc                 C   s   |  ttj d S r   )r   	TypeErrorr2   rC  r\   r   r   r   test_bad_args  s    zUTF16ExTest.test_bad_argsN)r   r   r   r   rE  r   r   r   r   rB    s   rB  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   r      spam)rG     )arrayr   r2   readbuffer_encode)r   rI  r   r   r   
test_array  s
    zReadBufferTest.test_arrayc                 C   s   |  tdd d S )NrF   rE   r   )r   r2   rJ  r\   r   r   r   
test_empty  s    zReadBufferTest.test_emptyc                 C   s"   |  ttj |  ttjd d S N*   )r   rD  r2   rJ  r\   r   r   r   rE     s    zReadBufferTest.test_bad_argsN)r   r   r   rK  rM  rE  r   r   r   r   rF    s   rF  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 )UTF8SigTest	utf-8-sigc                 C   s   |  dg d d S )N   ﻿ ÿ߿ࠀ￿𐀀)rF   rF   rF   rF   rF   u   ﻿   ﻿ rS     ﻿ ÿrT     ﻿ ÿ߿rU  rU     ﻿ ÿ߿ࠀrV  rV     ﻿ ÿ߿ࠀ￿rW  rW  rW  rR  r   r\   r   r   r   r   (  s    zUTF8SigTest.test_partialc                 C   s   |  tddd d S )N   ﻿rQ  rF   r   strr\   r   r   r   test_bug1601501D  s    zUTF8SigTest.test_bug1601501c                 C   s,   t d }d}| ||d| d S )NrQ  r   )r2   r3   r   r4   rB   )r   r>   r-   r   r   r   test_bomH  s    zUTF8SigTest.test_bomc           	      C   s   d}t jd }t d}d gttdd g d D ]\}|t|}t }|d urb||}n| }|spq||	| qN|
 }| || q4d S Nu   ABC¡∀XYZs   ABC¡∀XYZrQ  r0      )@   r+     i   i   )r2   BOM_UTF8rM   listr1   rY   rZ   StringIOr.   r*   r   r   	r   Z	unistringZ
bytestringra   sizehintZistreamZostreamrq   Zgotr   r   r   test_stream_bomM  s     

zUTF8SigTest.test_stream_bomc           	      C   s   d}d}t d}d gttdd g d D ]\}|t|}t }|d ur\||}n| }|sjqv|| qH|	 }| 
|| q.d S r]  )r2   rM   rb  r1   rY   rZ   rc  r.   r*   r   r   rd  r   r   r   test_stream_barec  s     
zUTF8SigTest.test_stream_bareN)r   r   r   r;   r2   ra  r
  r   r[  r\  rf  rg  r   r   r   r   rP  $  s   rP  c                   @   s4   e Zd Zd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 )NrE   rL  )r   r2   escape_decode	bytearrayr\   r   r   r   rM  {  s    zEscapeDecodeTest.test_emptyc                 C   sF   t j}tdD ]2}t|g}|dkr| ||d |d df qd S )Nr`     \   0r   )r2   ri  r1   rH   r   r   r4   r   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! d S )%N   [\
]   []   [\"]s   ["]   [\']s   [']   [\\]s   [\]   [\a]s   []   [\b]s   []   [\t]s   [	]   [\n]s   [
]   [\v]s   []   [\f]s   []   [\r]s   []   [\7]   [\78]s   [8]   [\41]s   [!]   [\418]s   [!8]   [\101]s   [A]   [\1010]s   [A0]s   [\501]   [\x41]   [\x410])r2   ri  r   r   r4   r   r   r   r   test_escape  s,    



















zEscapeDecodeTest.test_escapec              	   C   s  t j}t| |}tddD ]}t|g}|dvrr| td| " |d| d|  W d    n1 sh0    Y  | td|d  * |d|  d|   W d    q1 s0    Y  q| td |dd W d    n1 s0    Y  | t |d	d	 W d    n1 s$0    Y  | td
}|dd W d    n1 s\0    Y  | td" | 	|ddd W d    n1 s0    Y  d S )Na   {   s   abfnrtvxinvalid escape sequence '\\%c'rk      invalid escape sequence '\\8'   \8   \9 invalid escape sequence '\\\xfa'   \invalid escape sequence '\\z'   \x\zr   )s   \zrH  )
r2   ri  r   r1   rH   assertWarnsRegexr   upperassertWarnsr   r   r4   r   r=   r   r  r   r   r   test_warnings  s8    

0
:(**zEscapeDecodeTest.test_warningsc                 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]\xr   )rp  ru   r   )   [?]?ru   s   \x0s   [\x0]s   [\x0]\x0)rp     )r  r  )r2   ri  r   
ValueErrorr   )r   r4   r   r   r   r     s    zEscapeDecodeTest.test_errorsN)r   r   r   rM  rn  r  r  r   r   r   r   r   rh  z  s
   rh  ))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d ZdS )PunycodeTestc                 C   s8   t D ].\}}| t|dd t|d  qd S Npunycoder*  )punycode_testcasesr   rZ  rB   lowerr   Zunipunyr   r   r   test_encode1  s
    zPunycodeTest.test_encodec                 C   sF   t D ]<\}}| ||d |dd}| ||d qd S r  )r  r   r4   rB   r  r   r   r   test_decode=  s    zPunycodeTest.test_decodec              	   C   s   ddt  fdg}|D ]j\}}}| j||dB t|trL| t |jd| n| |d|| W d    q1 st0    Y  qd S )N   xn--w&r   )r  r   zxn-)r  errorsr  )r   r  
isinstance	Exceptionr   r4   r   )r   Z	testcasesr  r  r   r   r   r   test_decode_invalidC  s    

z PunycodeTest.test_decode_invalidN)r   r   r   r  r  r  r   r   r   r   r  0  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   ᾶι)   ǰr  )   ΐr  )   ΰr  )   ẖr  )   ὖr  )    r  )s    r  )s    N)s    r  )s   ​rE   )s   　r  )   r  )s   N)s   ᠎N)rX  rE   )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)   ا1بr  r  )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} ttD ]\}\}}|d u r*qt|dd}|d u rN| t|| qt|dd}z| ||| W q ty } z&t	
d|d t|f W Y d }~qd }~0 0 qd S )Nr   )nameprepr   r   zTest 3.%d: %sr0   )Zencodings.idnar  rn   nameprep_testsrZ  r   r   r   r  r   Z
TestFailed)r   r  posZorigZpreppeder   r   r   test_nameprep  s    zNameprepTest.test_nameprepN)r   r   r   r  r   r   r   r   r    s   r  c                   @   sD   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S )IDNACodecTestc                 C   sL   |  tddd |  tddd |  tddd |  tddd	 d S )
N
   python.orgidna
python.org   python.org.python.org.   xn--pythn-mua.org   pythön.org   xn--pythn-mua.org.   pythön.org.rY  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 )
Nr  r  r  r  r  r  r  r  r  r   rB   r\   r   r   r   test_builtin_encode  s    z!IDNACodecTest.test_builtin_encodec                 C   sp   |  td dd W d    n1 s,0    Y  |  td dd W d    n1 sb0    Y  d S )Nztoo longsT  xn--016caaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar  sN   xn--016caaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)assertRaisesRegexr   r4   r\   r   r   r    test_builtin_decode_length_limit  s    (z.IDNACodecTest.test_builtin_decode_length_limitc                 C   s2   t dtd}|d | | d d S )Nr     abc   rF   )r2   rM   rY   rZ   r.   r   )r   rT   r   r   r   test_stream  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 )NrF   c                 s   s   | ]}t |gV  qd S r   rG   rI   r   r   r   r     rE   z8IDNACodecTest.test_incremental_decode.<locals>.<genexpr>r  r  r  c                 s   s   | ]}t |gV  qd S r   rG   rI   r   r   r   r     rE   r  r  c                 s   s   | ]}t |gV  qd S r   rG   rI   r   r   r   r      rE   r  r  c                 s   s   | ]}t |gV  qd S r   rG   rI   r   r   r   r   $  rE   s   xn--xams	   ple-9ta.ou	   äxample.s   rgrE   TZorgs   rg.zorg.)r   rQ   r2   rR   r3   r4   rP   )r   decoderr   r   r   test_incremental_decode  s4    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 )NrE   r  r  r  r  r  r  r  u   äxz	ample.orgs   xn--xample-9ta.rF   Ts   orgz
ample.org.s   xn--xample-9ta.org.)r   rQ   r2   
iterencoderA   rB   rP   )r   encoderr   r   r   test_incremental_encode4  s0    z%IDNACodecTest.test_incremental_encodec                 C   sJ   d dd ddd dD ](}| tdj d| | tdjd| qd S )Nr  r  r   r  )r   r   r   r  )rB   r4   r   r  r   r  r   r   r   r   P  s    zIDNACodecTest.test_errorsN)
r   r   r   r  r  r  r  r  r  r   r   r   r   r   r    s   r  c                   @   st   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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 )N   latin-1   äöür  abcr   r*  objr;      []r   r  r   )r   r2   r4   r   rD  r   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 )Nr  r  r  r|   __spam__r  r  u   ÿffr*  r     [ÿ]r   r  rp  )r   r2   rB   r   rD  LookupErrorr   r\   r   r   r   r  j  s    zCodecsModuleTest.test_encodec                 C   s"   |  ttj |  ttjd d S rN  )r   rD  r2   registerr\   r   r   r   test_registerx  s    zCodecsModuleTest.test_registerc                 C   s2   |  ttj |  ttjd |  ttjd d S )Nr   )r   rD  r2   r   r  r\   r   r   r   test_lookup|  s    zCodecsModuleTest.test_lookupc                 C   s"   |  ttj |  ttjd d S Nr  )r   rD  r2   
getencoderr  r\   r   r   r   test_getencoder  s    z CodecsModuleTest.test_getencoderc                 C   s"   |  ttj |  ttjd d S r  )r   rD  r2   
getdecoderr  r\   r   r   r   test_getdecoder  s    z CodecsModuleTest.test_getdecoderc                 C   s"   |  ttj |  ttjd d S r  )r   rD  r2   rM   r  r\   r   r   r   test_getreader  s    zCodecsModuleTest.test_getreaderc                 C   s"   |  ttj |  ttjd d S r  )r   rD  r2   r}   r  r\   r   r   r   test_getwriter  s    zCodecsModuleTest.test_getwriterc                 C   sl   t t j}| t jt j| zt t jd W n t jyN   | d Y n0 td}| |j	d d S )Ntr_TRztest needs Turkish localeASCIIr*  )
locale	setlocaleLC_CTYPEr   ErrorskipTestr2   r   r   name)r   Z	oldlocalerK   r   r   r   test_lookup_issue1813  s    
z&CodecsModuleTest.test_lookup_issue1813c                 C   s,   d}|  |tj tjD ]}tt| qd S )N),rB   r4   r  	CodecInfoCodecIncrementalEncoderIncrementalDecoderStreamReaderStreamWriterr   r  r  rA   r3   rM   r}   register_errorr  strict_errorsreplace_errorsignore_errorsxmlcharrefreplace_errorsbackslashreplace_errorsnamereplace_errorsr   EncodedFiler  rR   r
  BOM_BEBOM_LEra  	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assertCountEqualr2   __all__getattr)r   Zapir   r   r   test_all  s    
zCodecsModuleTest.test_allc              
   C   s   |  tjtj dD ]l}| |N ttj|d}| |tj W d    n1 sX0    Y  W d    q1 sv0    Y  qd S )N)wrT   zr+w+rk   r2  r*  )	r   r   r   r   r  r2   r   r6   r  )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 dD ],}|  ttjdd| |  ttjdd| qLd S )Nr  Z	undefinedr  rF   rE   )r   r   r   r   )r   r   r2   rB   r4   r  r   r   r   test_undefined  s    

zCodecsModuleTest.test_undefinedc              	   C   s~   t  }t d|V}| t  ttjdd W d    n1 sF0    Y  | j	
  W d    n1 sp0    Y  d S )Nzbuiltins.openZwtzinvalid-encoding)r   	mock_openpatchr   r  r2   r   r   r   closeZassert_called)r   r  r  r   r   r   'test_file_closes_if_lookup_error_raised  s
    .z8CodecsModuleTest.test_file_closes_if_lookup_error_raisedN)r   r   r   r  r  r  r  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 )StreamReaderTestc                 C   s   t d| _td| _d S )Nr      한
글)r2   rM   ra   rY   rZ   r[   r\   r   r   r   setUp  s    zStreamReaderTest.setUpc                 C   s$   |  | j}| | ddg d S )Nu   한
u   글)ra   r[   r   rw   )r   rx   r   r   r   test_readlines  s    zStreamReaderTest.test_readlinesN)r   r   r   r  r  r   r   r   r   r    s   r  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 )Nr  r   r   s   \
  r     ü   )rY   rZ   r2   r  r   r.   r*   r   r   rx   Zefr   r   r   
test_basic  s    

zEncodedFileTest.test_basicN)r   r   r   r  r   r   r   r   r    s   r  )er*  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_escapeutf_16	utf_16_be	utf_16_leutf_7utf_8Zmbcs_encodembcsZ
oem_encodeZoemr  c                   @   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}t D ]}t|j}|dr.|d7 }n|dkr:d}| |dd|dd t||\}}| |t|d|  t	||\}}| ||d|  |t
vrVtd}t||}d}	|D ]6}
||
 | }| t|tu t| |	|7 }	qtd}t||}d}|	D ]"}
|t|
g || 7 }q | ||d|  |t
vrzt| W n ty   Y n0 d}	|D ]}
|	|
7 }	q|	dd	7 }	t|  d}|	D ]}
| t|
g7 }q| dd	7 }| ||d|  dtt|||}| ||d|  dttd||}| |d |d
vrzt|dW n ty   Y q0 dfdd|D }	t|d d fdd|	D }| ||d|  qd S )Nabc123Z_codecrg  r   -encoding=%rrE   rF   Tr  rx  r   c                 3   s   | ]}  |V  qd S r   rB   rI   )r  r   r   r     rE   z/BasicUnicodeTest.test_basics.<locals>.<genexpr>c                 3   s   | ]}  t|gV  qd S r   r4   rH   rI   )r  r   r   r     s   )all_unicode_encodingsr2   r   r  endswithr   r   r  r   r  broken_unicode_with_statefulr$   r}   r*   r.   r9   typerH   rM   rA   r  rB   r3   r4   rQ   rR   r  )r   r-   r;   r  r   r,   r)   rS   r~   encodedresultrK   chunkra   decodedresultrU   r   )r  r  r   test_basics_  s    





zBasicUnicodeTest.test_basicsc              	      s2  d}t D ]"}|tvrzt|W n ty6   Y n|0 d}|D ]}||7 }q@|dd7 }t| d}|D ]}| t|g7 }qv| dd7 }| 	||d|  |dvrzt|dW n ty   Y q0 d
fdd	|D }t|d d
 fd
d	|D }| 	||d|  qd S )Nrz  rE   rF   Tr|  r}  r   c                 3   s   | ]}  |V  qd S r   r~  rI   )cencoderr   r   r     rE   z4BasicUnicodeTest.test_basics_capi.<locals>.<genexpr>c                 3   s   | ]}  t|gV  qd S r   r  rI   )cdecoderr   r   r     s   )r  r  	_testcapiZcodec_incrementalencoderr  rB   Zcodec_incrementaldecoderr4   rH   r   rQ   )r   r-   r;   r  rK   r  r   )r  r  r   test_basics_capi  s@    

z!BasicUnicodeTest.test_basics_capic                 C   sr   dd }t D ]`}|dkrq|tv r$qt|t||}tdD ]$}|dd |	 }| 
|| qFqd S )Nz%s
%s
)AX  abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123AX  def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456def456r  rt   r   )r  r  r2   rM   rY   rZ   rB   r1   seekr.   r   )r   r-   r;   ra   trq   r   r   r   	test_seek  s    zBasicUnicodeTest.test_seekc                 C   s:   t D ]0}t|}| t| |dvr| t|d qd S )N)r  r  rO  )r  r2   r  r   rD  )r   r;   r  r   r   r   test_bad_decode_args  s
    
z%BasicUnicodeTest.test_bad_decode_argsc                 C   s$   t D ]}t|}| t| qd S r   )r  r2   r  r   rD  )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   )r%  )	encodingsr%  r  Zencoding_tabler   )r   r%  Z
table_typer   r   r   "test_encoding_map_type_initialized  s    
z3BasicUnicodeTest.test_encoding_map_type_initializedc                 C   sB   d}t D ]4}|tvr| |||| | |||| qd S )Nrz  )r  r  r@   rB   rC   )r   r<   r;   r   r   r   r     s
    z#BasicUnicodeTest.test_decoder_stateN)r   r   r   r  r   Zcpython_onlyr  r  r  r  r  r   r   r   r   r   ry  ^  s   M
%ry  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 )N    r   r  r  r     􏿿bcr  r  abu   ab￾r   u   ab�r  r   zab\x02r  r   r  r  r`  rF   )r   r2   charmap_decoder   r   rH   r1   r   r   Zallbytesr   r   r   test_decode_with_string_map  sV    


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 | t	dtjdddd	dd | t	dtjdddd	dd d S )Nr  r   rk   r   rK   r   r0   r   r  ZAaZBbZCc)ZAaBbCcr     􏿿r  rF   r  r   r0   u   ￾r   r  r   r  r   r`  z.character mapping must be in range\(0x110000\)r   iɚ;)
r   r2   r  r   r   rH   r1   r   r  rD  r  r   r   r   test_decode_with_int2str_map4  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 )Nrk   r   rK   r  r   r  r  i r  Zbcr  r0   r  i  r   r  r   r  r   r  )
ordr   r2   r  r   
maxunicodechrr   rD  r   )r   rk   r   rK   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    s   7tr  c                   @   s   e Zd Zdd Zdd ZdS )WithStmtTestc                 C   sX   t d}t|dd }| | d W d    n1 s>0    Y  | |j d S )Nr  r  r   r  )rY   rZ   r2   r  r   r.   r9   closedr  r   r   r   test_encodedfile  s    
.zWithStmtTest.test_encodedfilec                 C   s\   t d}td}t||j|jd }| | d W d    n1 sN0    Y  d S )Nr  r   r      ü)	rY   rZ   r2   r   r  streamreaderstreamwriterr   r.   )r   rx   r"   srwr   r   r   test_streamreaderwriter  s    


z$WithStmtTest.test_streamreaderwriterN)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 )	TypesTestc                 C   sf   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 |D ]}| t|d qNd S )Nmbcs_decoderm   )r2   r@  utf_8_decoder   r   rC  r   r   r   utf_32_ex_decodelatin_1_decodeascii_decoder  hasattrr`   r  r   rD  )r   Zdecodersr  r   r   r   test_decode_unicode	  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   ሴru   s   \u1234
   \U00110000z
\U00110000r   r   re   r   )z(\x5c\x55\x30\x30\x31\x31\x30\x30\x30\x30re   )r   r2   unicode_escape_decoderaw_unicode_escape_decoder   r   r\   r   r   r   test_unicode_escape	  s    zTypesTest.test_unicode_escapeN)r   r   r   r  r  r   r   r   r   r  	  s   r  c                   @   sT   e Z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d ZdS )UnicodeEscapeTestzunicode-escapeNc                 C   s(   |  tdd |  tdd d S NrF   rL  rE   rF   r   )r   r2   unicode_escape_encoder  r\   r   r   r   rM  1	  s    zUnicodeEscapeTest.test_emptyc                 C   s@   t j}tddD ]*}|dkr| |t|t|gdf qd S )Nr     \   r0   )r2   r  r1   r   r  rH   r   rB   r   r   r   r   test_raw_encode5	  s    z!UnicodeEscapeTest.test_raw_encodec                 C   sF   t j}tdD ]2}|dkr| |t|gd t|d df qd S )Nr`  r  rl  0r   )r2   r  r1   r   rH   r  rm  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 td	D ]&}t|d
vr@|t|d|   q@tddD ]}|t|d|   qr|dd |dd d S )N	s   \trf   s   \nrh   s   \r\s   \\r  z	
r   r  r`     €   \u20ac   𝄠
   \U0001d120)r2   r  r   r1   r  rB   r   rB   r   r   r   r   r   test_escape_encodeA	  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' d S )(Nro  r   rq  z["]rr  z[']rs  z[\]rt  z[]ru  z[]rv  z[	]rw  z[
]rx  z[]ry  z[]rz  z[]r{  r|  z[8]r}  z[!]r~  z[!8]r  z[A]r  z[A0]r  r  r  r  r  r  )r2   r  r   r  r   r   r   test_escape_decodeP	  s.    




















z$UnicodeEscapeTest.test_escape_decodec              	   C   s  t j}t| |}tddD ]}t|g}|dvrv| td| & |d| dt|  W d    n1 sl0    Y  | dvr| td|d  . |d|  dt|d   W d    q1 s0    Y  q| td	 |d
d W d    n1 s0    Y  | 	t |dd W d    n1 s:0    Y  | td}|dd W d    n1 sr0    Y  | td" | 
|ddd W d    n1 s0    Y  d S )Nr  r  s	   abfnrtuvxr  rk  r  s   UNr  r  r  z\8r  z\9r  r  u   \úr  r  r   )z\zrH  )r2   r  r   r1   rH   r  r   r  r  r  r   r  r   r   r   test_decode_warningsi	  s:    

4
>***z&UnicodeEscapeTest.test_decode_warningsc              	   C   s   t j}dD ]\}}t|D ]}| t|d| d|   | t|d| d|  d  d| d|  d | d|  }| ||ddt|f | ||d	d
t|f qq
| t|d | |ddd | |dd	d d S )N))   xr      urH     UrH  rk  rl     [\   ]   ]\r   r   r      [�]�r  rF   re   r  )r2   r  r1   r   r   r   r   r   r4   rK   r>   r=   rq   r   r   r   test_decode_errors	  s"     
z$UnicodeEscapeTest.test_decode_errorsc                 C   s   |  dg d d S )N    	
\ÿ￿𐀀) rF   rF   rF   r   r    	r   	
r   	
r   	
\r  r  r      	
\ÿr  r  r  r  r  
    	
\ÿ￿r  r  r  r  r  r  r  r  r  r  r   r\   r   r   r   r   	  s    zUnicodeEscapeTest.test_partial)r   r   r   r;   r   rM  r  r  r  r  r  r  r   r   r   r   r   r  ,	  s   r  c                   @   sL   e Z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 )RawUnicodeEscapeTestzraw-unicode-escapeNc                 C   s(   |  tdd |  tdd d S r  )r   r2   raw_unicode_escape_encoder  r\   r   r   r   rM  	  s    zRawUnicodeEscapeTest.test_emptyc                 C   s6   t j}tdD ]"}| |t|t|gdf qd S )Nr`  r0   )r2   r  r1   r   r  rH   r  r   r   r   r  	  s    z$RawUnicodeEscapeTest.test_raw_encodec                 C   s>   t j}tdD ]*}| |t|gd t|d df qd S )Nr`  rl  r  r   )r2   r  r1   r   rH   r  rm  r   r   r   r  	  s    z$RawUnicodeEscapeTest.test_raw_decodec                 C   sZ   t j}t| |}tdD ](}|dvr|dt| dt|g  q|dd |dd d S )	Nr`     uUr  rk  r  r  r  r  )r2   r  r   r1   r  rH   r  r   r   r   r  	  s    

z'RawUnicodeEscapeTest.test_escape_encodec                 C   sZ   t j}t| |}tdD ](}|dvr|dt|g dt|  q|dd |dd d S )	Nr`  r  rk  r  r  r  r  r  )r2   r  r   r1   rH   r  )r   r4   r   r   r   r   r   r  	  s    

z'RawUnicodeEscapeTest.test_escape_decodec              	   C   s   t j}dD ]\}}t|D ]}| t|d| d|   | t|d| d|  d  d| d|  d | d|  }| ||ddt|f | ||d	d
t|f qq
| t|d | |ddd | |dd	d d S )N)r  r  rk  rl  r  r  r  r   r   r   r  r  r  r  )r2   r  r1   r   r   r   r   r  r   r   r   r  	  s"     
z'RawUnicodeEscapeTest.test_decode_errorsc                 C   s   |  dg d d S )Nr  )r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r\   r   r   r   r   	  s    z!RawUnicodeEscapeTest.test_partial)r   r   r   r;   r   rM  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   s|   g d}|D ]F\}}| j |d" | t|| W d    q1 sH0    Y  q| ttjd | ttjtd d S )N))rE   rL  )   foobar)r  ru   )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  r"  r   rG  )r  r   r2   escape_encoder   rD  rj  )r   r   rq   outputr   r   r   r  
  s    
2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 )N   foobarr   r  	   foobars   u	   r   r4   rB   r\   r   r   r   	test_utf8"
  s    zSurrogateEscapeTest.test_utf8c                 C   s,   |  dddd |  dddd d S )Nr  r*  r  r  r  r\   r   r   r   r0  .
  s    zSurrogateEscapeTest.test_asciic                 C   s,   |  dddd |  dddd d S )Ns   foobarz
iso-8859-3r  u	   foobarr  r\   r   r   r   test_charmap5
  s    z SurrogateEscapeTest.test_charmapc                 C   s   |  dddd d S )Nu   r  r  s   r  r\   r   r   r   test_latin1<
  s    zSurrogateEscapeTest.test_latin1N)r   r   r   r  r0  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 |D ]~}tjtjd|d`}|| || |d | |	 |d  |d | |	 |d  W d    n1 s0    Y  tjtjd|d\}||d  | 
| d |d || |d | |	 | W d    n1 s0    Y  tjtjd|dd}|j|d  | 
|j d |jd |j| |d | |	 | W d    n1 s0    Y  tjtjd|dP}|| ||  || |d | |	 |d  W d    n1 s0    Y  tjtjd|dX}|j| |j|j  |j| |d | |	 |d  W d    q1 s0    Y  qd S )NZ
1234567890)r   r   r   r   r   r   r  r   r   r   )r   r   r   r   r2   r   r*   r  r   r.   ZassertNotEqualtellr~   )r   rq   r   r;   rx   r   r   r   
test_seek0C
  sJ    




2


0
0


4
zBomTest.test_seek0N)r   r   r   r  r   r   r   r   r  B
  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_codecrN   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}tD ]}| j|d` t||\}}| |t| t||\}}| |t| | || W d    q1 s0    Y  qd S )Nr`  r   )	rH   r1   bytes_transform_encodingsr  r2   r  r   r   r  )r   Zbinputr;   or,   r=   r   r   r   r  
  s    zTransformCodecTest.test_basicsc              	   C   sn   t D ]d}| j|dD td|}t|t|}| }| |d W d    q1 s^0    Y  qd S Nr   r  )	r  r  r2   rB   rM   rY   rZ   r.   r   r   r;   sinra   Zsoutr   r   r   	test_read
  s    zTransformCodecTest.test_readc              	   C   sn   t D ]d}| j|dD td|}t|t|}| }| |d W d    q1 s^0    Y  qd S r
  )	r  r  r2   rB   rM   rY   rZ   r_   r   r  r   r   r   ro   
  s    z TransformCodecTest.test_readlinec              	   C   s   d}t D ]}| j|dx |}t|}t||}t||}| || t|}t||}| || t||}| || W d    q1 s0    Y  qd S )Ns   12345r   )r  r  
memoryviewr2   rB   r   r4   )r   Zoriginalr;   rq   viewZview_encodedZview_decodedr   r   r   test_buffer_api_usage
  s    z(TransformCodecTest.test_buffer_api_usagec              
   C   s   d}t D ]}| j|db d}||}| t|}|| W d    n1 sT0    Y  | |jj W d    q1 s0    Y  qd S )Nzbad input typer   zM{!r} is not a text encoding; use codecs.encode\(\) to handle arbitrary codecs)	r  r  formatr  r  rB   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    n1 s00    Y  d S )NzR^'rot_13' is not a text encoding; use codecs.encode\(\) to handle arbitrary codecszjust an example messager  )r  r  rB   r   r  r   r   r   .test_text_to_binary_blacklists_text_transforms
  s    zATransformCodecTest.test_text_to_binary_blacklists_text_transformsc              
   C   s   d}t D ]}| j|d t||}d}||}| t| || W d    n1 s`0    Y  | t| t|| W d    n1 s0    Y  W d    q1 s0    Y  qd S )Ns6   encode first to ensure we meet any format restrictionsr   zM{!r} is not a text encoding; use codecs.decode\(\) to handle arbitrary codecs)	r  r  r2   rB   r  r  r  r4   rj  )r   rq   r;   Zencoded_datar  r  r   r   r   0test_binary_to_text_blacklists_binary_transforms
  s    
(zCTransformCodecTest.test_binary_to_text_blacklists_binary_transformsc              
   C   s   dt dfD ]x}| j|dX d}| t|}|d W d    n1 sN0    Y  | |jj W d    q1 sz0    Y  qd S )Ns	   immutables   mutable)r  zR^'rot_13' is not a text encoding; use codecs.decode\(\) to handle arbitrary codecsr  )rj  r  r  r  r4   r  r  r  )r   r  r  r  r   r   r   .test_binary_to_text_blacklists_text_transforms
  s    (zATransformCodecTest.test_binary_to_text_blacklists_text_transformszRequires zlib supportc                 C   sV   d}|  t|}tdd W d    n1 s20    Y  | |jjt|j d S )Nz(^decoding with 'zlib_codec' codec failed   hellor  r  r  r2   r4   r6   r  r  r  r   r  r  r   r   r   !test_custom_zlib_error_is_wrapped
  s    *
z4TransformCodecTest.test_custom_zlib_error_is_wrappedc                 C   sV   d}|  t|}tdd W d    n1 s20    Y  | |jjt|j d S )Nz'^decoding with 'hex_codec' codec failedr  r  r  r  r   r   r    test_custom_hex_error_is_wrapped
  s    *
z3TransformCodecTest.test_custom_hex_error_is_wrappedc              
   C   sp   t  D ]b\}}t|j}|D ]H}| j|d( t|}| |j| W d    q 1 s^0    Y  q qd S )N)alias)transform_aliasesitemsr2   r   r  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
)r2   rB   r   r4   )r   rV   Z	unescapedr   r   r   test_quopri_stateless  s    z(TransformCodecTest.test_quopri_statelessc                 C   s   |  ttjdd d S )NrE   zuu-codec)r   r  r2   r4   r\   r   r   r   test_uu_invalid  s    z"TransformCodecTest.test_uu_invalidN)r   r   r   r  r  ro   r  r  r  r  r  unittest
skipUnlessr  r   r!  r'  r(  r)  r   r   r   r   r  
  s   


r  c                 C   s
   t | S r   )_TEST_CODECSgetr%  r   r   r   _get_test_codec)  s    r/  )_forget_codecc                 C   s   d S r   r   r.  r   r   r   r0  1  s    r0  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 r   )	reprrZ  idr  normalize_encodingr  r%  RuntimeErrorobj_to_raise)r   Z	unique_idr   r   r   r  7  s    		zExceptionChainingTest.setUpc                 C   sD   t | jd  tj| jd  zt| j W n ty>   Y n0 d S r   )r,  popr%  r  _cacher0  KeyErrorr\   r   r   r   tearDownL  s    zExceptionChainingTest.tearDownc                 C   s    t j||| jd}|t| j< d S )N)r  )r2   r  r%  r,  )r   rB   r4   Z
codec_infor   r   r   	set_codecU  s    zExceptionChainingTest.set_codecc                 c   sj   d || j|j|}| ||}|V  W d    n1 s<0    Y  | |jj| | |jjj d S )Nz${} with {!r} codec failed \({}: {}\))	r  r%  r   r  r6   r  r  ZassertIsNotNone__traceback__)r   Z	operationexc_typer  Zfull_msgZcaughtr   r   r   assertWrappedZ  s    $z#ExceptionChainingTest.assertWrappedc                 O   s
   | j d S r   r6  )r   argskwdsr   r   r   	raise_objc  s    zExceptionChainingTest.raise_objc                 C   s  || _ | | j| j | d|| d| j W d    n1 sF0    Y  | d|| td| j W d    n1 s0    Y  | d|| d| j W d    n1 s0    Y  | d|| td| j W d    n1 s0    Y  d S )Nr;   	str_inputZdecoding   bytes input)r6  r;  rB  r>  rB   r%  r2   r4   )r   r6  r  r=  r   r   r   check_wrappedg  s    *,*z#ExceptionChainingTest.check_wrappedc                 C   s   |  td d S )NrF   rE  r5  r\   r   r   r   test_raise_by_types  s    z(ExceptionChainingTest.test_raise_by_typec                 C   s   d}|  t|| d S )NThis should be wrappedrF  r  r   r   r   test_raise_by_valuev  s    z)ExceptionChainingTest.test_raise_by_valuec                 C   s*   d}G dd dt }| |||| d S )NrH  c                   @   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   MyRuntimeError|  s   rK  r5  rE  r   r  rK  r   r   r   )test_raise_grandchild_subclass_exact_sizez  s    z?ExceptionChainingTest.test_raise_grandchild_subclass_exact_sizec                 C   s*   d}G dd dt }| |||| d S )NrH  c                   @   s   e Zd ZdS )zVExceptionChainingTest.test_raise_subclass_with_weakref_support.<locals>.MyRuntimeErrorN)r   r   r   r   r   r   r   rK    s   rK  rL  rM  r   r   r   (test_raise_subclass_with_weakref_support  s    z>ExceptionChainingTest.test_raise_subclass_with_weakref_supportc                    s    fdd}|  || | t| d| j W d    n1 sF0    Y  | t| td| j W d    n1 s0    Y  | t| d| j W d    n1 s0    Y  | t| td| j W d    n1 s0    Y  d S )Nc                     s    d S r   r   r@  rA  r?  r   r   rB    s    z:ExceptionChainingTest.check_not_wrapped.<locals>.raise_obj	str inputrD  )r;  r  r5  rB   r%  r2   r4   )r   r6  r  rB  r   r?  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 r   r   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   rS  rF   r5  rR  )r   rS  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 r   )r	  __new__)clsr  r   r   rV    s    zQExceptionChainingTest.test_new_override_is_not_wrapped.<locals>.CustomNew.__new__)r   r   r   rV  r'  r   r   r  r   	CustomNew  s   rX  rF   rT  )r   rX  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 wrappedr0   z^{}$)r5  attrrR  r  )r   r  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 )Nr0   1rR  r5  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'\)$rk   r   rK   r]  )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    n1 s:0    Y  | t| td| j W d    n1 st0    Y  | t| d| j W d    n1 s0    Y  | t| td| j W d    n1 s0    Y  d S )Nz^unknown encoding: {}$rQ  rD  )r  r%  r  r  rB   r2   r4   r  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    n1 s0    Y  d	}|| j}| t| d
| j W d    n1 s0    Y  d S )Nc                  _   s   dS )N)
not bytes!r   r   rP  r   r   r   encode_to_str  s    zSExceptionChainingTest.test_unflagged_non_text_codec_handling.<locals>.encode_to_strc                  _   s   dS )N)   not str!r   r   rP  r   r   r   decode_to_bytes  s    zUExceptionChainingTest.test_unflagged_non_text_codec_handling.<locals>.decode_to_bytesra  rc  zd^{!r} encoder returned 'str' instead of 'bytes'; use codecs.encode\(\) to encode to arbitrary types$rC  zd^{!r} decoder returned 'bytes' instead of 'str'; use codecs.decode\(\) to decode to arbitrary types$rD  )	r;  r2   rB   r%  r   r4   r  r  rD  )r   rb  rd  rV   decodedr  r  r   r   r   &test_unflagged_non_text_codec_handling  s    *z<ExceptionChainingTest.test_unflagged_non_text_codec_handlingN)r   r   r   r  r:  r;  
contextlibcontextmanagerr>  rB  r5  rE  rG  rI  rN  rO  rR  rU  rY  r[  r^  r_  r`  rf  r   r   r   r   r1  5  s&   	
r1  win32z"code pages are specific to Windowsc                   @   s   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dd Zejdddddd Zejdddddd  Zd!S )"CodePageTest  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   rk      ar  )r   r  r2   code_page_encodecode_page_decodeOSErrorr\   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@       ÿs    r   TCP_UTF8r   )r  r   r2   rm  r   rn  rs  r\   r   r   r   test_code_page_name  s    z CodePageTest.test_code_page_namec                 C   s   |D ]\}}}|d urzt |||d}W n: tyd } z"| d||||f  W Y d }~n
d }~0 0 | |d |d||||d |f  | |d d | |d t| q| tt j|||d qd S )NTz2Unable to decode %a from "cp%s" with errors=%r: %sr   z%a.decode("cp%s", %r)=%a != %ar0   )	r2   rn  r   failr   ZassertGreaterEqualZassertLessEqualr   r   )r   r!   r   r   r  r   re  errr   r   r   check_decode  s$    
zCodePageTest.check_decodec                 C   s   |D ]\}}}|d urzt |||}W n: tyb } z"| d||||f  W Y d }~n
d }~0 0 | |d |d||||d |f  | |d t| q| tt j||| qd S )Nz0Unable to encode %a to "cp%s" with errors=%r: %sr   z%a.encode("cp%s", %r)=%a != %ar0   )r2   rm  r   ru  r   r   r   )r   r!   r   textr  r   rV   rv  r   r   r   check_encode  s"    

zCodePageTest.check_encodec                 C   s   |  dd | dd d S )Nrq  )r  r   r  )   ｄ騾r      )rr  r   N)r  r   rp  )r  r   s   [y])u   [€]r   s   [?])r  r   s   [\xff])r  r   s)   [\N{LATIN SMALL LETTER Y WITH DIAERESIS}])r  r   s   [&#255;])u   r   N)   []r  r  )r}  r   N)r  r   r  )r|  r   r{  )r  r   N)r  r   r   )r  r   u   [�])r  r   z[\xff])r  r  r}  )r  r   N)    abcr   N)r  r   z abc)r  r   u   � abc)r  r   z\x81 abcry  rw  r\   r   r   r   
test_cp932  s    zCodePageTest.test_cp932c                 C   s   |  dd | dd d S )Ni  )rz  )   é€r      )rr  r   r   )   Łr   N)r  r   rE   )r  r      L)   r     )r  r   N)r~  )r  r   r  )r   r   rr  r  r\   r   r   r   test_cp1252-  s    zCodePageTest.test_cp1252c                 C   s    d}|  |d | |d d S )N  )rz  )r  r      +AOkgrA-)r  r      +2//f/w-)r   r      +3IA-)r   r      +//0-)r~  )r  r   r  )r  r   r  )r  r   r   )r  r   r   )s   [+/]r   r   )r  r   r  r  r   r!   r   r   r   test_cp_utf7?  s    zCodePageTest.test_cp_utf7c                 C   s,   |  dd |  | jd | | jd d S )Nrq  ))   r      騾)r  r   u   �騾))   􏿿r   r  )r  r   u   �􏿿))	   [􏿿]r   s   [􏿿])r  r   s   [􏿿?])rw  rs  ry  r\   r   r   r   test_multibyte_encodingS  s    z$CodePageTest.test_multibyte_encodingc                 C   s   t jrtjd ddddddgtdd	d
R D ]>}t|r\| t	|ddd|  q2t jr2t
d|  q2| t	ddd d S )Nrf   i,  i-  i.  i1  i3  i5  i  i  r  r  r  r!   z  skipping cp=rO  )u	   r  )r   verboser   stdoutr*   r1   r#   r   r2   rn  printr  r   r   r   test_code_page_decode_flagsa  s    
z(CodePageTest.test_code_page_decode_flagsc                 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 )Nrq     r   Fr  s   )r  r   s   )u   騾騾rH  r  r  )r2   rn  r   )r   re  r   r   r   test_incrementalt  s"    zCodePageTest.test_incrementalc                 C   sJ   t jddd( td}| |jd W d    n1 s<0    Y  d S )Nz_winapi.GetACPr  )Zreturn_valueZcp123rx  )r   r  r2   r   r   r  )r   codecr   r   r   test_mbcs_alias  s    
zCodePageTest.test_mbcs_aliasl           F)r,   Zmemusedry_runc                 C   s   d|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   01234567r  r0   s
   r   rq  r  Tr   re   Z
0123456701iu(   6701234567r   r   r2   rn  r   r,   rV   re  r   r   r   test_large_input  s    zCodePageTest.test_large_inputru   c                 C   s   d|d  }|  t||d d  td|dd}|  |d t| ~|  t|d | |  |d d d d	 |  |d d
d  d d S )Ns
   0123456턀r  re   rk  r   Tr0   r   u   0123456턀01iu   56턀0123456턀r  r  r   r   r   test_large_utf8_input  s    z"CodePageTest.test_large_utf8_inputN)r   r   r   rs  rp  rt  rw  ry  r  r  r  r  r  r  r  r   Z
bigmemtestr  r  r   r   r   r   rj    s    !
rj  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 )Nrz  r*  s   abc123r  r\   r   r   r   r    s    zASCIITest.test_encodec              	   C   sX   dD ]N\}}}| j |||d$ | |d|| W d    q1 sH0    Y  qd S )N))	   [ÿ€]r   rp  )r  r   s   [???])r  r   s   [&#128;&#255;&#8364;])u   [ÿ€򫳞]r   s   [\x80\xff\u20ac\U000abcde]r  r  r  r  r*  r  r   rB   r  r   r   r   test_encode_error  s    zASCIITest.test_encode_errorc                 C   s:   |  t ddd W d    n1 s,0    Y  d S )Nu   ÿr*  r  r   r   rB   r\   r   r   r   !test_encode_surrogateescape_error  s    z+ASCIITest.test_encode_surrogateescape_errorc                 C   s   |  ddd d S )Nr  r*  r  )r   r4   r\   r   r   r   r    s    zASCIITest.test_decodec              	   C   sX   dD ]N\}}}| j |||d$ | |d|| W d    q1 sH0    Y  qd S )Nr   r  r*  rA  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   sR   dD ]H\}}| j ||d" | |d| W d    q1 sB0    Y  qd S )N))r  r  )u   éÿs   rq   r   latin1r  r   rq   r   r   r   r   r    s    zLatin1Test.test_encodec              	   C   sX   dD ]N\}}}| j |||d$ | |d|| W d    q1 sH0    Y  qd S )N))   [€]r   rp  )r  r   s   [??])u	   [€򫳞]r   s   [\u20ac\U000abcde])r  r   s   [&#8364;&#56448;]r  r  r  r  r  r   r   r   test_encode_errors  s    zLatin1Test.test_encode_errorsc                 C   s:   |  t ddd W d    n1 s,0    Y  d S )Nu   €r  r  r  r\   r   r   r   r    s    z,Latin1Test.test_encode_surrogateescape_errorc              	   C   sR   dD ]H\}}| j ||d" | |d| W d    q1 sB0    Y  qd S )N))r  r  )r  u   [ÿ]r  r  rA  r  r   r   r   r    s    zLatin1Test.test_decodeN)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 )
StreamRecoderTestc                 C   sR   t  }td}t||j|jtjj	tjj
}|ddg | | d d S )Nr*  rl     bs   ab)rY   rZ   r2   r   r  rB   r4   r  r*  r  r  
writelinesr   r   )r   bior  srr   r   r   test_writelines  s    
z!StreamRecoderTest.test_writelinesc                 C   s^   t  }td}t||j|jtjj	tjj
}d}||d | | |d d S )Nr  u   àñér   )rY   rZ   r2   r   r  rB   r4   r  rw  r  r  r*   r   r   )r   r  r  r  rx  r   r   r   
test_write  s    
zStreamRecoderTest.test_writec                 C   s|   t dd}t|dd}| | d |d | | d | | d | | d | | d d S )	Nzline1
line2
line3
r   r   s   line1
r   s   line2
s   line3
rE   )rY   rZ   rB   r2   r  r   r_   r  r   r  r  r   r   r   test_seeking_read  s    
z#StreamRecoderTest.test_seeking_readc                 C   s   t dd}t|dd}|d |d | | d |d | | d | | d	 | | d d S )
Nz
123456789
r   r   r   s   
abc
s   789
r   s   1
s   abc
)	rY   rZ   rB   r2   r  r  r*   r   r_   r  r   r   r   test_seeking_write  s    


z$StreamRecoderTest.test_seeking_writeN)r   r   r   r  r  r  r  r   r   r   r   r    s   r  zneed _testcapi modulec                   @   s   e Zd Ze ZdZdZdZdddZ	dd Z
d	d
 Zdd Zdd Zdd ZdddZdd Zdd Zdd Zdd Zdd ZdS ) LocaleCodecTest)r*  u   ulatin1:§éu   u255:ÿu   UCS:é€􏿿u   surrogates:)s
   blatin1:s   b255:u   r   c                 C   s   t |d|S r+   )r  ZEncodeLocaleEx)r   rx  r  r   r   r   rB   6  s    zLocaleCodecTest.encodec                 C   s   | j D ]}| j|d z|| j|}W n^ ty   | t}| || W d    n1 sd0    Y  t|j}| 	|d Y n0 | ||}| 
|| W d    q1 s0    Y  qd S )N)rx  z!encode error: pos=[0-9]+, reason=)STRINGSr  rB   ENCODINGr   r   r5  rZ  r  ZassertRegexr   )r   r  rx  r   r  errmsgrV   r   r   r   check_encode_strings9  s    
*
z$LocaleCodecTest.check_encode_stringsc                 C   s   |  d d S Nr   r  r\   r   r   r   test_encode_strictG  s    z"LocaleCodecTest.test_encode_strictc                 C   s   |  d d S Nr  r  r\   r   r   r   test_encode_surrogateescapeJ  s    z+LocaleCodecTest.test_encode_surrogateescapec              
   C   sf   z|  dd W nF tyV } z.t|dkr@| | jd n W Y d }~n
d }~0 0 | d d S )NrF   r   unsupported error handlerz4 encoder doesn't support surrogatepass error handler)rB   r  rZ  r  r  r  r   r  r   r   r   test_encode_surrogatepassM  s    z)LocaleCodecTest.test_encode_surrogatepassc                 C   sL   |  t}| dd W d    n1 s,0    Y  | t|jd d S )NrF   r   r  )r   r  rB   r   rZ  r  r   r  r   r   r   %test_encode_unsupported_error_handlerY  s    *z5LocaleCodecTest.test_encode_unsupported_error_handlerc                 C   s   t |d|S r+   )r  ZDecodeLocaleEx)r   rV   r  r   r   r   r4   ^  s    zLocaleCodecTest.decodec                 C   s\  | j dk}|rd}nd}t| j}| jD ]d}z$|| j |}||vrN|| W n tyf   d }Y n0 |r(|| j d}||kr(|| q(|D ]}| j|d z|| j |}W nf t	y   | 
t}	| || W d    n1 s0    Y  t|	j}
| |
d|
 Y n0 | ||}| || W d    q1 sL0    Y  qd S )Nr   r  r   r   )rV   zdecode error: )r  rb  BYTES_STRINGSr  rB   r`   r   r  r4   r   r   r5  rZ  r  r9   
startswithr   )r   r  Zis_utf8Zencode_errorsstringsrx  rV   Zencoded2r   r  r  re  r   r   r   check_decode_stringsa  s6    



*
z$LocaleCodecTest.check_decode_stringsc                 C   s   |  d d S r  r  r\   r   r   r   test_decode_strict  s    z"LocaleCodecTest.test_decode_strictc                 C   s   |  d d S r  r  r\   r   r   r   test_decode_surrogateescape  s    z+LocaleCodecTest.test_decode_surrogateescapec              
   C   sf   z|  dd W nF tyV } z.t|dkr@| | jd n W Y d }~n
d }~0 0 | d d S )NrE   r   r  z4 decoder doesn't support surrogatepass error handler)r4   r  rZ  r  r  r  r  r   r   r   test_decode_surrogatepass  s    z)LocaleCodecTest.test_decode_surrogatepassc                 C   sL   |  t}| dd W d    n1 s,0    Y  | t|jd d S )NrE   r   r  )r   r  r4   r   rZ  r  r  r   r   r   %test_decode_unsupported_error_handler  s    *z5LocaleCodecTest.test_decode_unsupported_error_handlerN)r   )r   )r   r   r   r   getfilesystemencodingr  r  r  Z
SURROGATESrB   r  r  r  r  r  r4   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 )
	Rot13Testc                 C   s   t dd}| |d d S )NzCaesar liked ciphersrot-13zPnrfne yvxrq pvcuref)r2   rB   r   )r   
ciphertextr   r   r   r    s    zRot13Test.test_encodec                 C   s   t dd}| |d d S )NzRg gh, Oehgr?r  zEt tu, Brute?)r2   r4   r   )r   	plaintextr   r   r   r    s    zRot13Test.test_decodec                 C   s&   t d }|d}| |d d S )Nr  zABBA nag Cheryl BakerzNOON ant Purely Onxre)r2   rA   rB   r   )r   r  r  r   r   r   r    s    
z!Rot13Test.test_incremental_encodec                 C   s&   t d }|d}| |d d S )Nr  zterra Ares envy thazgreen Nerf rail gun)r2   r3   r4   r   )r   r  r  r   r   r   r    s    
z!Rot13Test.test_incremental_decodeN)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 )Rot13UtilTestc                 C   sB   t d}t  }tj|| |d | }| |d d S )Nz)Gb or, be abg gb or, gung vf gur dhrfgvbar   z)To be, or not to be, that is the question)rY   rc  r  r  r  r  r.   r   )r   ZinfileZoutfileZ
plain_textr   r   r   test_rot13_func  s    

zRot13UtilTest.test_rot13_funcN)r   r   r   r  r   r   r   r   r    s   r  __main__)Sr2   rg  rY   r  r   r*  r  r   testr   r  ImportErrorr    ZSIZEOF_WCHAR_TZsizeofZc_wcharr   r#   r  r$   r/   rD   ZTestCaser   r   r   r   r   r   r   r(  rB  rF  rP  rh  r  r=   r   r  r2  r  r  r  r  r  r  r  r  r  r`   r  ry  r  r  r  r  r  r  r  r  r  r#  r  r  r  r,  r/  r  _codecsr0  r1  r+  platformrj  r  r  r  ZskipIfr  r  r  r   mainr   r   r   r   <module>   s   

"  V`..V,,^ VJg! ]uh

  y) S"9



 
 # W'%.q
