a
    äze  ã                   @   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                    s`   ˆ | ƒ t jd ust jd ur\t j}t j}z$d t _d t _ˆ | ƒ W |t _|t _n|t _|t _0 d S ©N)ÚquopriZb2a_qpZa2b_qp)ÚselfZ	oldencodeZ	olddecode©Útestfunc© ú&/usr/lib/python3.9/test/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)ó   hellor   )ó!   hello
        there
        worldr   )ó"   hello
        there
        world
r   )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)óL   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyr   )sM   zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzsO   zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz=
zz)s—   zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzs™   zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz=
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz)sä   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzsæ   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy=
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz))ó   hello worlds   hello=20world)s   hello	worlds   hello=09world))r   ó   hello_world)r   s   hello=5Fworldc                 C   s&   | j D ]\}}|  t |¡|¡ qd S r   )ÚSTRINGSÚassertEqualr   Úencodestring©r   ÚpÚer   r   r   Útest_encodestring   s    z QuopriTestCase.test_encodestringc                 C   s&   | j D ]\}}|  t |¡|¡ qd S r   )r   r   r   Údecodestringr   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   s,   | j D ] \}}|  t t |¡¡|¡ qd S r   )r   r   r   r   r   r   r   r   r   Útest_idempotent_string’   s    z%QuopriTestCase.test_idempotent_stringc                 C   sF   | j D ]:\}}t |¡}t ¡ }tj||dd |  | ¡ |¡ qd S )NF©Z	quotetabs)r   ÚioÚBytesIOr   Úencoder   Úgetvalue©r   r   r   ZinfpZoutfpr   r   r   Útest_encode—   s
    
zQuopriTestCase.test_encodec                 C   sB   | j D ]6\}}t |¡}t ¡ }t ||¡ |  | ¡ |¡ qd S r   )r   r   r    r   Údecoder   r"   r#   r   r   r   Útest_decodeŸ   s
    
zQuopriTestCase.test_decodec                 C   s<   | j D ]0\}}|  tj|dd|¡ |  t |¡|¡ qd S )NTr   )ÚESTRINGSr   r   r   r   r   r   r   r   Útest_embedded_ws§   s    zQuopriTestCase.test_embedded_wsc                 C   s*   | j D ]\}}|  tj|dd|¡ qd S ©NT)Úheader)ÚHSTRINGSr   r   r   r   r   r   r   Útest_encode_header­   s    z!QuopriTestCase.test_encode_headerc                 C   s*   | j D ]\}}|  tj|dd|¡ qd S 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¡ ¡ }tt|ƒƒD ]}|  || || ¡ ql|  ||¡ d S )Néÿÿÿÿú-mquopri©ÚstdinÚstdoutúlatin-1)r   Ú
subprocessÚPopenÚsysÚ
executableÚPIPEÚ
addCleanupr2   Ú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.   r/   z-dr0   r3   )r   r4   r5   r6   r7   r8   r9   r2   r:   r;   r%   r   r<   )r   r   r   r?   r@   rA   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-   rC   rD   r   r   r   r   r   @   sF   Ñ3








r   Ú__main__)Zunittestr6   r   r4   r   rH   rG   r   ZTestCaser   r
   Úmainr   r   r   r   Ú<module>   s    