
    <e                         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j        d          Z e j         ee                                d          d          Z e j         ee                                d          d          Z e j         eed	          o ej                    j        d
k    d          Z G d de j                  Z G d de j                  Z G d de j                  Z G d de j                  Z G d de          Z  G d de e j                  Z! G d de e j                  Z"de	fdZ#dZ$ G d d          Z%e&dk    r e j'                     dS dS )    N)support)import_helper)
bigmemtest_1G_4Gzlibcopyzrequires Compress.copy()zrequires Decompress.copy()unames390xzskipped on s390xc                       e Zd Zd ZdS )VersionTestCasec                 r    |                      t          j        d         t          j        d                    d S )Nr   )assertEqualr   ZLIB_RUNTIME_VERSIONZLIB_VERSIONselfs    %/usr/lib/python3.11/test/test_zlib.pytest_library_versionz$VersionTestCase.test_library_version6   s0     	215t7H7KLLLLL    N)__name__
__module____qualname__r    r   r   r   r   4   s(        M M M M Mr   r   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	ChecksumTestCasec                     |                      t                              d          t                              dd                     |                     t                              dd                     d S )Nr   r      abc    )r   r   crc32
assertTruer   s    r   test_crc32startz ChecksumTestCase.test_crc32startA   sV    C$**S!*<*<===

6:6677777r   c                     |                      t                              dd          d           |                      t                              dd          d           |                      t                              dd          d           d S Nr   r      i  )r   r   r    r   s    r   test_crc32emptyz ChecksumTestCase.test_crc32emptyE   st    C++Q///C++Q///C--s33333r   c                     |                      t                              d          t                              dd                     |                     t                              dd                     d S )Nr   r%   r   r   )r   r   adler32r!   r   s    r   test_adler32startz"ChecksumTestCase.test_adler32startJ   sX    c**DLLa,@,@AAAVZ8899999r   c                     |                      t                              dd          d           |                      t                              dd          d           |                      t                              dd          d           d S r$   )r   r   r(   r   s    r   test_adler32emptyz"ChecksumTestCase.test_adler32emptyN   st    c1--q111c1--q111c3//55555r   c                    |                      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%   iCiir   r   r    r(   r   s    r   test_penguinszChecksumTestCase.test_penguinsS   s    J22K@@@J22J???j!44jAAAj!44jAAAJ//J1J1JKKKj11$,,z!2L2LMMMMMr   c                    d}|                      t                              |          d           |                      t                              d          d           |                      t                              ||z             d           |                      t                              d          d           d S )N   abcdefghijklmnop   @u(    spami=Cl    * iOr-   )r   foos     r   test_crc32_adler32_unsignedz,ChecksumTestCase.test_crc32_adler32_unsigned\   s    !C*555G,,j999c#g..
;;;g..99999r   c                 :   d}d}|                      t          j        |          |           |                      t                              |          |           |                      t          j        d          t                              d                     d S )Nr0   r1   r2   )r   binasciir    r   )r   r3   crcs      r   test_same_as_binascii_crc32z,ChecksumTestCase.test_same_as_binascii_crc32d   s~    !,,c222C#...00$**W2E2EFFFFFr   N)
r   r   r   r"   r&   r)   r+   r.   r4   r8   r   r   r   r   r   ?   s        8 8 84 4 4
: : :6 6 6
N N N: : :G G G G Gr   r   c                   B    e Zd Z eedz   dd          d             ZdS )ChecksumBigBufferTestCase   r%   F)sizememusedry_runc                     dt           dz   z  }|                     t                              |          d           |                     t                              |          d           d S )Ns   nyanr%   iM"B>l   a )r   r   r   r    r(   )r   r<   datas      r   test_big_bufferz)ChecksumBigBufferTestCase.test_big_buffero   sZ    #'"D)):666d++Z88888r   N)r   r   r   r   r   rA   r   r   r   r:   r:   m   sC        ZS1WQ6669 9 769 9 9r   r:   c                   l    e Zd Zd Zd Zd Zd Zd Zej	        d             Z
ej	        d             ZdS )	ExceptionTestCasec                 ^    |                      t          j        t          j        dd           d S )Ns   ERROR
   )assertRaisesr   errorcompressr   s    r   test_badlevelzExceptionTestCase.test_badlevelx   s(     	$*dmXrBBBBBr   c                 t   |                      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        |           d S )N*    abcr   )rF   	TypeErrorr   r(   r    rH   
decompress)r   args     r   test_badargszExceptionTestCase.test_badargs~   s    )T\222)TZ000)T]333)T_555b%R0 	? 	?Cis;;;iS999i<<<i#>>>>		? 	?r   c                     |                      t          t          j        dt          j        d           |                      t          t          j        dt          j        t          j        dz              d S )Nr%   r   )rF   
ValueErrorr   compressobjDEFLATED	MAX_WBITSr   s    r   test_badcompressobjz%ExceptionTestCase.test_badcompressobj   sa    *d&64=!LLL* !T]DNQ4F	H 	H 	H 	H 	Hr   c                 R    |                      t          t          j        d           d S )N)rF   rS   r   decompressobjr   s    r   test_baddecompressobjz'ExceptionTestCase.test_baddecompressobj   s#    *d&8"=====r   c                     |                      t          t                                          j        d           |                      t          t                                          j        d           d S )Nr   rY   )rF   rS   r   rZ   flushr   s    r   test_decompressobj_badflushz-ExceptionTestCase.test_decompressobj_badflush   sV    *d&8&8&:&:&@!DDD*d&8&8&:&:&@"EEEEEr   c                 r   |                      t          d          5  t                              ddt          j        dz              d d d            n# 1 swxY w Y   |                      t          d          5  t                                                              dt          j        dz              d d d            n# 1 swxY w Y   |                      t          d          5  t                                                              t          j        dz              d d d            d S # 1 swxY w Y   d S )Nzint too larger      r%   )assertRaisesRegexOverflowErrorr   rO   sysmaxsizerZ   r]   r   s    r   test_overflowzExceptionTestCase.test_overflow   s   ##M?CC 	6 	6OOCS[1_555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6##M?CC 	B 	B  ++CqAAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B##M?CC 	8 	8  &&s{Q777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s5   *AAA8;B??CC%:D,,D03D0c                     t          j        | t          t                                                               t          j        | t          t                                                               d S N)r   check_disallow_instantiationtyper   rT   rZ   r   s    r   test_disallow_instantiationz-ExceptionTestCase.test_disallow_instantiation   sX     	,T48H8H8J8J3K3KLLL,T48J8J8L8L3M3MNNNNNr   N)r   r   r   rI   rQ   rW   r[   r^   r   cpython_onlyre   rj   r   r   r   rC   rC   v   s        C C C	? 	? 	?H H H> > >F F F
 8 8 8 O O O O Or   rC   c                       e Zd Zd Zd ZdS )BaseCompressTestCasec                     d}t          j        |dz            }||t          |          z  dz   z  }	  ||           d }d S # d }w xY w)N   rE   r%   )random	randbyteslen)r   r<   compress_func_1Mr@   s        r   check_big_compress_bufferz.BaseCompressTestCase.check_big_compress_buffer   sd     b))ts4yy(1,-	M$ DDD4DKKKKs   A Ac                 8   d|z  }	 t                               |d          }d }n# d }w xY w ||          }	 |                     t          |          |           |                     t          |                    d                    d           d }d S # d }w xY w)N   xr%   r   )r   rH   r   rr   strip)r   r<   decompress_funcr@   
compresseds        r   check_big_decompress_bufferz0BaseCompressTestCase.check_big_decompress_buffer   s    d{	tQ//J DD4DKKKKz**	SYY---SD!1!122A666DDD4DKKKKs   % )AB BN)r   r   r   ru   r{   r   r   r   rm   rm      s2              r   rm   c                   >   e Zd Zd Zd Zed             Zd Z ee	dz   d          d             Z
 ee	dz   d	          d
             Z eed          d             Zd Z ej        ej        dk    d           eedz   d          d                         ZdS )CompressTestCasec                     t                               t                    }|                     t                               |          t                     d S rg   )r   rH   HAMLET_SCENEr   rO   r   xs     r   test_speechzCompressTestCase.test_speech   s;    MM,''++\:::::r   c                    t                               t          d          }|                     t                               |          t                     |                     t                    5  t                               t          d           d d d            n# 1 swxY w Y   |                     t                               |t           j        t           j                  t                     d S )N   )level)r@   r   )wbitsbufsize)	r   rH   r   r   rO   rF   rN   rV   DEF_BUF_SIZEr   s     r   test_keywordszCompressTestCase.test_keywords   s   MM,aM00++\:::y)) 	6 	6MM|1M555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6/3~151B ) D D &	' 	' 	' 	' 	's   /"BB!$B!c                 H   t           dz  }t                              |          }|                     t                              t	          |                    |           |t	          |          fD ]0}|                     t                              |          |           1d S N   )r   r   rH   r   	bytearrayrO   )r   r@   r   obs       r   test_speech128zCompressTestCase.test_speech128   s     c!MM$y77;;;Yq\\/ 	8 	8BT__R00$7777	8 	8r   c                     t                               t                    }|                     t           j        dt           j        |d d                    d S )NzAError -5 while decompressing data: incomplete or truncated streamrY   )r   rH   r   ra   rG   rO   r   s     r   test_incomplete_streamz'CompressTestCase.test_incomplete_stream   sK    MM,''tzOOQssV	% 	% 	% 	% 	%r   ro   r   r<   r=   c                 8    d }|                      ||           d S )Nc                 8    t                               | d          S Nr%   )r   rH   )ss    r   <lambda>z;CompressTestCase.test_big_compress_buffer.<locals>.<lambda>   s    T]]1a00 r   )ru   )r   r<   rH   s      r   test_big_compress_bufferz)CompressTestCase.test_big_compress_buffer   s&    00&&tX66666r      c                 F    |                      |t          j                   d S rg   )r{   r   rO   )r   r<   s     r   test_big_decompress_bufferz+CompressTestCase.test_big_decompress_buffer   s     ((t?????r   r%   c                     t           dz  }t                              |d          }|                     t                              |d|          |           d S NrE   r%   r`   )r   r   rH   r   rO   )r   r<   r@   rz   s       r   test_large_bufsizez#CompressTestCase.test_large_bufsize   sM     b ]]4++
R>>EEEEEr   c                     t           dz  }t                              |d          }|                     t                              |dt                                |           d S r   )r   r   rH   r   rO   	CustomInt)r   r@   rz   s      r   test_custom_bufsizez$CompressTestCase.test_custom_bufsize   sO    b ]]4++
REEtLLLLLr           requires 64bit platformd   r;   c                     d|z  }	 t                               |d          }|                     t                               |          |           d x}}d S # d x}}w xY wNrw   r   )r   rH   r   rO   )r   r<   r@   comps       r   test_64bit_compressz$CompressTestCase.test_64bit_compress   sk     d{	==q))DT__T22D999D444$D4s   A	A AN)r   r   r   r   r   skip_on_s390xr   r   r   r   r   r   r   r   r   unittest
skipUnlessrc   rd   r   r   r   r   r}   r}      sQ       ; ; ;' ' ' 8 8 ]8% % % ZS;&q1117 7 217 ZS;&q111@ @ 21@ ZS###F F $#FM M M
 Xu,.GHHZS3Yq)))  *) IH  r   r}   c                   L   e Zd Zed             Zd Zd Zd Zd7d	Zd
 Z	d8dZ
d9dZd Zd Zd Zd Zd Zd Z ej         eed          d          d             Zd Zd Zd Zd Zd Zd Zd Zd Zd Z e e!d           d!             Z"d" Z#e$d#             Z%e$d$             Z&e'd%             Z(e'd&             Z)d' Z*d( Z+ e e,d)z   d*           d+             Z- e e,d)z   d,           d-             Z. ej        e/j0        d.k    d/           e e!d0z   d1           d2                         Z1 ej        e/j0        d.k    d/           e e!d0z   d*           d3                         Z2 ej        e/j0        d.k    d/           e e!d0z   d4           d5                         Z3d6 Z4dS ):CompressObjectTestCasec                    t           dz  }t                              |          }|t          |          fD ]}t                                          }|                    |          }|                                }|                     t          j        |j                   |                     ||z   |           ||ft          |          t          |          ffD ]\  }}t          	                                }	|	
                    ||z             }
|	                                }|                     ||
|z              |                     |	j        t                     |                     |	j        t                     d S r   )r   r   rH   r   rT   r]   rF   rG   r   rZ   rO   assertIsInstanceunconsumed_tailbytesunused_data)r   datasrcdatazipr@   cox1x2v1v2dcoy1y2s               r   	test_pairz CompressObjectTestCase.test_pair  sY    $--((i001 	/ 	/D!!##BT""BBdj"(333R"Wg....Bx)B--2!?@ 	: 	:FB$$&&CR((BBT27+++!!#"5u===!!#/59999	: 	:r   c                 .   d}t           j        }d}d}t           j        }t                               |||||d          }t                               |d          }|                     t                    5  |                    t                     d d d            n# 1 swxY w Y   |                     t                    5  |	                    t                               t                               d d d            n# 1 swxY w Y   |                    t                    |
                                z   }|	                    |t          t                              |
                                z   }	|                     t          |	           d S )	Nr   	   r   )r   methodr   memLevelstrategyzdictr   r   )r@   )
max_length)r   rU   
Z_FILTEREDrT   rZ   rF   rN   rH   r   rO   r]   rr   r   )
r   r   r   r   r   r   r   dor   ys
             r   r   z$CompressObjectTestCase.test_keywords  s   ?E%+$)'/'/$'  ) ) e377y)) 	+ 	+KK\K***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+y)) 	< 	<MMt}}\::M;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<KK%%

2MM!L(9(9M::RXXZZGq)))))s$   5BB!$B!4DD	Dc                    d}t           j        }d}d}t           j        }t                               |||||          }|                    t
                    }|                                }t                               |          }	|	                    ||z             }
|	                                }| 	                    t
          |
|z              d S )Nr   r   r   )
r   rU   r   rT   rH   r   r]   rZ   rO   r   )r   r   r   r   r   r   r   r   r   r   r   r   s               r   test_compressoptionsz+CompressObjectTestCase.test_compressoptions4  s    ?eVUHhGG[[&&XXZZ  ''^^BG$$YY[[rBw/////r   c           	      L   t           dz  }t                                          }g }t          dt	          |          d          D ]5}|                    |                    |||dz                                 6|                    |                                           d                    |          }t          	                                }|
                    d                    |                    }|                                }|                     |||z              d S )Nr   r      r   )r   r   rT   rangerr   appendrH   r]   joinrZ   rO   r   )	r   r@   r   bufsicombufr   r   r   s	            r   test_compressincrementalz/CompressObjectTestCase.test_compressincrementalC  s    c!q#d))S)) 	4 	4AKKD1S5M223333BHHJJ$  ""^^CHHTNN++YY[[rBw'''''r   FNr   @   c           	      "   |pt           }|dz  }t                                          }g }t          dt	          |          |          D ]5}|                    |                    ||||z                                 6|                    |                                           d                    |          }	t          	                    |	          }
| 
                    |
t                     |                     ||
           t                                          }g }t          dt	          |	          |          D ]}|                    |	                    |	|||z                                 |                     d|j        dt	          |j                  z             |                     d|j                   |r(|                    |                                           n0	 |	                    d          }|r|                    |           nn/|                     d|j        dt	          |j                  z             |                     d|j                   |                     |d                    |                     d S )Nr   r   r   z"(A) uct should be b'': not %d longTz"(B) uct should be b'': not %d long)r   r   rT   r   rr   r   rH   r]   r   rO   r   r   r   rZ   r   r   )r   r]   sourcecxdcxr@   r   r   r   r   decombufr   chunks                r   test_decompincz%CompressObjectTestCase.test_decompincR  sq   '<|q#d))R(( 	3 	3AKKD1R4L112222BHHJJ$??6**h...x(((  ""q#f++s++ 	3 	3AKKva#g77888S#"5A'*3+>'?'?@A A A S#/2222 	KK		$$$$s++ KK&&&& 	c1='*3+>'?'?@	A 	A 	A 	co...sxx~~.....r   c                 2    |                      d           d S NT)r]   )r   r   s    r   test_decompincflushz*CompressObjectTestCase.test_decompincflush{  s    $'''''r   c           	         |pt           }|dz  }t                                          }g }t          dt	          |          |          D ]5}|                    |                    ||||z                                 6|                    |                                           d                    |          }| 	                    |t          
                    |          d           t                                          }	g }|}
|
rm|	
                    |
|          }|                     t	          |          |k    dt	          |          |fz             |                    |           |	j        }
|
m|                    |	                                           | 	                    |d                    |          d           d S )Nr   r   r   compressed data failurechunk too big (%d>%d)Wrong data retrievedr   r   rT   r   rr   r   rH   r]   r   r   rO   rZ   assertFalser   )r   r   r   r   r@   r   r   r   r   r   cbr   s               r   test_decompimaxz&CompressObjectTestCase.test_decompimax~  s   '<|q#d))R(( 	3 	3AKKD1R4L112222BHHJJ$tv662	4 	4 	4   "" 	%NN2s++ESZZ#-+s5zz3.??A A AKK$B  	% 	CIIKK   sxx~~/EFFFFFr   c           	         t           dz  }t                                          }g }t          dt	          |          d          D ]5}|                    |                    |||dz                                 6|                    |                                           d                    |          }| 	                    |t          
                    |          d           t                                          }g }|}|rdt	          |          dz  z   }	|
                    ||	          }
|                     t	          |
          |	k    dt	          |
          |	fz             |                    |
           |j        }||r(|                    |                                           nh|
rf|
                    d|	          }
|                     t	          |
          |	k    dt	          |
          |	fz             |                    |
           |
f| 	                    |d                    |          d	           d S )
Nr   r   r   r   r   r%   rE   r   r   r   )r   r]   r@   r   r   r   r   r   r   r   r   s              r   test_decompressmaxlenz,CompressObjectTestCase.test_decompressmaxlen  s2   c!q#d))S)) 	4 	4AKKD1S5M223333BHHJJ$tv662	4 	4 	4   "" 	%SWWb[JNN2z22ESZZ*4/3u::j2IIK K KKK$B  	%  	#KK		$$$$ #sJ77  Uj!83s5zz*6MMO O OE"""	  #
 	sxx~~/EFFFFFr   c                 2    |                      d           d S r   )r   r   s    r   test_decompressmaxlenflushz1CompressObjectTestCase.test_decompressmaxlenflush  s    """.....r   c                     t                                           }|                     t          |j        dd           |                     d|j                   d S )Nr   rY   )r   rZ   rF   rS   rO   r   r   )r   r   s     r   test_maxlenmiscz&CompressObjectTestCase.test_maxlenmisc  sN      ""*cnc2>>>c122222r   c                 D   t           dz  }|                     t          |          t          j                   t                              |d          }t                                          }|                     |                    |t          j
                  |           d S NrE   r%   )r   assertGreaterrr   r   r   rH   rZ   r   rO   rc   rd   r   r@   rz   r   s       r   test_maxlen_largez(CompressObjectTestCase.test_maxlen_large  s}     b 3t99d&7888]]4++
  ""
CK@@$GGGGGr   c                     t           dz  }t                              |d          }t                                          }|                     |                    |t                                |d d                    d S )NrE   r%   r   )r   r   rH   rZ   r   rO   r   r   s       r   test_maxlen_customz)CompressObjectTestCase.test_maxlen_custom  sf    b ]]4++
  ""
IKK@@$tt*MMMMMr   c                     d}t                                           }|                    |d          }||                    |j                  z  }|                     |j        d           d S )Ns
   xKLJ Mr%   r   )r   rZ   rO   r   r   )r   cdatar   ddatas       r   test_clear_unconsumed_tailz1CompressObjectTestCase.test_clear_unconsumed_tail  se     -  ""ua(( 3444,c22222r   c                    g d}t          d t          j                            d          D                       }|dk    r|                    d           d |D             }t
          dz  }|D ]	}t          d          D ]}	 t                              |          }|                    |d d	                   }|	                    |          }|                    |d	d                    }	|	                                }
n)#  t          d
                    ||                      xY w|                     t                              d                    |||	|
g                    |d||fz             ~d S )N)
Z_NO_FLUSHZ_SYNC_FLUSHZ_FULL_FLUSHZ_PARTIAL_FLUSHc              3   4   K   | ]}t          |          V  d S rg   )int).0vs     r   	<genexpr>z6CompressObjectTestCase.test_flushes.<locals>.<genexpr>  s(      IIqCFFIIIIIIr   .)r%   r      r   Z_BLOCKc                 b    g | ],}t          t          |          t          t          |          -S r   )hasattrr   getattr)r   opts     r   
<listcomp>z7CompressObjectTestCase.test_flushes.<locals>.<listcomp>  s@     + + +3tS))+GD#&& + + +r      rE   i  z!Error for flush mode={}, level={}r   z*Decompress failed: flush mode=%i, level=%i)tupler   r   splitr   r   r   rT   rH   r]   printformatr   rO   r   )r   sync_optverr@   syncr   objabcds              r   test_flushesz#CompressObjectTestCase.test_flushes  s   ' ' ' IID$=$C$CC$H$HIIIII,OOI&&&+ +( + + +a 	 	Dr  	**E33Cd5D5k33A		4))Ad455k33A		AA=!6$..0 0 0  1Qq)1D1D!E!E!% )<@De}(MN N N C	 	s   A=D&D'r   zrequires zlib.Z_SYNC_FLUSHc                 *   dd l }t                              t          j                  }t                                          }	  |j                    }n3# t          $ r& 	  |j                    }n# t          $ r |}Y nw xY wY nw xY w|                    d           |	                    d          }|
                    |          }|                    t          j                  }|                    ||z             }|                     ||d           d S )Nr   r%   i D  z17K random source doesn't match)rp   r   rT   Z_BEST_COMPRESSIONrZ   WichmannHillAttributeErrorRandomseedrq   rH   r]   r   rO   r   )	r   rp   r   r   genr@   firstsecondexpandeds	            r   test_odd_flushz%CompressObjectTestCase.test_odd_flush  s!    	 d566  ""		%&%''CC 	 	 	#fmoo!   		 	}}Y'' D!!$+,,>>%&.11 	4)JKKKKKs6   A 
BA.-B.A=:B<A==BBc                    t                               t           j                  }|                     |                                           t                                           }|                     |                                d           d S )Nr   )r   rT   r  r!   r]   rZ   r   )r   r   r   s      r   test_empty_flushz'CompressObjectTestCase.test_empty_flush  si    
 d566

###  ""c*****r   c                 H   t           }|                                }t          j        |           d                    |          }t
                              |          }|                    |          |                                z   }t
          	                    |          }| 
                    |                    |          |                                z   |           t
          	                                }|                     t
          j        |j        |           d S )Nr   r   )r   r  rp   shuffler   r   rT   rH   r]   rZ   r   rO   rF   rG   )r   hwordsr   r   cdr   s          r   test_dictionaryz&CompressObjectTestCase.test_dictionary&  s    		uE**[[^^bhhjj(  u --++ciikk91===  ""$*cnb99999r   c                    t                               t                    }t                               t                    }t          dd         }|                    |          |                    t           j                  z   }|                    |dd                    |                    t           j                  z   }|                    |d d                   |                    t           j                  z   }|                     |                    |          |           |                     |                    |          |dd                     |                     |                    |          |d d                    d S )Nr'    i  r   i)	r   rT   r   rZ   rH   r]   r   r   rO   )r   r   r   pieced0d1d2s          r   test_dictionary_streamingz0CompressObjectTestCase.test_dictionary_streaming6  s9    L11l33T$Y'[["((4+<"="==[[stt%%1B(C(CC[[uu&&$2C)D)DDr**E222r**E#$$K888r**E%4%L99999r   c                    d}|                      t                              |          d           |                     t          j        t          j        |d d                    t                                          }|                    |d d                   }||                                z  }|                      |d           d S )N   xK Es   foo)r   r   rO   rF   rG   rZ   r]   )r   r   r   r   s       r   !test_decompress_incomplete_streamz8CompressObjectTestCase.test_decompress_incomplete_streamC  s    2++V444$*doq"v>>>   ""NN1SbS6""	SYY[[F#####r   c                    d}t                                           }|                     |j                   |                    |d d                    |                     |j                   |                    |dd                     |                     |j                   |                                 |                     |j                   d S Nr5  r6  )r   rZ   r   eofrO   r!   r]   r   r   r   s      r   test_decompress_eofz*CompressObjectTestCase.test_decompress_eofP  s    2  ""!!!q"v!!!qv   		     r   c                 :   d}t                                           }|                     |j                   |                    |d d                    |                     |j                   |                                 |                     |j                   d S r9  )r   rZ   r   r:  rO   r]   r;  s      r   %test_decompress_eof_incomplete_streamz<CompressObjectTestCase.test_decompress_eof_incomplete_stream[  s    2  ""!!!q"v!!!		!!!!!r   c                 T   d}d}t                               |          }||z   }dD ]}ddt          |          t          |          fD ][}t                                           }d}t	          dt          |          |          D ]}	|	t          |          k     r|                     |j        d           |dk    r?||                    ||	|	|z                      z  }|                     |j        d           u||                    |j        ||	|	|z            z   |          z  }||	                                z  }| 
                    |j                   |                     ||           |                     |j        d           |                     |j        |           ]d S )N   abcdefghijklmnopqrstuvwxyzs
   0123456789)r   r.  r%   r   r   r   )r   rH   rr   rZ   r   r   r   rO   r   r]   r!   r:  )
r   r   	remainderr   r   maxlenstepr   r@   r   s
             r   test_decompress_unused_dataz2CompressObjectTestCase.test_decompress_unused_datad  s    /!	MM&!!	M 	= 	=F1c!ffc!ff, = =((**q#a&&$// O OA3q66zz((#>>>{{qQX ? ??(()<cBBBB # 3aAHo Ev!O !O O		#(((  v...  !4c:::  )<<<<!=	= 	=r   c                 z   d}t                               t           j         |          }|                    |          |                                z   }t                               t           j         |          }|                    |          |                                z   }|                     ||           d S )Nr@  r   )r   rT   rV   rH   r]   rZ   rO   r   )r   r   r   r   r   uncomps         r   #test_decompress_raw_with_dictionaryz:CompressObjectTestCase.test_decompress_raw_with_dictionary  s    -T^O5AA{{5!!BHHJJ.  e DD%%		3'''''r   c                 6   d}d}t                               |          }t                                           }|                    |d           ~t                               |          }|                     |                                |dd                     d S )Nr@  s   QWERTYUIOPASDFGHJKLZXCVBNMr%   )r   rH   rZ   rO   r   r]   )r   input1input2r@   r   s        r   test_flush_with_freed_inputz2CompressObjectTestCase.test_flush_with_freed_input  s     /.}}V$$  ""tQ}}V$$fQRRj11111r   r%   r   c                    t           dz  }t                              |d          }t                                          }|                    |d           |                     |                    |          |dd                     d S r   )r   r   rH   rZ   rO   r   r]   )r   r<   inputr@   r   s        r   test_flush_large_lengthz.CompressObjectTestCase.test_flush_large_length  st     r!}}UA&&  ""tQ4%)44444r   c                 (   t           dz  }t                              |d          }t                                          }|                    |d           |                     |                    t                                |dd                     d S r   )r   r   rH   rZ   rO   r   r]   r   )r   rM  r@   r   s       r   test_flush_custom_lengthz/CompressObjectTestCase.test_flush_custom_length  sx    r!}}UA&&  ""tQ9;;//qrr;;;;;r   c                    t           }t          t          t           d                                          d          }d t          j        t          j        fD ]}t                              t          j                  }g }|	                    |
                    |                      ||          }|d d          }|	                    |
                    |                     |	                    |                                           d                    |          }|	                    |
                    |                     |	                    |                                           d                    |          }	|                     t                              |          ||z              |                     t                              |	          ||z              d S )Nasciic                 *    |                                  S rg   r	   r  s    r   r   z:CompressObjectTestCase.test_compresscopy.<locals>.<lambda>      affhh r   r   )r   r   strswapcaser	   deepcopyr   rT   r  r   rH   r]   r   r   rO   )
r   data0data1funcc0bufs0c1bufs1s0s1s
             r   test_compresscopyz(CompressObjectTestCase.test_compresscopy  s    c,0099;;WEE&&	4=@ 	> 	>D!!$"9::BELLU++,,,bB!!!HELLU++,,,LL$$$%BLLU++,,,LL$$$%BT__R00u===T__R00u====#	> 	>r   c                 l   t                                           }|                    t                     |                                 |                     t          |j                   |                     t          t          j        |           |                     t          t          j        |           d S rg   )	r   rT   rH   r   r]   rF   rS   r	   rY  )r   r  s     r   test_badcompresscopyz+CompressObjectTestCase.test_badcompresscopy  s     	

<   				*af---*di333*dmQ77777r   c                    t           }t                              |          }|                     |t                     d t
          j        t
          j        fD ]}t                                          }g }|                    |	                    |d d                               ||          }|d d          }|                    |	                    |dd                               d
                    |          }|                    |	                    |dd                               d
                    |          }	|                     ||	           |                     ||           d S )Nc                 *    |                                  S rg   rT  rU  s    r   r   z<CompressObjectTestCase.test_decompresscopy.<locals>.<lambda>  rV  r       r   )r   r   rH   r   r   r	   rY  rZ   r   rO   r   r   )
r   r@   r   r\  r0  r^  r1  r`  ra  rb  s
             r   test_decompresscopyz*CompressObjectTestCase.test_decompresscopy  sF    }}T""dE***&&	4=@ 	& 	&D##%%BELLtCRCy11222bB!!!HELLtBCCy11222%BLLtBCCy11222%BR###R%%%%	& 	&r   c                    t                               t                    }t                                           }|                    |           |                                 |                     t          |j                   |                     t          t          j        |           |                     t          t          j	        |           d S rg   )
r   rH   r   rZ   rO   r]   rF   rS   r	   rY  )r   r@   r  s      r   test_baddecompresscopyz-CompressObjectTestCase.test_baddecompresscopy  s     }}\**  	T				*af---*di333*dmQ77777r   c                 .   t          t          j        dz             D ]w}|                     t          t          j        f          5  t          j        t                              t          j	                  |           d d d            n# 1 swxY w Y   xd S r   )
r   pickleHIGHEST_PROTOCOLrF   rN   PicklingErrordumpsr   rT   r  r   protos     r   test_compresspicklez*CompressObjectTestCase.test_compresspickle  s    62Q677 	O 	OE""Iv/C#DEE O OT--d.EFFNNNO O O O O O O O O O O O O O O	O 	Os   8B		B	B	c                    t          t          j        dz             D ]l}|                     t          t          j        f          5  t          j        t                                          |           d d d            n# 1 swxY w Y   md S r   )	r   rm  rn  rF   rN   ro  rp  r   rZ   rq  s     r   test_decompresspicklez,CompressObjectTestCase.test_decompresspickle  s    62Q677 	: 	:E""Iv/C#DEE : :T//115999: : : : : : : : : : : : : : :	: 	:s   -A>>B	B	ro   r   c                 r    t                               d          fd}|                     ||           d S )Nr%   c                 X                         |                                           z   S rg   )rH   r]   )r   r  s    r   r   zACompressObjectTestCase.test_big_compress_buffer.<locals>.<lambda>  s    QZZ]]QWWYY6 r   )r   rT   ru   )r   r<   rH   r  s      @r   r   z/CompressObjectTestCase.test_big_compress_buffer  s@    Q6666&&tX66666r   r   c                 p    t                                           fd}|                     ||           d S )Nc                 X                         |                                           z   S rg   )rO   r]   )r   r  s    r   r   zCCompressObjectTestCase.test_big_decompress_buffer.<locals>.<lambda>  s    q||A: r   )r   rZ   r{   )r   r<   rO   r  s      @r   r   z1CompressObjectTestCase.test_big_decompress_buffer  s>      ::::
((z:::::r   r   r   r   r;   c                 n   d|z  }t                               d          }t                                           }	 |                    |          |                                z   }|                    |          |                                z   }|                     ||           d x}x}}d S # d x}x}}w xY wr   )r   rT   rZ   rH   r]   rO   r   )r   r<   r@   r   r   r   rF  s          r   r   z*CompressObjectTestCase.test_64bit_compress  s     d{a  !!	(;;t$$rxxzz1D]]4((288::5FVT***#''D'6DDD4'D'6D''''s   A*B, ,B4c                 Z   d}d|z  }t                               |          |z   }t                                           }	 |                    |          |                                z   }|                     ||j                   |                     ||           d x}x}}d S # d x}x}}w xY w)Nr0   rw   )r   rH   rZ   rO   r]   r   r   )r   r<   r@   unusedr   r   rF  s          r   test_large_unused_dataz-CompressObjectTestCase.test_large_unused_data  s     #}}T""V+!!	&]]4((288::5FVR^444VT***!%%F%TBBB%F%TB%%%%s   AB" "B*r  c                 T   d|z  }t                                           }	 t                               |d          }|                    |d          |                                z   }|                     ||           |                     |j        d           d x}x}}d S # d x}x}}w xY w)Nrw   r   r%   r   )r   rZ   rH   rO   r]   r   r   )r   r<   r@   r   r   rF  s         r   test_large_unconsumed_tailz1CompressObjectTestCase.test_large_unconsumed_tail  s     d{!!	(==q))D]]4++bhhjj8FVT***R/555#''D'6DDD4'D'6D''''s   A7B B'c                    t           j                            dd          d                             d          }t          |          dk     r|                    d           n|d                                         sd|d<   t          t          t          |                    }|dk    }t           	                    dd	
          }|
                    t                    |                                z   }|                     t                               |d	          t                     |r4|                     t                               |d          t                     |                     t                               |d          t                     |                     t           j        d          5  t                               |d           d d d            n# 1 swxY w Y   t                               d          }|                     |                    |          t                     t                               d          }|                     t           j        d          5  |                    |           d d d            n# 1 swxY w Y   t           	                    dd
          }|
                    t                    |                                z   }|                     t                               |d          t                     |                     t                               |d	          t                     |r4|                     t                               |d          t                     |                     t                               |d          t                     t                               d          }|                     |                    |          t                     t           	                    dd
          }|
                    t                    |                                z   }|                     t                               |d          t                     t                               d          }|                     |                    |          t                     t           	                    dd
          }|
                    t                    |                                z   }|                     t                               |d          t                     |                     t                               |d          t                     t                               d          }|                     |                    |          t                     t           	                    dd
          }|
                    t                    |                                z   }	|                     t                               |	d          t                     |                     t                               |	d          t                     t                               d          }|                     |                    |	          t                     dD ]}
|                     |
          5  t          }t                               t           
                    t          |
          |
          }|                     ||           d d d            n# 1 swxY w Y   d S )N-r%   r   r  r;   0rY   )r%   r   r   r  r`   )r   r   /   zinvalid window size   )r   r   )   i   )r  r`   r  )r   r   r  rr   r   	isnumericr  mapr   rT   rH   r   r]   r   rO   ra   rG   rZ   subTest)r   r  supports_wbits_0r   zlib15r   zlib9	deflate15deflate9gzipr   expectedactuals                r   
test_wbitsz!CompressObjectTestCase.test_wbits)  sZ    %++C33A6<<SAAq66A::HHSMMMM2"" 	AbE#c1++,AR00\**RXXZZ744lCCC 	GT__VQ77FFF99<HHH##DJ0EFF 	( 	(OOFB'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(  w ////>>>  r **##DJ0EFF 	# 	#NN6"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# AQ//L))BHHJJ622LAAA33\BBB 	FT__UA66EEE77FFF  v ....===AS11KK--

:	C88,GGG  s ++	22LAAAAR00;;|,,rxxzz9266EEE377FFF  r **11<@@@AW55{{<((288::5w77FFFw77FFF  ))--|<<<" 	3 	3EE** 3 3'MM,eM<<E )     62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3s7   3GG"G*JJJA\;;\?	\?	)FNr   r   )Nr   r   )F)5r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r  r   r#  r%  r,  r3  r7  r<  r>  rD  rG  rK  r   r   rN  rP  requires_Compress_copyrc  re  requires_Decompress_copyri  rk  rs  ru  r   r   r   rc   rd   r   r}  r  r  r   r   r   r   r   	  s	       : : ]:&* * **0 0 0( ( (&/ &/ &/ &/R( ( (G G G G6G G G G@/ / /3 3 3H H HN N N3 3 3  @ X~6657 7L L7 7L@+ + +: : : : : :$ $ $	! 	! 	!" " "= = =6( ( (
2 
2 
2 ZS###5 5 $#5< < < > > >. 8 8 8 & & &0 8 8 8O O O
: : : ZS;&q1117 7 217
 ZS;&q111; ; 21;
 Xu,.GHHZS3Yq)))	( 	( *) IH	( Xu,.GHHZS3Yq)))
& 
& *) IH
& Xu,.GHHZS3Yq)))	( 	( *) IH	(?3 ?3 ?3 ?3 ?3r   r   c                     |                     |           |                     d          fdt          |          D             S )z=Return a list of number lines randomly chosen from the sourceN
c                 :    g | ]}                               S r   )choice)r   n	generatorsourcess     r   r
  z choose_lines.<locals>.<listcomp>o  s'    ===!IW%%===r   )r  r  r   )r   numberr  r  r  s      `@r   choose_linesr  j  sP    tll4  G=====uV}}====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                       e Zd Zd ZdS )r   c                     dS )Nr   r   r   s    r   	__index__zCustomInt.__index__  s    sr   N)r   r   r   r  r   r   r   r   r     s#            r   r   __main__)(r   testr   test.supportr   r6   r	   osrm  rp   rc   r   r   r   import_moduler   r   r  rT   r  rZ   r  skipIfr
   machiner   TestCaser   r   r:   rC   objectrm   r}   r   r  r   r   r   mainr   r   r   <module>r     s          & & & & & &   				   



 - - - - - - - - - - #}"6**,,  ""F++"$ $  /8.""$$f--$& & <  G 4 4 V9Kw9V 24 4M M M M Mh' M M M*G *G *G *G *Gx( *G *G *G\9 9 9 9 9 1 9 9 90O 0O 0O 0O 0O) 0O 0O 0Of    6   <? ? ? ? ?+X-> ? ? ?D_	3 _	3 _	3 _	3 _	3183D _	3 _	3 _	3B '+f > > > >>B       
 zHMOOOOO r   