
    0hh                        S SK r S SKJr  S SKJr  S SKrS SKrS SKrS SKrS SK	r	S SKJ
r
JrJrJr  \R                  " S5      r\ R                   " \" \R%                  5       S5      S5      r\ R                   " \" \R)                  5       S5      S5      r\R,                  4S	 jr\" 5       r\r " S
 S\ R4                  5      r " S S\ R4                  5      r " S S\ R4                  5      r " S S\ R4                  5      r " S S\5      r  " S S\ \ R4                  5      r! " S S\ \ R4                  5      r"S\4S jr#Sr$ " S S\ R4                  5      r% " S S5      r&\'S:X  a  \ RP                  " 5         gg)    N)support)import_helper)
bigmemtest_1G_4Gis_s390xzlibcopyzrequires Compress.copy()zrequires Decompress.copy()c                     U R                  SS5      S   R                  S5      n[        U5      S:  a  UR                  S5        OUS   R                  5       (       d  SUS'   [	        [        [        U5      5      $ )N-   r   .   0)splitlenappend	isnumerictuplemapint)zlib_versionvs     7/opt/python-3.13.8/usr/lib/python3.13/test/test_zlib.py_zlib_runtime_version_tupler      sg     	3"1%++C0A
1vz	rU__"S!    c                       \ rS rSrS rSrg)VersionTestCaseB   c                 l    U R                  [        R                  S   [        R                  S   5        g )Nr   )assertEqualr	   ZLIB_RUNTIME_VERSIONZLIB_VERSIONselfs    r   test_library_version$VersionTestCase.test_library_versionD   s*     	2215t7H7H7KLr    N)__name__
__module____qualname____firstlineno__r'   __static_attributes__r)   r   r   r   r   B   s    Mr   r   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)ChecksumTestCaseM   c                     U R                  [        R                  S5      [        R                  SS5      5        U R                  [        R                  SS5      5        g )Nr   r      abc    )r"   r	   crc32
assertTruer%   s    r   test_crc32start ChecksumTestCase.test_crc32startO   s<    C$**S!*<=

6:67r   c                     U R                  [        R                  SS5      S5        U R                  [        R                  SS5      S5        U R                  [        R                  SS5      S5        g Nr   r   r   i  )r"   r	   r5   r%   s    r   test_crc32empty ChecksumTestCase.test_crc32emptyS   sS    C+Q/C+Q/C-s3r   c                     U R                  [        R                  S5      [        R                  SS5      5        U R                  [        R                  SS5      5        g )Nr   r   r3   r4   )r"   r	   adler32r6   r%   s    r   test_adler32start"ChecksumTestCase.test_adler32startX   s=    c*DLLa,@AVZ89r   c                     U R                  [        R                  SS5      S5        U R                  [        R                  SS5      S5        U R                  [        R                  SS5      S5        g r:   )r"   r	   r>   r%   s    r   test_adler32empty"ChecksumTestCase.test_adler32empty\   sS    c1-q1c1-q1c3/5r   c                    U R                  [        R                  SS5      S5        U R                  [        R                  SS5      S5        U R                  [        R                  SS5      S5        U R                  [        R                  SS5      S5        U R                  [        R                  S5      [        R                  SS5      5        U R                  [        R                  S5      [        R                  SS5      5        g )Ns   penguinr   l    !K r   iCiir"   r	   r5   r>   r%   s    r   test_penguinsChecksumTestCase.test_penguinsa   s    J2K@J2J?j!4jAj!4jAJ/J1JKj1$,,z!2LMr   c                 4   SnU R                  [        R                  U5      S5        U R                  [        R                  S5      S5        U R                  [        R                  X-   5      S5        U R                  [        R                  S5      S5        g )N   abcdefghijklmnop   @u(    spami=Cl    * iOrE   )r&   foos     r   test_crc32_adler32_unsigned,ChecksumTestCase.test_crc32_adler32_unsignedj   sl    !C*5G,j9cg.
;g.9r   c                    SnSnU R                  [        R                  " U5      U5        U R                  [        R                  U5      U5        U R                  [        R                  " S5      [        R                  S5      5        g )NrI   rJ   rK   )r"   binasciir5   r	   )r&   rL   crcs      r   test_same_as_binascii_crc32,ChecksumTestCase.test_same_as_binascii_crc32r   s_    !,c2C#.0$**W2EFr   r)   N)r*   r+   r,   r-   r7   r;   r?   rB   rF   rM   rR   r.   r)   r   r   r0   r0   M   s'    84
:6
N:Gr   r0   c                   6    \ rS rSr\" \S-   SSS9S 5       rSrg)	ChecksumBigBufferTestCase{   r   r   F)sizememusedry_runc                     S[         S-   -  nU R                  [        R                  U5      S5        U R                  [        R	                  U5      S5        g )Ns   nyanr   iM"B>l   a )r   r"   r	   r5   r>   )r&   rW   datas      r   test_big_buffer)ChecksumBigBufferTestCase.test_big_buffer}   sB    #'"D):6d+Z8r   r)   N)r*   r+   r,   r-   r   r   r\   r.   r)   r   r   rU   rU   {   s!    S1WQ69 79r   rU   c                   z    \ rS rSrS rS rS rS rS r\	R                  S 5       r\	R                  S 5       rS	rg
)ExceptionTestCase   c                 d    U R                  [        R                  [        R                  SS5        g )Ns   ERROR
   )assertRaisesr	   errorcompressr%   s    r   test_badlevelExceptionTestCase.test_badlevel   s      	$**dmmXrBr   c                 j   U R                  [        [        R                  5        U R                  [        [        R                  5        U R                  [        [        R
                  5        U R                  [        [        R                  5        SS SSS/ 4 H  nU R                  [        [        R                  U5        U R                  [        [        R                  U5        U R                  [        [        R
                  U5        U R                  [        [        R                  U5        M     g )N*    abcr)   )rc   	TypeErrorr	   r>   r5   re   
decompress)r&   args     r   test_badargsExceptionTestCase.test_badargs   s    )T\\2)TZZ0)T]]3)T__5b%R0Cis;iS9i<i#>	 1r   c                     U R                  [        [        R                  S[        R                  S5        U R                  [        [        R                  S[        R                  [        R
                  S-   5        g )Nr   r   )rc   
ValueErrorr	   compressobjDEFLATED	MAX_WBITSr%   s    r   test_badcompressobj%ExceptionTestCase.test_badcompressobj   sO    *d&6&64==!L*  !T]]DNNQ4F	Hr   c                 N    U R                  [        [        R                  S5        g )Nr   )rc   rr   r	   decompressobjr%   s    r   test_baddecompressobj'ExceptionTestCase.test_baddecompressobj   s    *d&8&8"=r   c                     U R                  [        [        R                  5       R                  S5        U R                  [        [        R                  5       R                  S5        g )Nr   r   )rc   rr   r	   ry   flushr%   s    r   test_decompressobj_badflush-ExceptionTestCase.test_decompressobj_badflush   sD    *d&8&8&:&@&@!D*d&8&8&:&@&@"Er   c                 F   U R                  [        S5         [        R                  SS[        R
                  S-   5        S S S 5        U R                  [        S5         [        R                  5       R                  S[        R
                  S-   5        S S S 5        U R                  [        S5         [        R                  5       R                  [        R
                  S-   5        S S S 5        g ! , (       d  f       N= f! , (       d  f       Ns= f! , (       d  f       g = f)Nzint too larger      r   )assertRaisesRegexOverflowErrorr	   rm   sysmaxsizery   r}   r%   s    r   test_overflowExceptionTestCase.test_overflow   s    ##M?COOCS[[1_5 D##M?C ++CqA D##M?C &&s{{Q7 DC	 DCCCCCs#   )C06D25D0
C>
D
D c                     [         R                  " U [        [        R	                  5       5      5        [         R                  " U [        [        R                  5       5      5        g N)r   check_disallow_instantiationtyper	   rs   ry   r%   s    r   test_disallow_instantiation-ExceptionTestCase.test_disallow_instantiation   s@     	,,T48H8H8J3KL,,T48J8J8L3MNr   r)   N)r*   r+   r,   r-   rf   ro   rv   rz   r~   r   cpython_onlyr   r   r.   r)   r   r   r_   r_      sT    C	?H>F
 8 8 O Or   r_   c                        \ rS rSrS rS rSrg)BaseCompressTestCase   c                     Sn[         R                  " US-  5      nXA[        U5      -  S-   -  n U" U5        S ng ! S nf = f)N   rb   r   )random	randbytesr   )r&   rW   compress_func_1Mr[   s        r   check_big_compress_buffer.BaseCompressTestCase.check_big_compress_buffer   sM     b)s4y(1,-	$ D4Ds   ; ?c                     SU-  n [         R                  US5      nS nU" U5      n U R                  [        U5      U5        U R                  [        UR	                  S5      5      S5        S ng ! S nf = f! S nf = f)N   xr   r   )r	   re   r"   r   strip)r&   rW   decompress_funcr[   
compresseds        r   check_big_decompress_buffer0BaseCompressTestCase.check_big_decompress_buffer   s~    d{	tQ/J Dz*	SY-SD!12A6D D Ds   A0 AA7 0A47A;r)   N)r*   r+   r,   r-   r   r   r.   r)   r   r   r   r      s    r   r   c                       \ rS rSrS rS rS rS r\" \	S-   SS9S	 5       r
\" \	S-   S
S9S 5       r\" \SS9S 5       rS r\R                   " \R$                  S:  S5      \" \S-   SS9S 5       5       rSrg)CompressTestCase   c                     [         R                  [        5      nU R                  [         R	                  U5      [        5        g r   )r	   re   HAMLET_SCENEr"   rm   r&   xs     r   test_speechCompressTestCase.test_speech   s)    MM,'+\:r   c                    [         R                  [        SS9nU R                  [         R	                  U5      [        5        U R                  [        5         [         R                  [        SS9  S S S 5        U R                  [         R	                  U[         R                  [         R                  S9[        5        g ! , (       d  f       NT= f)N   )level)r[   r   )wbitsbufsize)	r	   re   r   r"   rm   rc   rl   ru   DEF_BUF_SIZEr   s     r   test_keywordsCompressTestCase.test_keywords   s    MM,aM0+\:y)MM|1M5 */3~~151B1B ) D &	' *)s   B>>
Cc                 $   [         S-  n[        R                  U5      n[        (       d.  U R	                  [        R                  [        U5      5      U5        U[        U5      4 H(  nU R	                  [        R                  U5      U5        M*     g N   )r   r	   re   HW_ACCELERATEDr"   	bytearrayrm   )r&   r[   r   obs       r   test_speech128CompressTestCase.test_speech128   si    c!MM$ ~T]]9T?;Q?Yq\/BT__R0$7 "r   c                     [         R                  [        5      nU R                  [         R                  S[         R
                  US S 5        g )NzAError -5 while decompressing data: incomplete or truncated streamr   )r	   re   r   r   rd   rm   r   s     r   test_incomplete_stream'CompressTestCase.test_incomplete_stream   s6    MM,'tzzOOOQsV	%r   r   r   rW   rX   c                 ,    S nU R                  X5        g )Nc                 .    [         R                  U S5      $ Nr   )r	   re   )ss    r   <lambda>;CompressTestCase.test_big_compress_buffer.<locals>.<lambda>   s    T]]1a0r   )r   )r&   rW   re   s      r   test_big_compress_buffer)CompressTestCase.test_big_compress_buffer   s    0&&t6r      c                 D    U R                  U[        R                  5        g r   )r   r	   rm   )r&   rW   s     r   test_big_decompress_buffer+CompressTestCase.test_big_decompress_buffer   s    ((t?r   r   c                     [         S-  n[        R                  US5      nU R                  [        R	                  USU5      U5        g Nrb   r   r   )r   r	   re   r"   rm   )r&   rW   r[   r   s       r   test_large_bufsize#CompressTestCase.test_large_bufsize  s;     b ]]4+
R>Er   c                     [         S-  n[        R                  US5      nU R                  [        R	                  US[        5       5      U5        g r   )r   r	   re   r"   rm   	CustomInt)r&   r[   r   s      r   test_custom_bufsize$CompressTestCase.test_custom_bufsize	  s;    b ]]4+
REtLr           requires 64bit platformd   r   c                     SU-  n [         R                  US5      nU R                  [         R                  U5      U5        S =p2g ! S =p2f = fNr   r   )r	   re   r"   rm   )r&   rW   r[   comps       r   test_64bit_compress$CompressTestCase.test_64bit_compress  sP     d{	==q)DT__T2D9D4$D4s   ;A Ar)   N)r*   r+   r,   r-   r   r   r   r   r   r   r   r   r   r   r   unittest
skipUnlessr   r   r   r.   r)   r   r   r   r      s    ;'	8% S;&q17 27 S;&q1@ 2@ S#F $FM
 u,.GHS3Yq) * Ir   r   c                      \ rS rSrS rS rS rS rS6S jrS r	S7S	 jr
S8S
 jrS rS rS rS rS rS r\R&                  " \" \S5      S5      S 5       rS rS rS rS rS rS rS rS rS r\ " \!SS9S 5       r"S  r#\$S! 5       r%\$S" 5       r&\'S# 5       r(\'S$ 5       r)S% r*S& r+\ " \,S'-   S(S9S) 5       r-\ " \,S'-   S*S9S+ 5       r.\R&                  " \/R`                  S,:  S-5      \ " \!S.-   S/S9S0 5       5       r1\R&                  " \/R`                  S,:  S-5      \ " \!S.-   S(S9S1 5       5       r2\R&                  " \/R`                  S,:  S-5      \ " \!S.-   S2S9S3 5       5       r3S4 r4S5r5g)9CompressObjectTestCasei  c                    [         S-  n[        R                  U5      nU[        U5      4 H  n[        R	                  5       nUR                  U5      nUR                  5       nU R                  [        R                  UR
                  5        [        (       a  Mo  U R                  XV-   U5        M     WW4[        U5      [        U5      44 H  u  px[        R                  5       n	U	R                  Xx-   5      n
U	R                  5       nU R                  WX-   5        U R                  U	R                  [        5        U R                  U	R                  [        5        M     g r   )r   r	   re   r   rs   r}   rc   rd   r   r"   ry   rm   assertIsInstanceunconsumed_tailbytesunused_data)r&   datasrcdatazipr[   cox1x2v1v2dcoy1y2s               r   	test_pair CompressObjectTestCase.test_pair  s   $--(i01D!!#BT"BBdjj"((3 ">  '2 2 Bx)B-2!?@FB$$&C(BBT27+!!#"5"5u=!!#//59 Ar   c           	         Sn[         R                  nSnSn[         R                  n[         R                  UUUUUSS9n[         R	                  USS9nU R                  [        5         UR                  [        S9  S S S 5        U R                  [        5         UR                  [         R                  [        5      S9  S S S 5        UR                  [        5      UR                  5       -   nUR                  U[        [        5      S9UR                  5       -   n	U R                  [        U	5        g ! , (       d  f       N= f! , (       d  f       N= f)	Nr   	   r   )r   methodr   memLevelstrategyzdictr   r   )r[   
max_length)r	   rt   
Z_FILTEREDrs   ry   rc   rl   re   r   rm   r}   r   r"   )
r&   r   r   r   r   r   r   dor   ys
             r   r   $CompressObjectTestCase.test_keywords1  s   ??E%+$)'/'/$'  ) e37y)KK\K* *y)MMt}}\:M; *KK%
2MM!L(9M:RXXZGq) *)))s   (D3'E3
E
Ec                 h   Sn[         R                  nSnSn[         R                  n[         R                  XX4U5      nUR	                  [
        5      nUR                  5       n[         R                  U5      n	U	R                  Xx-   5      n
U	R                  5       nU R                  [
        X-   5        g )Nr   r   r   )
r	   rt   r   rs   re   r   r}   ry   rm   r"   )r&   r   r   r   r   r   r   r   r   r   r   r   s               r   test_compressoptions+CompressObjectTestCase.test_compressoptionsF  s    ??eUhG[[&XXZ  '^^BG$YY[rw/r   c           	         [         S-  n[        R                  5       n/ n[        S[	        U5      S5       H(  nUR                  UR                  XUS-    5      5        M*     UR                  UR                  5       5        SR                  U5      n[        R                  5       nUR                  SR                  U5      5      nUR                  5       nU R                  XU-   5        g )Nr   r      r   )r   r	   rs   ranger   r   re   r}   joinry   rm   r"   )	r&   r[   r   bufsicombufr   r   r   s	            r   test_compressincremental/CompressObjectTestCase.test_compressincrementalU  s    c!q#d)S)AKKD1S5M23 *BHHJ$  "^^CHHTN+YY[Bw'r   Nc           	         U=(       d    [         nUS-  n[        R                  5       n/ n[        S[	        U5      U5       H'  nUR                  UR                  XXX-    5      5        M)     UR                  UR                  5       5        SR                  U5      n	[        R                  U	5      n
U R                  U
[        5        U R                  XZ5        [        R                  5       n/ n[        S[	        U	5      U5       Hv  nUR                  UR                  XX-    5      5        U R                  SUR                  S[	        UR                  5      -  5        U R                  SUR                  5        Mx     U(       a   UR                  UR                  5       5        O. UR                  S5      nU(       a  UR                  U5        OOM-  U R                  SUR                  S[	        UR                  5      -  5        U R                  SUR                  5        U R                  USR                  U5      5        g )Nr   r   r   z"(A) uct should be b'': not %d longz"(B) uct should be b'': not %d long)r   r	   rs   r  r   r   re   r}   r  rm   r   r   r"   ry   r   r   )r&   r}   sourcecxdcxr[   r   r  r  r  decombufr   chunks                r   test_decompinc%CompressObjectTestCase.test_decompincd  s   '<|q#d)R(AKKD14L12 )BHHJ$??6*h.(  "q#f+s+AKKv78S#"5"5A'*3+>+>'?@A S#//2 , KK		$s+KK&  	c11='*3+>+>'?@	A 	coo.sxx~.r   c                 "    U R                  SS9  g NT)r}   )r  r%   s    r   test_decompincflush*CompressObjectTestCase.test_decompincflush  s    $'r   c           	         U=(       d    [         nUS-  n[        R                  5       n/ n[        S[	        U5      U5       H'  nUR                  UR                  XGXr-    5      5        M)     UR                  UR                  5       5        SR                  U5      nU R                  U[        R                  U5      S5        [        R                  5       n	/ nUn
U
(       ac  U	R                  X5      nU R                  [	        U5      U:  S[	        U5      U4-  5        UR                  U5        U	R                  n
U
(       a  Mc  UR                  U	R                  5       5        U R                  USR                  U5      S5        g )Nr   r   r   compressed data failurechunk too big (%d>%d)Wrong data retrievedr   r	   rs   r  r   r   re   r}   r  r"   rm   ry   assertFalser   )r&   r
  r  r  r[   r   r  r  r  r   cbr  s               r   test_decompimax&CompressObjectTestCase.test_decompimax  s:   '<|q#d)R(AKKD14L12 )BHHJ$tv62	4   "NN2+ESZ#-+s5z3.??AKK$$B b 	CIIK sxx~/EFr   c           	         [         S-  n[        R                  5       n/ n[        S[	        U5      S5       H(  nUR                  UR                  X%US-    5      5        M*     UR                  UR                  5       5        SR                  U5      nU R                  U[        R                  U5      S5        [        R                  5       n/ nUnU(       at  S[	        U5      S-  -   n	UR                  X5      n
U R                  [	        U
5      U	:  S[	        U
5      U	4-  5        UR                  U
5        UR                  nU(       a  Mt  U(       a   UR                  UR                  5       5        O_W
(       aX  UR                  SW	5      n
U R                  [	        U
5      U	:  S[	        U
5      U	4-  5        UR                  U
5        U
(       a  MX  U R                  USR                  U5      S	5        g )
Nr   r   r  r   r  r   rb   r  r  r  )r&   r}   r[   r   r  r  r  r   r  r   r  s              r   test_decompressmaxlen,CompressObjectTestCase.test_decompressmaxlen  s   c!q#d)S)AKKD1S5M23 *BHHJ$tv62	4   "SWb[JNN22ESZ*4/3u:j2IIKKK$$B b KK		$sJ7  Uj!83s5z*6MMOE"	 %
 	sxx~/EFr   c                 "    U R                  SS9  g r  )r  r%   s    r   test_decompressmaxlenflush1CompressObjectTestCase.test_decompressmaxlenflush  s    """.r   c                     [         R                  5       nU R                  [        UR                  SS5        U R                  SUR                  5        g )Nr   r   )r	   ry   rc   rr   rm   r"   r   )r&   r   s     r   test_maxlenmisc&CompressObjectTestCase.test_maxlenmisc  s>      "*cnnc2>c112r   c                    [         S-  nU R                  [        U5      [        R                  5        [        R                  US5      n[        R                  5       nU R                  UR                  U[        R                  5      U5        g Nrb   r   )r   assertGreaterr   r	   r   re   ry   r"   rm   r   r   r&   r[   r   r   s       r   test_maxlen_large(CompressObjectTestCase.test_maxlen_large  se     b 3t9d&7&78]]4+
  "
CKK@$Gr   c                     [         S-  n[        R                  US5      n[        R                  5       nU R	                  UR                  U[        5       5      US S 5        g )Nrb   r   r   )r   r	   re   ry   r"   rm   r   r*  s       r   test_maxlen_custom)CompressObjectTestCase.test_maxlen_custom  sM    b ]]4+
  "
IK@$t*Mr   c                     Sn[         R                  5       nUR                  US5      nX2R                  UR                  5      -  nU R	                  UR                  S5        g )Ns
   xKLJ Mr   r   )r	   ry   rm   r   r"   )r&   cdatar   ddatas       r   test_clear_unconsumed_tail1CompressObjectTestCase.test_clear_unconsumed_tail  sT     -  "ua( 3 344,,c2r   c                    / SQn[         S:  a  UR                  S5        U Vs/ s H*  n[        [        U5      (       d  M  [	        [        U5      PM,     nn[
        S-  nU H  n[        S5       H  nU R                  XES9   [        R                  U5      nUR                  US S 5      nUR                  U5      nUR                  USS  5      n	UR                  5       n
U R                  [        R                  SR                  XxX/5      5      US	XE4-  5        AS S S 5        M     M     g s  snf ! , (       d  f       M  = f)
N)
Z_NO_FLUSHZ_SYNC_FLUSHZ_FULL_FLUSHZ_PARTIAL_FLUSH)r   r      r   Z_BLOCK   rb   )syncr   i  r   z*Decompress failed: flush mode=%i, level=%i)ZLIB_RUNTIME_VERSION_TUPLEr   hasattrr	   getattrr   r  subTestrs   re   r}   r"   rm   r  )r&   sync_optoptr[   r=  r   objabcds              r   test_flushes#CompressObjectTestCase.test_flushes  s$   ' &5OOI&2: +(3tS) 'GD#&( +aDr\\t\9**E3Cd5Dk3A		4)Ad45k3A		A$$T__SXXq1i5H%I%) -@DH=,QR  :9 # 	+ :9s   D.D.BD33
Er7  zrequires zlib.Z_SYNC_FLUSHc                 H   SS K n[        R                  [        R                  5      n[        R	                  5       nUR
                  " S5      nUR                  U5      nUR                  [        R                  5      nUR                  XV-   5      nU R                  XtS5        g )Nr   i D  z17K random source doesn't match)r   r	   rs   Z_BEST_COMPRESSIONry   r   re   r}   r7  rm   r"   )r&   r   r   r   r[   firstsecondexpandeds           r   test_odd_flush%CompressObjectTestCase.test_odd_flush  s     	 d556  " 	* D!$++,>>%.1 	)JKr   c                     [         R                  [         R                  5      nU R                  UR	                  5       5        [         R                  5       nU R                  UR	                  5       S5        g )Nr   )r	   rs   rL  r6   r}   ry   r"   )r&   r   r   s      r   test_empty_flush'CompressObjectTestCase.test_empty_flush  sP    
 d556
#  "c*r   c                    [         nUR                  5       n[        R                  " U5        SR	                  U5      n[
        R                  US9nUR                  U5      UR                  5       -   n[
        R                  US9nU R                  UR                  U5      UR                  5       -   U5        [
        R                  5       nU R                  [
        R                  UR                  U5        g )Nr   r   )r   r   r   shuffler  r	   rs   re   r}   ry   r"   rm   rc   rd   )r&   hwordsr   r   cdr   s          r   test_dictionary&CompressObjectTestCase.test_dictionary(  s    	uE*[[^bhhj(  u -+ciik91=  "$**cnnb9r   c                 v   [         R                  [        S9n[         R                  [        S9n[        SS nUR	                  U5      UR                  [         R                  5      -   nUR	                  USS  5      UR                  [         R                  5      -   nUR	                  US S 5      UR                  [         R                  5      -   nU R                  UR                  U5      U5        U R                  UR                  U5      USS  5        U R                  UR                  U5      US S 5        g )NrV    i  r   i)	r	   rs   r   ry   re   r}   r7  r"   rm   )r&   r   r   pieced0d1d2s          r   test_dictionary_streaming0CompressObjectTestCase.test_dictionary_streaming8  s     L1l3T$'[["((4+<+<"==[[st%1B1B(CC[[u&$2C2C)DDr*E2r*E#$K8r*E%4L9r   c                 N   SnU R                  [        R                  U5      S5        U R                  [        R                  [        R                  US S 5        [        R                  5       nUR                  US S 5      nX2R                  5       -  nU R                  US5        g )N   xK Es   foo)r"   r	   rm   rc   rd   ry   r}   )r&   r   r   r   s       r   !test_decompress_incomplete_stream8CompressObjectTestCase.test_decompress_incomplete_streamE  s    2+V4$**dooq"v>   "NN1Sb6"	YY[F#r   c                 x   Sn[         R                  5       nU R                  UR                  5        UR	                  US S 5        U R                  UR                  5        UR	                  USS  5        U R                  UR                  5        UR                  5         U R                  UR                  5        g Nrf  rg  )r	   ry   r  eofrm   r6   r}   r&   r   r   s      r   test_decompress_eof*CompressObjectTestCase.test_decompress_eofR  s    2  "!q"v!qv 		 r   c                    Sn[         R                  5       nU R                  UR                  5        UR	                  US S 5        U R                  UR                  5        UR                  5         U R                  UR                  5        g rk  )r	   ry   r  rl  rm   r}   rm  s      r   %test_decompress_eof_incomplete_stream<CompressObjectTestCase.test_decompress_eof_incomplete_stream]  sf    2  "!q"v!		!r   c                    SnSn[         R                  U5      nX2-   nS GHY  nSS[        U5      [        U5      4 GH8  n[         R                  5       nSn[	        S[        U5      U5       H  n	U	[        U5      :  a  U R                  UR                  S5        US:X  a5  XR                  XIX-    5      -  nU R                  UR                  S5        Mi  XR                  UR                  XIX-    -   U5      -  nM     XR                  5       -  nU R                  UR                  5        U R                  X5        U R                  UR                  S5        U R                  UR                  U5        GM;     GM\     g )N   abcdefghijklmnopqrstuvwxyzs
   0123456789)r   r^  r   r   r   r   )r	   re   r   ry   r  r"   r   rm   r   r}   r6   rl  )
r&   r
  	remainderr   r   maxlenstepr   r[   r  s
             r   test_decompress_unused_data2CompressObjectTestCase.test_decompress_unused_dataf  sH    /!	MM&!MF1c!fc!f,((*q#a&$/A3q6z((#>{qQX ??(()<)<cB # 3 3aAHo Ev!O O 0 		#(  .  !4!4c:  )<! - r   c                 >   Sn[         R                  [         R                  * US9nUR                  U5      UR	                  5       -   n[         R                  [         R                  * US9nUR                  U5      UR	                  5       -   nU R                  X5        g )Nrt  r   )r	   rs   ru   re   r}   ry   rm   r"   )r&   r   r   r   r   uncomps         r   #test_decompress_raw_with_dictionary:CompressObjectTestCase.test_decompress_raw_with_dictionary  s}    -T^^O5A{{5!BHHJ.  e D%		3'r   c                     SnSn[         R                  U5      n[         R                  5       nUR                  US5        A[         R                  U5      nU R	                  UR                  5       USS  5        g )Nrt  s   QWERTYUIOPASDFGHJKLZXCVBNMr   )r	   re   ry   rm   r"   r}   )r&   input1input2r[   r   s        r   test_flush_with_freed_input2CompressObjectTestCase.test_flush_with_freed_input  se     /.}}V$  "tQ}}V$fQRj1r   r   r   c                     [         S-  n[        R                  US5      n[        R                  5       nUR	                  US5        U R                  UR                  U5      USS  5        g r(  )r   r	   re   ry   rm   r"   r}   )r&   rW   inputr[   r   s        r   test_flush_large_length.CompressObjectTestCase.test_flush_large_length  sX     r!}}UA&  "tQ4%)4r   c                     [         S-  n[        R                  US5      n[        R                  5       nUR	                  US5        U R                  UR                  [        5       5      USS  5        g r(  )r   r	   re   ry   rm   r"   r}   r   )r&   r  r[   r   s       r   test_flush_custom_length/CompressObjectTestCase.test_flush_custom_length  sY    r!}}UA&  "tQ9;/qr;r   c                 6   [         n[        [        [         S5      R                  5       S5      nS [        R                  [        R
                  4 GHD  n[        R                  [        R                  5      n/ nUR                  UR                  U5      5        U" U5      nUS S  nUR                  UR                  U5      5        UR                  UR                  5       5        SR                  U5      nUR                  UR                  U5      5        UR                  UR                  5       5        SR                  U5      n	U R                  [        R                  U5      X-   5        U R                  [        R                  U	5      X-   5        GMG     g )Nasciic                 "    U R                  5       $ r   r
   rG  s    r   r   :CompressObjectTestCase.test_compresscopy.<locals>.<lambda>  
    affhr   r   )r   r   strswapcaser
   deepcopyr	   rs   rL  r   re   r}   r  r"   rm   )
r&   data0data1funcc0bufs0c1bufs1s0s1s
             r   test_compresscopy(CompressObjectTestCase.test_compresscopy  s    c,099;WE&		4==@D!!$"9"9:BELLU+,bB!HELLU+,LL$%BLLU+,LL$%BT__R0=T__R0=# Ar   c                 J   [         R                  5       nUR                  [        5        UR	                  5         U R                  [        UR                  5        U R                  [        [        R                  U5        U R                  [        [        R                  U5        g r   )	r	   rs   re   r   r}   rc   rr   r
   r  )r&   rG  s     r   test_badcompresscopy+CompressObjectTestCase.test_badcompresscopy  sg     	

< 		*aff-*dii3*dmmQ7r   c                 X   [         n[        R                  U5      nU R                  U[        5        S [
        R
                  [
        R                  4 H  n[        R                  5       n/ nUR                  UR                  US S 5      5        U" U5      nUS S  nUR                  UR                  USS  5      5        SR                  U5      nUR                  UR                  USS  5      5        SR                  U5      n	U R                  X5        U R                  X5        M     g )Nc                 "    U R                  5       $ r   r  r  s    r   r   <CompressObjectTestCase.test_decompresscopy.<locals>.<lambda>  r  r       r   )r   r	   re   r   r   r
   r  ry   r   rm   r  r"   )
r&   r[   r   r  r`  r  ra  r  r  r  s
             r   test_decompresscopy*CompressObjectTestCase.test_decompresscopy  s     }}T"dE*&		4==@D##%BELLtCRy12bB!HELLtBCy12%BLLtBCy12%BR#R% Ar   c                 t   [         R                  [        5      n[         R                  5       nUR	                  U5        UR                  5         U R                  [        UR                  5        U R                  [        [        R                  U5        U R                  [        [        R                  U5        g r   )
r	   re   r   ry   rm   r}   rc   rr   r
   r  )r&   r[   rH  s      r   test_baddecompresscopy-CompressObjectTestCase.test_baddecompresscopy  su     }}\* 	T		*aff-*dii3*dmmQ7r   c                 :   [        [        R                  S-   5       Hi  nU R                  [        [        R
                  45         [        R                  " [        R                  [        R                  5      U5        S S S 5        Mk     g ! , (       d  f       M}  = fr   )
r  pickleHIGHEST_PROTOCOLrc   rl   PicklingErrordumpsr	   rs   rL  r&   protos     r   test_compresspickle*CompressObjectTestCase.test_compresspickle  sd    622Q67E""Iv/C/C#DET--d.E.EFN FE 8EEs   9B
B	c                    [        [        R                  S-   5       HZ  nU R                  [        [        R
                  45         [        R                  " [        R                  5       U5        S S S 5        M\     g ! , (       d  f       Mn  = fr   )	r  r  r  rc   rl   r  r  r	   ry   r  s     r   test_decompresspickle,CompressObjectTestCase.test_decompresspickle  s\    622Q67E""Iv/C/C#DET//159 FE 8EEs   *A<<
B	r   r   c                 ^   ^ [         R                  S5      mU4S jnU R                  X5        g )Nr   c                 H   > TR                  U 5      TR                  5       -   $ r   )re   r}   )r   rG  s    r   r   ACompressObjectTestCase.test_big_compress_buffer.<locals>.<lambda>  s    QZZ]QWWY6r   )r	   rs   r   )r&   rW   re   rG  s      @r   r   /CompressObjectTestCase.test_big_compress_buffer  s&    Q6&&t6r   r   c                 \   ^ [         R                  5       mU4S jnU R                  X5        g )Nc                 H   > TR                  U 5      TR                  5       -   $ r   )rm   r}   )r   rH  s    r   r   CCompressObjectTestCase.test_big_decompress_buffer.<locals>.<lambda>   s    q||A:r   )r	   ry   r   )r&   rW   rm   rH  s      @r   r   1CompressObjectTestCase.test_big_decompress_buffer  s$     :
((:r   r   r   r   r   c                 *   SU-  n[         R                  S5      n[         R                  5       n UR                  U5      UR	                  5       -   nUR                  U5      UR	                  5       -   nU R                  Xb5        S =n=pbg ! S =n=pbf = fr   )r	   rs   ry   re   r}   rm   r"   )r&   rW   r[   r   r   r   r{  s          r   r   *CompressObjectTestCase.test_64bit_compress  s     d{a !	(;;t$rxxz1D]]4(288:5FV*#''D'6D4'D'6Ds   AB Bc                 &   SnSU-  n[         R                  U5      U-   n[         R                  5       n UR                  U5      UR	                  5       -   nU R                  X5R                  5        U R                  Xb5        S =n=pEg ! S =n=pEf = f)NrI   r   )r	   re   ry   rm   r}   r"   r   )r&   rW   r[   unusedr   r   r{  s          r   test_large_unused_data-CompressObjectTestCase.test_large_unused_data  s     #}}T"V+!	&]]4(288:5FV^^4V*!%%F%TB%F%TBs   AB	 	Br:  c                 "   SU-  n[         R                  5       n [         R                  US5      nUR                  US5      UR	                  5       -   nU R                  XR5        U R                  UR                  S5        S =n=pRg ! S =n=pRf = f)Nr   r   r   r   )r	   ry   re   rm   r}   r"   r   )r&   rW   r[   r   r   r{  s         r   test_large_unconsumed_tail1CompressObjectTestCase.test_large_unconsumed_tail  s     d{!	(==q)D]]4+bhhj8FV*R//5#''D'6D4'D'6Ds   A&B Bc           	      
   [         S:  n[        R                  SSS9nUR                  [        5      UR                  5       -   nU R                  [        R                  US5      [        5        U(       a*  U R                  [        R                  US5      [        5        U R                  [        R                  US5      [        5        U R                  [        R                  S5         [        R                  US5        S S S 5        [        R                  SS	9nU R                  UR                  U5      [        5        [        R                  SS	9nU R                  [        R                  S5         UR                  U5        S S S 5        [        R                  SS
S9nUR                  [        5      UR                  5       -   nU R                  [        R                  US
5      [        5        U R                  [        R                  US5      [        5        U(       a*  U R                  [        R                  US5      [        5        U R                  [        R                  US5      [        5        [        R                  SS	9nU R                  UR                  U5      [        5        [        R                  SSS9nUR                  [        5      UR                  5       -   nU R                  [        R                  US5      [        5        [        R                  SS	9nU R                  UR                  U5      [        5        [        R                  SSS9nUR                  [        5      UR                  5       -   nU R                  [        R                  US5      [        5        U R                  [        R                  US5      [        5        [        R                  SS	9nU R                  UR                  U5      [        5        [        R                  SSS9nUR                  [        5      UR                  5       -   nU R                  [        R                  US5      [        5        U R                  [        R                  US5      [        5        [        R                  S5      nU R                  UR                  U5      [        5        S H\  n	U R                  U	S	9   [        n
[        R                  [        R                  [        U	S	9U	S	9nU R                  X5        S S S 5        M^     g ! , (       d  f       GNB= f! , (       d  f       GN= f! , (       d  f       M  = f)N)r   r   r   r:  r   r   )r   r   r   /   zinvalid window size   )r   r   )   i   )r  r   r  )r>  r	   rs   re   r   r}   r"   rm   r   rd   ry   rA  )r&   supports_wbits_0r   zlib15r   zlib9	deflate15deflate9gzipr   expectedactuals               r   
test_wbits!CompressObjectTestCase.test_wbits+  s   5EAR0\*RXXZ74lCT__VQ7F9<H##DJJ0EFOOFB' G  w //>  r *##DJJ0EFNN6" G AQ/L)BHHJ62LA3\BT__UA6E7F  v ..=AS1KK-
:	C8,G  s +	2LAAR0;;|,rxxz926E37F  r *1<@AW5{{<(288:5w7Fw7F  )-|<"EE*'MM,eM<E )    2 +* #M GF
 GFD +*s%   )T;3U,AU;
U

U
U.	r)   )FNr  @   )Nr  r  )F)6r*   r+   r,   r-   r   r   r   r  r  r  r  r  r"  r%  r+  r.  r3  rI  r   r   r?  r	   rP  rS  r[  rc  rh  rn  rq  rx  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   r     s%   :,**0(&/R(G6G@/3HN36 ~657L7L*+: :$	!"=6(
2 S#5 $5< > >. 8 8 & &0 8 8O
: S;&q17 27
 S;&q1; 2;
 u,.GHS3Yq)	( * I	( u,.GHS3Yq)
& * I
& u,.GHS3Yq)	( * I	(63r   r   c                     Ub  UR                  U5        U R                  S5      n[        U5       Vs/ s H  oSR                  U5      PM     sn$ s  snf )N
)seedr   r  choice)r
  numberr  	generatorsourcesns         r   choose_linesr  c  sG    tll4 G/4V}=}!W%}===s   A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S rSr\r\R                  \5      rSr	\S\
" \5      -  S-   -  r\R                  \5      rS rS rS rS rS	 r\R&                  \" \S
-   SS9S 5       5       rS rS rS rS rS rS r\R:                  S 5       rSrg)ZlibDecompressorTesti  s   Not a valid deflate blocki   r   c                     U R                  [        [        R                  S5        U R                  [        [        R                  SS5        U R                  [        [        R                  SSS5        g )NASDAr  notbytess   bytesr:  )rc   rl   r	   _ZlibDecompressorr%   s    r   test_Constructor%ZlibDecompressorTest.test_Constructor  sP    )T%;%;VD)T%;%;S*M)T%;%;S(ANr   c                     [         R                  5       nU R                  [        UR                  5        UR	                  U R
                  5      nU R                  X R                  5        g r   )r	   r  rc   rl   rm   DATAr"   TEXTr&   zlibdtexts      r   testDecompress#ZlibDecompressorTest.testDecompress  sL    &&()U%5%56		*yy)r   c                     [         R                  5       nSnSn U R                  US-  US-   S-   nU(       d  OX!R                  U5      -  nUS-  nM:  U R	                  X R
                  5        g )Nr   r   rb   r   )r	   r  r  rm   r"   r  )r&   r  r  r  r  s        r   testDecompressChunks10+ZlibDecompressorTest.testDecompressChunks10  st    &&())AbD!A#r*C$$S))DFA  	yy)r   c                     [         R                  5       nSnUR                  U R                  U-   5      nU R	                  X0R
                  5        U R	                  UR                  U5        g )Ns   this is unused data)r	   r  rm   r  r"   r  r   )r&   r  r   r  s       r   testDecompressUnusedData-ZlibDecompressorTest.testDecompressUnusedData  sV    &&(,		+ 56yy)**K8r   c                     [         R                  5       nUR                  U R                  5      nU R	                  [
        UR                  S5        U R	                  [
        UR                  S5        g )Ns   anythingr   )r	   r  rm   r  rc   EOFErrorr  s      r   testEOFError!ZlibDecompressorTest.testEOFError  sT    &&(		*(E$4$4kB(E$4$4c:r   r   gffffff
@r   c                     [        SU5      n[        R                  " U5      n X1S-
  U-  S-   -  n[        R	                  U5      n[        R                  5       nUR                  U5      nU R                  Xt:H  5        S nS nS ng ! S nS nS nf = f)Ni   r   )minr   r   r	   re   r  rm   r6   )r&   rW   	blocksizeblockr[   r   r  decompresseds           r   testDecompress4G%ZlibDecompressorTest.testDecompress4G  s     ($/	  +		 !V	1A56Dt,J**,E ++J7LOOL01DJL DJLs   AB Bc                     [        [        R                  S-   5       HJ  nU R                  [        5         [        R
                  " [        R                  5       U5        S S S 5        ML     g ! , (       d  f       M^  = fr   )r  r  r  rc   rl   r  r	   r  r  s     r   
testPickleZlibDecompressorTest.testPickle  sP    622Q67E""9-T335u= .- 8--s   *A,,
A;	c                    [         R                  5       nSn/ n[        U R                  5      S-
  nUR	                  UR                  U R                  S U US95        U R                  UR                  5        U R                  [        US   5      U5        UR	                  UR                  SUS95        U R                  UR                  5        U R                  [        US   5      U5        UR	                  UR                  U R                  US  US95        U R                  [        US   5      U5        UR                  (       dP  UR	                  UR                  SUS95        U R                  [        US   5      U5        UR                  (       d  MP  SR                  U5      nU R                  X0R                  5        U R                  UR                  S5        g )Nr   r  r   r   r   )r	   r  r   BIG_DATAr   rm   r  needs_inputr"   assertLessEqualrl  r  BIG_TEXTr   )r&   r  r   outlen_s        r   testDecompressorChunksMaxsize2ZlibDecompressorTest.testDecompressorChunksMaxsize  s   &&(
 4==!B&

5##DMM%4$8-7 $ 9 	:**+SWz2 	

5##CJ#?@**+SWz2 	

5##DMM$%$8-7 $ 9 	:SR\:6 ))JJu''
'CD  SWz: ))) hhsmmm,**C0r   c                    [         R                  5       n/ nU R                  UR                  U R                  S S SS9S5        UR                  UR                  SS5      5        UR                  UR                  U R                  SS S5      5        UR                  UR                  U R                  SS  5      5        U R                  SR                  U5      U R                  5        g )Nr   r   r   r   r   i   r   r	   r  r"   rm   r  r   r  r  r&   r  r  s      r   test_decompressor_inputbuf_11ZlibDecompressorTest.test_decompressor_inputbuf_1  s     &&( 	))$))DS/34 * 67:	<
 	

5##C+, 	

5##DIIc#$6;< 	

5##DIIcdO45#		2r   c                 2   [         R                  5       n/ nU R                  UR                  U R                  S S SS9S5        UR                  UR                  S5      5        UR                  UR                  U R                  SS S5      5        UR                  UR                  U R                  SS S5      5        UR                  UR                  U R                  SS  5      5        U R                  SR                  U5      U R                  5        g )N   r   r   r   i  r   ,  r  r  s      r   test_decompressor_inputbuf_21ZlibDecompressorTest.test_decompressor_inputbuf_2#  s     &&( 	))$))DS/34 * 67:	<

5##C() 	

5##DIIc#$6:; 	

5##DIIc#$6:; 	

5##DIIcdO45#		2r   c                    [         R                  5       n/ nUR                  UR                  U R                  S S S5      5        UR                  UR                  U R                  SS S5      5        UR                  UR                  U R                  SS  5      5        U R                  SR                  U5      U R                  5        g )Nr  r:  r  r   )r	   r  r   rm   r  r"   r  r  r  s      r   test_decompressor_inputbuf_31ZlibDecompressorTest.test_decompressor_inputbuf_38  s     &&( 	

5##DIIdsOQ78 	

5##DIIc#$6:; 	

5##DIIcdO45#		2r   c                     [         R                  5       nU R                  [        UR                  U R
                  S-  5        U R                  [        UR                  U R
                  S-  5        g )N   )r	   r  rc   	Exceptionrm   BAD_DATA)r&   r  s     r   test_failure!ZlibDecompressorTest.test_failureH  sR    &&()U%5%5t}}r7IJ)U%5%5t}}r7IJr   c                     [         R                  " [        S5      n[        R	                  5       nU" 5       n[        S5       H  nUR                  5         M     U R                  U" 5       U-
  SSS9  g )Ngettotalrefcountr   r   rb   )delta)r   get_attributer   r	   r  r  __init__assertAlmostEqual)r&   r&  r  refs_beforer  s        r   test_refleaks_in___init__.ZlibDecompressorTest.test_refleaks_in___init__N  sb    "006HI&&(&(sANN /1K?"Mr   r)   N) r*   r+   r,   r-   r   r  r	   re   r  r"  r   r  r	  r  r  r  r  r  r   skip_if_pgo_taskr   r   r  r  r  r  r  r  r#  refcount_testr,  r.   r)   r   r   r  r    s    D==&D+H
c$i/145H}}X&HO
*
*9; S3Ys+  ,  >
1>3,3*3 K N Nr   r  c                       \ rS rSrS rSrg)r   iX  c                     g)Nr   r)   r%   s    r   	__index__CustomInt.__index__Y  s    r   r)   N)r*   r+   r,   r-   r2  r.   r)   r   r   r   r   X  s    r   r   __main__))r   testr   test.supportr   rP   r
   r  r   r   r   r   r   r   import_moduler	   r   r?  rs   r  ry   r  r#   r   r>  r   TestCaser   r0   rU   r_   objectr   r   r   r  r   r  r   r*   mainr)   r   r   <module>r;     s     &     
 7 7 ""6*!,,  "F+"$  $..""$f-$& 
 .2-F-F  9: < Mh'' M*Gx(( *G\9 1 1 90O)) 0Of6 <A+X->-> AHH	3183D3D H	3T '+f >>BiN8,, iNX 
 zMMO r   