
    daf                        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mZ  ej                  d      Z e j"                   eej'                         d      d      Z e j"                   eej+                         d      d      Zej.                  fd	Z e       Z G d
 de j4                        Z G d de j4                        Z G d de j4                        Z G d de j4                        Z G d de      Z  G d de e j4                        Z! G d de e j4                        Z"de	fdZ#dZ$ G d de j4                        Z% G d d      Z&e'dk(  r e jP                          yy)    N)support)import_helper)
bigmemtest_1G_4Gskip_on_s390xzlibcopyzrequires Compress.copy()zrequires Decompress.copy()c                     | j                  dd      d   j                  d      }t        |      dk  r|j                  d       n|d   j                         sd|d<   t	        t        t        |            S )N-   r   .   0)splitlenappend	isnumerictuplemapint)zlib_versionvs     )/root/Python-3.12.4/Lib/test/test_zlib.py_zlib_runtime_version_tupler      sd     	3"1%++C0A
1vz	rU__"S!    c                       e Zd Zd Zy)VersionTestCasec                 l    | j                  t        j                  d   t        j                  d          y )Nr   )assertEqualr	   ZLIB_RUNTIME_VERSIONZLIB_VERSIONselfs    r   test_library_versionz$VersionTestCase.test_library_versionB   s*     	2215t7H7H7KLr   N)__name__
__module____qualname__r&    r   r   r   r   @   s    Mr   r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	ChecksumTestCasec                     | j                  t        j                  d      t        j                  dd             | j                  t        j                  dd             y )Nr   r      abc    )r!   r	   crc32
assertTruer$   s    r   test_crc32startz ChecksumTestCase.test_crc32startM   s<    C$**S!*<=

6:67r   c                     | j                  t        j                  dd      d       | j                  t        j                  dd      d       | j                  t        j                  dd      d       y Nr   r   r   i  )r!   r	   r0   r$   s    r   test_crc32emptyz ChecksumTestCase.test_crc32emptyQ   sS    C+Q/C+Q/C-s3r   c                     | j                  t        j                  d      t        j                  dd             | j                  t        j                  dd             y )Nr   r   r.   r/   )r!   r	   adler32r1   r$   s    r   test_adler32startz"ChecksumTestCase.test_adler32startV   s=    c*DLLa,@AVZ89r   c                     | j                  t        j                  dd      d       | j                  t        j                  dd      d       | j                  t        j                  dd      d       y r4   )r!   r	   r7   r$   s    r   test_adler32emptyz"ChecksumTestCase.test_adler32emptyZ   sS    c1-q1c1-q1c3/5r   c                    | j                  t        j                  dd      d       | j                  t        j                  dd      d       | j                  t        j                  dd      d       | j                  t        j                  dd      d       | j                  t        j                  d      t        j                  dd             | j                  t        j                  d      t        j                  dd             y )Ns   penguinr   l    !K r   iCiir!   r	   r0   r7   r$   s    r   test_penguinszChecksumTestCase.test_penguins_   s    J2K@J2J?j!4jAj!4jAJ/J1JKj1$,,z!2LMr   c                 6   d}| j                  t        j                  |      d       | j                  t        j                  d      d       | j                  t        j                  ||z         d       | j                  t        j                  d      d       y )N   abcdefghijklmnop   @u(    spami=Cl    * iOr<   )r%   foos     r   test_crc32_adler32_unsignedz,ChecksumTestCase.test_crc32_adler32_unsignedh   sn    !C*5G,j9c#g.
;g.9r   c                    d}d}| j                  t        j                  |      |       | j                  t        j                  |      |       | j                  t        j                  d      t        j                  d             y )Nr?   r@   rA   )r!   binasciir0   r	   )r%   rB   crcs      r   test_same_as_binascii_crc32z,ChecksumTestCase.test_same_as_binascii_crc32p   s_    !,c2C#.0$**W2EFr   N)
r'   r(   r)   r2   r5   r8   r:   r=   rC   rG   r*   r   r   r,   r,   K   s'    84
:6
N:Gr   r,   c                   4    e Zd Z eedz   dd      d        Zy)ChecksumBigBufferTestCaser   r   F)sizememusedry_runc                     dt         dz   z  }| j                  t        j                  |      d       | j                  t        j	                  |      d       y )Ns   nyanr   iM"B>l   a )r   r!   r	   r0   r7   )r%   rJ   datas      r   test_big_bufferz)ChecksumBigBufferTestCase.test_big_buffer{   sB    #'"D):6d+Z8r   N)r'   r(   r)   r   r   rO   r*   r   r   rI   rI   y   s!    S1WQ69 79r   rI   c                   r    e Zd Zd Zd Zd Zd Zd Zej                  d        Z
ej                  d        Zy)	ExceptionTestCasec                 d    | j                  t        j                  t        j                  dd       y )Ns   ERROR
   )assertRaisesr	   errorcompressr$   s    r   test_badlevelzExceptionTestCase.test_badlevel   s      	$**dmmXrBr   c                 f   | j                  t        t        j                         | j                  t        t        j                         | j                  t        t        j
                         | j                  t        t        j                         dd dddg fD ]  }| j                  t        t        j                  |       | j                  t        t        j                  |       | j                  t        t        j
                  |       | j                  t        t        j                  |        y )N*    abcr*   )rT   	TypeErrorr	   r7   r0   rV   
decompress)r%   args     r   test_badargszExceptionTestCase.test_badargs   s    )T\\2)TZZ0)T]]3)T__5b%R0 	?Cis;iS9i<i#>		?r   c                     | j                  t        t        j                  dt        j                  d       | j                  t        t        j                  dt        j                  t        j
                  dz          y )Nr   r   )rT   
ValueErrorr	   compressobjDEFLATED	MAX_WBITSr$   s    r   test_badcompressobjz%ExceptionTestCase.test_badcompressobj   sO    *d&6&64==!L*  !T]]DNNQ4F	Hr   c                 N    | j                  t        t        j                  d       y )Nr   )rT   ra   r	   decompressobjr$   s    r   test_baddecompressobjz'ExceptionTestCase.test_baddecompressobj   s    *d&8&8"=r   c                     | j                  t        t        j                         j                  d       | j                  t        t        j                         j                  d       y )Nr   r   )rT   ra   r	   rg   flushr$   s    r   test_decompressobj_badflushz-ExceptionTestCase.test_decompressobj_badflush   sD    *d&8&8&:&@&@!D*d&8&8&:&@&@"Er   c                 (   | j                  t        d      5  t        j                  ddt        j
                  dz          d d d        | j                  t        d      5  t        j                         j                  dt        j
                  dz          d d d        | j                  t        d      5  t        j                         j                  t        j
                  dz          d d d        y # 1 sw Y   xY w# 1 sw Y   ixY w# 1 sw Y   y xY w)Nzint too larger      r   )assertRaisesRegexOverflowErrorr	   r]   sysmaxsizerg   rj   r$   s    r   test_overflowzExceptionTestCase.test_overflow   s    ##M?C 	6OOCS[[1_5	6##M?C 	B ++CqA	B##M?C 	8 &&s{{Q7	8 	8		6 	6	B 	B	8 	8s#   )C06C<25D0C9<DDc                     t        j                  | t        t        j	                                      t        j                  | t        t        j                                      y N)r   check_disallow_instantiationtyper	   rb   rg   r$   s    r   test_disallow_instantiationz-ExceptionTestCase.test_disallow_instantiation   s@     	,,T48H8H8J3KL,,T48J8J8L3MNr   N)r'   r(   r)   rW   r_   re   rh   rk   r   cpython_onlyrr   rw   r*   r   r   rQ   rQ      sT    C	?H>F
 8 8 O Or   rQ   c                       e Zd Zd Zd Zy)BaseCompressTestCasec                     d}t        j                  |dz        }||t        |      z  dz   z  }	  ||       d }y # d }w xY w)N   rS   r   )random	randbytesr   )r%   rJ   compress_func_1MrN   s        r   check_big_compress_bufferz.BaseCompressTestCase.check_big_compress_buffer   sO     b)ts4y(1,-	$ D4Ds   ; ?c                     d|z  }	 t         j                  |d      }d } ||      }	 | j                  t        |      |       | j                  t        |j	                  d            d       d }y # d }w xY w# d }w xY w)N   xr   r   )r	   rV   r!   r   strip)r%   rJ   decompress_funcrN   
compresseds        r   check_big_decompress_bufferz0BaseCompressTestCase.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;N)r'   r(   r)   r   r   r*   r   r   rz   rz      s    r   rz   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kD  d       eedz   d      d               Zy)CompressTestCasec                     t         j                  t              }| j                  t         j	                  |      t               y rt   )r	   rV   HAMLET_SCENEr!   r]   r%   xs     r   test_speechzCompressTestCase.test_speech   s)    MM,'+\:r   c                    t         j                  t        d      }| j                  t         j	                  |      t               | j                  t              5  t         j                  t        d       d d d        | j                  t         j	                  |t         j                  t         j                        t               y # 1 sw Y   RxY w)N   )level)rN   r   )wbitsbufsize)	r	   rV   r   r!   r]   rT   r\   rd   DEF_BUF_SIZEr   s     r   test_keywordszCompressTestCase.test_keywords   s    MM,aM0+\:y) 	6MM|1M5	6/3~~151B1B ) D &	'	6 	6s   CCc                 
   t         dz  }t        j                  |      }| j                  t        j                  t	        |            |       |t	        |      fD ]'  }| j                  t        j                  |      |       ) y N   )r   r	   rV   r!   	bytearrayr]   )r%   rN   r   obs       r   test_speech128zCompressTestCase.test_speech128   si     c!MM$y7;Yq\/ 	8BT__R0$7	8r   c                     t         j                  t              }| j                  t         j                  dt         j
                  |d d        y )NzAError -5 while decompressing data: incomplete or truncated streamr   )r	   rV   r   rn   rU   r]   r   s     r   test_incomplete_streamz'CompressTestCase.test_incomplete_stream   s6    MM,'tzzOOOQsV	%r   r|   r   rJ   rK   c                 .    d }| j                  ||       y )Nc                 .    t         j                  | d      S Nr   )r	   rV   )ss    r   <lambda>z;CompressTestCase.test_big_compress_buffer.<locals>.<lambda>   s    T]]1a0 r   )r   )r%   rJ   rV   s      r   test_big_compress_bufferz)CompressTestCase.test_big_compress_buffer   s    0&&tX6r      c                 D    | j                  |t        j                         y rt   )r   r	   r]   )r%   rJ   s     r   test_big_decompress_bufferz+CompressTestCase.test_big_decompress_buffer   s    ((t?r   r   c                     t         dz  }t        j                  |d      }| j                  t        j	                  |d|      |       y NrS   r   rm   )r   r	   rV   r!   r]   )r%   rJ   rN   r   s       r   test_large_bufsizez#CompressTestCase.test_large_bufsize   s;     b ]]4+
R>Er   c                     t         dz  }t        j                  |d      }| j                  t        j	                  |dt                     |       y r   )r   r	   rV   r!   r]   	CustomInt)r%   rN   r   s      r   test_custom_bufsizez$CompressTestCase.test_custom_bufsize  s;    b ]]4+
REtLr           requires 64bit platformd   r   c                     d|z  }	 t         j                  |d      }| j                  t         j                  |      |       d x}}y # d x}}w xY wNr   r   )r	   rV   r!   r]   )r%   rJ   rN   comps       r   test_64bit_compressz$CompressTestCase.test_64bit_compress
  sP     d{	==q)DT__T2D9D4$D4s   ;A AN)r'   r(   r)   r   r   r   r   r   r   r   r   r   r   r   r   unittest
skipUnlessrp   rq   r   r*   r   r   r   r      s    ;' 8 8% S;&q17 27 S;&q1@ 2@ S#F $FM
 Xu,.GHS3Yq) * Ir   r   c                      e Zd Zed        Zd Zd Zd Zd4dZd Z	d5dZ
d6d	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/j`                  d+kD  d,       e e!d-z   d.      d/               Z1 ej&                  e/j`                  d+kD  d,       e e!d-z   d'      d0               Z2 ej&                  e/j`                  d+kD  d,       e e!d-z   d1      d2               Z3d3 Z4y)7CompressObjectTestCasec                    t         dz  }t        j                  |      }|t        |      fD ]v  }t        j	                         }|j                  |      }|j                         }| j                  t        j                  |j
                         | j                  ||z   |       x ft        |      t        |      ffD ]  \  }}t        j                         }	|	j                  ||z         }
|	j                         }| j                  |
|z          | j                  |	j                  t               | j                  |	j                  t                y r   )r   r	   rV   r   rb   rj   rT   rU   r!   rg   r]   assertIsInstanceunconsumed_tailbytesunused_data)r%   datasrcdataziprN   cox1x2v1v2dcoy1y2s               r   	test_pairz CompressObjectTestCase.test_pair  s    $--(i01 	/D!!#BT"BBdjj"((3R"Wg.	/ Bx)B-2!?@ 	:FB$$&CR(BBT27+!!#"5"5u=!!#//59	:r   c                    d}t         j                  }d}d}t         j                  }t         j                  |||||d      }t         j	                  |d      }| j                  t              5  |j                  t               d d d        | j                  t              5  |j                  t         j                  t                     d d d        |j                  t              |j                         z   }|j                  |t        t                    |j                         z   }	| j                  t        |	       y # 1 sw Y   xY w# 1 sw Y   xY w)	Nr   	   r   )r   methodr   memLevelstrategyzdictr   r   )rN   
max_length)r	   rc   
Z_FILTEREDrb   rg   rT   r\   rV   r   r]   rj   r   r!   )
r%   r   r   r   r   r   r   dor   ys
             r   r   z$CompressObjectTestCase.test_keywords+  s   ??E%+$)'/'/$'  ) e37y) 	+KK\K*	+y) 	<MMt}}\:M;	<KK%
2MM!L(9M:RXXZGq)	+ 	+	< 	<s   .E"*EEEc                 p   d}t         j                  }d}d}t         j                  }t         j                  |||||      }|j	                  t
              }|j                         }t         j                  |      }	|	j                  ||z         }
|	j                         }| j                  t
        |
|z          y )Nr   r   r   )
r	   rc   r   rb   rV   r   rj   rg   r]   r!   )r%   r   r   r   r   r   r   r   r   r   r   r   s               r   test_compressoptionsz+CompressObjectTestCase.test_compressoptions@  s    ??eVUHhG[[&XXZ  '^^BG$YY[rBw/r   c           	         t         dz  }t        j                         }g }t        dt	        |      d      D ](  }|j                  |j                  |||dz                 * |j                  |j                                dj                  |      }t        j                         }|j                  dj                  |            }|j                         }| j                  |||z          y )Nr   r      r   )r   r	   rb   ranger   r   rV   rj   joinrg   r]   r!   )	r%   rN   r   bufsicombufr   r   r   s	            r   test_compressincrementalz/CompressObjectTestCase.test_compressincrementalO  s    c!q#d)S) 	4AKKD1S5M23	4BHHJ$  "^^CHHTN+YY[rBw'r   Nc           	      j   |xs t         }|dz  }t        j                         }g }t        dt	        |      |      D ](  }|j                  |j                  ||||z                 * |j                  |j                                dj                  |      }	t        j                  |	      }
| j                  |
t               | j                  ||
       t        j                         }g }t        dt	        |	      |      D ]w  }|j                  |j                  |	|||z                 | j                  d|j                  dt	        |j                        z         | j                  d|j                         y |r |j                  |j                                n(	 |j                  d      }|r|j                  |       nn'| j                  d|j                  dt	        |j                        z         | j                  d|j                         | j                  |dj                  |             y )Nr   r   r   z"(A) uct should be b'': not %d longz"(B) uct should be b'': not %d long)r   r	   rb   r   r   r   rV   rj   r   r]   r   r   r!   rg   r   r   )r%   rj   sourcecxdcxrN   r   r   r   r   decombufr   chunks                r   test_decompincz%CompressObjectTestCase.test_decompinc^  s   '<|q#d)R( 	3AKKD1R4L12	3BHHJ$??6*h.x(  "q#f+s+ 	3AKKva#78S#"5"5A'*3+>+>'?@A S#//2	3 KK		$s+KK&  	c11='*3+>+>'?@	A 	coo.sxx~.r   c                 (    | j                  d       y NT)rj   )r   r$   s    r   test_decompincflushz*CompressObjectTestCase.test_decompincflush  s    $'r   c           	         |xs t         }|dz  }t        j                         }g }t        dt	        |      |      D ](  }|j                  |j                  ||||z                 * |j                  |j                                dj                  |      }| j                  |t        j                  |      d       t        j                         }	g }|}
|
r^|	j                  |
|      }| j                  t	        |      |kD  dt	        |      |fz         |j                  |       |	j                  }
|
r^|j                  |	j                                | j                  |dj                  |      d       y )Nr   r   r   compressed data failurechunk too big (%d>%d)Wrong data retrievedr   r	   rb   r   r   r   rV   rj   r   r!   r]   rg   assertFalser   )r%   r   r   r   rN   r   r   r   r   r   cbr   s               r   test_decompimaxz&CompressObjectTestCase.test_decompimax  sC   '<|q#d)R( 	3AKKD1R4L12	3BHHJ$tv62	4   "NN2s+ESZ#-+s5z3.??AKK$$B  	CIIK sxx~/EFr   c           	         t         dz  }t        j                         }g }t        dt	        |      d      D ](  }|j                  |j                  |||dz                 * |j                  |j                                dj                  |      }| j                  |t        j                  |      d       t        j                         }g }|}|rodt	        |      dz  z   }	|j                  ||	      }
| j                  t	        |
      |	kD  dt	        |
      |	fz         |j                  |
       |j                  }|ro|r |j                  |j                                nT
rR|j                  d	      }
| j                  t	        |
      |	kD  dt	        |
      |	fz         |j                  |
       |
rR| j                  |dj                  |      d	       y )
Nr   r   r   r   r   r   rS   r   r   r   )r%   rj   rN   r   r   r   r   r   r   r   r   s              r   test_decompressmaxlenz,CompressObjectTestCase.test_decompressmaxlen  s   c!q#d)S) 	4AKKD1S5M23	4BHHJ$tv62	4   "SWb[JNN2z2ESZ*4/3u:j2IIKKK$$B  KK		$sJ7  Uj!83s5z*6MMOE"	 
 	sxx~/EFr   c                 (    | j                  d       y r   )r   r$   s    r   test_decompressmaxlenflushz1CompressObjectTestCase.test_decompressmaxlenflush  s    """.r   c                     t         j                         }| j                  t        |j                  dd       | j                  d|j                         y )Nr   r   )r	   rg   rT   ra   r]   r!   r   )r%   r   s     r   test_maxlenmiscz&CompressObjectTestCase.test_maxlenmisc  s>      "*cnnc2>c112r   c                    t         dz  }| j                  t        |      t        j                         t        j                  |d      }t        j                         }| j                  |j                  |t        j                        |       y NrS   r   )r   assertGreaterr   r	   r   rV   rg   r!   r]   rp   rq   r%   rN   r   r   s       r   test_maxlen_largez(CompressObjectTestCase.test_maxlen_large  se     b 3t9d&7&78]]4+
  "
CKK@$Gr   c                     t         dz  }t        j                  |d      }t        j                         }| j	                  |j                  |t                     |d d        y )NrS   r   r   )r   r	   rV   rg   r!   r]   r   r   s       r   test_maxlen_customz)CompressObjectTestCase.test_maxlen_custom  sM    b ]]4+
  "
IK@$t*Mr   c                     d}t         j                         }|j                  |d      }||j                  |j                        z  }| j	                  |j                  d       y )Ns
   xKLJ Mr   r   )r	   rg   r]   r   r!   )r%   cdatar   ddatas       r   test_clear_unconsumed_tailz1CompressObjectTestCase.test_clear_unconsumed_tail  sV     -  "ua( 3 344,,c2r   c                 b   g d}t         dk\  r|j                  d       |D cg c]"  }t        t        |      rt	        t        |      $ }}t
        dz  }|D ]  }t        d      D ]  }	 t        j                  |      }|j                  |d d       }|j                  |      }|j                  |dd        }	|j                         }
| j                  t        j                  dj                  |||	|
g            |d	||fz         ~  y c c}w #  t        dj                  ||              xY w)
N)
Z_NO_FLUSHZ_SYNC_FLUSHZ_FULL_FLUSHZ_PARTIAL_FLUSH)r   r      r   Z_BLOCK   rS   i  z!Error for flush mode={}, level={}r   z*Decompress failed: flush mode=%i, level=%i)ZLIB_RUNTIME_VERSION_TUPLEr   hasattrr	   getattrr   r   rb   rV   rj   printformatr!   r]   r   )r%   sync_optoptrN   syncr   objabcds              r   test_flushesz#CompressObjectTestCase.test_flushes  s;   ' &5OOI&2: +3tS) D#& + +a 	Dr 	**E3Cd5Dk3A		4)Ad45k3A		A
   1Qq)1D!E!% )<@De}(MN 		+=!6$.0s   'D)ADD.r  zrequires zlib.Z_SYNC_FLUSHc                 L   dd l }t        j                  t        j                        }t        j	                         } |j
                  d      }|j                  |      }|j                  t        j                        }|j                  ||z         }| j                  ||d       y )Nr   i D  z17K random source doesn't match)r}   r	   rb   Z_BEST_COMPRESSIONrg   r~   rV   rj   r  r]   r!   )r%   r}   r   r   rN   firstsecondexpandeds           r   test_odd_flushz%CompressObjectTestCase.test_odd_flush  s     	 d556  "  v	* D!$++,>>%&.1 	4)JKr   c                     t         j                  t         j                        }| j                  |j	                                t         j                         }| j                  |j	                         d       y )Nr   )r	   rb   r  r1   rj   rg   r!   )r%   r   r   s      r   test_empty_flushz'CompressObjectTestCase.test_empty_flush  sP    
 d556
#  "c*r   c                    t         }|j                         }t        j                  |       dj	                  |      }t
        j                  |      }|j                  |      |j                         z   }t
        j                  |      }| j                  |j                  |      |j                         z   |       t
        j                         }| j                  t
        j                  |j                  |       y )Nr   r   )r   r   r}   shuffler   r	   rb   rV   rj   rg   r!   r]   rT   rU   )r%   hwordsr   r   cdr   s          r   test_dictionaryz&CompressObjectTestCase.test_dictionary&  s    	uE*[[^bhhj(  u -+ciik91=  "$**cnnb9r   c                    t         j                  t              }t         j                  t              }t        dd }|j	                  |      |j                  t         j                        z   }|j	                  |dd        |j                  t         j                        z   }|j	                  |d d       |j                  t         j                        z   }| j                  |j                  |      |       | j                  |j                  |      |dd         | j                  |j                  |      |d d        y )Nr"    i  r   i)	r	   rb   r   rg   rV   rj   r  r!   r]   )r%   r   r   pieced0d1d2s          r   test_dictionary_streamingz0CompressObjectTestCase.test_dictionary_streaming6  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                 P   d}| j                  t        j                  |      d       | j                  t        j                  t        j                  |d d        t        j                         }|j                  |d d       }||j                         z  }| j                  |d       y )N   xK Es   foo)r!   r	   r]   rT   rU   rg   rj   )r%   r   r   r   s       r   !test_decompress_incomplete_streamz8CompressObjectTestCase.test_decompress_incomplete_streamC  s    2+V4$**dooq"v>   "NN1Sb6"	SYY[F#r   c                 x   d}t         j                         }| j                  |j                         |j	                  |d d        | j                  |j                         |j	                  |dd         | j                  |j                         |j                          | j                  |j                         y Nr0  r1  )r	   rg   r   eofr]   r1   rj   r%   r   r   s      r   test_decompress_eofz*CompressObjectTestCase.test_decompress_eofP  s    2  "!q"v!qv 		 r   c                    d}t         j                         }| j                  |j                         |j	                  |d d        | j                  |j                         |j                          | j                  |j                         y r4  )r	   rg   r   r5  r]   rj   r6  s      r   %test_decompress_eof_incomplete_streamz<CompressObjectTestCase.test_decompress_eof_incomplete_stream[  sf    2  "!q"v!		!r   c                    d}d}t         j                  |      }||z   }dD ]Y  }ddt        |      t        |      fD ]:  }t         j                         }d}t	        dt        |      |      D ]  }	|	t        |      k  r| j                  |j                  d       |dk(  r7||j                  ||	|	|z          z  }| j                  |j                  d       i||j                  |j                  ||	|	|z    z   |      z  } ||j                         z  }| j                  |j                         | j                  ||       | j                  |j                  d       | j                  |j                  |       = \ y )N   abcdefghijklmnopqrstuvwxyzs
   0123456789)r   r)  r   r   r   r   )r	   rV   r   rg   r   r!   r   r]   r   rj   r1   r5  )
r%   r   	remainderr   r   maxlenstepr   rN   r   s
             r   test_decompress_unused_dataz2CompressObjectTestCase.test_decompress_unused_datad  sk    /!	MM&!	M 	=F1c!fc!f, =((*q#a&$/ OA3q6z((#>{qQX ??(()<)<cB # 3 3aAHo Ev!O OO 		#(  v.  !4!4c:  )<!=	=r   c                 L   d}t         j                  t         j                   |      }|j                  |      |j	                         z   }t         j                  t         j                   |      }|j                  |      |j	                         z   }| j                  ||       y )Nr;  r   )r	   rb   rd   rV   rj   rg   r]   r!   )r%   r   r   r   r   uncomps         r   #test_decompress_raw_with_dictionaryz:CompressObjectTestCase.test_decompress_raw_with_dictionary  s    -T^^O5A{{5!BHHJ.  e D%		3'r   c                     d}d}t         j                  |      }t         j                         }|j                  |d       ~t         j                  |      }| j	                  |j                         |dd         y )Nr;  s   QWERTYUIOPASDFGHJKLZXCVBNMr   )r	   rV   rg   r]   r!   rj   )r%   input1input2rN   r   s        r   test_flush_with_freed_inputz2CompressObjectTestCase.test_flush_with_freed_input  se     /.}}V$  "tQ}}V$fQRj1r   r   r   c                     t         dz  }t        j                  |d      }t        j                         }|j	                  |d       | j                  |j                  |      |dd         y r   )r   r	   rV   rg   r]   r!   rj   )r%   rJ   inputrN   r   s        r   test_flush_large_lengthz.CompressObjectTestCase.test_flush_large_length  sX     r!}}UA&  "tQ4%)4r   c                     t         dz  }t        j                  |d      }t        j                         }|j	                  |d       | j                  |j                  t                     |dd         y r   )r   r	   rV   rg   r]   r!   rj   r   )r%   rH  rN   r   s       r   test_flush_custom_lengthz/CompressObjectTestCase.test_flush_custom_length  sY    r!}}UA&  "tQ9;/qr;r   c                 6   t         }t        t        t         d      j                         d      }d t        j                  t        j
                  fD ]E  }t        j                  t        j                        }g }|j                  |j                  |              ||      }|d d  }|j                  |j                  |             |j                  |j                                dj                  |      }|j                  |j                  |             |j                  |j                                dj                  |      }	| j                  t        j                  |      ||z          | j                  t        j                  |	      ||z          H y )Nasciic                 "    | j                         S rt   r
   r  s    r   r   z:CompressObjectTestCase.test_compresscopy.<locals>.<lambda>      affh r   r   )r   r   strswapcaser
   deepcopyr	   rb   r  r   rV   rj   r   r!   r]   )
r%   data0data1funcc0bufs0c1bufs1s0s1s
             r   test_compresscopyz(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u=T__R0u=#	>r   c                 J   t         j                         }|j                  t               |j	                          | j                  t        |j                         | j                  t        t        j                  |       | j                  t        t        j                  |       y rt   )	r	   rb   rV   r   rj   rT   ra   r
   rT  )r%   r  s     r   test_badcompresscopyz+CompressObjectTestCase.test_badcompresscopy  sg     	

< 		*aff-*dii3*dmmQ7r   c                 X   t         }t        j                  |      }| j                  |t               d t
        j
                  t
        j                  fD ]  }t        j                         }g }|j                  |j                  |d d               ||      }|d d  }|j                  |j                  |dd               dj                  |      }|j                  |j                  |dd               dj                  |      }	| j                  ||	       | j                  ||        y )Nc                 "    | j                         S rt   rO  rP  s    r   r   z<CompressObjectTestCase.test_decompresscopy.<locals>.<lambda>  rQ  r       r   )r   r	   rV   r   r   r
   rT  rg   r   r]   r   r!   )
r%   rN   r   rW  r+  rY  r,  r[  r\  r]  s
             r   test_decompresscopyz*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%	&r   c                 t   t         j                  t              }t         j                         }|j	                  |       |j                          | j                  t        |j                         | j                  t        t        j                  |       | j                  t        t        j                  |       y rt   )
r	   rV   r   rg   r]   rj   rT   ra   r
   rT  )r%   rN   r  s      r   test_baddecompresscopyz-CompressObjectTestCase.test_baddecompresscopy  su     }}\* 	T		*aff-*dii3*dmmQ7r   c                 (   t        t        j                  dz         D ]g  }| j                  t        t        j
                  f      5  t        j                  t        j                  t        j                        |       d d d        i y # 1 sw Y   txY wr   )
r   pickleHIGHEST_PROTOCOLrT   r\   PicklingErrordumpsr	   rb   r  r%   protos     r   test_compresspicklez*CompressObjectTestCase.test_compresspickle  sz    622Q67 	OE""Iv/C/C#DE OT--d.E.EFNO O	OO Os   8BB	c                 
   t        t        j                  dz         D ]X  }| j                  t        t        j
                  f      5  t        j                  t        j                         |       d d d        Z y # 1 sw Y   exY wr   )	r   rh  ri  rT   r\   rj  rk  r	   rg   rl  s     r   test_decompresspicklez,CompressObjectTestCase.test_decompresspickle  sk    622Q67 	:E""Iv/C/C#DE :T//159: :	:: :s   )A99B	r|   r   c                 ^    t         j                  d      fd}| j                  ||       y )Nr   c                 H    j                  |       j                         z   S rt   )rV   rj   )r   r  s    r   r   zACompressObjectTestCase.test_big_compress_buffer.<locals>.<lambda>  s    QZZ]QWWY6 r   )r	   rb   r   )r%   rJ   rV   r  s      @r   r   z/CompressObjectTestCase.test_big_compress_buffer  s(    Q6&&tX6r   r   c                 \    t         j                         fd}| j                  ||       y )Nc                 H    j                  |       j                         z   S rt   )r]   rj   )r   r  s    r   r   zCCompressObjectTestCase.test_big_decompress_buffer.<locals>.<lambda>  s    q||A: r   )r	   rg   r   )r%   rJ   r]   r  s      @r   r   z1CompressObjectTestCase.test_big_decompress_buffer  s&     :
((z:r   r   r   r   r   c                 0   d|z  }t         j                  d      }t         j                         }	 |j                  |      |j	                         z   }|j                  |      |j	                         z   }| j                  ||       d x}x}}y # d x}x}}w xY wr   )r	   rb   rg   rV   rj   r]   r!   )r%   rJ   rN   r   r   r   rA  s          r   r   z*CompressObjectTestCase.test_64bit_compress  s     d{a !	(;;t$rxxz1D]]4(288:5FVT*#''D'6D4'D'6Ds   AB Bc                 .   d}d|z  }t         j                  |      |z   }t         j                         }	 |j                  |      |j	                         z   }| j                  ||j                         | j                  ||       d x}x}}y # d x}x}}w xY w)Nr?   r   )r	   rV   rg   r]   rj   r!   r   )r%   rJ   rN   unusedr   r   rA  s          r   test_large_unused_dataz-CompressObjectTestCase.test_large_unused_data  s     #}}T"V+!	&]]4(288:5FVR^^4VT*!%%F%TB%F%TBs   AB Br  c                 (   d|z  }t         j                         }	 t         j                  |d      }|j                  |d      |j	                         z   }| j                  ||       | j                  |j                  d       d x}x}}y # d x}x}}w xY w)Nr   r   r   r   )r	   rg   rV   r]   rj   r!   r   )r%   rJ   rN   r   r   rA  s         r   test_large_unconsumed_tailz1CompressObjectTestCase.test_large_unconsumed_tail  s     d{!	(==q)D]]4+bhhj8FVT*R//5#''D'6D4'D'6Ds   A'B	 	Bc                 
   t         dk\  }t        j                  dd      }|j                  t              |j                         z   }| j                  t        j                  |d      t               |r*| j                  t        j                  |d      t               | j                  t        j                  |d      t               | j                  t        j                  d      5  t        j                  |d       d d d        t        j                  d	      }| j                  |j                  |      t               t        j                  d	      }| j                  t        j                  d      5  |j                  |       d d d        t        j                  dd
      }|j                  t              |j                         z   }| j                  t        j                  |d
      t               | j                  t        j                  |d      t               |r*| j                  t        j                  |d      t               | j                  t        j                  |d      t               t        j                  d	      }| j                  |j                  |      t               t        j                  dd      }|j                  t              |j                         z   }| j                  t        j                  |d      t               t        j                  d	      }| j                  |j                  |      t               t        j                  dd      }|j                  t              |j                         z   }| j                  t        j                  |d      t               | j                  t        j                  |d      t               t        j                  d	      }| j                  |j                  |      t               t        j                  dd      }|j                  t              |j                         z   }| j                  t        j                  |d      t               | j                  t        j                  |d      t               t        j                  d      }| j                  |j                  |      t               dD ]e  }	| j                  |		      5  t        }
t        j                  t        j                  t        |		      |		      }| j                  |
|       d d d        g y # 1 sw Y   [xY w# 1 sw Y   xY w# 1 sw Y   xY w)N)r   r   r   r  r   rm   )r   r   r   /   zinvalid window size   )r   r   )   i   )r  rm   r  )r  r	   rb   rV   r   rj   r!   r]   rn   rU   rg   subTest)r%   supports_wbits_0r   zlib15r   zlib9	deflate15deflate9gzipr   expectedactuals               r   
test_wbitsz!CompressObjectTestCase.test_wbits)  s   5EAR0\*RXXZ74lCT__VQ7F9<H##DJJ0EF 	(OOFB'	(  w //>  r *##DJJ0EF 	#NN6"	# 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  )-|<" 	3EE* 3'MM,eM<E )    623 3	3M	( 	(
	# 	#D3 3s%   'U7U$A	U1U!$U.1U:	)FNr   @   )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'  r.  r2  r7  r9  r?  rB  rF  r   r   rI  rK  requires_Compress_copyr^  r`  requires_Decompress_copyrd  rf  rn  rp  r   r   r   rp   rq   r   rx  rz  r  r*   r   r   r   r     s:   : :&**0(&/R(G6G@/3HN3> X~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;
 Xu,.GHS3Yq)	( * I	( Xu,.GHS3Yq)
& * I
& Xu,.GHS3Yq)	( * I	(63r   r   c                     ||j                  |       | j                  d      }t        |      D cg c]  }|j                  |       c}S c c}w )z=Return a list of number lines randomly chosen from the source
)seedr   r   choice)r   numberr  	generatorsourcesns         r   choose_linesr  a  sE    tll4 G/4V}=!I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                   $   e Zd ZeZej                  e      ZdZed e	e      z  dz   z  Z
ej                  e
      Zd Zd Zd Zd Zd Zej$                   eed	z   d
      d               Zd Zd Zd Zd Zd Zd Zej8                  d        Zy)ZlibDecompressorTests   Not a valid deflate blocki   r   c                     | j                  t        t        j                  d       | j                  t        t        j                  dd       | j                  t        t        j                  ddd       y )NASDAr  notbytess   bytesr  )rT   r\   r	   _ZlibDecompressorr$   s    r   test_Constructorz%ZlibDecompressorTest.test_Constructor  sP    )T%;%;VD)T%;%;S*M)T%;%;S(ANr   c                     t         j                         }| j                  t        |j                         |j	                  | j
                        }| j                  || j                         y rt   )r	   r  rT   r\   r]   DATAr!   TEXTr%   zlibdtexts      r   testDecompressz#ZlibDecompressorTest.testDecompress  sN    &&()U%5%56		*tyy)r   c                     t         j                         }d}d}	 | j                  |dz  |dz   dz   }|sn||j                  |      z  }|dz  }5| j	                  || j
                         y )Nr   r   rS   r   )r	   r  r  r]   r!   r  )r%   r  r  r  rR  s        r   testDecompressChunks10z+ZlibDecompressorTest.testDecompressChunks10  sx    &&())AbD!A#r*CE$$S))DFA  	tyy)r   c                     t         j                         }d}|j                  | j                  |z         }| j	                  || j
                         | j	                  |j                  |       y )Ns   this is unused data)r	   r  r]   r  r!   r  r   )r%   r  r   r  s       r   testDecompressUnusedDataz-ZlibDecompressorTest.testDecompressUnusedData  sX    &&(,		+ 56tyy)**K8r   c                     t         j                         }|j                  | j                        }| j	                  t
        |j                  d       | j	                  t
        |j                  d       y )Ns   anythingr   )r	   r  r]   r  rT   EOFErrorr  s      r   testEOFErrorz!ZlibDecompressorTest.testEOFError  sT    &&(		*(E$4$4kB(E$4$4c:r   r   gffffff
@r   c                 "   t        d|      }t        j                  |      }	 ||dz
  |z  dz   z  }t        j	                  |      }t        j                         }|j                  |      }| j                  ||k(         d }d }d }y # d }d }d }w xY w)Ni   r   )minr}   r~   r	   rV   r  r]   r1   )r%   rJ   	blocksizeblockrN   r   r  decompresseds           r   testDecompress4Gz%ZlibDecompressorTest.testDecompress4G  s     ($/	  +		 T!V	1A56Dt,J**,E ++J7LOOLD01DJL DJLs   AB Bc                     t        t        j                  dz         D ]H  }| j                  t              5  t        j
                  t        j                         |       d d d        J y # 1 sw Y   UxY wr   )r   rh  ri  rT   r\   rk  r	   r  rl  s     r   
testPicklezZlibDecompressorTest.testPickle  s`    622Q67 	>E""9- >T335u=> >	>> >s   )A))A2	c                    t         j                         }d}g }t        | j                        dz
  }|j	                  |j                  | j                  d | |             | j                  |j                         | j                  t        |d         |       |j	                  |j                  d|             | j                  |j                         | j                  t        |d         |       |j	                  |j                  | j                  |d  |             | j                  t        |d         |       |j                  sM|j	                  |j                  d|             | j                  t        |d         |       |j                  sMdj                  |      }| j                  || j                         | j                  |j                  d       y )Nr   r  r   r   r   )r	   r  r   BIG_DATAr   r]   r   needs_inputr!   assertLessEqualr5  r   BIG_TEXTr   )r%   r  r   outlen_s        r   testDecompressorChunksMaxsizez2ZlibDecompressorTest.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dmm,**C0r   c                    t         j                         }g }| j                  |j                  | j                  d d d      d       |j                  |j                  dd             |j                  |j                  | j                  dd d             |j                  |j                  | j                  dd               | j                  dj                  |      | j                         y )Nr   r   r   r   r   i   rm   r	   r  r!   r]   r  r   r   r  r%   r  r  s      r   test_decompressor_inputbuf_1z1ZlibDecompressorTest.test_decompressor_inputbuf_1  s     &&( 	))$))DS/34 * 67:	<
 	

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

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

5##DIIcdO45#		2r   c                 8   t         j                         }g }| j                  |j                  | j                  d d d      d       |j                  |j                  d             |j                  |j                  | j                  dd d             |j                  |j                  | j                  dd d             |j                  |j                  | j                  dd               | j                  dj                  |      | j                         y )N   r   r   r   i  r   ,  r  r  s      r   test_decompressor_inputbuf_2z1ZlibDecompressorTest.test_decompressor_inputbuf_2!  s     &&( 	))$))DS/34 * 67:	<

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

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

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

5##DIIcdO45#		2r   c                    t         j                         }g }|j                  |j                  | j                  d d d             |j                  |j                  | j                  dd d             |j                  |j                  | j                  dd               | j                  dj                  |      | j                         y )Nr  r  r  r   )r	   r  r   r]   r  r!   r   r  r  s      r   test_decompressor_inputbuf_3z1ZlibDecompressorTest.test_decompressor_inputbuf_36  s     &&( 	

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

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

5##DIIcdO45#		2r   c                     t         j                         }| j                  t        |j                  | j
                  dz         | j                  t        |j                  | j
                  dz         y )N   )r	   r  rT   	Exceptionr]   BAD_DATA)r%   r  s     r   test_failurez!ZlibDecompressorTest.test_failureF  sR    &&()U%5%5t}}r7IJ)U%5%5t}}r7IJr   c                     t        j                  t        d      }t        j	                         } |       }t        d      D ]  }|j                           | j                   |       |z
  dd       y )Ngettotalrefcountr   r   rS   )delta)r   get_attributerp   r	   r  r   __init__assertAlmostEqual)r%   r  r  refs_beforer   s        r   test_refleaks_in___init__z.ZlibDecompressorTest.test_refleaks_in___init__L  sg    "006HI&&(&(s 	ANN	/1K?"Mr   N)r'   r(   r)   r   r  r	   rV   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    s    D==&D+H
c$i/145H}}X&HO
*
*9; S3Ys+  ,  >
1>3,3*3 K N Nr   r  c                       e Zd Zd Zy)r   c                      y)Nr   r*   r$   s    r   	__index__zCustomInt.__index__W  s    r   N)r'   r(   r)   r  r*   r   r   r   r   V  s    r   r   __main__))r   testr   test.supportr   rE   r
   osrh  r}   rp   r   r   r   r   import_moduler	   r   r  rb   r  rg   r  r"   r   r  TestCaser   r,   rI   rQ   objectrz   r   r   r  r   r  r   r'   mainr*   r   r   <module>r     s     &   	   
 < < #}""6*,,,  "F+"$  /8..""$f-$& 
 .2-F-F  9: <Mh'' M*Gx(( *G\9 1 1 90O)) 0Of6 <?+X->-> ?DJ	3183D3D J	3X '+f >>BiN8,, iNX 
 zHMMO r   