B
    u9a  ã               @   s^   d dl Z d dlZd dlZd dlZd dlZdZdZdd„ ZG dd„ de jƒZ	e
dkrZe  ¡  dS )	é    Ns_  Here's a bunch of special=20

=A1=A2=A3=A4=A5=A6=A7=A8=A9
=AA=AB=AC=AD=AE=AF=B0=B1=B2=B3
=B4=B5=B6=B7=B8=B9=BA=BB=BC=BD=BE
=BF=C0=C1=C2=C3=C4=C5=C6
=C7=C8=C9=CA=CB=CC=CD=CE=CF
=D0=D1=D2=D3=D4=D5=D6=D7
=D8=D9=DA=DB=DC=DD=DE=DF
=E0=E1=E2=E3=E4=E5=E6=E7
=E8=E9=EA=EB=EC=ED=EE=EF
=F0=F1=F2=F3=F4=F5=F6=F7
=F8=F9=FA=FB=FC=FD=FE=FF

characters... have fun!
sŸ   Here's a bunch of special 

¡¢£¤¥¦§¨©
ª«¬­®¯°±²³
´µ¶·¸¹º»¼½¾
¿ÀÁÂÃÄÅÆ
ÇÈÉÊËÌÍÎÏ
ÐÑÒÓÔÕÖ×
ØÙÚÛÜÝÞß
àáâãäåæç
èéêëìíîï
ðñòóôõö÷
øùúûüýþÿ

characters... have fun!
c                s   ‡ fdd„}ˆ j |_ |S )Nc                sT   ˆ | ƒ t jd k	st jd k	rPt j}t j}zd t _d t _ˆ | ƒ W d |t _|t _X d S )N)ÚquopriZb2a_qpZa2b_qp)ÚselfZ	oldencodeZ	olddecode)Útestfunc© ú!/usr/lib/python3.7/test_quopri.pyÚnewtest/   s    z)withpythonimplementation.<locals>.newtest)Ú__name__)r   r   r   )r   r   Úwithpythonimplementation.   s    r	   c               @   s°   e Zd Zddddddddd	d
deeffZdZdZedd„ ƒZ	edd„ ƒZ
edd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZd d!„ Zd"d#„ Zd$S )%ÚQuopriTestCase)s   hellos   hello)s!   hello
        there
        worlds!   hello
        there
        world)s"   hello
        there
        world
s"   hello
        there
        world
)s   ‚ƒs	   =81=82=83)s   hello s   hello=20)s   hello	s   hello=09)sl   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxØÙÚÛÜÝÞßxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxs~   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=D8=D9=DA=DB=DC=DD=DE=DFx=
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)sL   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyysL   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy)sM   zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzsO   zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz=
zz)s—   zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzs™   zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz=
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz)sä   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzsæ   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy=
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz))s   hello worlds   hello=20world)s   hello	worlds   hello=09world))s   hello worlds   hello_world)s   hello_worlds   hello=5Fworldc             C   s*   x$| j D ]\}}|  t |¡|¡ qW d S )N)ÚSTRINGSÚassertEqualr   Úencodestring)r   ÚpÚer   r   r   Útest_encodestring   s    z QuopriTestCase.test_encodestringc             C   s*   x$| j D ]\}}|  t |¡|¡ qW d S )N)r   r   r   Údecodestring)r   r   r   r   r   r   Útest_decodestring†   s    z QuopriTestCase.test_decodestringc             C   s   d\}}|   t |¡|¡ d S )N)s   123=fours	   123==four)r   r   r   )r   Zdecoded_valueZencoded_valuer   r   r   Útest_decodestring_double_equals‹   s    z.QuopriTestCase.test_decodestring_double_equalsc             C   s0   x*| j D ] \}}|  t t |¡¡|¡ qW d S )N)r   r   r   r   r   )r   r   r   r   r   r   Útest_idempotent_string’   s    z%QuopriTestCase.test_idempotent_stringc             C   sJ   xD| j D ]:\}}t |¡}t ¡ }tj||dd |  | ¡ |¡ qW d S )NF)Ú	quotetabs)r   ÚioÚBytesIOr   Úencoder   Úgetvalue)r   r   r   ÚinfpÚoutfpr   r   r   Útest_encode—   s
    
zQuopriTestCase.test_encodec             C   sF   x@| j D ]6\}}t |¡}t ¡ }t ||¡ |  | ¡ |¡ qW d S )N)r   r   r   r   Údecoder   r   )r   r   r   r   r   r   r   r   Útest_decodeŸ   s
    
zQuopriTestCase.test_decodec             C   s@   x:| j D ]0\}}|  tj|dd|¡ |  t |¡|¡ qW d S )NT)r   )ÚESTRINGSr   r   r   r   )r   r   r   r   r   r   Útest_embedded_ws§   s    zQuopriTestCase.test_embedded_wsc             C   s.   x(| j D ]\}}|  tj|dd|¡ qW d S )NT)Úheader)ÚHSTRINGSr   r   r   )r   r   r   r   r   r   Útest_encode_header­   s    z!QuopriTestCase.test_encode_headerc             C   s.   x(| j D ]\}}|  tj|dd|¡ qW d S )NT)r!   )r"   r   r   r   )r   r   r   r   r   r   Útest_decode_header²   s    z!QuopriTestCase.test_decode_headerc             C   sš   | j d \}}tjtjdgtjtjd}|  |jj¡ | 	|¡\}}| 
d¡ ¡ }| 
d¡ ¡ }x(tt|ƒƒD ]}|  || || ¡ qnW |  ||¡ d S )Néÿÿÿÿz-mquopri)ÚstdinÚstdoutzlatin-1)r   Ú
subprocessÚPopenÚsysÚ
executableÚPIPEÚ
addCleanupr'   ÚcloseÚcommunicater   Ú
splitlinesÚrangeÚlenr   )r   r   r   ÚprocessÚcoutÚcerrÚir   r   r   Útest_scriptencode·   s    z QuopriTestCase.test_scriptencodec             C   sr   | j d \}}tjtjddgtjtjd}|  |jj¡ | 	|¡\}}| 
d¡}| 
d¡}|  | ¡ | ¡ ¡ d S )Nr%   z-mquopriz-d)r&   r'   zlatin-1)r   r(   r)   r*   r+   r,   r-   r'   r.   r/   r   r   r0   )r   r   r   r3   r4   r5   r   r   r   Útest_scriptdecodeÇ   s    

z QuopriTestCase.test_scriptdecodeN)r   Ú
__module__Ú__qualname__Ú	DECSAMPLEÚ	ENCSAMPLEr   r   r"   r	   r   r   r   r   r   r   r    r#   r$   r7   r8   r   r   r   r   r
   @   s2   
r
   Ú__main__)Zunittestr*   r   r(   r   r<   r;   r	   ZTestCaser
   r   Úmainr   r   r   r   Ú<module>   s    