o
    IXîh=Œ  ã                   @   s~  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
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ƒobe ¡ 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r½e  )¡  dS dS )!é    N)Úsupport)Úimport_helper)Ú
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  ¡ s!d|d< ttt|ƒƒS )Nú-é   r   Ú.é   Ú0éÿÿÿÿ)ÚsplitÚlenÚappendÚ	isnumericÚtupleÚmapÚint)Zzlib_versionÚv© r   ú8/opt/python-3.10.19/usr/lib/python3.10/test/test_zlib.pyÚ_zlib_runtime_version_tuple   s   r   ÚunameZs390xc                   @   ó   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_version0   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   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_adler32startD   r.   z"ChecksumTestCase.test_adler32startc                 C   r/   r0   )r   r   r3   r    r   r   r   Útest_adler32emptyH   r2   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+   r3   r    r   r   r   Útest_penguinsM   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r6   )r!   Úfoor   r   r   Útest_crc32_adler32_unsignedV   s
   z,ChecksumTestCase.test_crc32_adler32_unsignedc                 C   sH   d}d}|   t |¡|¡ |   t |¡|¡ |   t d¡t d¡¡ d S )Nr8   r9   r:   )r   Úbinasciir+   r   )r!   r;   Úcrcr   r   r   Útest_same_as_binascii_crc32^   s
   z,ChecksumTestCase.test_same_as_binascii_crc32N)
r#   r$   r%   r-   r1   r4   r5   r7   r<   r?   r   r   r   r   r&   9   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+   r3   )r!   rA   Údatar   r   r   Útest_big_bufferi   s   z)ChecksumBigBufferTestCase.test_big_bufferN)r#   r$   r%   r   r   rE   r   r   r   r   r@   g   s    r@   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_badlevelr   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   )rH   Ú	TypeErrorr   r3   r+   rJ   Ú
decompress)r!   Úargr   r   r   Útest_badargsx   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   )rH   Ú
ValueErrorr   ÚcompressobjÚDEFLATEDÚ	MAX_WBITSr    r   r   r   Útest_badcompressobjƒ   s   ÿz%ExceptionTestCase.test_badcompressobjc                 C   s   |   ttjd¡ d S )Nr   )rH   rS   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   )rH   rS   r   rX   Ú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 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   rP   ÚsysÚmaxsizerX   rZ   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   rT   rX   r    r   r   r   Útest_disallow_instantiationœ   s   z-ExceptionTestCase.test_disallow_instantiationN)r#   r$   r%   rK   rR   rW   rY   r[   r   Zcpython_onlyra   rd   r   r   r   r   rF   p   s    
rF   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é   rG   r
   )ÚrandomÚ	randbytesr   )r!   rA   Zcompress_funcZ_1MrD   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   rJ   r   r   Ústrip)r!   rA   Zdecompress_funcrD   Ú
compressedr   r   r   Úcheck_big_decompress_buffer±   s   z0BaseCompressTestCase.check_big_decompress_bufferN)r#   r$   r%   ri   rm   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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 rb   )r   rJ   ÚHAMLET_SCENEr   rP   ©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)rD   rt   )ÚwbitsÚbufsize)	r   rJ   ro   r   rP   rH   rO   rV   ÚDEF_BUF_SIZErp   r   r   r   Útest_keywordsÇ   s   ÿ
þýzCompressTestCase.test_keywordsc                 C   sT   t d }t |¡}ts|  t t|ƒ¡|¡ |t|ƒfD ]}|  t |¡|¡ qd S ©Né€   )ro   r   rJ   ÚHW_ACCELERATEDr   Ú	bytearrayrP   )r!   rD   rq   Ú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   rJ   ro   r]   rI   rP   rp   r   r   r   Útest_incomplete_streamÜ   s
   
þz'CompressTestCase.test_incomplete_streamrf   rs   ©rA   rB   c                 C   s   dd„ }|   ||¡ d S )Nc                 S   s   t  | d¡S ©Nr
   )r   rJ   ©Úsr   r   r   Ú<lambda>ç   s    z;CompressTestCase.test_big_compress_buffer.<locals>.<lambda>)ri   ©r!   rA   rJ   r   r   r   Útest_big_compress_bufferå   s   z)CompressTestCase.test_big_compress_bufferé   c                 C   s   |   |tj¡ d S rb   )rm   r   rP   )r!   rA   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 ©NrG   r
   r\   )ro   r   rJ   r   rP   )r!   rA   rD   rl   r   r   r   Útest_large_bufsizeî   s   z#CompressTestCase.test_large_bufsizec                 C   s0   t d }t |d¡}|  t |dtƒ ¡|¡ d S r‰   )ro   r   rJ   r   rP   Ú	CustomInt)r!   rD   rl   r   r   r   Útest_custom_bufsizeõ   s   z$CompressTestCase.test_custom_bufsizeì        úrequires 64bit platforméd   r   c                 C   s@   d| }zt  |d¡}|  t  |¡|¡ W d  }}d S d  }}w ©Nrj   r   )r   rJ   r   rP   )r!   rA   rD   Úcompr   r   r   Útest_64bit_compressú   s
   z$CompressTestCase.test_64bit_compressN)r#   r$   r%   rr   rx   r~   r   r   r   r†   rˆ   r   rŠ   rŒ   ÚunittestÚ
skipUnlessr_   r`   r’   r   r   r   r   rn   Á   s    
	



rn   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¡ ts0|  	|| |¡ q||ft|ƒt|ƒffD ])\}}t 
¡ }	|	 || ¡}
|	 ¡ }|  	||
| ¡ |  |	jt¡ |  |	jt¡ q=d S ry   )ro   r   rJ   r|   rT   rZ   rH   rI   r{   r   rX   rP   ÚassertIsInstanceÚunconsumed_tailÚbytesÚunused_data)r!   ZdatasrcZdataziprD   Ú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 )	Nr‡   éôÿÿÿé	   r(   )rt   Úmethodru   ÚmemLevelÚstrategyÚzdict©ru   r¦   )rD   )Ú
max_length)r   rU   Ú
Z_FILTEREDrT   rX   rH   rO   rJ   ro   rP   rZ   r   r   )
r!   rt   r£   ru   r¤   r¥   rš   Údorq   Úyr   r   r   rx     s,   ûÿÿz$CompressObjectTestCase.test_keywordsc                 C   sp   d}t j}d}d}t j}t  |||||¡}| t¡}| ¡ }t  |¡}	|	 || ¡}
|	 ¡ }|  	t|
| ¡ d S )Nr‡   r¡   r¢   )
r   rU   r©   rT   rJ   ro   rZ   rX   rP   r   )r!   rt   r£   ru   r¤   r¥   rš   r›   rœ   r   rž   rŸ   r   r   r   Útest_compressoptions2  s   

z+CompressObjectTestCase.test_compressoptionsc           	   	   C   s’   t d }t ¡ }g }tdt|ƒdƒD ]}| | |||d … ¡¡ q| | ¡ ¡ d |¡}t 	¡ }| 
d |¡¡}| ¡ }|  ||| ¡ d S )Nrz   r   é   r(   )ro   r   rT   Úranger   r   rJ   rZ   ÚjoinrX   rP   r   )	r!   rD   rš   ÚbufsÚiÚcombufr   rž   rŸ   r   r   r   Útest_compressincrementalA  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nq‚|  d|jdt|jƒ ¡ |  d|j¡ |  |d |¡¡ d S )Nrz   r   r(   z"(A) uct should be b'': not %d longTz"(B) uct should be b'': not %d long)ro   r   rT   r®   r   r   rJ   rZ   r¯   rP   r–   r˜   r   rX   r—   r™   )r!   rZ   ÚsourceÚcxÚdcxrD   rš   r°   r±   r²   Zdecombufr   Úchunkr   r   r   Útest_decompincP  sH   


ÿÿ
û
ÿÿz%CompressObjectTestCase.test_decompincc                 C   ó   | j dd d S ©NT)rZ   )r¹   r    r   r   r   Útest_decompincflushy  ó   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 )Nrz   r   r(   úcompressed data failureúchunk too big (%d>%d)úWrong data retrieved©ro   r   rT   r®   r   r   rJ   rZ   r¯   r   rP   rX   ÚassertFalser—   )r!   rµ   r¶   r·   rD   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 )
Nrz   r   r­   r(   r¾   r
   rG   r¿   rÀ   rÁ   )r!   rZ   rD   rš   r°   r±   r²   r   rÃ   r¨   r¸   r   r   r   Útest_decompressmaxlen—  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(   r   )r   rX   rH   rS   rP   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 ©NrG   r
   )ro   ZassertGreaterr   r   rw   rJ   rX   r   rP   r_   r`   ©r!   rD   rl   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 )NrG   r
   r   )ro   r   rJ   rX   r   rP   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   rX   rP   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 ]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_FLUSH)r
   r‡   é   rs   Ú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>é   rG   i¸  z!Error for flush mode={}, level={}r(   z*Decompress failed: flush mode=%i, level=%i)ÚZLIB_RUNTIME_VERSION_TUPLEr   ro   r®   r   rT   rJ   rZ   ÚprintÚformatr   rP   r¯   )
r!   Zsync_optrD   Úsyncrt   ÚobjÚaÚbÚcÚdr   r   r   Útest_flushesØ  s4   


ÿÿÿòÿ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)rg   r   rT   ÚZ_BEST_COMPRESSIONrX   ZWichmannHillÚAttributeErrorÚRandomÚseedrh   rJ   rZ   rÎ   rP   r   )	r!   rg   rš   r   ÚgenrD   Ú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   rT   rã   r,   rZ   rX   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¦   )ro   r   rg   Úshuffler¯   r   rT   rJ   rZ   rX   r   rP   rH   rI   )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   rT   ro   rX   rJ   rZ   rÎ   r   rP   )r!   rš   rª   ZpieceÚd0Úd1Zd2r   r   r   Útest_dictionary_streaming3  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   rP   rH   rI   rX   rZ   )r!   rq   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   rX   rÂ   ÚeofrP   r,   rZ   ©r!   rq   r   r   r   r   Útest_decompress_eofM  s   z*CompressObjectTestCase.test_decompress_eofc                 C   sN   d}t  ¡ }|  |j¡ | |d d… ¡ |  |j¡ | ¡  |  |j¡ d S rø   )r   rX   rÂ   rù   rP   rZ   rú   r   r   r   Ú%test_decompress_eof_incomplete_streamX  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
   r‡   r(   r   )r   rJ   r   rX   r®   r   r™   rP   r—   rZ   r,   rù   )
r!   rµ   Ú	remainderr«   rq   ÚmaxlenÚstepr   rD   r±   r   r   r   Útest_decompress_unused_dataa  s0   
ÿðÿz2CompressObjectTestCase.test_decompress_unused_datac                 C   s\   d}t jt j |d}| |¡| ¡  }t jt j |d}| |¡| ¡  }|  ||¡ d S )Nrý   r§   )r   rT   rV   rJ   rZ   rX   rP   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   rJ   rX   rP   r   rZ   )r!   Zinput1Zinput2rD   r   r   r   r   Útest_flush_with_freed_input„  s   

z2CompressObjectTestCase.test_flush_with_freed_inputr
   r€   c                 C   sF   t d }t |d¡}t ¡ }| |d¡ |  | |¡|dd … ¡ d S rÈ   )ro   r   rJ   rX   rP   r   rZ   )r!   rA   ÚinputrD   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È   )ro   r   rJ   rX   rP   r   rZ   r‹   )r!   r  rD   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 rb   ©r   ©rà   r   r   r   r„   ¥  ó    z:CompressObjectTestCase.test_compresscopy.<locals>.<lambda>r(   )ro   r˜   ÚstrÚswapcaser   Údeepcopyr   rT   rã   r   rJ   rZ   r¯   r   rP   )
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 rb   )	r   rT   rJ   ro   rZ   rH   rS   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	  rb   r
  r  r   r   r   r„   Ê  r  z<CompressObjectTestCase.test_decompresscopy.<locals>.<lambda>é    r(   )ro   r   rJ   r–   r˜   r   r  rX   r   rP   r¯   r   )
r!   rD   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 rb   )
r   rJ   ro   rX   rP   rZ   rH   rS   r   r  )r!   rD   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   ƒ n1 s&w   Y  qd S r   )
r®   ÚpickleÚHIGHEST_PROTOCOLrH   rO   ÚPicklingErrorÚdumpsr   rT   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   ƒ n1 s$w   Y  qd S r   )	r®   r  r  rH   rO   r  r  r   rX   r  r   r   r   Útest_decompresspickleë  s   ÿ€ÿz,CompressObjectTestCase.test_decompresspicklerf   rs   c                    s&   t  d¡‰ ‡ fdd„}|  ||¡ d S )Nr
   c                    ó   ˆ   | ¡ˆ  ¡  S rb   )rJ   rZ   r‚   r  r   r   r„   õ  ó    zACompressObjectTestCase.test_big_compress_buffer.<locals>.<lambda>)r   rT   ri   r…   r   r  r   r†   ò  s   
z/CompressObjectTestCase.test_big_compress_bufferr‡   c                    s$   t  ¡ ‰ ‡ fdd„}|  ||¡ d S )Nc                    r#  rb   )rP   rZ   r‚   ©rá   r   r   r„   û  r$  zCCompressObjectTestCase.test_big_decompress_buffer.<locals>.<lambda>)r   rX   rm   )r!   rA   rP   r   r%  r   rˆ   ø  s   z1CompressObjectTestCase.test_big_decompress_bufferr   rŽ   r   r   c                 C   sl   d| }t  d¡}t  ¡ }z!| |¡| ¡  }| |¡| ¡  }|  ||¡ W d  } }}d S d  } }}w r   )r   rT   rX   rJ   rZ   rP   r   )r!   rA   rD   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 )Nr8   rj   )r   rJ   rX   rP   rZ   r   r™   )r!   rA   rD   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 )Nrj   r   r
   r(   )r   rX   rJ   rP   rZ   r   r—   )r!   rA   rD   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¡ |r*|  t |d¡t¡ |  t |d¡t¡ |  tj	d¡ t |d¡ W d   ƒ n1 sLw   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‡   rs   rÑ   r
   r\   )rt   ru   r   é/   zinvalid window sizeé   )ru   r¢   é)   iñÿÿÿi÷ÿÿÿé   )rÙ   r   rT   rJ   ro   rZ   r   rP   r]   rI   rX   )	r!   Zsupports_wbits_0rš   Zzlib15r   Zzlib9Z	deflate15Zdeflate9Úgzipr   r   r   Ú
test_wbits&  sT   ÿÿ
z!CompressObjectTestCase.test_wbits)FNr­   r´   )Nr­   r´   )F)4r#   r$   r%   r    rx   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ˆ   r_   r`   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×   \  s    z choose_lines.<locals>.<listcomp>)ræ   r   r®   )rµ   Únumberræ   r4  r   r3  r   Úchoose_linesW  s
   

r6  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%   r7  r   r   r   r   r‹      s    r‹   Ú__main__)*r“   Útestr   Ztest.supportr   r=   r   Úosr  rg   r_   r   r   r   Úimport_moduler   r”   rÓ   rT   r.  rX   r/  r   r   rÙ   r   Úmachiner{   ZTestCaser   r&   r@   rF   Úobjectre   rn   r•   r6  ro   r‹   r#   Úmainr   r   r   r   Ú<module>   sN    
þþ
.	3D    VAÿ