
    z%iܕ                        d dl mZ d dlmZmZ d dlZd dlZd dlmZ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Zd dlZd dlZd dlmZ d dlmZ d dlmZ d dlZd dlZ ej2                  d      Zd d	lmZmZmZ dad
 Z G d dej@                        Z! G d de!      Z" G d de!      Z# G d de!      Z$ G d de!      Z% G d de!      Z&d Z'e(dk(  r ejR                          yy)    )support)
bigmemtest_4GN)BytesIODEFAULT_BUFFER_SIZE)import_helper)threading_helper)unlinkbz2)BZ2FileBZ2CompressorBZ2Decompressorc                     t         t        t        j                  d            a t         rt	        j
                  dg|       S t        j                  |       S )Nbunzip2)input)has_cmdline_bunzip2boolshutilwhich
subprocesscheck_outputr   
decompress)datas    A/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_bz2.pyext_decompressr      sC    ""6<<	#:;&&	{$??~~d##    c            	          e Zd Z	 g dZdj	                  e      ZdZdZdZdZ	 e
d      Z ej                  ej                  j	                   ej                  ej                  j!                  e            d            D ]8  Z eed	      5 Ze	ej+                   ee      e	d
       z  Z	d
d
d
       e	dkD  s8 n ej1                  ed      Zd Zd Zy
# 1 sw Y   ,xY w)BaseTest)s    root:x:0:0:root:/root:/bin/bash
s   bin:x:1:1:bin:/bin:
s   daemon:x:2:2:daemon:/sbin:
s   adm:x:3:4:adm:/var/adm:
s   lp:x:4:7:lp:/var/spool/lpd:
s    sync:x:5:0:sync:/sbin:/bin/sync
s-   shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
s!   halt:x:7:0:halt:/sbin:/sbin/halt
s"   mail:x:8:12:mail:/var/spool/mail:
s"   news:x:9:13:news:/var/spool/news:
s#   uucp:x:10:14:uucp:/var/spool/uucp:
s    operator:x:11:0:operator:/root:
s!   games:x:12:100:games:/usr/games:
s,   gopher:x:13:30:gopher:/usr/lib/gopher-data:
s(   ftp:x:14:50:FTP User:/var/ftp:/bin/bash
s#   nobody:x:65534:65534:Nobody:/home:
s.   postfix:x:100:101:postfix:/var/spool/postfix:
s-   niemeyer:x:500:500::/home/niemeyer:/bin/bash
s>   postgres:x:101:102:PostgreSQL Server:/var/lib/pgsql:/bin/bash
s6   mysql:x:102:103:MySQL server:/var/lib/mysql:/bin/bash
s#   www:x:103:104::/var/www:/bin/false
r   s  BZh91AY&SY.N >_ @n ?0 F#&FЦMQ4hh$i44S<QHՇI/E pu]ɻDL
Q	1ߠ2O97dIJL#/#CWMXa<etL˄.`n}lh	E,ZVH>9gd6
Պ.Kvxwߡ|/";ձ#Aoy\O煚f82"%>V,z⟣"E)I^rU26U0^DFݸankR3]f"6l$j@l1..klsEknQ%yvz̹zn7.G]B@!8`s   BZh9rE8P    s   this is not a valid bzip2 filer   i   z*.pyrbN   compresslevelc                 f    t        j                         \  }| _        t        j                  |       y N)tempfilemkstempfilenameosclose)selffds     r   setUpzBaseTest.setUpR   s"    $,,.DM
r   c                 .    t        | j                         y r$   )r
   r'   r*   s    r   tearDownzBaseTest.tearDownV   s    t}}r   )__name__
__module____qualname__
TEXT_LINESjoinTEXTDATA
EMPTY_DATABAD_DATA	test_size	bytearrayBIG_TEXTglobr(   pathescapedirname__file__fnameopenfhreadinto
memoryviewr   compressBIG_DATAr,   r/    r   r   r   r   &   s    
J. 88JD ^D4J0H I"H277<<BGGOOH4M(NPVWX % 	G"Z%9)*%EFFI	Gx	
 ||HA|6H	G 	Gs   CC	r   c                      e Zd Z	 d>dZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1 e2jf                         d0        Z4d1 Z5d2 Z6d3 Z7d4 Z8d5 Z9d6 Z:d7 Z;d8 Z<d9 Z=d: Z>d; Z?d< Z@y=)?BZ2FileTestc                     t        | j                  d      5 }|j                  | j                  |z         |j                  |       d d d        y # 1 sw Y   y xY w)Nwb)rB   r'   writer6   )r*   streamssuffixfs       r   createTempFilezBZ2FileTest.createTempFile]   sG    $--& 	!GGDII'(GGFO	 	 	s   0AAc                 8   | j                  t        t        d       | j                  t        t        t        j
                  d       | j                  t        t        t        j
                  d       | j                  t        t        t        j
                  d       | j                  t        t        t        j
                  d       | j                  t        t        t        j
                  d       | j                  t        t        t        j
                  dd	       y )
Ngw/^@zrxrbtr   r!   
   r   )assertRaises	TypeErrorr   
ValueErrorr(   devnullr.   s    r   testBadArgszBZ2FileTest.testBadArgsb   s    )Wg6*grzz3?*grzz4@*grzz5A*grzzK*grzzL 	)Wbjj#qAr   c                    | j                          t        | j                        5 }| j                  t        |j
                  t                      | j                  |j                         | j                         d d d        y # 1 sw Y   y xY wr$   	rQ   r   r'   rY   rZ   readfloatassertEqualr5   r*   bz2fs     r   testReadzBZ2FileTest.testReadm   sc    T]]# 	5tiEG<TYY[$))4	5 	5 	5s   ABBc                     | j                  d| j                         t        | j                        5 }| j	                  t
        |j                         d d d        y # 1 sw Y   y xY w)Nr   rN   rO   )rQ   r8   r   r'   rY   OSErrorr`   rc   s     r   testReadBadFilezBZ2FileTest.testReadBadFiles   sP    Admm<T]]# 	2tgtyy1	2 	2 	2s   !AA&c                 (   | j                  d       t        | j                        5 }| j                  t        |j
                  t                      | j                  |j                         | j                  dz         d d d        y # 1 sw Y   y xY wN   rN   r_   rc   s     r   testReadMultiStreamzBZ2FileTest.testReadMultiStreamx   sl    A&T]]# 	9tiEG<TYY[$))a-8	9 	9 	9s   ABBc                    t         j                  }t        | j                        t         _        	 | j	                  d       t        | j                        5 }| j                  t        |j                  t                      | j                  |j                         | j                  dz         d d d        |t         _        y # 1 sw Y   xY w# |t         _        w xY wrk   )_compressionBUFFER_SIZElenr6   rQ   r   r'   rY   rZ   r`   ra   rb   r5   )r*   buffer_sizerd   s      r   testReadMonkeyMultiStreamz%BZ2FileTest.testReadMonkeyMultiStream~   s     #..#&tyy> 	3*' =4!!)TYY@  dii!m<= (3L$	= = (3L$s$   'C AC.C CC Cc                     | j                  | j                         t        | j                        5 }| j	                  |j                         | j                         d d d        y # 1 sw Y   y xY w)N)rO   rQ   r8   r   r'   rb   r`   r5   rc   s     r   testReadTrailingJunkz BZ2FileTest.testReadTrailingJunk   sT    4==1T]]# 	5tTYY[$))4	5 	5 	5s   +A&&A/c                     | j                  d| j                         t        | j                        5 }| j	                  |j                         | j                  dz         d d d        y # 1 sw Y   y xY w)Nrl   rg   rv   rc   s     r   testReadMultiStreamTrailingJunkz+BZ2FileTest.testReadMultiStreamTrailingJunk   sZ    Admm<T]]# 	9tTYY[$))a-8	9 	9 	9s   .A**A3c                    | j                          t        | j                        5 }| j                  t        |j
                  t                      | j                  |j                  d      d       d d d        y # 1 sw Y   y xY w)Nr   r   )rQ   r   r'   rY   rZ   r`   ra   rb   rc   s     r   	testRead0zBZ2FileTest.testRead0   sa    T]]# 	0tiEG<TYYq\3/	0 	0 	0s   AA::Bc                     | j                          t        | j                        5 }d}	 |j                  d      }|sn||z  }| j	                  || j
                         d d d        y # 1 sw Y   y xY w)Nr   rV   rQ   r   r'   r`   rb   r5   r*   rd   textstrs       r   testReadChunk10zBZ2FileTest.testReadChunk10   sp    T]]# 	.tDiim	 
 T499-	. 	. 	.s   :A))A2c                     | j                  d       t        | j                        5 }d}	 |j                  d      }|sn||z  }| j	                  || j
                  dz         d d d        y # 1 sw Y   y xY w)Nrl   rm   r   rV   r}   r~   s       r   testReadChunk10MultiStreamz&BZ2FileTest.testReadChunk10MultiStream   sy    A&T]]# 	2tDiim	 
 T499q=1	2 	2 	2s   =A..A7c                     | j                          t        | j                        5 }| j                  |j	                  d      | j
                  d d        d d d        y # 1 sw Y   y xY w)Nd   )rQ   r   r'   rb   r`   r5   rc   s     r   testRead100zBZ2FileTest.testRead100   sS    T]]# 	>tTYYs^TYYt_=	> 	> 	>   /AA'c                 v   | j                          t        | j                        5 }|j                         }| j	                  t        |      d       | j                  | j                  j                  |             | j                  |j                         | j                         d d d        y # 1 sw Y   y xY wNr   )rQ   r   r'   peekassertNotEqualrr   
assertTruer5   
startswithrb   r`   )r*   rd   pdatas      r   testPeekzBZ2FileTest.testPeek   s    T]]# 	5tIIKEE
A.OODII0078TYY[$))4		5 	5 	5s   B B//B8c                    | j                          t        | j                        5 }d}t        |      }| j	                  |j                  |      |       | j	                  || j                  d |        t        | j                        |z
  }t        t        | j                              }| j	                  |j                  |      |       | j	                  |d | | j                  | d         d d d        y # 1 sw Y   y xY w)N   )rQ   r   r'   r:   rb   rD   r5   rr   )r*   rd   nbs       r   testReadIntozBZ2FileTest.testReadInto   s    T]]# 	4tA!AT]]1-q1Q		"1.DII"A#dii.)AT]]1-q1QrUDIIqbcN3	4 	4 	4s   CC77D c                    | j                          t        | j                        5 }| j                  t        |j
                  d        | j                  D ]"  }| j                  |j                         |       $ 	 d d d        y # 1 sw Y   y xY wr$   rQ   r   r'   rY   rZ   readliner3   rb   r*   rd   lines      r   testReadLinezBZ2FileTest.testReadLine   sp    T]]# 	8ti= 8  $78	8 	8 	8s   ABBc                 (   | j                  d       t        | j                        5 }| j                  t        |j
                  d        | j                  dz  D ]"  }| j                  |j                         |       $ 	 d d d        y # 1 sw Y   y xY wrk   r   r   s      r   testReadLineMultiStreamz#BZ2FileTest.testReadLineMultiStream   sz    A&T]]# 	8ti=!+ 8  $78	8 	8 	8s   ABBc                    | j                          t        | j                        5 }| j                  t        |j
                  d        | j                  |j                         | j                         d d d        y # 1 sw Y   y xY wr$   rQ   r   r'   rY   rZ   	readlinesrb   r3   rc   s     r   testReadLineszBZ2FileTest.testReadLines   sf    T]]# 	@ti>T^^-t?	@ 	@ 	@s   AA;;Bc                    | j                  d       t        | j                        5 }| j                  t        |j
                  d        | j                  |j                         | j                  dz         d d d        y # 1 sw Y   y xY wrk   r   rc   s     r   testReadLinesMultiStreamz$BZ2FileTest.testReadLinesMultiStream   sp    A&T]]# 	Dti>T^^-t/BC	D 	D 	Ds   AB  B	c                     | j                          t        | j                        5 }| j                  t	        t        |            | j                         d d d        y # 1 sw Y   y xY wr$   rQ   r   r'   rb   listiterr3   rc   s     r   testIteratorzBZ2FileTest.testIterator   sR    T]]# 	@tT$t*-t?	@ 	@ 	@r   c                     | j                  d       t        | j                        5 }| j                  t	        t        |            | j                  dz         d d d        y # 1 sw Y   y xY wrk   r   rc   s     r   testIteratorMultiStreamz#BZ2FileTest.testIteratorMultiStream   s\    A&T]]# 	DtT$t*-t/BC	D 	D 	Ds   2A##A,c                     | j                          t        | j                        }|j                          | j	                  t
        t        |       | j	                  t
        |j                         y r$   )rQ   r   r'   r)   rY   r[   nextr   rc   s     r   testClosedIteratorDeadlockz&BZ2FileTest.testClosedIteratorDeadlock   sK    t}}%

*dD1*dnn5r   c                    t        | j                  d      5 }| j                  t        |j                         |j	                  | j
                         d d d        t        | j                  d      5 }| j                  t        |j                               | j
                         d d d        y # 1 sw Y   \xY w# 1 sw Y   y xY w)Nwr   
r   r'   rY   rZ   rM   r5   rB   rb   r   r`   r*   rd   rP   s      r   	testWritezBZ2FileTest.testWrite   s    T]]C( 	"Di4JJtyy!	" $--& 	B!^AFFH5tyyA	B 	B	" 	"	B 	Bs   <B.14B:.B7:Cc                    t        | j                  d      5 }d}	 | j                  |dz  |dz   dz   }|sn|j                  |       |dz  }2	 d d d        t	        | j                  d      5 }| j                  t        |j                               | j                         d d d        y # 1 sw Y   \xY w# 1 sw Y   y xY w)Nr   r   rV   r    r   )r   r'   r5   rM   rB   rb   r   r`   )r*   rd   r   r   rP   s        r   testWriteChunks10zBZ2FileTest.testWriteChunks10   s    T]]C( 	DAii"ac2X.

3Q  	 $--& 	B!^AFFH5tyyA	B 	B	 		B 	Bs   6B),4B5)B25B>c                 l   t         j                  | j                  d      }t        | j                  dd      5 }|j                  | j                         d d d        t        | j                  d      5 }| j                  |j                         |       d d d        y # 1 sw Y   IxY w# 1 sw Y   y xY w)Nrl   r!   r   r   )	r   rF   r5   r   r'   rM   rB   rb   r`   )r*   expectedrd   rP   s       r    testWriteNonDefaultCompressLevelz,BZ2FileTest.testWriteNonDefaultCompressLevel
  s    <<		<;T]]Cq9 	"TJJtyy!	"$--& 	1!QVVXx0	1 	1	" 	"	1 	1s   B4!B*B'*B3c                    t        | j                  d      5 }| j                  t        |j                         |j	                  | j
                         d d d        | j                  t        j                  dg       t        | j                  d      5 }| j                  t        |j                               | j                         d d d        y # 1 sw Y   ~xY w# 1 sw Y   y xY w)Nr   ar   )r   r'   rY   rZ   
writelinesr3   r[   rB   rb   r   r`   r5   r   s      r   testWriteLineszBZ2FileTest.testWriteLines  s    T]]C( 	-Di9OODOO,	-
 	*doou=$--& 	B!^AFFH5tyyA	B 	B	- 	-	B 	Bs   <C4CCC%c                 X   t        | j                  d      5 }|j                  d       d d d        t        | j                  d      5 }| j                  t        |j                  d       | j                  t        |j
                  dg       d d d        y # 1 sw Y   lxY w# 1 sw Y   y xY w)Nr   s   abcrW      a)r   r'   rM   rY   rh   r   rc   s     r   testWriteMethodsOnReadOnlyFilez*BZ2FileTest.testWriteMethodsOnReadOnlyFile  s    T]]C( 	DJJv	 T]]C( 	@Dgtzz48gt?	@ 	@	 		@ 	@s   BAB B B)c                 ^   t        | j                  d      5 }| j                  t        |j                         |j	                  | j
                         d d d        t        | j                  d      5 }| j                  t        |j                         |j	                  | j
                         d d d        t        | j                  d      5 }| j                  t        |j                               | j
                  dz         d d d        y # 1 sw Y   xY w# 1 sw Y   kxY w# 1 sw Y   y xY w)Nr   r   r      r   r   s      r   
testAppendzBZ2FileTest.testAppend#  s    T]]C( 	"Di4JJtyy!	" T]]C( 	"Di4JJtyy!	" $--& 	F!^AFFH5tyy1}E	F 	F	" 	"	" 	"	F 	Fs#   <D1<D7D#DD #D,c                 4   | j                          t        | j                        5 }| j                  t        |j
                         |j                  d       | j                  |j                         | j                  dd         d d d        y # 1 sw Y   y xY wN   )	rQ   r   r'   rY   rZ   seekrb   r`   r5   rc   s     r   testSeekForwardzBZ2FileTest.testSeekForward-  sp    T]]# 	;ti3IIcNTYY[$))CD/:	; 	; 	;s   ABBc                 d   | j                  d       t        | j                        5 }| j                  t        |j
                         |j                  t        | j                        dz          | j                  |j                         | j                  dd         d d d        y # 1 sw Y   y xY w)Nr   rm   r   )
rQ   r   r'   rY   rZ   r   rr   r5   rb   r`   rc   s     r   testSeekForwardAcrossStreamsz(BZ2FileTest.testSeekForwardAcrossStreams4  s    A&T]]# 	;ti3IIc$))ns*+TYY[$))CD/:	; 	; 	;s   A5B&&B/c                    | j                          t        | j                        5 }|j                  d       |j	                  dd       | j                  |j                         | j                  dd         d d d        y # 1 sw Y   y xY wNi  jr    i^  )rQ   r   r'   r`   r   rb   r5   rc   s     r   testSeekBackwardszBZ2FileTest.testSeekBackwards;  sk    T]]# 	?tIIcNIIdATYY[$))GH*=>	? 	? 	?s   AB  B	c                    | j                  d       t        | j                        5 }t        | j                        dz   }|dkD  r#|t        |j                  |            z  }|dkD  r#|j                  dd       | j                  |j                         | j                  dd  | j                  z          d d d        y # 1 sw Y   y xY w)Nr   rm   r   r   r   r    i)rQ   r   r'   rr   r5   r`   r   rb   )r*   rd   readtos      r   testSeekBackwardsAcrossStreamsz*BZ2FileTest.testSeekBackwardsAcrossStreamsB  s    A&T]]# 	Kt^c)F1*#dii/00 1*IIdATYY[$))GH*=		*IJ	K 	K 	Ks   A B>)AB>>Cc                 "   | j                          t        | j                        5 }|j                  dd       | j	                  |j                         | j                  t        | j                        dz
  d         d d d        y # 1 sw Y   y xY w)Nr   r   r   )rQ   r   r'   r   rb   r`   r5   rr   rc   s     r   testSeekBackwardsFromEndz$BZ2FileTest.testSeekBackwardsFromEndK  sr    T]]# 	JtIIdATYY[$))C		N34F4G*HI	J 	J 	Js   ABBc                     | j                  d       t        | j                        5 }|j                  dd       | j	                  |j                         | j                  dz  dd         d d d        y # 1 sw Y   y xY w)Nr   rm   i)rQ   r   r'   r   rb   r`   r5   rc   s     r   %testSeekBackwardsFromEndAcrossStreamsz1BZ2FileTest.testSeekBackwardsFromEndAcrossStreamsQ  sm    A&T]]# 	CtIIeQTYY[499q=%&*AB	C 	C 	Cs   AA44A=c                 @   | j                          t        | j                        5 }|j                  d       | j	                  |j                         t        | j                               | j	                  |j                         d       d d d        y # 1 sw Y   y xY wNI r   	rQ   r   r'   r   rb   tellrr   r5   r`   rc   s     r   testSeekPostEndzBZ2FileTest.testSeekPostEndW  sq    T]]# 	/tIIfTYY[#dii.9TYY[#.	/ 	/ 	/s   A%BBc                 J   | j                  d       t        | j                        5 }|j                  d       | j	                  |j                         t        | j                        dz         | j	                  |j                         d       d d d        y # 1 sw Y   y xY wNrl   rm   r   r   r   rc   s     r   testSeekPostEndMultiStreamz&BZ2FileTest.testSeekPostEndMultiStream^  s{    A&T]]# 	/tIIfTYY[#dii.1*<=TYY[#.	/ 	/ 	/s   A(BB"c                 b   | j                          t        | j                        5 }|j                  d       |j                  d       | j	                  |j                         t        | j                               | j	                  |j                         d       d d d        y # 1 sw Y   y xY wr   r   rc   s     r   testSeekPostEndTwicez BZ2FileTest.testSeekPostEndTwicee  s}    T]]# 	/tIIfIIfTYY[#dii.9TYY[#.		/ 	/ 	/s   A6B%%B.c                 l   | j                  d       t        | j                        5 }|j                  d       |j                  d       | j	                  |j                         t        | j                        dz         | j	                  |j                         d       d d d        y # 1 sw Y   y xY wr   r   rc   s     r   testSeekPostEndTwiceMultiStreamz+BZ2FileTest.testSeekPostEndTwiceMultiStreamm  s    A&T]]# 	/tIIfIIfTYY[#dii.1*<=TYY[#.		/ 	/ 	/s   A9B**B3c                 .   | j                          t        | j                        5 }|j                  d       | j	                  |j                         d       | j	                  |j                         | j                         d d d        y # 1 sw Y   y xY w)Nr   r   rQ   r   r'   r   rb   r   r`   r5   rc   s     r   testSeekPreStartzBZ2FileTest.testSeekPreStartu  sl    T]]# 	5tIIdOTYY[!,TYY[$))4	5 	5 	5s   ABBc                 8   | j                  d       t        | j                        5 }|j                  d       | j	                  |j                         d       | j	                  |j                         | j                  dz         d d d        y # 1 sw Y   y xY w)Nr   rm   r   r   r   rc   s     r   testSeekPreStartMultiStreamz'BZ2FileTest.testSeekPreStartMultiStream|  su    A&T]]# 	9tIIdOTYY[!,TYY[$))a-8	9 	9 	9s   ABBc                 z   | j                          t        | j                  d      5 }t        |      }	 | j	                  |j                         |j                                |j                          	 d d d        | j                  t        j
                         y # |j                          w xY w# 1 sw Y   ?xY w)Nr   )	rQ   rB   r'   r   rb   filenor)   rY   r[   )r*   rawfrd   s      r   
testFilenozBZ2FileTest.testFileno  s    $--& 	$4=D  >

	 	*dkk2 

	 	s"   B1.B"B1B..B11B:c                 t   t        t        | j                              }	 | j                  |j	                                |j                          | j                  |j	                                |j                          | j                  t        |j                         t        t               d      }	 | j                  |j	                                |j                          | j                  t        |j                         t        | j                        }d |_        t        |      }	 | j                  |j	                                |j                          | j                  t        |j                         y # |j                          w xY w# |j                          w xY w# |j                          w xY w)Nr   c                       y)NFrH   rH   r   r   <lambda>z*BZ2FileTest.testSeekable.<locals>.<lambda>  s    r   )
r   r   r6   r   seekabler`   r)   rY   r[   assertFalse)r*   rd   srcs      r   testSeekablezBZ2FileTest.testSeekable  s!   wtyy)*	OODMMO,IIKOODMMO,JJL*dmm4wy#&	T]]_-JJL*dmm4dii $s|	T]]_-JJL*dmm4# JJL JJL JJLs$   AE; 3F +F% ;FF"%F7c                 Z   t        t        | j                              }	 | j                  |j	                                |j                          | j                  |j	                                |j                          | j                  t        |j                         t        t               d      }	 | j                  |j	                                |j                          | j                  t        |j                         y # |j                          w xY w# |j                          w xY wNr   )
r   r   r6   r   readabler`   r)   rY   r[   r   rc   s     r   testReadablezBZ2FileTest.testReadable  s    wtyy)*	OODMMO,IIKOODMMO,JJL*dmm4wy#&	T]]_-JJL*dmm4 JJL JJL   AD 3D DD*c                 Z   t        t        | j                              }	 | j                  |j	                                |j                          | j                  |j	                                |j                          | j                  t        |j                         t        t               d      }	 | j                  |j	                                |j                          | j                  t        |j                         y # |j                          w xY w# |j                          w xY wr   )
r   r   r6   r   writabler`   r)   rY   r[   r   rc   s     r   testWritablezBZ2FileTest.testWritable  s    wtyy)*	T]]_-IIKT]]_-JJL*dmm4wy#&	OODMMO,JJL*dmm4 JJL JJLr   c                 p    | j                          t        d      D ]  }t        | j                        }~ y )Ni'  )rQ   ranger   r'   )r*   ios      r   testOpenDelzBZ2FileTest.testOpenDel  s2    u 	A&A	r   c                 :    | j                  t        t        d       y )Nz/non/existent)rY   rh   r   r.   s    r   testOpenNonexistentzBZ2FileTest.testOpenNonexistent  s    '7O<r   c                    d}t        | j                  d      5 }|j                  |       d d d        t        | j                        5 }|j	                         }d d d        | j                  dg       t        | j                        5 }t        |j	                               }d d d        | j                  dg       y # 1 sw Y   xY w# 1 sw Y   sxY w# 1 sw Y   5xY w)Ns,   BZh91AY&SYb]        !h3M<]BCe%trL   s   Test)rB   r'   rM   r   r   rb   r   )r*   r   rP   rd   linesxliness         r   testReadlinesNoNewlinez"BZ2FileTest.testReadlinesNoNewline  s    z$--& 	!GGDM	T]]# 	%tNN$E	%	*T]]# 	,t$..*+F	,'+	 		% 	%	, 	,s#   B?C	C?CCC c                    d }t        | j                  d      5 }|j                  d       d d d        t        | j                  d      }|j                          	 |5  	 d d d        | j	                  d       	 t        | j                  d      5 }ddz   d d d        | j	                  d       y # 1 sw Y   xY w# 1 sw Y   ]xY w# t
        $ r Y Zw xY w# 1 sw Y   BxY w# t        $ r Y y w xY w)NrL   s   xxxr   z4__enter__ on a closed file didn't raise an exceptionr    r   z1/0 didn't raise an exception)r   r'   rM   r)   failr[   ZeroDivisionErrorr*   rP   s     r   testContextProtocolzBZ2FileTest.testContextProtocol  s    T]]D) 	QGGFO	DMM4(			N 
 IILM	7- !
 II56#	 	
  		
   		s_   B.C B:C 8C! CC! .B7:C?C 	CCCC! !	C-,C-c                 0   ddz  d}t        | j                  d      5 fd}t        |      D cg c]  }t        j                  |       }}t        j                  |      5  	 d d d        d d d        y c c}w # 1 sw Y   xY w# 1 sw Y   y xY w)N   1i   rV   rL   c                  H    t        d      D ]  } j                          y Nrl   )r   rM   )r   r   rP   s    r   compz'BZ2FileTest.testThreading.<locals>.comp  s!    q "AGGDM"r   )target)r   r'   r   	threadingThreadr	   start_threads)r*   nthreadsr  r   threadsr   rP   s        @@r   testThreadingzBZ2FileTest.testThreading  s     e|T]]D) 	Q" ?DHoNy''t4NGN!//8 	 	 O 	 	s4   BA;B(B *B;B B		BBc                    | j                          t        | j                  d         }|dz  }t        | j                        5 }|j                  |       | j                  t        |      | j                  d   |d         | j                  |j                         | j                  |d         d d d        t        | j                        5 }|j                          | j                  t        |      | j                  d          | j                  |j                         | j                  d          d d d        t        | j                        5 }|j                          | j                  t        t        |       | j                  |j                         g        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   r    )rQ   rr   r3   r   r'   r`   rb   r   r5   r   r   rY   StopIteration)r*   linelenhalflenrd   s       r   testMixedIterationAndReadsz&BZ2FileTest.testMixedIterationAndReads   si   dooa()Q,T]]# 	?tIIgT$Z);GH)EFTYY[$))GH*=>	? T]]# 	BtMMOT$Z);<T]]_dooa.@A	B T]]# 	3tNNmT48T^^-r2	3 	3	? 	?	B 	B	3 	3s'   A*F"
A&F.AF:"F+.F7:Gc                    d}d}t        | j                  d      5 }|j                  |       d d d        t        | j                  d      5 }|j                  |       d d d        t        | j                        5 }| j                  |j	                         ||z          d d d        y # 1 sw Y   {xY w# 1 sw Y   WxY w# 1 sw Y   y xY w)Ns  foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoos  barbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarr   r   )r   r'   rM   rb   r`   )r*   data1data2rd   s       r   testMultiStreamOrderingz#BZ2FileTest.testMultiStreamOrdering  s    T]]C( 	DJJu	T]]C( 	DJJu	T]]# 	9tTYY[%%-8	9 	9		 		 		9 	9s#   B'B3:$B?'B03B<?Cc                 $   | j                   }	 |j                  d      }t	        d      5 }|j                  | j                         d d d        t	        |d      5 }| j                  |j                         | j                         d d d        t	        |d      5 }| j                  |j                         | j                         d d d        y # t        $ r | j                  d       Y w xY w# 1 sw Y   xY w# 1 sw Y   uxY w# 1 sw Y   y xY w)Nasciiz%Temporary file name needs to be ASCIIrL   r   )	r'   encodeUnicodeEncodeErrorskipTestr   rM   r6   rb   r`   )r*   str_filenamebytes_filenamerP   s       r   testOpenBytesFilenamez!BZ2FileTest.testOpenBytesFilename  s    }}	C)009N ^T* 	aGGDII	^T* 	2aQVVXtyy1	2 \4( 	2AQVVXtyy1	2 	2 " 	CMMAB	C	 		2 	2	2 	2s4   C C.+C:+DC+*C+.C7:DDc                 P   t        j                  | j                        }t        |d      5 }|j	                  | j
                         d d d        t        |d      5 }| j                  |j                         | j
                         d d d        y # 1 sw Y   IxY w# 1 sw Y   y xY w)NrL   r   )pathlibPathr'   r   rM   r6   rb   r`   )r*   r'   rP   s      r   testOpenPathLikeFilenamez$BZ2FileTest.testOpenPathLikeFilename*  s    <<.Xt$ 	GGDII	Xt$ 	2QVVXtyy1	2 	2	 		2 	2s   B+BBB%c                    	 t         j                  dt        d      z  d      }| j                  t	        |      t
        j                         t        t        |            }| j                  |j                  d      d       dt        z   }| j                  |j                  j                  j                         |d       y )N    g    >A	   r!   r    z)Excessive amount of data was decompressed)r   rF   int
assertLessrr   rp   rq   r   r   rb   r`   r   assertLessEqual_bufferrawr   )r*   bombdecomp
max_decomps       r   testDecompressLimitedz!BZ2FileTest.testDecompressLimited1  s    ;||ECH,A|>D	<#;#;<'Q/,,
V^^//446
7	9r   c                 t   t        | j                        5 }t        |      5 }| j                  t        |j
                  t                      | j                  |j                         | j                         d d d        | j                  |j                         d d d        y # 1 sw Y   -xY w# 1 sw Y   y xY wr$   )r   r6   r   rY   rZ   r`   ra   rb   r5   r   closedr*   biord   s      r   testReadBytesIOzBZ2FileTest.testReadBytesIO?  s    TYY 	)3 9!!)TYY@  dii89 SZZ(		) 	)9 9	) 	)s#   B.AB"6#B."B+	'B..B7c                    t        | j                        5 }t        |      5 }|j                         }| j	                  t        |      d       | j                  | j                  j                  |             | j                  |j                         | j                         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wr   )r   r6   r   r   r   rr   r   r5   r   rb   r`   )r*   r8  rd   r   s       r   testPeekBytesIOzBZ2FileTest.testPeekBytesIOF  s    TYY 	93 9		##CJ2		 4 4U ;<  dii8	9	9 	99 9	9 	9s#   B?B B3"B?3B<	8B??Cc                    t               5 }t        |d      5 }| j                  t        |j                         |j	                  | j
                         d d d        | j                  t        |j                               | j
                         | j                  |j                         d d d        y # 1 sw Y   `xY w# 1 sw Y   y xY wr   )r   r   rY   rZ   rM   r5   rb   r   getvaluer   r6  r7  s      r   testWriteBytesIOzBZ2FileTest.testWriteBytesION  s    Y 	)#c" &d!!)TZZ8

499%& ^CLLN;TYYGSZZ(	) 	)& &	) 	)s#   B?<B3AB?3B<	8B??Cc                 T   t        | j                        5 }t        |      5 }| j                  t        |j
                         |j                  d       | j                  |j                         | j                  dd         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wr   )	r   r6   r   rY   rZ   r   rb   r`   r5   r7  s      r   testSeekForwardBytesIOz"BZ2FileTest.testSeekForwardBytesIOV  s    TYY 	?3 ?!!)TYY7		#  diio>?	? 	?? ?	? 	?s#   BABBB	BB'c                 8   t        | j                        5 }t        |      5 }|j                  d       |j	                  dd       | j                  |j                         | j                  dd         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wr   )r   r6   r   r`   r   rb   r5   r7  s      r   testSeekBackwardsBytesIOz$BZ2FileTest.testSeekBackwardsBytesIO]  s    TYY 	C3 C		#		$"  dii.ABC	C 	CC C	C 	Cs#   BAB3BB		BBc                 ~   | j                   d d }t        t        |            5 }| j                  t        |j
                         d d d        t        t        |            5 }| j                  |j                  t        | j                              | j                         | j                  t        |j
                  d       d d d        t        d      D ]C  }t        t        |d |             5 }| j                  t        |j
                  d       d d d        E y # 1 sw Y   xY w# 1 sw Y   gxY w# 1 sw Y   hxY w)Nr       )
r6   r   r   rY   EOFErrorr`   rb   rr   r5   r   )r*   	truncatedrP   r   s       r   test_read_truncatedzBZ2FileTest.test_read_truncatedd  s   IIdsO	WY'( 	0Ah/	0WY'( 	3AQVVC		N3TYY?h2	3 r 	7A2A/0 7A!!(AFFA67 7	7	0 	0	3 	3
7 7s$   !D!A D'."D3D$'D03D<	c                 8   t        j                   dg d      }t        |      |j                  z  }t        t	               d      5 }| j                  |j                  |      |       | j                  |j                         |       d d d        y # 1 sw Y   y xY w)NQ)r    r   rX      rl   r   )arrayrr   itemsizer   r   rb   rM   r   )r*   qLENGTHrP   s       r   test_issue44439zBZ2FileTest.test_issue44439q  su    KK_-Q!**$WY$ 	/QWWQZ0QVVXv.	/ 	/ 	/s   ABBN)r    r   )Ar0   r1   r2   rQ   r]   re   ri   rn   rt   rw   ry   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	   requires_working_threadingr  r  r  r$  r(  r4  r9  r;  r>  r@  rB  rH  rP  rH   r   r   rJ   rJ   Z   sZ   
	B52
935
9
0	.	2>
5
488@D@
D
6B
B1B@F;;?KJC////593545"5"=
,7* 1002
 3
3"	922	9)9)?C7/r   rJ   c                   h    e Zd Zd Zd Zd Zej                   ee	dz   d      d               Z
d Zy	)
BZ2CompressorTestc                     t               }| j                  t        |j                         |j                  | j                        }||j                         z  }| j                  t        |      | j                         y r$   )r   rY   rZ   rF   r5   flushrb   r   r*   bz2cr   s      r   testCompresszBZ2CompressorTest.testCompress{  sX    )T]]3}}TYY'

-tyy9r   c                     t               }|j                  d      }||j                         z  }| j                  || j                         y Nr   )r   rF   rU  rb   r7   rV  s      r   testCompressEmptyStringz)BZ2CompressorTest.testCompressEmptyString  s;    }}S!

t/r   c                     t               }d}d}	 | j                  |dz  |dz   dz   }|sn||j                  |      z  }|dz  }5||j                         z  }| j	                  t        |      | j                         y )Nr   r   rV   r    )r   r5   rF   rU  rb   r   )r*   rW  r   r   r   s        r   testCompressChunks10z&BZ2CompressorTest.testCompressChunks10  s    ))AbD!A#r*CDMM#&&DFA  	

-tyy9r   r   r   sizememusec                 F   t               }d|z  }	 |j                  |      }||j                         z  }d }t        j	                  |      }	 | j                  t        |      |       | j                  t        |j                  d            d       d }y # d }w xY w# d }w xY w)N   xr   )r   rF   rU  r   r   rb   rr   strip)r*   r_  rW  r   
compresseds        r   testCompress4Gz BZ2CompressorTest.testCompress4G  s     d{	t,J$**,&JD~~j)	SY-SD!12A6D D Ds   $B AB BB c                     t        t        j                  dz         D ]>  }| j                  t              5  t        j
                  t               |       d d d        @ y # 1 sw Y   KxY wNr    )r   pickleHIGHEST_PROTOCOLrY   rZ   dumpsr   r*   protos     r   
testPicklezBZ2CompressorTest.testPickle  sY    622Q67 	5E""9- 5]_e45 5	55 5   AA(	N)r0   r1   r2   rX  r[  r]  r   skip_if_pgo_taskr   r   re  rm  rH   r   r   rS  rS  z  sC    :0: S3Yq) *  5r   rS  c                       e Zd 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j&                  d        Zd Zy)BZ2DecompressorTestc                 :    | j                  t        t        d       y )N*   )rY   rZ   r   r.   s    r   test_Constructorz$BZ2DecompressorTest.test_Constructor  s    )_b9r   c                     t               }| j                  t        |j                         |j                  | j                        }| j                  || j                         y r$   )r   rY   rZ   r   r6   rb   r5   r*   bz2dr   s      r   testDecompressz"BZ2DecompressorTest.testDecompress  sD     )T__5tyy)tyy)r   c                     t               }d}d}	 | j                  |dz  |dz   dz   }|sn||j                  |      z  }|dz  }5| j                  || j                         y )Nr   r   rV   r    )r   r6   r   rb   r5   )r*   rw  r   r   r   s        r   testDecompressChunks10z*BZ2DecompressorTest.testDecompressChunks10  sp     ))AbD!A#r*CDOOC((DFA  	tyy)r   c                     t               }d}|j                  | j                  |z         }| j                  || j                         | j                  |j
                  |       y )Ns   this is unused data)r   r   r6   rb   r5   unused_data)r*   rw  r|  r   s       r   testDecompressUnusedDataz,BZ2DecompressorTest.testDecompressUnusedData  sP     ,tyy45tyy)));7r   c                     t               }|j                  | j                        }| j                  t        |j                  d       | j                  t        |j                  d       y )Ns   anythingr   )r   r   r6   rY   rF  rv  s      r   testEOFErrorz BZ2DecompressorTest.testEOFError  sH     tyy)(DOO[A(DOOS9r   r   gffffff
@r^  c                    t        d|      }t        j                  |      }	 ||dz
  |z  dz   z  }t        j	                  |      }t               }|j                  |      }| j                  ||k(         d }d }d }y # d }d }d }w xY w)Ni   r    )minrandom	randbytesr   rF   r   r   r   )r*   r_  	blocksizeblockr   rd  rw  decompresseds           r   testDecompress4Gz$BZ2DecompressorTest.testDecompress4G  s     ($/	  +		 T!V	1A56Dd+J"$D??:6LOOLD01DJL DJLs   AA< <Bc                     t        t        j                  dz         D ]>  }| j                  t              5  t        j
                  t               |       d d d        @ y # 1 sw Y   KxY wrg  )r   rh  ri  rY   rZ   rj  r   rk  s     r   rm  zBZ2DecompressorTest.testPickle  sZ    622Q67 	7E""9- 7_.67 7	77 7rn  c                    t               }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   @   
max_lengthr   )r   rr   rG   appendr   r   needs_inputrb   r.  eofr4   r;   r|  )r*   bzdr  outlen_s        r   testDecompressorChunksMaxsizez1BZ2DecompressorTest.testDecompressorChunksMaxsize  s   
 4==!B&

3>>$--"6-7 " 9 	:)SWz2 	

3>>#*>=>)SWz2 	

3>>$--"6-7 " 9 	:SR\:6 ''JJs~~cj~AB  SWz: '' hhsmdmm,#.r   c                    t               }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   rb   r   r6   r  r4   r5   r*   r  r  s      r   test_decompressor_inputbuf_1z0BZ2DecompressorTest.test_decompressor_inputbuf_1  s      			$334 ( 67:	<
 	

3>>#q)* 	

3>>$))C"4b9: 	

3>>$))CD/23#		2r   c                 $   t               }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_2z0BZ2DecompressorTest.test_decompressor_inputbuf_2  s      			$334 ( 67:	<

3>>#&' 	

3>>$))C"4a89 	

3>>$))C"4a89 	

3>>$))CD/23#		2r   c                    t               }g }|j                  |j                  | j                  d d d             |j                  |j                  | j                  dd d             |j                  |j                  | j                  dd               | j	                  dj                  |      | j                         y )Nr  rl   r  r   )r   r  r   r6   rb   r4   r5   r  s      r   test_decompressor_inputbuf_3z0BZ2DecompressorTest.test_decompressor_inputbuf_30  s      	

3>>$))DS/156 	

3>>$))C"4a89 	

3>>$))CD/23#		2r   c                     t               }| j                  t        |j                  | j                  dz         | j                  t        |j                  | j                  dz         y )N   )r   rY   	Exceptionr   r8   )r*   r  s     r   test_failurez BZ2DecompressorTest.test_failure@  sH    )S^^T]]R5GH)S^^T]]R5GHr   c                     t        j                  t        d      }t               } |       }t	        d      D ]  }|j                           | j                   |       |z
  dd       y )Ngettotalrefcountr   r   rV   )delta)r   get_attributesysr   r   __init__assertAlmostEqual)r*   r  r  refs_beforer   s        r   test_refleaks_in___init__z-BZ2DecompressorTest.test_refleaks_in___init__F  s`    "006HI&(s 	ALLN	/1K?"Mr   c                     | j                  t        j                  t              j                  t	                     d       y rZ  )rb   r   __new__r   bytesr.   s    r   (test_uninitialized_BZ2Decompressor_crashz<BZ2DecompressorTest.test_uninitialized_BZ2Decompressor_crashO  s+    00A#EG,c	3r   N)r0   r1   r2   rt  rx  rz  r}  r  r   ro  r   r   r  rm  r  r  r  r  r  refcount_testr  r  rH   r   r   rq  rq    s    :*
*8: S3Ys+  ,  7
/>3,3*3 I N N3r   rq  c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)CompressDecompressTestc                     t         j                  | j                        }| j                  t	        |      | j                         y r$   )r   rF   r5   rb   r   )r*   r   s     r   rX  z#CompressDecompressTest.testCompressU  s-    ||DII&-tyy9r   c                 f    t         j                  d      }| j                  || j                         y rZ  )r   rF   rb   r7   r*   r   s     r   r[  z.CompressDecompressTest.testCompressEmptyStringY  s$    ||C t/r   c                 z    t         j                  | j                        }| j                  || j                         y r$   r   r   r6   rb   r5   r  s     r   rx  z%CompressDecompressTest.testDecompress]  s(    ~~dii(tyy)r   c                 R    t         j                  d      }| j                  |d       y rZ  )r   r   rb   r  s     r   testDecompressEmptyz*CompressDecompressTest.testDecompressEmptya  s     ~~c"s#r   c                 f    t         j                  | j                        }| j                  |d       y rZ  )r   r   r7   rb   r  s     r   testDecompressToEmptyStringz2CompressDecompressTest.testDecompressToEmptyStringe  s$    ~~doo.s#r   c                 h    | j                  t        t        j                  | j                  d d        y )NrD  )rY   r[   r   r   r6   r.   s    r   testDecompressIncompletez/CompressDecompressTest.testDecompressIncompletei  s"    *cnndiioFr   c                 b    | j                  t        t        j                  | j                         y r$   )rY   rh   r   r   r8   r.   s    r   testDecompressBadDataz,CompressDecompressTest.testDecompressBadDatal  s    '3>>4==Ar   c                     t         j                  | j                  dz        }| j                  || j                  dz         y r  r  r  s     r   testDecompressMultiStreamz0CompressDecompressTest.testDecompressMultiStreamo  s0    ~~dii!m,tyy1}-r   c                     t         j                  | j                  | j                  z         }| j	                  || j
                         y r$   r   r   r6   r8   rb   r5   r  s     r   testDecompressTrailingJunkz1CompressDecompressTest.testDecompressTrailingJunks  s1    ~~dii$--78tyy)r   c                     t         j                  | j                  dz  | j                  z         }| j	                  || j
                  dz         y r  r  r  s     r   %testDecompressMultiStreamTrailingJunkz<CompressDecompressTest.testDecompressMultiStreamTrailingJunkw  s9    ~~dii!mdmm;<tyy1}-r   N)r0   r1   r2   rX  r[  rx  r  r  r  r  r  r  r  rH   r   r   r  r  T  s6    :0*$$GB.*.r   r  c                   J    e Zd Z	 d Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)OpenTestc                 ,    t        j                  |i |S r$   )r   rB   )r*   argskwargss      r   rB   zOpenTest.open  s    xx(((r   c                    dD ]  }|dk(  rt        | j                         | j                  | j                  |      5 }|j                  | j                         d d d        t        | j                  d      5 }t        |j                               }| j                  || j                         d d d        | j                  | j                  d      5 }| j                  |j                         | j                         d d d        | j                  | j                  d      5 }|j                  | j                         d d d        t        | j                  d      5 }t        |j                               }| j                  || j                  dz         d d d         y # 1 sw Y   HxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)N)rL   xbr  r   abr   r
   r'   rB   rM   r5   r   r`   rb   r*   moderP   	file_datas       r   test_binary_modeszOpenTest.test_binary_modes  sv     	;Dt|t}}%4==$/ #1		"#dmmT* 7a*16684	  DII67 4==$/ 61  499564==$/ #1		"#dmmT* ;a*16684	  DIIM:; ;	;# #7 76 6# #; ;;   F76F,+F9 G9GF)	,F6	9G	G	G	c                    dD ]  }|dk(  rt        | j                         | j                  | j                  |      5 }|j                  | j                         d d d        t        | j                  d      5 }t        |j                               }| j                  || j                         d d d        | j                  | j                  d      5 }| j                  |j                         | j                         d d d        | j                  | j                  d      5 }|j                  | j                         d d d        t        | j                  d      5 }t        |j                               }| j                  || j                  dz         d d d         y # 1 sw Y   HxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)N)r   xr  r   rW   r   r   r  r  s       r   test_implicit_binary_modesz#OpenTest.test_implicit_binary_modes  sv    	;Ds{t}}%4==$/ #1		"#dmmT* 7a*16684	  DII67 4==#. 6!  499564==#. #!		"#dmmT* ;a*16684	  DIIM:; ;	;# #7 76 6# #; ;r  c                    | j                   j                  d      }|j                  dt        j                        }dD ]  }|dk(  rt        | j                         | j                  | j                  |d      5 }|j                  |       d d d        t        | j                  d      5 }t        |j                               j                  d      }| j                  ||       d d d        | j                  | j                  dd      5 }| j                  |j                         |       d d d        | j                  | j                  dd      5 }|j                  |       d d d        t        | j                  d      5 }t        |j                               j                  d      }| j                  ||d	z         d d d         y # 1 sw Y   BxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)
Nr  
)wtxtr  encodingr   rtatr   )r5   decodereplacer(   linesepr
   r'   rB   rM   r   r`   rb   )r*   r   text_native_eolr  rP   r  s         r   test_text_modeszOpenTest.test_text_modes  s   yy(,,tRZZ8  	ADt|t}}%4==$A QdmmT* =a*16684;;GD	  O<= 4==$A 1Q  4014==$A QdmmT* Aa*16684;;GD	  Oa,?@A A	A = =1 1 A As<   :G*;G!G%G1>G=G	G"	%G.	1G:	=H	c                 l   dD ]  }t        | j                         d|v rdnd }| j                  | j                  ||      5 }	 d d d        | j                  t              5  | j                  | j                  |      5 }	 d d d        d d d         y # 1 sw Y   PxY w# 1 sw Y    xY w# 1 sw Y   xY w)N)r  r  r  tutf-8r  )r
   r'   rB   rY   FileExistsError)r*   r  r  rP   s       r   test_x_modezOpenTest.test_x_mode  s    % 	D4==!"%+w4H4==$B a""?3 YYt}}d3 q 	   s0   B B*=B?B*B	B'#B**B3	c                    | j                  t        | j                        d      5 }| j                  |j	                         | j
                         d d d        | j                  t        | j                        d      5 }| j                  |j	                         | j
                         d d d        | j
                  j                  d      }| j                  t        | j                        dd      5 }| j                  |j	                         |       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NrW   r   r  r  r  r  )rB   r   r6   rb   r`   r5   r  )r*   rP   r   s      r   test_fileobjzOpenTest.test_fileobj  s    YYwtyy)3/ 	21QVVXtyy1	2YYwtyy)40 	2AQVVXtyy1	2yy(YYwtyy)4'YB 	-aQVVXt,	- 	-	2 	2	2 	2	- 	-s#   +D>+D)3!D5D&)D25D>c                    | j                  t        | j                  | j                  d       | j                  t        | j                  | j                  d       | j                  t        | j                  | j                  dd       | j                  t        | j                  | j                  dd       | j                  t        | j                  | j                  dd	       y )
Nwbtxbtr   r  r  ignore)errorsr  )newline)rY   r[   rB   r'   r.   s    r   test_bad_paramszOpenTest.test_bad_params  s    *))T]]E	;*))T]]E	;*))T]]D7 	 	L*))T]]D 	 	K*))T]]D$ 	 	Hr   c                 r   | j                   j                  d      }|j                  dt        j                        }| j                  | j                  dd      5 }|j                  |       d d d        t        | j                  d      5 }t        |j                               j                  d      }| j                  ||       d d d        | j                  | j                  dd      5 }| j                  |j                         |       d d d        y # 1 sw Y   xY w# 1 sw Y   ]xY w# 1 sw Y   y xY w)Nr  r  r  z	utf-16-ler  r   r  )r5   r  r  r(   r  rB   r'   rM   r   r`   rb   )r*   r   r  rP   r  s        r   test_encodingzOpenTest.test_encoding  s    yy(,,tRZZ8YYt}}d[YA 	QGGDM	$--& 	9!&qvvx077DIY8	9 YYt}}d[YA 	-QQVVXt,	- 	-	 		9 	9	- 	-s$   D
;D!+!D-D!D*-D6c                 0   | j                  | j                  d      5 }|j                  d       d d d        | j                  | j                  ddd      5 }| j                  |j	                         d       d d d        y # 1 sw Y   RxY w# 1 sw Y   y xY w)NrL   s   foobarr  r  r  )r  r  foobar)rB   r'   rM   rb   r`   r  s     r   test_encoding_error_handlerz$OpenTest.test_encoding_error_handler  s    YYt}}d+ 	#qGGM"	#YYt}}dWXYN 	1QVVXx0	1 	1	# 	#	1 	1s   B !B B	Bc                 n   | j                   j                  d      }| j                  | j                  ddd      5 }|j	                  |       d d d        | j                  | j                  ddd      5 }| j                  |j                         |g       d d d        y # 1 sw Y   SxY w# 1 sw Y   y xY w)Nr  r  r  r  )r  r  r  )r5   r  rB   r'   rM   rb   r   )r*   r   rP   s      r   test_newlinezOpenTest.test_newline  s    yy(YYt}}dWdYK 	qGGDM	YYt}}dWdYK 	4qQ[[]TF3	4 	4	 		4 	4s   B4"B+B(+B4N)r0   r1   r2   rB   r  r  r  r  r  r  r  r  r  rH   r   r   r  r  |  s9    );";$A&-H
-14r   r  c                  ,    t        j                          y r$   )r   reap_childrenrH   r   r   tearDownModuler    s    r   __main__)*testr   test.supportr   r   rL  unittestior   r   r(   rh  r<   r%   r&  r  r   r   r  r   r	   test.support.os_helperr
   rp   r  import_moduler   r   r   r   r   r   TestCaser   rJ   rS  rq  r  r  r  r0   mainrH   r   r   <module>r	     s     (   + 	         & ) )  
 "m!!%( 7 7 $1x   1h]/( ]/@05 05fd3( d3N%.X %.Pv4x v4r zHMMO r   