o
    HXîh  ã                   @   sb   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r/e  ¡  dS 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                    sb   ˆ | ƒ t jd ust jd ur/t j}t j}zd t _d t _ˆ | ƒ W |t _|t _d S |t _|t _w d S ©N)ÚquopriZb2a_qpZa2b_qp)ÚselfZ	oldencodeZ	olddecode©Útestfunc© ú:/opt/python-3.10.19/usr/lib/python3.10/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   ó   ÿz QuopriTestCase.test_encodestringc                 C   s&   | j D ]\}}|  t |¡|¡ qd S r   )r   r   r   Údecodestringr   r   r   r   Útest_decodestring†   r   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 ]\}}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 ]\}}|  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­   ó   ÿ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²   r.   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|ƒks:J ‚tt|ƒƒD ]}|  || || ¡ q@|  ||¡ d S )Néÿÿÿÿú-mquopri©ÚstdinÚstdoutúlatin-1)r   Ú
subprocessÚPopenÚsysÚ
executableÚPIPEÚ
addCleanupr4   ÚcloseÚcommunicater&   Ú
splitlinesÚlenÚranger   )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 )Nr0   r1   z-dr2   r5   )r   r6   r7   r8   r9   r:   r;   r4   r<   r=   r&   r   r>   )r   r   r   rA   rB   rC   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/   rE   rF   r   r   r   r   r   @   sH    Ñ3








r   Ú__main__)Zunittestr8   r    r6   r   rJ   rI   r   ZTestCaser   r
   Úmainr   r   r   r   Ú<module>   s     ÿ