o
    ±ó®g;  ć                   @   sJ  d dl Z d dlmZ d dlm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
mZmZ e d”Ze  ee ” dd”Ze  ee ” dd”ZG d	d
 d
e jZG dd de jZG dd de jZG dd de jZG dd deZG dd dee jZG dd dee jZdefddZdZG dd dZ e!dkr£e  "”  dS dS )é    N)Śsupport)Śimport_helper)Ś
bigmemtestŚ_1GŚ_4GŚzlibŚcopyzrequires Compress.copy()zrequires Decompress.copy()c                   @   ó   e Zd Zdd ZdS )ŚVersionTestCasec                 C   s   |   tjd tjd ” d S )Nr   )ŚassertEqualr   ŚZLIB_RUNTIME_VERSIONŚZLIB_VERSION©Śself© r   śD/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/test_zlib.pyŚtest_library_version   s   z$VersionTestCase.test_library_versionN)Ś__name__Ś
__module__Ś__qualname__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 )ŚChecksumTestCasec                 C   ó0   |   t d”t dd”” |  t dd”” d S )Nó    r   ó   abcģ   ’’ )r   r   Ścrc32Ś
assertTruer   r   r   r   Śtest_crc32start#   ó   z ChecksumTestCase.test_crc32startc                 C   ó@   |   t dd”d” |   t dd”d” |   t dd”d” d S ©Nr   r   é   i°  )r   r   r   r   r   r   r   Śtest_crc32empty'   ó   z ChecksumTestCase.test_crc32emptyc                 C   r   )Nr   r!   r   r   )r   r   Śadler32r   r   r   r   r   Śtest_adler32start,   r   z"ChecksumTestCase.test_adler32startc                 C   r   r    )r   r   r$   r   r   r   r   Śtest_adler32empty0   r#   z"ChecksumTestCase.test_adler32emptyc                 C   s   |   t dd”d” |   t dd”d” |   t dd”d” |   t dd”d” |   t d”t dd”” |   t d”t dd”” d S )Ns   penguinr   l    !K r!   iŖ¶CiöĻi÷Ö©r   r   r   r$   r   r   r   r   Śtest_penguins5   s   zChecksumTestCase.test_penguinsc                 C   sT   d}|   t |”d” |   t d”d” |   t || ”d” |   t d”d” d S )Nó   abcdefghijklmnopģ   @u( ó   spami=’ŚCl    * i²Or'   )r   Śfoor   r   r   Śtest_crc32_adler32_unsigned>   s
   z,ChecksumTestCase.test_crc32_adler32_unsignedc                 C   sH   d}d}|   t |”|” |   t |”|” |   t d”t d”” d S )Nr)   r*   r+   )r   Śbinasciir   r   )r   r,   Ścrcr   r   r   Śtest_same_as_binascii_crc32F   s
   z,ChecksumTestCase.test_same_as_binascii_crc32N)
r   r   r   r   r"   r%   r&   r(   r-   r0   r   r   r   r   r   !   s    	r   c                   @   s&   e Zd Zeed ddddd ZdS )ŚChecksumBigBufferTestCaseé   r!   F)ŚsizeŚmemuseŚdry_runc                 C   s4   dt d  }|  t |”d” |  t |”d” d S )Ns   nyanr!   iM"B>l   ķa )r   r   r   r   r$   )r   r3   Śdatar   r   r   Śtest_big_bufferQ   s   z)ChecksumBigBufferTestCase.test_big_bufferN)r   r   r   r   r   r7   r   r   r   r   r1   O   s    r1   c                   @   sP   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	dd Z
ej	dd ZdS )ŚExceptionTestCasec                 C   s   |   tjtjdd” d S )Ns   ERRORé
   )ŚassertRaisesr   ŚerrorŚcompressr   r   r   r   Śtest_badlevelZ   s   zExceptionTestCase.test_badlevelc                 C   s   |   ttj” |   ttj” |   ttj” |   ttj” dd dddg fD ]"}|   ttj|” |   ttj|” |   ttj|” |   ttj|” q$d S )Né*   Ś Śabcr   )r:   Ś	TypeErrorr   r$   r   r<   Ś
decompress)r   Śargr   r   r   Śtest_badargs`   s   üzExceptionTestCase.test_badargsc                 C   s6   |   ttjdtjd” |   ttjdtjtjd ” d S )Nr!   r   )r:   Ś
ValueErrorr   ŚcompressobjŚDEFLATEDŚ	MAX_WBITSr   r   r   r   Śtest_badcompressobjk   s   ’z%ExceptionTestCase.test_badcompressobjc                 C   s   |   ttjd” d S )Né’’’’)r:   rE   r   Śdecompressobjr   r   r   r   Śtest_baddecompressobjr   s   z'ExceptionTestCase.test_baddecompressobjc                 C   s,   |   tt ” jd” |   tt ” jd” d S )Nr   rJ   )r:   rE   r   rK   Śflushr   r   r   r   Śtest_decompressobj_badflushv   s   z-ExceptionTestCase.test_decompressobj_badflushc                 C   sČ   |   td” t ddtjd ” W d    n1 sw   Y  |   td” t ”  dtjd ” W d    n1 s<w   Y  |   td” t ”  tjd ” W d    d S 1 s]w   Y  d S )Nzint too larger   é   r!   )ŚassertRaisesRegexŚOverflowErrorr   rB   ŚsysŚmaxsizerK   rM   r   r   r   r   Śtest_overflow{   s   ’’"’zExceptionTestCase.test_overflowc                 C   s,   t  | tt ” ” t  | tt ” ” d S ©N)r   Zcheck_disallow_instantiationŚtyper   rF   rK   r   r   r   r   Śtest_disallow_instantiation   s   z-ExceptionTestCase.test_disallow_instantiationN)r   r   r   r=   rD   rI   rL   rN   r   Zcpython_onlyrT   rW   r   r   r   r   r8   X   s    
r8   c                   @   s   e Zd Zdd Zdd ZdS )ŚBaseCompressTestCasec                 C   s@   d}t  |d ”}||t| d  }z	|| W d }d S d }w )Né   r9   r!   )ŚrandomŚ	randbytesŚlen)r   r3   Zcompress_funcZ_1Mr6   r   r   r   Ścheck_big_compress_buffer   s   
z.BaseCompressTestCase.check_big_compress_bufferc                 C   sd   d| }z
t  |d”}W d }nd }w ||}z|  t||” |  t| d”d” W d }d S d }w )Nó   xr!   r   )r   r<   r   r\   Śstrip)r   r3   Zdecompress_funcr6   Ś
compressedr   r   r   Ścheck_big_decompress_buffer   s   z0BaseCompressTestCase.check_big_decompress_bufferN)r   r   r   r]   ra   r   r   r   r   rX      s    rX   c                   @   s¢   e Zd Zdd Zdd Zdd Zdd Zeed	 d
ddd Z	eed	 dddd Z
eedddd Zdd Ze ejdkd”eed dddd ZdS )ŚCompressTestCasec                 C   s    t  t”}|  t  |”t” d S rU   )r   r<   ŚHAMLET_SCENEr   rB   ©r   Śxr   r   r   Śtest_speech«   s   
zCompressTestCase.test_speechc                 C   sx   t jtdd}|  t  |”t” |  t” t jtdd W d    n1 s'w   Y  |  t j|t jt jdt” d S )Né   )Ślevel)r6   rh   )ŚwbitsŚbufsize)	r   r<   rc   r   rB   r:   rA   rH   ŚDEF_BUF_SIZErd   r   r   r   Śtest_keywordsÆ   s   ’
žżzCompressTestCase.test_keywordsc                 C   sP   t d }t |”}|  t t|”|” |t|fD ]}|  t |”|” qd S ©Né   )rc   r   r<   r   Ś	bytearrayrB   )r   r6   re   Śobr   r   r   Śtest_speech128¹   s   
’zCompressTestCase.test_speech128c                 C   s*   t  t”}|  t jdt j|d d ” d S )NzAError -5 while decompressing data: incomplete or truncated streamrJ   )r   r<   rc   rP   r;   rB   rd   r   r   r   Śtest_incomplete_streamĮ   s
   
žz'CompressTestCase.test_incomplete_streamrY   rg   ©r3   r4   c                 C   s   dd }|   ||” d S )Nc                 S   s   t  | d”S ©Nr!   )r   r<   ©Śsr   r   r   Ś<lambda>Ģ   s    z;CompressTestCase.test_big_compress_buffer.<locals>.<lambda>)r]   ©r   r3   r<   r   r   r   Śtest_big_compress_bufferŹ   s   z)CompressTestCase.test_big_compress_bufferé   c                 C   s   |   |tj” d S rU   )ra   r   rB   )r   r3   r   r   r   Śtest_big_decompress_bufferĻ   s   z+CompressTestCase.test_big_decompress_bufferr!   c                 C   s.   t d }t |d”}|  t |d|”|” d S ©Nr9   r!   rO   )rc   r   r<   r   rB   )r   r3   r6   r`   r   r   r   Śtest_large_bufsizeÓ   s   z#CompressTestCase.test_large_bufsizec                 C   s0   t d }t |d”}|  t |dt ”|” d S r|   )rc   r   r<   r   rB   Ś	CustomInt)r   r6   r`   r   r   r   Śtest_custom_bufsizeŚ   s   z$CompressTestCase.test_custom_bufsizeģ        śrequires 64bit platforméd   r2   c                 C   s@   d| }zt  |d”}|  t  |”|” W d  }}d S d  }}w ©Nr^   r   )r   r<   r   rB   )r   r3   r6   Ścompr   r   r   Śtest_64bit_compressß   s
   z$CompressTestCase.test_64bit_compressN)r   r   r   rf   rl   rq   rr   r   r   ry   r{   r   r}   r   ŚunittestŚ
skipUnlessrR   rS   r   r   r   r   r   rb   ©   s    
	



rb   c                   @   sö  e Zd Zdd Zdd Zdd Zdd Zd]ddZdd Zd^ddZ	d_ddZ
dd Zdd Zdd Zdd Zdd Zdd  Ze eed!d"”d#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zee d7d8d9d: Z!d;d< Z"e#d=d> Z$e#d?d@ Z%e&dAdB Z'e&dCdD Z(dEdF Z)dGdH Z*ee+dI dJd8dKdL Z,ee+dI dMd8dNdO Z-e e.j/dPkdQ”ee dR dSd8dTdU Z0e e.j/dPkdQ”ee dR dJd8dVdW Z1e e.j/dPkdQ”ee dR dXd8dYdZ Z2d[d\ Z3d
S )`ŚCompressObjectTestCasec                 C   sĪ   t d }t |”}|t|fD ]}t ” }| |”}| ” }|  tj|j” |  || |” q||ft|t|ffD ])\}}t 	” }	|	 
|| ”}
|	 ” }|  ||
| ” |  |	jt” |  |	jt” q;d S rm   )rc   r   r<   ro   rF   rM   r:   r;   r   rK   rB   ŚassertIsInstanceŚunconsumed_tailŚbytesŚunused_data)r   ZdatasrcZdatazipr6   ŚcoŚx1Śx2Zv1Zv2ŚdcoŚy1Śy2r   r   r   Ś	test_pairģ   s    

 śz CompressObjectTestCase.test_pairc           
      C   sź   d}t j}d}d}t j}t j|||||dd}t j|dd}|  t” |jtd W d    n1 s4w   Y  |  t” |j	t  t”d W d    n1 sRw   Y  | t”| 
”  }|j	|ttd| 
”  }	|  t|	” d S )	Nrz   éō’’’é	   r   )rh   Śmethodri   ŚmemLevelŚstrategyŚzdict©ri   r   )r6   )Ś
max_length)r   rG   Ś
Z_FILTEREDrF   rK   r:   rA   r<   rc   rB   rM   r\   r   )
r   rh   r   ri   r   r   r   Śdore   Śyr   r   r   rl   ’   s,   ū’’z$CompressObjectTestCase.test_keywordsc                 C   sp   d}t j}d}d}t j}t  |||||”}| t”}| ” }t  |”}	|	 || ”}
|	 ” }|  	t|
| ” d S )Nrz   r   r   )
r   rG   r   rF   r<   rc   rM   rK   rB   r   )r   rh   r   ri   r   r   r   r   r   r   r   r   r   r   r   Śtest_compressoptions  s   

z+CompressObjectTestCase.test_compressoptionsc           	   	   C   s   t d }t ” }g }tdt|dD ]}| | |||d  ”” q| | ” ” d |”}t 	” }| 
d |””}| ” }|  ||| ” d S )Nrn   r   é   r   )rc   r   rF   Śranger\   Śappendr<   rM   ŚjoinrK   rB   r   )	r   r6   r   ŚbufsŚiŚcombufr   r   r   r   r   r   Śtest_compressincremental#  s   
z/CompressObjectTestCase.test_compressincrementalFNr    é@   c              	   C   s`  |pt }|d }t ” }g }tdt||D ]}| | ||||  ”” q| | ” ” d |”}	t 	|	”}
|  
|
t” |  ||
” t ” }g }tdt|	|D ]$}| | 	|	|||  ”” |  d|jdt|j ” |  d|j” qR|r| | ” ” n	 | 	d”}|r| |” nqq|  d|jdt|j ” |  d|j” |  |d |”” d S )Nrn   r   r   z"(A) uct should be b'': not %d longTz"(B) uct should be b'': not %d long)rc   r   rF   r”   r\   r¢   r<   rM   r£   rB   r   r   r   rK   r   r   )r   rM   ŚsourceŚcxŚdcxr6   r   r¤   r„   r¦   Zdecombufr   Śchunkr   r   r   Śtest_decompinc2  sH   


’’
ū
’’z%CompressObjectTestCase.test_decompincc                 C   ó   | j dd d S ©NT)rM   )r­   r   r   r   r   Śtest_decompincflush[  ó   z*CompressObjectTestCase.test_decompincflushc              	   C   sō   |pt }|d }t ” }g }tdt||D ]}| | ||||  ”” q| | ” ” d |”}|  	|t 
|”d” t ” }	g }|}
|
rg|	 
|
|”}|  t||kdt||f ” | |” |	j}
|
sG| |	 ” ” |  	|d |”d” d S )Nrn   r   r   ścompressed data failureśchunk too big (%d>%d)śWrong data retrieved©rc   r   rF   r”   r\   r¢   r<   rM   r£   r   rB   rK   ŚassertFalser   )r   r©   rŖ   r«   r6   r   r¤   r„   r¦   r   Ścbr¬   r   r   r   Śtest_decompimax^  s0   
’’
śz&CompressObjectTestCase.test_decompimaxc              	   C   s@  t d }t ” }g }tdt|dD ]}| | |||d  ”” q| | ” ” d |”}|  	|t 
|”d” t ” }g }|}|rkdt|d  }	| 
||	”}
|  t|
|	kdt|
|	f ” | |
” |j}|sC|ru| | ” ” n|
r| 
d|	”}
|  t|
|	kdt|
|	f ” | |
” |
sw|  	|d |”d	” d S )
Nrn   r   r    r   r²   r!   r9   r³   r“   rµ   )r   rM   r6   r   r¤   r„   r¦   r   r·   r   r¬   r   r   r   Śtest_decompressmaxleny  s@   
’’
ś’
üz,CompressObjectTestCase.test_decompressmaxlenc                 C   r®   rÆ   )r¹   r   r   r   r   Śtest_decompressmaxlenflush  r±   z1CompressObjectTestCase.test_decompressmaxlenflushc                 C   s,   t  ” }|  t|jdd” |  d|j” d S )Nr   rJ   )r   rK   r:   rE   rB   r   r   )r   r   r   r   r   Śtest_maxlenmisc  s   z&CompressObjectTestCase.test_maxlenmiscc                 C   sH   t d }|  t|tj” t |d”}t ” }|  | |t	j
”|” d S ©Nr9   r!   )rc   ZassertGreaterr\   r   rk   r<   rK   r   rB   rR   rS   ©r   r6   r`   r   r   r   r   Śtest_maxlen_large¢  s
   z(CompressObjectTestCase.test_maxlen_largec                 C   s>   t d }t |d”}t ” }|  | |t ”|d d ” d S )Nr9   r!   r   )rc   r   r<   rK   r   rB   r~   r½   r   r   r   Śtest_maxlen_custom«  s   "z)CompressObjectTestCase.test_maxlen_customc                 C   s:   d}t  ” }| |d”}|| |j”7 }|  |jd” d S )Ns
   xKLJ Mr!   r   )r   rK   rB   r   r   )r   Zcdatar   Zddatar   r   r   Śtest_clear_unconsumed_tail±  s
   z1CompressObjectTestCase.test_clear_unconsumed_tailc                 C   sš   g d¢}t dd tj d”D }|dkr| d” dd |D }td	 }|D ]N}td
D ]G}z"t |”}| |d d ”}| 	|”}| |dd  ”}	| 	” }
W n   t
d ||”  |  t d |||	|
g””|d||f ” ~q-q'd S )N)Ś
Z_NO_FLUSHŚZ_SYNC_FLUSHŚZ_FULL_FLUSHŚZ_PARTIAL_FLUSHc                 s   s    | ]}t |V  qd S rU   )Śint)Ś.0Śvr   r   r   Ś	<genexpr>Ą  s    z6CompressObjectTestCase.test_flushes.<locals>.<genexpr>Ś.)r!   rz   é   rg   ŚZ_BLOCKc                 S   s    g | ]}t t|rtt|qS r   )Śhasattrr   Śgetattr)rĘ   Śoptr   r   r   Ś
<listcomp>Å  s    ’z7CompressObjectTestCase.test_flushes.<locals>.<listcomp>é   r9   iø  z!Error for flush mode={}, level={}r   z*Decompress failed: flush mode=%i, level=%i)Śtupler   r   Śsplitr¢   rc   r”   rF   r<   rM   ŚprintŚformatr   rB   r£   )r   Zsync_optŚverr6   Śsyncrh   ŚobjŚaŚbŚcŚdr   r   r   Śtest_flushesŗ  s6   


’’’ņ’z#CompressObjectTestCase.test_flushesrĀ   zrequires zlib.Z_SYNC_FLUSHc           	      C   sŖ   dd l }t tj”}t ” }z| ” }W n ty/   z| ” }W n ty,   |}Y nw Y nw | d” | 	d”}| 
|”}| tj”}| || ”}|  ||d” d S )Nr   r!   i D  z17K random source doesn't match)rZ   r   rF   ŚZ_BEST_COMPRESSIONrK   ZWichmannHillŚAttributeErrorŚRandomŚseedr[   r<   rM   rĀ   rB   r   )	r   rZ   r   r   Śgenr6   ŚfirstŚsecondZexpandedr   r   r   Śtest_odd_flushŚ  s&   žü


z%CompressObjectTestCase.test_odd_flushc                 C   s6   t  t j”}|  | ” ” t  ” }|  | ” d” d S )Nr   )r   rF   rŻ   r   rM   rK   r   )r   r   r   r   r   r   Śtest_empty_flushü  s   z'CompressObjectTestCase.test_empty_flushc                 C   s   t }| ” }t |” d |”}tj|d}| |”| ”  }tj	|d}|  
| |”| ”  |” t 	” }|  tj|j|” d S )Nr   ©r   )rc   rŅ   rZ   Śshuffler£   r   rF   r<   rM   rK   r   rB   r:   r;   )r   ŚhŚwordsr   r   Zcdr   r   r   r   Śtest_dictionary  s   

z&CompressObjectTestCase.test_dictionaryc                 C   sĄ   t jtd}t jtd}tdd }| |”| t j” }| |dd  ”| t j” }| |d d ”| t j” }|  | |”|” |  | |”|dd  ” |  | |”|d d ” d S )Nrę   éč  iÜ  r   i’’’)	r   rF   rc   rK   r<   rM   rĀ   r   rB   )r   r   r   ZpieceŚd0Śd1Zd2r   r   r   Śtest_dictionary_streaming  s   z0CompressObjectTestCase.test_dictionary_streamingc                 C   sf   d}|   t |”d” |  tjtj|d d ” t ” }| |d d ”}|| ” 7 }|   |d” d S )Nó   xKĖĻ Es   fooéū’’’)r   r   rB   r:   r;   rK   rM   )r   re   r   r   r   r   r   Ś!test_decompress_incomplete_stream#  s   z8CompressObjectTestCase.test_decompress_incomplete_streamc                 C   sl   d}t  ” }|  |j” | |d d ” |  |j” | |dd  ” |  |j” | ”  |  |j” d S ©Nrļ   rš   )r   rK   r¶   ŚeofrB   r   rM   ©r   re   r   r   r   r   Śtest_decompress_eof0  s   z*CompressObjectTestCase.test_decompress_eofc                 C   sN   d}t  ” }|  |j” | |d d ” |  |j” | ”  |  |j” d S rņ   )r   rK   r¶   ró   rB   rM   rō   r   r   r   Ś%test_decompress_eof_incomplete_stream;  s   z<CompressObjectTestCase.test_decompress_eof_incomplete_streamc           
      C   s  d}d}t  |”}|| }dD ]w}ddt|t|fD ]j}t  ” }d}tdt||D ]9}	|	t|k r:|  |jd” |dkrS|| ||	|	|  ”7 }|  |jd” q+|| |j||	|	|   |”7 }q+|| 	” 7 }|  
|j” |  ||” |  |jd” |  |j|” qqd S )Nó   abcdefghijklmnopqrstuvwxyzs
   0123456789)r   rė   r!   rz   r   r   )r   r<   r\   rK   r”   r   r   rB   r   rM   r   ró   )
r   r©   Ś	remainderr   re   ŚmaxlenŚstepr   r6   r„   r   r   r   Śtest_decompress_unused_dataD  s0   
’š’z2CompressObjectTestCase.test_decompress_unused_datac                 C   s\   d}t jt j |d}| |”| ”  }t jt j |d}| |”| ”  }|  ||” d S )Nr÷   r   )r   rF   rH   r<   rM   rK   rB   r   )r   r   r   r   r   Śuncompr   r   r   Ś#test_decompress_raw_with_dictionary_  s   z:CompressObjectTestCase.test_decompress_raw_with_dictionaryc                 C   sN   d}d}t  |”}t  ” }| |d” ~t  |”}|  | ” |dd  ” d S )Nr÷   s   QWERTYUIOPASDFGHJKLZXCVBNMr!   )r   r<   rK   rB   r   rM   )r   Zinput1Zinput2r6   r   r   r   r   Śtest_flush_with_freed_inputg  s   

z2CompressObjectTestCase.test_flush_with_freed_inputr!   rs   c                 C   sF   t d }t |d”}t ” }| |d” |  | |”|dd  ” d S r¼   )rc   r   r<   rK   rB   r   rM   )r   r3   Śinputr6   r   r   r   r   Śtest_flush_large_lengths  s
   z.CompressObjectTestCase.test_flush_large_lengthc                 C   sH   t d }t |d”}t ” }| |d” |  | t ”|dd  ” d S r¼   )rc   r   r<   rK   rB   r   rM   r~   )r   r’   r6   r   r   r   r   Śtest_flush_custom_length|  s
    z/CompressObjectTestCase.test_flush_custom_lengthc           
      C   sä   t }ttt d ” d}dd tjtjfD ]Z}t tj”}g }| 	| 
|”” ||}|d d  }| 	| 
|”” | 	| ” ” d |”}| 	| 
|”” | 	| ” ” d |”}	|  t |”|| ” |  t |	”|| ” qd S )NŚasciic                 S   ó   |   ” S rU   ©r   ©rŚ   r   r   r   rw     ó    z:CompressObjectTestCase.test_compresscopy.<locals>.<lambda>r   )rc   r   ŚstrŚswapcaser   Śdeepcopyr   rF   rŻ   r¢   r<   rM   r£   r   rB   )
r   Zdata0Zdata1ŚfuncZc0Śbufs0Śc1Śbufs1Śs0Śs1r   r   r   Śtest_compresscopy  s"   

ļz(CompressObjectTestCase.test_compresscopyc                 C   sL   t  ” }| t” | ”  |  t|j” |  ttj|” |  ttj|” d S rU   )	r   rF   r<   rc   rM   r:   rE   r   r	  )r   rŚ   r   r   r   Śtest_badcompresscopy  s   
z+CompressObjectTestCase.test_badcompresscopyc           
      C   sŹ   t }t |”}|  |t” dd tjtjfD ]L}t ” }g }| | 	|d d ”” ||}|d d  }| | 	|dd  ”” d 
|”}| | 	|dd  ”” d 
|”}	|  ||	” |  ||” qd S )Nc                 S   r  rU   r  r  r   r   r   rw   ­  r  z<CompressObjectTestCase.test_decompresscopy.<locals>.<lambda>é    r   )rc   r   r<   r   r   r   r	  rK   r¢   rB   r£   r   )
r   r6   r   r
  rģ   r  rķ   r  r  r  r   r   r   Śtest_decompresscopy„  s    


ńz*CompressObjectTestCase.test_decompresscopyc                 C   sV   t  t”}t  ” }| |” | ”  |  t|j” |  ttj|” |  ttj	|” d S rU   )
r   r<   rc   rK   rB   rM   r:   rE   r   r	  )r   r6   rŪ   r   r   r   Śtest_baddecompresscopy¾  s   

z-CompressObjectTestCase.test_baddecompresscopyc              	   C   s\   t tjd D ]$}|  ttjf” t t tj	”|” W d    q1 s&w   Y  qd S rt   )
r”   ŚpickleŚHIGHEST_PROTOCOLr:   rA   ŚPicklingErrorŚdumpsr   rF   rŻ   ©r   Śprotor   r   r   Śtest_compresspickleÉ  s
   ’’z*CompressObjectTestCase.test_compresspicklec              	   C   sX   t tjd D ]"}|  ttjf” t t ” |” W d    q1 s$w   Y  qd S rt   )	r”   r  r  r:   rA   r  r  r   rK   r  r   r   r   Śtest_decompresspickleĪ  s
   ’’z,CompressObjectTestCase.test_decompresspicklerY   rg   c                    s&   t  d”  fdd}|  ||” d S )Nr!   c                    ó      | ”  ”  S rU   )r<   rM   ru   r  r   r   rw   Ų  ó    zACompressObjectTestCase.test_big_compress_buffer.<locals>.<lambda>)r   rF   r]   rx   r   r  r   ry   Õ  s   
z/CompressObjectTestCase.test_big_compress_bufferrz   c                    s$   t  ”   fdd}|  ||” d S )Nc                    r  rU   )rB   rM   ru   ©rŪ   r   r   rw   Ž  r  zCCompressObjectTestCase.test_big_decompress_buffer.<locals>.<lambda>)r   rK   ra   )r   r3   rB   r   r  r   r{   Ū  s   z1CompressObjectTestCase.test_big_decompress_bufferr   r   r   r2   c                 C   sl   d| }t  d”}t  ” }z!| |”| ”  }| |”| ”  }|  ||” W d  } }}d S d  } }}w r   )r   rF   rK   r<   rM   rB   r   )r   r3   r6   r   r   r   rü   r   r   r   r   į  s   
z*CompressObjectTestCase.test_64bit_compressc                 C   sp   d}d| }t  |”| }t  ” }z| |”| ”  }|  ||j” |  ||” W d  } }}d S d  } }}w )Nr)   r^   )r   r<   rK   rB   rM   r   r   )r   r3   r6   Zunusedr   r   rü   r   r   r   Śtest_large_unused_dataī  s   z-CompressObjectTestCase.test_large_unused_datarŹ   c                 C   sl   d| }t  ” }z&t  |d”}| |d”| ”  }|  ||” |  |jd” W d  } }}d S d  } }}w )Nr^   r   r!   r   )r   rK   r<   rB   rM   r   r   )r   r3   r6   r   r   rü   r   r   r   Śtest_large_unconsumed_tailü  s   z1CompressObjectTestCase.test_large_unconsumed_tailc           
      C   s  t j dd”d  d”}t|dk r| d” n
|d  ” s"d|d< ttt|}|dk}t j	dd	d
}| 
t”| ”  }|  t  |d	”t” |rS|  t  |d”t” |  t  |d”t” |  t jd” t  |d” W d    n1 suw   Y  t jdd}|  | |”t” t jdd}|  t jd” | |” W d    n1 s¦w   Y  t j	ddd
}| 
t”| ”  }|  t  |d”t” |  t  |d	”t” |rŪ|  t  |d”t” |  t  |d”t” t jdd}|  | |”t” t j	ddd
}| 
t”| ”  }|  t  |d”t” t jdd}|  | |”t” t j	ddd
}| 
t”| ”  }|  t  |d”t” |  t  |d”t” t jdd}|  | |”t” t j	ddd
}| 
t”| ”  }	|  t  |	d”t” |  t  |	d”t” t  d”}|  | |	”t” d S )Nś-r!   r   rÉ   r2   Ś0rJ   )r!   rz   rg   rŹ   rO   )rh   ri   é/   zinvalid window sizeé   )ri   r   é)   iń’’’i÷’’’é   )r   r   rŅ   r\   r¢   Ś	isnumericrŃ   ŚmaprÅ   rF   r<   rc   rM   r   rB   rP   r;   rK   )
r   rĒ   Zsupports_wbits_0r   Zzlib15r   Zzlib9Z	deflate15Zdeflate9Śgzipr   r   r   Ś
test_wbits	  s`   ’’
z!CompressObjectTestCase.test_wbits)FNr    rØ   )Nr    rØ   )F)4r   r   r   r   rl   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   r  Śrequires_Compress_copyr  r  Śrequires_Decompress_copyr  r  r  r  r   ry   r{   rR   rS   r   r   r!  r+  r   r   r   r   r   ź   sn    
)

 		 ’
 
	



	




r   c                    s6   	 |d ur
   |” |  d” fddt|D S )NŚ
c                    s   g | ]}   ”qS r   )Śchoice)rĘ   Śn©Ś	generatorZsourcesr   r   rĻ   H  s    z choose_lines.<locals>.<listcomp>)rą   rŅ   r”   )r©   Znumberrą   r2  r   r1  r   Śchoose_linesC  s
   

r3  s  
LAERTES

       O, fear me not.
       I stay too long: but here my father comes.

       Enter POLONIUS

       A double blessing is a double grace,
       Occasion smiles upon a second leave.

LORD POLONIUS

       Yet here, Laertes! aboard, aboard, for shame!
       The wind sits in the shoulder of your sail,
       And you are stay'd for. There; my blessing with thee!
       And these few precepts in thy memory
       See thou character. Give thy thoughts no tongue,
       Nor any unproportioned thought his act.
       Be thou familiar, but by no means vulgar.
       Those friends thou hast, and their adoption tried,
       Grapple them to thy soul with hoops of steel;
       But do not dull thy palm with entertainment
       Of each new-hatch'd, unfledged comrade. Beware
       Of entrance to a quarrel, but being in,
       Bear't that the opposed may beware of thee.
       Give every man thy ear, but few thy voice;
       Take each man's censure, but reserve thy judgment.
       Costly thy habit as thy purse can buy,
       But not express'd in fancy; rich, not gaudy;
       For the apparel oft proclaims the man,
       And they in France of the best rank and station
       Are of a most select and generous chief in that.
       Neither a borrower nor a lender be;
       For loan oft loses both itself and friend,
       And borrowing dulls the edge of husbandry.
       This above all: to thine ownself be true,
       And it must follow, as the night the day,
       Thou canst not then be false to any man.
       Farewell: my blessing season this in thee!

LAERTES

       Most humbly do I take my leave, my lord.

LORD POLONIUS

       The time invites you; go; your servants tend.

LAERTES

       Farewell, Ophelia; and remember well
       What I have said to you.

OPHELIA

       'Tis in my memory lock'd,
       And you yourself shall keep the key of it.

LAERTES

       Farewell.
c                   @   r	   )r~   c                 C   s   dS )Nr   r   r   r   r   r   Ś	__index__  s   zCustomInt.__index__N)r   r   r   r4  r   r   r   r   r~     s    r~   Ś__main__)#r   Śtestr   Ztest.supportr   r.   r   r  rZ   rR   r   r   r   Śimport_moduler   r   rĢ   rF   r,  rK   r-  ZTestCaser
   r   r1   r8   ŚobjectrX   rb   r   r3  rc   r~   r   Śmainr   r   r   r   Ś<module>   sF    
žž.	3A    ]A’