a
    òñ"hêŠ  ã                   @   sp  d dl 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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ejfdd	„Zeƒ Zeed
ƒo¸e ¡ jdk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rle  (¡  dS ) é    N)Úsupport)Ú
bigmemtestÚ_1GÚ_4GÚzlibÚcopyzrequires Compress.copy()zrequires Decompress.copy()c                 C   sP   |   dd¡d   d¡}t|ƒdk r.| d¡ n|d  ¡ sBd|d< ttt|ƒƒS )Nú-é   r   Ú.é   Ú0éÿÿÿÿ)ÚsplitÚlenÚappendÚ	isnumericÚtupleÚmapÚint)Zzlib_versionÚv© r   ú6/opt/python-3.9.21/usr/lib/python3.9/test/test_zlib.pyÚ_zlib_runtime_version_tuple   s    r   ÚunameZs390xc                   @   s   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©Úselfr   r   r   Ú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   s0   |   t d¡t dd¡¡ |  t dd¡¡ d S )Nó    r   ó   abcì   ÿÿ )r   r   Úcrc32Ú
assertTruer   r   r   r   Útest_crc32start9   s    z ChecksumTestCase.test_crc32startc                 C   s@   |   t dd¡d¡ |   t dd¡d¡ |   t dd¡d¡ d S ©Nr%   r   r	   i°  )r   r   r(   r   r   r   r   Útest_crc32empty=   s    z ChecksumTestCase.test_crc32emptyc                 C   s0   |   t d¡t dd¡¡ |  t dd¡¡ d S )Nr%   r	   r&   r'   )r   r   Úadler32r)   r   r   r   r   Útest_adler32startB   s    z"ChecksumTestCase.test_adler32startc                 C   s@   |   t dd¡d¡ |   t dd¡d¡ |   t dd¡d¡ d S r+   )r   r   r-   r   r   r   r   Útest_adler32emptyF   s    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_penguinsK   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r0   )r   Úfoor   r   r   Útest_crc32_adler32_unsignedT   s
    z,ChecksumTestCase.test_crc32_adler32_unsignedc                 C   sH   d}d}|   t |¡|¡ |   t |¡|¡ |   t d¡t d¡¡ d S )Nr2   r3   r4   )r   Úbinasciir(   r   )r   r5   Úcrcr   r   r   Útest_same_as_binascii_crc32\   s
    z,ChecksumTestCase.test_same_as_binascii_crc32N)
r!   r"   r#   r*   r,   r.   r/   r1   r6   r9   r   r   r   r   r$   7   s   	r$   c                   @   s&   e Zd Zeed ddddd„ ƒZdS )ÚChecksumBigBufferTestCaser   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   r;   Údatar   r   r   Útest_big_bufferg   s    z)ChecksumBigBufferTestCase.test_big_bufferN)r!   r"   r#   r   r   r?   r   r   r   r   r:   e   s   r:   c                   @   sB   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Z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_badlevelp   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 ]D}|   ttj|¡ |   ttj|¡ |   ttj|¡ |   ttj|¡ qHd S )Né*   Ú Úabcr   )rB   Ú	TypeErrorr   r-   r(   rD   Ú
decompress)r   Úargr   r   r   Útest_badargsv   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   )rB   Ú
ValueErrorr   ÚcompressobjÚDEFLATEDÚ	MAX_WBITSr   r   r   r   Útest_badcompressobj   s    ÿz%ExceptionTestCase.test_badcompressobjc                 C   s   |   ttjd¡ d S )Nr   )rB   rM   r   Údecompressobjr   r   r   r   Útest_baddecompressobjˆ   s    z'ExceptionTestCase.test_baddecompressobjc                 C   s,   |   tt ¡ jd¡ |   tt ¡ jd¡ d S )Nr   r   )rB   rM   r   rR   Úflushr   r   r   r   Útest_decompressobj_badflushŒ   s    z-ExceptionTestCase.test_decompressobj_badflushc                 C   sÆ   |   td¡$ t ddtjd ¡ W d   ƒ n1 s60    Y  |   td¡& t ¡  dtjd ¡ W d   ƒ n1 sx0    Y  |   td¡$ t ¡  tjd ¡ W d   ƒ n1 s¸0    Y  d S )Nzint too larger%   é   r	   )ÚassertRaisesRegexÚOverflowErrorr   rJ   ÚsysÚmaxsizerR   rT   r   r   r   r   Útest_overflow‘   s    24zExceptionTestCase.test_overflowN)r!   r"   r#   rE   rL   rQ   rS   rU   r   Zcpython_onlyr[   r   r   r   r   r@   n   s   r@   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚBaseCompressTestCasec                 C   sB   d}t  |d ¡}||t|ƒ d  }z||ƒ W d }nd }0 d S )Né   rA   r	   )ÚrandomÚ	randbytesr   )r   r;   Zcompress_funcZ_1Mr>   r   r   r   Úcheck_big_compress_bufferœ   s    
z.BaseCompressTestCase.check_big_compress_bufferc                 C   sf   d| }zt  |d¡}W d }nd }0 ||ƒ}z.|  t|ƒ|¡ |  t| d¡ƒd¡ W d }nd }0 d S )Nó   xr	   r   )r   rD   r   r   Ústrip)r   r;   Zdecompress_funcr>   Ú
compressedr   r   r   Úcheck_big_decompress_buffer©   s    z0BaseCompressTestCase.check_big_decompress_bufferN)r!   r"   r#   r`   rd   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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 ©N)r   rD   ÚHAMLET_SCENEr   rJ   ©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 sN0    Y  |  t j|t jt jdt¡ d S )Né   )Úlevel)r>   rl   )ÚwbitsÚbufsize)	r   rD   rg   r   rJ   rB   rI   rP   ÚDEF_BUF_SIZErh   r   r   r   Útest_keywords¿   s    ,
þýzCompressTestCase.test_keywordsc                 C   sT   t d }t |¡}ts,|  t t|ƒ¡|¡ |t|ƒfD ]}|  t |¡|¡ q8d S ©Né€   )rg   r   rD   ÚHW_ACCELERATEDr   Ú	bytearrayrJ   )r   r>   ri   Ú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 streamr   )r   rD   rg   rW   rC   rJ   rh   r   r   r   Útest_incomplete_streamÔ   s
    
þz'CompressTestCase.test_incomplete_streamr]   rk   ©r;   r<   c                 C   s   dd„ }|   ||¡ d S )Nc                 S   s   t  | d¡S ©Nr	   )r   rD   ©Úsr   r   r   Ú<lambda>ß   r%   z;CompressTestCase.test_big_compress_buffer.<locals>.<lambda>)r`   ©r   r;   rD   r   r   r   Útest_big_compress_bufferÝ   s    z)CompressTestCase.test_big_compress_bufferé   c                 C   s   |   |tj¡ d S rf   )rd   r   rJ   )r   r;   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 ©NrA   r	   rV   )rg   r   rD   r   rJ   )r   r;   r>   rc   r   r   r   Útest_large_bufsizeæ   s    z#CompressTestCase.test_large_bufsizec                 C   s0   t d }t |d¡}|  t |dtƒ ¡|¡ d S r   )rg   r   rD   r   rJ   Ú	CustomInt)r   r>   rc   r   r   r   Útest_custom_bufsizeí   s    z$CompressTestCase.test_custom_bufsizeì        úrequires 64bit platforméd   r   c                 C   sB   d| }z*t  |d¡}|  t  |¡|¡ W d  }}n
d  }}0 d S ©Nra   r   )r   rD   r   rJ   )r   r;   r>   Úcompr   r   r   Útest_64bit_compressò   s
    z$CompressTestCase.test_64bit_compressN)r!   r"   r#   rj   rp   rv   rw   r   r   r~   r€   r   r‚   r„   ÚunittestÚ
skipUnlessrY   rZ   rŠ   r   r   r   r   re   ¹   s   
	



re   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 ]B}t ¡ }| |¡}| ¡ }|  tj|j¡ ts|  	|| |¡ q||ft|ƒt|ƒffD ]R\}}t 
¡ }	|	 || ¡}
|	 ¡ }|  	||
| ¡ |  |	jt¡ |  |	jt¡ qzd S rq   )rg   r   rD   rt   rN   rT   rB   rC   rs   r   rR   rJ   ÚassertIsInstanceÚunconsumed_tailÚbytesÚunused_data)r   ZdatasrcZdatazipr>   Ú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 sh0    Y  |  t¡" |j	t  t¡d W d   ƒ n1 s¤0    Y  | t¡| 
¡  }|j	|ttƒd| 
¡  }	|  t|	¡ d S )	Nr   éôÿÿÿé	   r%   )rl   Úmethodrm   ÚmemLevelÚstrategyÚzdict©rm   rž   )r>   )Ú
max_length)r   rO   Ú
Z_FILTEREDrN   rR   rB   rI   rD   rg   rJ   rT   r   r   )
r   rl   r›   rm   rœ   r   r’   Údori   Úyr   r   r   rp     s(    û*0z$CompressObjectTestCase.test_keywordsc                 C   sp   d}t j}d}d}t j}t  |||||¡}| t¡}| ¡ }t  |¡}	|	 || ¡}
|	 ¡ }|  	t|
| ¡ d S )Nr   r™   rš   )
r   rO   r¡   rN   rD   rg   rT   rR   rJ   r   )r   rl   r›   rm   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 )Nrr   r   é   r%   )rg   r   rN   Úranger   r   rD   rT   ÚjoinrR   rJ   r   )	r   r>   r’   ÚbufsÚiÚcombufr•   r–   r—   r   r   r   Útest_compressincremental9  s    
z/CompressObjectTestCase.test_compressincrementalFNr¥   é@   c              	   C   sf  |pt }|d }t ¡ }g }tdt|ƒ|ƒD ] }| | |||| … ¡¡ q,| | ¡ ¡ d |¡}	t 	|	¡}
|  
|
t¡ |  ||
¡ t ¡ }g }tdt|	ƒ|ƒD ]H}| | 	|	||| … ¡¡ |  d|jdt|jƒ ¡ |  d|j¡ q¤|r| | ¡ ¡ n$| 	d¡}|r(| |¡ nq(q|  d|jdt|jƒ ¡ |  d|j¡ |  |d |¡¡ d S )Nrr   r   r%   z"(A) uct should be b'': not %d longz"(B) uct should be b'': not %d long)rg   r   rN   r¦   r   r   rD   rT   r§   rJ   rŽ   r   r   rR   r   r‘   )r   rT   ÚsourceÚcxÚdcxr>   r’   r¨   r©   rª   Zdecombufr•   Úchunkr   r   r   Útest_decompincH  sD    


ÿÿ

ÿÿz%CompressObjectTestCase.test_decompincc                 C   s   | j dd d S ©NT)rT   )r±   r   r   r   r   Útest_decompincflushq  s    z*CompressObjectTestCase.test_decompincflushc              	   C   sò   |pt }|d }t ¡ }g }tdt|ƒ|ƒD ] }| | |||| … ¡¡ q,| | ¡ ¡ d |¡}|  	|t 
|¡d¡ t ¡ }	g }|}
|
rÌ|	 
|
|¡}|  t|ƒ|kdt|ƒ|f ¡ | |¡ |	j}
qŠ| |	 ¡ ¡ |  	|d |¡d¡ d S )Nrr   r   r%   úcompressed data failureúchunk too big (%d>%d)úWrong data retrieved©rg   r   rN   r¦   r   r   rD   rT   r§   r   rJ   rR   ÚassertFalser   )r   r­   r®   r¯   r>   r’   r¨   r©   rª   r•   Úcbr°   r   r   r   Útest_decompimaxt  s.    
ÿÿ
z&CompressObjectTestCase.test_decompimaxc              	   C   s>  t d }t ¡ }g }tdt|ƒdƒD ] }| | |||d … ¡¡ q$| | ¡ ¡ d |¡}|  	|t 
|¡d¡ t ¡ }g }|}|rÔdt|ƒd  }	| 
||	¡}
|  t|
ƒ|	kdt|
ƒ|	f ¡ | |
¡ |j}q‚|rè| | ¡ ¡ n>|
r&| 
d|	¡}
|  t|
ƒ|	kdt|
ƒ|	f ¡ | |
¡ qè|  	|d |¡d	¡ d S )
Nrr   r   r¥   r%   r´   r	   rA   rµ   r¶   r·   )r   rT   r>   r’   r¨   r©   rª   r•   r¹   r    r°   r   r   r   Útest_decompressmaxlen  s<    
ÿÿ
ÿz,CompressObjectTestCase.test_decompressmaxlenc                 C   s   | j dd d S r²   )r»   r   r   r   r   Útest_decompressmaxlenflush¯  s    z1CompressObjectTestCase.test_decompressmaxlenflushc                 C   s,   t  ¡ }|  t|jdd¡ |  d|j¡ d S )Nr%   r   )r   rR   rB   rM   rJ   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 ©NrA   r	   )rg   ZassertGreaterr   r   ro   rD   rR   r   rJ   rY   rZ   ©r   r>   rc   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 )NrA   r	   r‡   )rg   r   rD   rR   r   rJ   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   rR   rJ   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kr| d¡ dd„ |D ƒ}td }|D ]¢}tdƒD ]”}zDt |¡}| |d d… ¡}| |¡}| |dd … ¡}| ¡ }	W n   td	 	||¡ƒ ‚ Y n0 |  
t d
 ||||	g¡¡|d||f ¡ ~q@q4d S )N)Ú
Z_NO_FLUSHÚZ_SYNC_FLUSHÚZ_FULL_FLUSHÚZ_PARTIAL_FLUSH)r	   r   é   rk   ÚZ_BLOCKc                 S   s    g | ]}t t|ƒrtt|ƒ‘qS r   )Úhasattrr   Úgetattr)Ú.0Úoptr   r   r   Ú
<listcomp>Ú  s   
ÿz7CompressObjectTestCase.test_flushes.<locals>.<listcomp>é   rA   i¸  z!Error for flush mode={}, level={}r%   z*Decompress failed: flush mode=%i, level=%i)ÚZLIB_RUNTIME_VERSION_TUPLEr   rg   r¦   r   rN   rD   rT   ÚprintÚformatr   rJ   r§   )
r   Zsync_optr>   Úsyncrl   ÚobjÚaÚbÚcÚdr   r   r   Útest_flushesÐ  s0    


ÿÿÿz#CompressObjectTestCase.test_flushesrÄ   zrequires zlib.Z_SYNC_FLUSHc           	      C   sª   dd l }t tj¡}t ¡ }z| ¡ }W n6 ty^   z| ¡ }W n tyX   |}Y n0 Y n0 | d¡ | 	d¡}| 
|¡}| tj¡}| || ¡}|  ||d¡ d S )Nr   r	   i D  z17K random source doesn't match)r^   r   rN   ÚZ_BEST_COMPRESSIONrR   ZWichmannHillÚAttributeErrorÚRandomÚseedr_   rD   rT   rÄ   rJ   r   )	r   r^   r’   r•   Úgenr>   Ú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   rN   rÙ   r)   rT   rR   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ž   )rg   r   r^   Úshuffler§   r   rN   rD   rT   rR   r   rJ   rB   rC   )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   rN   rg   rR   rD   rT   rÄ   r   rJ   )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   rJ   rB   rC   rR   rT   )r   ri   r•   r£   r   r   r   Ú!test_decompress_incomplete_stream8  s    z8CompressObjectTestCase.test_decompress_incomplete_streamc                 C   sl   d}t  ¡ }|  |j¡ | |d d… ¡ |  |j¡ | |dd … ¡ |  |j¡ | ¡  |  |j¡ d S ©Nrë   rì   )r   rR   r¸   ÚeofrJ   r)   rT   ©r   ri   r•   r   r   r   Útest_decompress_eofE  s    z*CompressObjectTestCase.test_decompress_eofc                 C   sN   d}t  ¡ }|  |j¡ | |d d… ¡ |  |j¡ | ¡  |  |j¡ d S rî   )r   rR   r¸   rï   rJ   rT   rð   r   r   r   Ú%test_decompress_eof_incomplete_streamP  s    z<CompressObjectTestCase.test_decompress_eof_incomplete_streamc           
      C   s  d}d}t  |¡}|| }dD ]î}ddt|ƒt|ƒfD ]Ô}t  ¡ }d}tdt|ƒ|ƒD ]r}	|	t|ƒk rt|  |jd¡ |dkr¦|| ||	|	| … ¡7 }|  |jd¡ qV|| |j||	|	| …  |¡7 }qV|| 	¡ 7 }|  
|j¡ |  ||¡ |  |jd¡ |  |j|¡ q6qd S )Nó   abcdefghijklmnopqrstuvwxyzs
   0123456789)r   rç   r	   r   r%   r   )r   rD   r   rR   r¦   r   r‘   rJ   r   rT   r)   rï   )
r   r­   Ú	remainderr£   ri   ÚmaxlenÚstepr•   r>   r©   r   r   r   Útest_decompress_unused_dataY  s,    
ÿz2CompressObjectTestCase.test_decompress_unused_datac                 C   s\   d}t jt j |d}| |¡| ¡  }t jt j |d}| |¡| ¡  }|  ||¡ d S )Nró   rŸ   )r   rN   rP   rD   rT   rR   rJ   r   )r   rž   r’   r‰   r•   Úuncompr   r   r   Ú#test_decompress_raw_with_dictionaryt  s    z:CompressObjectTestCase.test_decompress_raw_with_dictionaryc                 C   sN   d}d}t  |¡}t  ¡ }| |d¡ ~t  |¡}|  | ¡ |dd … ¡ d S )Nró   s   QWERTYUIOPASDFGHJKLZXCVBNMr	   )r   rD   rR   rJ   r   rT   )r   Zinput1Zinput2r>   r•   r   r   r   Útest_flush_with_freed_input|  s    

z2CompressObjectTestCase.test_flush_with_freed_inputr	   rx   c                 C   sF   t d }t |d¡}t ¡ }| |d¡ |  | |¡|dd … ¡ d S r¾   )rg   r   rD   rR   rJ   r   rT   )r   r;   Úinputr>   r•   r   r   r   Útest_flush_large_lengthˆ  s
    z.CompressObjectTestCase.test_flush_large_lengthc                 C   sH   t d }t |d¡}t ¡ }| |d¡ |  | tƒ ¡|dd … ¡ d S r¾   )rg   r   rD   rR   rJ   r   rT   rƒ   )r   rû   r>   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 ]´}t tj¡}g }| 	| 
|¡¡ ||ƒ}|d d … }| 	| 
|¡¡ | 	| ¡ ¡ d |¡}| 	| 
|¡¡ | 	| ¡ ¡ d |¡}	|  t |¡|| ¡ |  t |	¡|| ¡ q*d S )NÚasciic                 S   s   |   ¡ S rf   ©r   ©rÖ   r   r   r   r|     r%   z:CompressObjectTestCase.test_compresscopy.<locals>.<lambda>r%   )rg   r   ÚstrÚswapcaser   Údeepcopyr   rN   rÙ   r   rD   rT   r§   r   rJ   )
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 rf   )	r   rN   rD   rg   rT   rB   rM   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 ]˜}t ¡ }g }| | 	|d d… ¡¡ ||ƒ}|d d … }| | 	|dd … ¡¡ d 
|¡}| | 	|dd … ¡¡ d 
|¡}	|  ||	¡ |  ||¡ q,d S )Nc                 S   s   |   ¡ S rf   rÿ   r   r   r   r   r|   Â  r%   z<CompressObjectTestCase.test_decompresscopy.<locals>.<lambda>é    r%   )rg   r   rD   rŽ   r   r   r  rR   r   rJ   r§   r   )
r   r>   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 rf   )
r   rD   rg   rR   rJ   rT   rB   rM   r   r  )r   r>   r×   r   r   r   Útest_baddecompresscopyÓ  s    

z-CompressObjectTestCase.test_baddecompresscopyc              	   C   s\   t tjd ƒD ]H}|  ttjf¡$ t t tj	¡|¡ W d   ƒ q1 sL0    Y  qd S ry   )
r¦   ÚpickleÚHIGHEST_PROTOCOLrB   rI   ÚPicklingErrorÚdumpsr   rN   rÙ   ©r   Úprotor   r   r   Útest_compresspickleÞ  s    z*CompressObjectTestCase.test_compresspicklec              	   C   sX   t tjd ƒD ]D}|  ttjf¡  t t ¡ |¡ W d   ƒ q1 sH0    Y  qd S ry   )	r¦   r  r  rB   rI   r  r  r   rR   r  r   r   r   Útest_decompresspickleã  s    z,CompressObjectTestCase.test_decompresspickler]   rk   c                    s&   t  d¡‰ ‡ fdd„}|  ||¡ d S )Nr	   c                    s   ˆ   | ¡ˆ  ¡  S rf   )rD   rT   rz   r   r   r   r|   í  r%   zACompressObjectTestCase.test_big_compress_buffer.<locals>.<lambda>)r   rN   r`   r}   r   r   r   r~   ê  s    
z/CompressObjectTestCase.test_big_compress_bufferr   c                    s$   t  ¡ ‰ ‡ fdd„}|  ||¡ d S )Nc                    s   ˆ   | ¡ˆ  ¡  S rf   )rJ   rT   rz   ©r×   r   r   r|   ó  r%   zCCompressObjectTestCase.test_big_decompress_buffer.<locals>.<lambda>)r   rR   rd   )r   r;   rJ   r   r  r   r€   ð  s    z1CompressObjectTestCase.test_big_decompress_bufferr…   r†   r‡   r   c                 C   sn   d| }t  d¡}t  ¡ }z@| |¡| ¡  }| |¡| ¡  }|  ||¡ W d  } }}nd  } }}0 d S rˆ   )r   rN   rR   rD   rT   rJ   r   )r   r;   r>   r’   r¢   r‰   rø   r   r   r   rŠ   ö  s    
z*CompressObjectTestCase.test_64bit_compressc                 C   sr   d}d| }t  |¡| }t  ¡ }z<| |¡| ¡  }|  ||j¡ |  ||¡ W d  } }}nd  } }}0 d S )Nr2   ra   )r   rD   rR   rJ   rT   r   r‘   )r   r;   r>   Zunusedr‰   r¢   rø   r   r   r   Útest_large_unused_data  s    z-CompressObjectTestCase.test_large_unused_datarÇ   c                 C   sn   d| }t  ¡ }zJt  |d¡}| |d¡| ¡  }|  ||¡ |  |jd¡ W d  } }}nd  } }}0 d S )Nra   r   r	   r%   )r   rR   rD   rJ   rT   r   r   )r   r;   r>   r¢   r‰   rø   r   r   r   Útest_large_unconsumed_tail  s    z1CompressObjectTestCase.test_large_unconsumed_tailc           	      C   s¸  t dk}tjddd}| t¡| ¡  }|  t |d¡t¡ |rT|  t |d¡t¡ |  t |d¡t¡ |  tj	d¡ t |d¡ W d   ƒ n1 s˜0    Y  tj
dd	}|  | |¡t¡ tj
dd	}|  tj	d¡ | |¡ W d   ƒ n1 sú0    Y  tjdd
d}| t¡| ¡  }|  t |d
¡t¡ |  t |d¡t¡ |rf|  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   rk   rÇ   r	   rV   )rl   rm   r   é/   zinvalid window sizeé   )rm   rš   é)   iñÿÿÿi÷ÿÿÿé   )rÏ   r   rN   rD   rg   rT   r   rJ   rW   rC   rR   )	r   Zsupports_wbits_0r’   Zzlib15r•   Zzlib9Z	deflate15Zdeflate9Úgzipr   r   r   Ú
test_wbits  sP    *(
z!CompressObjectTestCase.test_wbits)FNr¥   r¬   )Nr¥   r¬   )F)4r!   r"   r#   r˜   rp   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   r~   r€   rY   rZ   rŠ   r  r  r  r   r   r   r   r   ý   sl   
)

 		ÿ
 
	



	




r   c                    s4   |durˆ   |¡ |  d¡‰‡ ‡fdd„t|ƒD ƒS )z=Return a list of number lines randomly chosen from the sourceNÚ
c                    s   g | ]}ˆ   ˆ¡‘qS r   )Úchoice)rË   Ún©Ú	generatorZsourcesr   r   rÍ   T  r%   z choose_lines.<locals>.<listcomp>)rÜ   r   r¦   )r­   ÚnumberrÜ   r&  r   r%  r   Úchoose_linesO  s    

r(  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                   @   s   e Zd Zdd„ ZdS )rƒ   c                 C   s   dS )Nr‡   r   r   r   r   r   Ú	__index__™  s    zCustomInt.__index__N)r!   r"   r#   r)  r   r   r   r   rƒ   ˜  s   rƒ   Ú__main__))r‹   Útestr   r7   r   Úosr  r^   rY   Ztest.supportr   r   r   Úimport_moduler   rŒ   rÉ   rN   r   rR   r!  r   r   rÏ   r   Úmachiners   ZTestCaser   r$   r:   r@   Úobjectr\   re   r   r(  rg   rƒ   r!   Úmainr   r   r   r   Ú<module>   sH   
þþ
.	-D    VA
