
    z%i$                        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 G d	 d
e j.                        Z G d de j.                        Z G d de j.                        Z G d de j.                        Z G d de      Z G d dee j.                        Z G d dee j.                        Zde	fdZ dZ! G d de j.                        Z" G d d      Z#e$dk(  r e jJ                          yy)    N)support)import_helper)
bigmemtest_1G_4Gskip_on_s390xzlibcopyzrequires Compress.copy()zrequires Decompress.copy()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    B/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_zlib.pytest_library_versionz$VersionTestCase.test_library_version3   s*     	2215t7H7H7KL    N)__name__
__module____qualname__r    r   r   r   r   1   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_crc32start>   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      i  )r   r	   r   r   s    r   test_crc32emptyz ChecksumTestCase.test_crc32emptyB   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	   adler32r    r   s    r   test_adler32startz"ChecksumTestCase.test_adler32startG   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 r#   )r   r	   r'   r   s    r   test_adler32emptyz"ChecksumTestCase.test_adler32emptyK   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	   r   r'   r   s    r   test_penguinszChecksumTestCase.test_penguinsP   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_unsignedY   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/   r0   r1   )r   binasciir   r	   )r   r2   crcs      r   test_same_as_binascii_crc32z,ChecksumTestCase.test_same_as_binascii_crc32a   s_    !,c2C#.0$**W2EFr   N)
r   r   r   r!   r%   r(   r*   r-   r3   r7   r   r   r   r   r   <   s'    84
:6
N:Gr   r   c                   4    e Zd Z eedz   dd      d        Zy)ChecksumBigBufferTestCase   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	   r   r'   )r   r;   datas      r   test_big_bufferz)ChecksumBigBufferTestCase.test_big_bufferl   sB    #'"D):6d+Z8r   N)r   r   r   r   r   r@   r   r   r   r9   r9   j   s!    S1WQ69 79r   r9   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_badlevelu   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   )rE   	TypeErrorr	   r'   r   rG   
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   )rE   
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 )N)rE   rR   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   rX   )rE   rR   r	   rY   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	   rN   sysmaxsizerY   r\   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	   rS   rY   r   s    r   test_disallow_instantiationz-ExceptionTestCase.test_disallow_instantiation   s@     	,,T48H8H8J3KL,,T48J8J8L3MNr   N)r   r   r   rH   rP   rV   rZ   r]   r   cpython_onlyrd   ri   r   r   r   rB   rB   s   sT    C	?H>F
 8 8 O Or   rB   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   rD   r$   )random	randbyteslen)r   r;   compress_func_1Mr?   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	   rG   r   rq   strip)r   r;   decompress_funcr?   
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   rt   rz   r   r   r   rl   rl      s    r   rl   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 rf   )r	   rG   HAMLET_SCENEr   rN   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)r?   r   )wbitsbufsize)	r	   rG   r~   r   rN   rE   rM   rU   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	   rG   r   	bytearrayrN   )r   r?   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 streamrX   )r	   rG   r~   r`   rF   rN   r   s     r   test_incomplete_streamz'CompressTestCase.test_incomplete_stream   s6    MM,'tzzOOOQsV	%r   rn   r   r;   r<   c                 .    d }| j                  ||       y )Nc                 .    t         j                  | d      S Nr$   )r	   rG   )ss    r   <lambda>z;CompressTestCase.test_big_compress_buffer.<locals>.<lambda>   s    T]]1a0 r   )rt   )r   r;   rG   s      r   test_big_compress_bufferz)CompressTestCase.test_big_compress_buffer   s    0&&tX6r      c                 D    | j                  |t        j                         y rf   )rz   r	   rN   )r   r;   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 NrD   r$   r_   )r~   r	   rG   r   rN   )r   r;   r?   ry   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	   rG   r   rN   	CustomInt)r   r?   ry   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Nrv   r   )r	   rG   r   rN   )r   r;   r?   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
skipUnlessrb   rc   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	   rG   r   rS   r\   rE   rF   r   rY   rN   assertIsInstanceunconsumed_tailbytesunused_data)r   datasrcdatazipr?   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   )r?   
max_length)r	   rT   
Z_FILTEREDrS   rY   rE   rM   rG   r~   rN   r\   rq   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	   rT   r   rS   rG   r~   r\   rY   rN   r   )r   r   r   r   r   r   r   r   r   r   r   r   s               r   test_compressoptionsz+CompressObjectTestCase.test_compressoptions1  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	   rS   rangerq   appendrG   r\   joinrY   rN   r   )	r   r?   r   bufsicombufr   r   r   s	            r   test_compressincrementalz/CompressObjectTestCase.test_compressincremental@  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	   rS   r   rq   r   rG   r\   r   rN   r   r   r   rY   r   r   )r   r\   sourcecxdcxr?   r   r   r   r   decombufr   chunks                r   test_decompincz%CompressObjectTestCase.test_decompincO  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)r\   )r   r   s    r   test_decompincflushz*CompressObjectTestCase.test_decompincflushx  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	   rS   r   rq   r   rG   r\   r   r   rN   rY   assertFalser   )r   r   r   r   r?   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$   rD   r   r   r   )r   r\   r?   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   rX   )r	   rY   rE   rR   rN   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 NrD   r$   )r~   assertGreaterrq   r	   r   rG   rY   r   rN   rb   rc   r   r?   ry   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 )NrD   r$   r   )r~   r	   rG   rY   r   rN   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	   rY   rN   r   r   )r   cdatar   ddatas       r   test_clear_unconsumed_tailz1CompressObjectTestCase.test_clear_unconsumed_tail  sV     -  "ua( 3 344,,c2r   c                    g d}t        d t        j                  j                  d      D              }|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_FLUSHc              3   2   K   | ]  }t        |        y wrf   )int).0vs     r   	<genexpr>z6CompressObjectTestCase.test_flushes.<locals>.<genexpr>  s     IqCFIs   .)r$   r      r   Z_BLOCK   rD   i  z!Error for flush mode={}, level={}r   z*Decompress failed: flush mode=%i, level=%i)tupler	   r   splitr   hasattrgetattrr~   r   rS   rG   r\   printformatr   rN   r   )r   sync_optveroptr?   syncr   objabcds               r   test_flushesz#CompressObjectTestCase.test_flushes  s\   ' ID$=$=$C$CC$HII,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   'D6AD;;Er   zrequires zlib.Z_SYNC_FLUSHc                    dd l }t        j                  t        j                        }t        j	                         }	  |j
                         }|j                  d       |j                  d      }|j                  |      }|j                  t        j                        }|j                  ||z         }| j                  ||d       y # t        $ r' 	  |j                         }n# t        $ r |}Y nw xY wY w xY w)Nr   r$   i D  z17K random source doesn't match)ro   r	   rS   Z_BEST_COMPRESSIONrY   WichmannHillAttributeErrorRandomseedrp   rG   r\   r   rN   r   )	r   ro   r   r   genr?   firstsecondexpandeds	            r   test_odd_flushz%CompressObjectTestCase.test_odd_flush  s     	 d556  "		%&%%'C 	}}Y' D!$++,>>%&.1 	4)JK!  	#fmmo! 		s5   C 	C8C$#C8$C2/C81C22C87C8c                     t         j                  t         j                        }| j                  |j	                                t         j                         }| j                  |j	                         d       y )Nr   )r	   rS   r  r    r\   rY   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  ro   shuffler   r	   rS   rG   r\   rY   r   rN   rE   rF   )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	   rS   r~   rY   rG   r\   r   r   rN   )r   r   r   pieced0d1d2s          r   test_dictionary_streamingz0CompressObjectTestCase.test_dictionary_streaming3  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	   rN   rE   rF   rY   r\   )r   r   r   r   s       r   !test_decompress_incomplete_streamz8CompressObjectTestCase.test_decompress_incomplete_stream@  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 Nr1  r2  )r	   rY   r   eofrN   r    r\   r   r   r   s      r   test_decompress_eofz*CompressObjectTestCase.test_decompress_eofM  s    2  "!q"v!qv 		 r   c                    d}t         j                         }| j                  |j                         |j	                  |d d        | j                  |j                         |j                          | j                  |j                         y r5  )r	   rY   r   r6  rN   r\   r7  s      r   %test_decompress_eof_incomplete_streamz<CompressObjectTestCase.test_decompress_eof_incomplete_streamX  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	   rG   rq   rY   r   r   r   rN   r   r\   r    r6  )
r   r   	remainderr   r   maxlenstepr   r?   r   s
             r   test_decompress_unused_dataz2CompressObjectTestCase.test_decompress_unused_dataa  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	   rS   rU   rG   r\   rY   rN   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	   rG   rY   rN   r   r\   )r   input1input2r?   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	   rG   rY   rN   r   r\   )r   r;   inputr?   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	   rG   rY   rN   r   r\   r   )r   rI  r?   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 rf   r
   r  s    r   r   z:CompressObjectTestCase.test_compresscopy.<locals>.<lambda>      affh r   r   )r~   r   strswapcaser
   deepcopyr	   rS   r  r   rG   r\   r   r   rN   )
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 rf   )	r	   rS   rG   r~   r\   rE   rR   r
   rU  )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 rf   rP  rQ  s    r   r   z<CompressObjectTestCase.test_decompresscopy.<locals>.<lambda>  rR  r       r   )r~   r	   rG   r   r   r
   rU  rY   r   rN   r   r   )
r   r?   r   rX  r,  rZ  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 rf   )
r	   rG   r~   rY   rN   r\   rE   rR   r
   rU  )r   r?   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_PROTOCOLrE   rM   PicklingErrordumpsr	   rS   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   ri  rj  rE   rM   rk  rl  r	   rY   rm  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	rn   r   c                 ^    t         j                  d      fd}| j                  ||       y )Nr$   c                 H    j                  |       j                         z   S rf   )rG   r\   )r   r  s    r   r   zACompressObjectTestCase.test_big_compress_buffer.<locals>.<lambda>  s    QZZ]QWWY6 r   )r	   rS   rt   )r   r;   rG   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 rf   )rN   r\   )r   r  s    r   r   zCCompressObjectTestCase.test_big_decompress_buffer.<locals>.<lambda>  s    q||A: r   )r	   rY   rz   )r   r;   rN   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	   rS   rY   rG   r\   rN   r   )r   r;   r?   r   r   r   rB  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/   rv   )r	   rG   rY   rN   r\   r   r   )r   r;   r?   unusedr   r   rB  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)Nrv   r   r$   r   )r	   rY   rG   rN   r\   r   r   )r   r;   r?   r   r   rB  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         j                  j                  dd      d   j                  d      }t        |      dk  r|j	                  d       n|d   j                         sd|d<   t        t        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:   0rX   )r$   r   r   r  r_   )r   r   /   zinvalid window size   )r   r   )   i   )r  r_   r  )r	   r   r  rq   r   	isnumericr  mapr   rS   rG   r~   r\   r   rN   r`   rF   rY   subTest)r   r   supports_wbits_0r   zlib15r   zlib9	deflate15deflate9gzipr   expectedactuals                r   
test_wbitsz!CompressObjectTestCase.test_wbits&  su    %%++C3A6<<SAq6A:HHSM2"AbE#c1+,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%   &W6W#A	W0W #W-0W9	)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/  r3  r8  r:  r@  rC  rG  r   r   rJ  rL  requires_Compress_copyr_  ra  requires_Decompress_copyre  rg  ro  rq  r   r   r   rb   rc   r   ry  r{  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	(?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
)r  r  r   choice)r   numberr  	generatorsourcesns         r   choose_linesr  g  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  )rE   rM   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 rf   )r	   r  rE   rM   rN   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   rD   r$   )r	   r  r  rN   r   r  )r   r  r  r  rS  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  rN   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  rN   r  rE   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$   )minro   rp   r	   rG   r  rN   r    )r   r;   	blocksizeblockr?   ry   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   ri  rj  rE   rM   rl  r	   r  rm  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   rX   r   )r	   r  rq   BIG_DATAr   rN   r   needs_inputr   assertLessEqualr6  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   r_   r	   r  r   rN   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   rN   r  r   r   r  r  s      r   test_decompressor_inputbuf_3z1ZlibDecompressorTest.test_decompressor_inputbuf_3<  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  rE   	ExceptionrN   BAD_DATA)r   r  s     r   test_failurez!ZlibDecompressorTest.test_failureL  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   rD   )delta)r   get_attributerb   r	   r  r   __init__assertAlmostEqual)r   r  r  refs_beforer   s        r   test_refleaks_in___init__z.ZlibDecompressorTest.test_refleaks_in___init__R  sg    "006HI&&(&(s 	ANN	/1K?"Mr   N)r   r   r   r~   r  r	   rG   r  r  rq   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__]  s    r   N)r   r   r   r  r   r   r   r   r   \  s    r   r   __main__)&r   testr   test.supportr   r5   r
   osri  ro   rb   r   r   r   r   import_moduler	   r   r  rS   r  rY   r  TestCaser   r   r9   rB   objectrl   r|   r   r  r~   r  r   r   mainr   r   r   <module>r     sg     &   	   
 < < #}""6*,,,  "F+"$  /8..""$f-$& >Mh'' M*Gx(( *G\9 1 1 90O)) 0Of6 <?+X->-> ?D_	3183D3D _	3B '+f >>BiN8,, iNX 
 zHMMO r   