Your IP : 216.73.216.52


Current Path : /opt/alt/python35/lib64/python3.5/test/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/test/__pycache__/test_bz2.cpython-35.opt-1.pyc



��Yf���@s�ddlmZddlmZmZddlZddlmZmZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlmZddlZyddlZWnek
r�dZYnXejd�ZddlmZmZmZdadd	�ZGd
d�dej�ZGdd
�d
e�ZGdd�de�ZGdd�de�ZGdd�de�Z Gdd�de�Z!dd�Z"e#dkr�e"�dS)�)�support)�
bigmemtest�_4GN)�BytesIO�DEFAULT_BUFFER_SIZE)�unlink�bz2)�BZ2File�
BZ2Compressor�BZ2DecompressorcCsNtdkr!ttjd��atr=tjdgd|�Stj|�SdS)NZbunzip2�input)�has_cmdline_bunzip2�bool�shutilZwhich�
subprocessZcheck_outputr�
decompress)�data�r�2/opt/alt/python35/lib64/python3.5/test/test_bz2.py�ext_decompresss
rc@s9eZdZdZdddddddd	d
ddd
dddddddddgZdje�ZdZdZdZ	dZ
ed'�Zx{e
j
ejjejje�d��D]OZeed��*Ze
ejee�e
d ��7Z
Wd QRXe
d(kr�Pq�Wejed!d"�Zd#d$�Zd%d&�Zd S))�BaseTestzBase for other testcases.s root:x:0:0:root:/root:/bin/bash
sbin:x:1:1:bin:/bin:
sdaemon:x:2:2:daemon:/sbin:
sadm:x:3:4:adm:/var/adm:
slp: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
s6mysql:x:102:103:MySQL server:/var/lib/mysql:/bin/bash
s#www:x:103:104::/var/www:/bin/false
�s�BZh91AY&SY.�N>_�@��n?��0���F��#&�F��Ц�MQ���4hh$�i4�4S�<Q�H���Շ���
��I��/Epu�]ɻDL
Q	1ߠ���2O9��7d�I�J�L#����/��#C��W����M��Xa<e�t�L�����˄.�����`n}�lh	E,�ZVH>���9gd6
�Պ��.K�v��xw�ߡ���|/";���ձ#A���o��y\�O煚��f8�2��"%�>V,��z⟣�"�E)I�^��r�U�2�6���U��0��^��DF����ݸ����ankR���3]���f��"6l$�j@���l1..�k�ls����E��
��k��n��Q�%y�v��z��̹zn7.G�]��B@�!8`sBZh9rE8P�sthis is not a valid bzip2 filer�iz*.py�rbN�
compresslevel�cCstj|_dS)N)rZTESTFN�filename)�selfrrr�setUpPszBaseTest.setUpcCs)tjj|j�r%tj|j�dS)N)�os�path�isfilerr)rrrr�tearDownSszBaseTest.tearDownii)�__name__�
__module__�__qualname__�__doc__�
TEXT_LINES�join�TEXT�DATA�
EMPTY_DATA�BAD_DATAZ	test_size�	bytearray�BIG_TEXT�globrr �dirname�__file__Zfname�openZfh�readinto�
memoryviewr�compress�BIG_DATArr"rrrrr$sH	1*rc@s�eZdZdZdddd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�Zd<d=�Z d>d?�Z!d@dA�Z"dBdC�Z#dDdE�Z$dFdG�Z%dHdI�Z&dJdK�Z'dLdM�Z(dNdO�Z)dPdQ�Z*dRdS�Z+dTdU�Z,dVdW�Z-dXdY�Z.dZd[�Z/d\d]�Z0d^d_�Z1d`da�Z2e3j4e5db�dcdd��Z6dedf�Z7dgdh�Z8didj�Z9dkdl�Z:dmdn�Z;dodp�Z<dqdr�Z=dsdt�Z>dudv�Z?dwdx�Z@dydz�ZAd{S)|�BZ2FileTestzTest the BZ2File class.rrc
CsAt|jd��(}|j|j|�|j|�WdQRXdS)N�wb)r2r�writer*)r�streams�suffix�frrr�createTempFile[szBZ2FileTest.createTempFilecCs�|jttd�|jtttjd�|jtttjd�|jtttjd�|jtttjdd�|jtttjdd�dS)Ngw��/�^@�zZrxZrbtrr�
)�assertRaises�	TypeErrorr	�
ValueErrorr�devnull)rrrr�testBadArgs`szBZ2FileTest.testBadArgscCsY|j�t|j��9}|jt|jt��|j|j�|j�WdQRXdS)N)	r=r	rr@rA�read�float�assertEqualr))r�bz2frrr�testReadhs
zBZ2FileTest.testReadc
CsI|jddd|j�t|j��}|jt|j�WdQRXdS)Nr:rr;)r=r,r	rr@�OSErrorrE)rrHrrr�testReadBadFilenszBZ2FileTest.testReadBadFilecCsc|jdd�t|j��=}|jt|jt��|j|j�|jd�WdQRXdS)Nr:�)	r=r	rr@rArErFrGr))rrHrrr�testReadMultiStreamsszBZ2FileTest.testReadMultiStreamcCs�tj}t|j�t_zc|jdd�t|j��=}|jt|j	t
��|j|j	�|jd�WdQRXWd|t_XdS)Nr:rL)
�_compression�BUFFER_SIZE�lenr*r=r	rr@rArErFrGr))rZbuffer_sizerHrrr�testReadMonkeyMultiStreamys	(z%BZ2FileTest.testReadMonkeyMultiStreamc
CsI|jd|j�t|j�� }|j|j�|j�WdQRXdS)Nr;)r=r,r	rrGrEr))rrHrrr�testReadTrailingJunk�sz BZ2FileTest.testReadTrailingJunkcCsS|jddd|j�t|j��$}|j|j�|jd�WdQRXdS)Nr:rLr;)r=r,r	rrGrEr))rrHrrr�testReadMultiStreamTrailingJunk�sz+BZ2FileTest.testReadMultiStreamTrailingJunkcCsY|j�t|j��9}|jt|jt��|j|jd�d�WdQRXdS)Nrr)r=r	rr@rArErFrG)rrHrrr�	testRead0�s
zBZ2FileTest.testRead0c
Csg|j�t|j��G}d}x$|jd�}|s;P||7}q%W|j||j�WdQRXdS)Nrr?)r=r	rrErGr))rrH�text�strrrr�testReadChunk10�s
zBZ2FileTest.testReadChunk10cCsq|jdd�t|j��K}d}x$|jd�}|sAP||7}q+W|j||jd�WdQRXdS)Nr:rLrr?)r=r	rrErGr))rrHrUrVrrr�testReadChunk10MultiStream�sz&BZ2FileTest.testReadChunk10MultiStreamcCsM|j�t|j��-}|j|jd�|jdd��WdQRXdS)N�d)r=r	rrGrEr))rrHrrr�testRead100�s
zBZ2FileTest.testRead100c
Cs{|j�t|j��[}|j�}|jt|�d�|j|jj|��|j	|j
�|j�WdQRXdS)Nr)r=r	r�peek�assertNotEqualrP�
assertTruer)�
startswithrGrE)rrH�pdatarrr�testPeek�s
zBZ2FileTest.testPeekcCs�|j�t|j���}d}t|�}|j|j|�|�|j||jd|��t|j�|}tt|j��}|j|j|�|�|j|d|�|j|d��WdQRXdS)Nr)r=r	rr-rGr3r)rP)rrH�n�brrr�testReadInto�s
zBZ2FileTest.testReadIntocCsg|j�t|j��G}|jt|jd�x'|jD]}|j|j�|�q<WWdQRXdS)N)r=r	rr@rA�readliner'rG)rrH�linerrr�testReadLine�s

zBZ2FileTest.testReadLinecCsq|jdd�t|j��K}|jt|jd�x+|jdD]}|j|j�|�qFWWdQRXdS)Nr:rL)r=r	rr@rArdr'rG)rrHrerrr�testReadLineMultiStream�s
z#BZ2FileTest.testReadLineMultiStreamcCsV|j�t|j��6}|jt|jd�|j|j�|j�WdQRXdS)N)r=r	rr@rA�	readlinesrGr')rrHrrr�
testReadLines�s
zBZ2FileTest.testReadLinescCs`|jdd�t|j��:}|jt|jd�|j|j�|jd�WdQRXdS)Nr:rL)r=r	rr@rArhrGr')rrHrrr�testReadLinesMultiStream�sz$BZ2FileTest.testReadLinesMultiStreamcCsF|j�t|j��&}|jtt|��|j�WdQRXdS)N)r=r	rrG�list�iterr')rrHrrr�testIterator�s
zBZ2FileTest.testIteratorcCsP|jdd�t|j��*}|jtt|��|jd�WdQRXdS)Nr:rL)r=r	rrGrkrlr')rrHrrr�testIteratorMultiStream�sz#BZ2FileTest.testIteratorMultiStreamcCsM|j�t|j�}|j�|jtt|�|jt|j�dS)N)r=r	r�closer@rB�nextrh)rrHrrr�testClosedIteratorDeadlock�s


z&BZ2FileTest.testClosedIteratorDeadlockcCs~t|jd��*}|jt|j�|j|j�WdQRXt|jd��&}|jt|j	��|j�WdQRXdS)N�wr)
r	rr@rAr9r)r2rGrrE)rrHr<rrr�	testWrite�s
zBZ2FileTest.testWritecCs�t|jd��Q}d}xA|j|d|dd�}|sDP|j|�|d7}qWWdQRXt|jd��&}|jt|j��|j�WdQRXdS)Nrrrr?rr)r	rr)r9r2rGrrE)rrHrarVr<rrr�testWriteChunks10�s
zBZ2FileTest.testWriteChunks10cCs�tj|jdd�}t|jddd��}|j|j�WdQRXt|jd��}|j|j�|�WdQRXdS)NrrLrrr)	rr5r)r	rr9r2rGrE)rZexpectedrHr<rrr� testWriteNonDefaultCompressLevels
z,BZ2FileTest.testWriteNonDefaultCompressLevelcCs�t|jd��*}|jt|j�|j|j�WdQRX|jt|jdg�t|jd��&}|jt	|j
��|j�WdQRXdS)Nrr�ar)r	rr@rA�
writelinesr'rBr2rGrrEr))rrHr<rrr�testWriteLinesszBZ2FileTest.testWriteLinescCsxt|jd��}|jd�WdQRXt|jd��6}|jt|jd�|jt|jdg�WdQRXdS)Nrrsabc�r�a)r	rr9r@rJrw)rrHrrr�testWriteMethodsOnReadOnlyFiles
z*BZ2FileTest.testWriteMethodsOnReadOnlyFilecCs�t|jd��*}|jt|j�|j|j�WdQRXt|jd��*}|jt|j�|j|j�WdQRXt|jd��*}|jt|j	��|jd�WdQRXdS)Nrrrvr�)
r	rr@rAr9r)r2rGrrE)rrHr<rrr�
testAppendszBZ2FileTest.testAppendcCsj|j�t|j��J}|jt|j�|jd�|j|j�|jdd��WdQRXdS)N�)	r=r	rr@rA�seekrGrEr))rrHrrr�testSeekForward(s


zBZ2FileTest.testSeekForwardcCs}|jdd�t|j��W}|jt|j�|jt|j�d�|j|j	�|jdd��WdQRXdS)Nr:r|r~)
r=r	rr@rArrPr)rGrE)rrHrrr�testSeekForwardAcrossStreams/s
z(BZ2FileTest.testSeekForwardAcrossStreamscCsg|j�t|j��G}|jd�|jdd�|j|j�|jdd��WdQRXdS)Ni�r~rij���i^)r=r	rrErrGr))rrHrrr�testSeekBackwards6s


zBZ2FileTest.testSeekBackwardscCs�|jdd�t|j���}t|j�d}x)|dkr`|t|j|��8}q8W|jdd�|j|j�|jdd�|j�WdQRXdS)	Nr:r|rYrr~rij���i���)r=r	rrPr)rErrG)rrHZreadtorrr�testSeekBackwardsAcrossStreams=sz*BZ2FileTest.testSeekBackwardsAcrossStreamscCsg|j�t|j��G}|jdd�|j|j�|jt|j�dd��WdQRXdS)Nr~r|ij���)r=r	rrrGrEr)rP)rrHrrr�testSeekBackwardsFromEndFs
z$BZ2FileTest.testSeekBackwardsFromEndcCsd|jdd�t|j��>}|jdd�|j|j�|jddd��WdQRXdS)Nr:r|i�i���i���)r=r	rrrGrEr))rrHrrr�%testSeekBackwardsFromEndAcrossStreamsLsz1BZ2FileTest.testSeekBackwardsFromEndAcrossStreamscCsi|j�t|j��I}|jd�|j|j�t|j��|j|j�d�WdQRXdS)Ni�Ir)	r=r	rrrG�tellrPr)rE)rrHrrr�testSeekPostEndRs


zBZ2FileTest.testSeekPostEndcCss|jdd�t|j��M}|jd�|j|j�t|j�d�|j|j�d�WdQRXdS)Nr:rLi�Ir)	r=r	rrrGr�rPr)rE)rrHrrr�testSeekPostEndMultiStreamYs

#z&BZ2FileTest.testSeekPostEndMultiStreamcCsv|j�t|j��V}|jd�|jd�|j|j�t|j��|j|j�d�WdQRXdS)Ni�Ir)	r=r	rrrGr�rPr)rE)rrHrrr�testSeekPostEndTwice`s


z BZ2FileTest.testSeekPostEndTwicecCs�|jdd�t|j��Z}|jd�|jd�|j|j�t|j�d�|j|j�d�WdQRXdS)Nr:rLi�Ir)	r=r	rrrGr�rPr)rE)rrHrrr�testSeekPostEndTwiceMultiStreamhs

#z+BZ2FileTest.testSeekPostEndTwiceMultiStreamc
Csc|j�t|j��C}|jd�|j|j�d�|j|j�|j�WdQRXdS)Nr~rij���)r=r	rrrGr�rEr))rrHrrr�testSeekPreStartps


zBZ2FileTest.testSeekPreStartcCsm|jdd�t|j��G}|jd�|j|j�d�|j|j�|jd�WdQRXdS)Nr:r|r~rij���)r=r	rrrGr�rEr))rrHrrr�testSeekPreStartMultiStreamws

z'BZ2FileTest.testSeekPreStartMultiStreamcCsw|j�t|jd��A}t|�}z |j|j�|j��Wd|j�XWdQRX|jt|j�dS)Nr)	r=r2rr	rG�filenoror@rB)rZrawfrHrrr�
testFileno~s
 zBZ2FileTest.testFilenocCstt|j��}z4|j|j��|j�|j|j��Wd|j�X|jt|j�tt�d�}z|j	|j��Wd|j�X|jt|j�t|j�}dd�|_t|�}z|j	|j��Wd|j�X|jt|j�dS)NrrcSsdS)NFrrrrr�<lambda>�sz*BZ2FileTest.testSeekable.<locals>.<lambda>)
r	rr*r]�seekablerEror@rB�assertFalse)rrH�srcrrr�testSeekable�s&
zBZ2FileTest.testSeekablecCs�tt|j��}z4|j|j��|j�|j|j��Wd|j�X|jt|j�tt�d�}z|j	|j��Wd|j�X|jt|j�dS)Nrr)
r	rr*r]�readablerEror@rBr�)rrHrrr�testReadable�s
zBZ2FileTest.testReadablecCs�tt|j��}z4|j|j��|j�|j|j��Wd|j�X|jt|j�tt�d�}z|j	|j��Wd|j�X|jt|j�dS)Nrr)
r	rr*r��writablerEror@rBr])rrHrrr�testWritable�s
zBZ2FileTest.testWritablecCs7|j�x&td�D]}t|j�}~qWdS)Ni')r=�ranger	r)r�i�orrr�testOpenDel�s
zBZ2FileTest.testOpenDelcCs|jttd�dS)Nz
/non/existent)r@rJr	)rrrr�testOpenNonexistent�szBZ2FileTest.testOpenNonexistentcCs�d}t|jd��}|j|�WdQRXt|j��}|j�}WdQRX|j|dg�t|j��}t|j��}WdQRX|j|dg�dS)Ns,BZh91AY&SY�b�]� !�h3M<]��BCe�%tr8sTest)r2rr9r	rhrGrk)rrr<rH�linesZxlinesrrr�testReadlinesNoNewline�sz"BZ2FileTest.testReadlinesNoNewlinec#Cs�d}t|jd��}|jd�WdQRXt|jd�}|j�y|�WdQRXWntk
rqYnX|jd�y(t|jd��}ddWdQRXWntk
r�YnX|jd�dS)Nr8sxxxrz4__enter__ on a closed file didn't raise an exceptionrrz1/0 didn't raise an exception)r	rr9rorBZfail�ZeroDivisionError)rr<rrr�testContextProtocol�s"



zBZ2FileTest.testContextProtocolz!Threading required for this test.cs{dd
�d}t|jd��R���fdd���fdd	�t|�D�}tj|��WdQRXWdQRXdS)N�1r|�r?r8cs(x!td�D]}�j��q
WdS)NrL)r�r9)r�)rr<rr�comp�sz'BZ2FileTest.testThreading.<locals>.compcs"g|]}tjd���qS)�target)�	threadingZThread)�.0r�)r�rr�
<listcomp>�s	z-BZ2FileTest.testThreading.<locals>.<listcomp>i)r	rr�rZ
start_threads)rZnthreadsZthreadsr)r�rr<r�
testThreading�s
zBZ2FileTest.testThreadingcCsztjddd�}|j|jd��}|jd�WdQRX|j|jd��}|j|j�d�WdQRXdS)NrZblockedr�r8sabcr)r�)rZimport_fresh_moduler	rr9rGrE)r�moduler<rrr�testWithoutThreading�s
z BZ2FileTest.testWithoutThreadingcCsD|j�t|jd�}|d}t|j��^}|j|�|jt|�|jd|d��|j|j�|j|d��WdQRXt|j��K}|j	�|jt|�|jd�|j|j	�|jd�WdQRXt|j��:}|j
�|jtt|�|j|j
�g�WdQRXdS)Nrr|r)
r=rPr'r	rrErGrpr)rdrhr@�
StopIteration)rZlinelenZhalflenrHrrr�testMixedIterationAndReadss


'*
$
z&BZ2FileTest.testMixedIterationAndReadscCs�dd}dd}t|jd��}|j|�WdQRXt|jd��}|j|�WdQRXt|j��!}|j|j�||�WdQRXdS)Nsfooi�sbarrrrv)r	rr9rGrE)rZdata1Zdata2rHrrr�testMultiStreamOrderings

z#BZ2FileTest.testMultiStreamOrderingc Cs�|j}y|jd�}Wntk
r=|jd�YnXt|d��}|j|j�WdQRXt|d�� }|j|j�|j�WdQRXt|d�� }|j|j�|j�WdQRXdS)N�asciiz%Temporary file name needs to be ASCIIr8r)	r�encode�UnicodeEncodeErrorZskipTestr	r9r*rGrE)rZstr_filenameZbytes_filenamer<rrr�testOpenBytesFilenames	
 z!BZ2FileTest.testOpenBytesFilenamecCs�tjttd��dd�}|jt|�tj�tt	|��}|j
td�|jd��dt}|j
|jjj�|d�dS)z-Decompressed data buffering should be limitedg��>Ar�	rz)Excessive amount of data was decompressedN)rr5�bytes�intZ
assertLessrPrNrOr	rrGrEr�assertLessEqualZ_buffer�rawr�)rZbombZdecompZ
max_decomprrr�testDecompressLimited,s!
z!BZ2FileTest.testDecompressLimitedcCsut|j��_}t|��9}|jt|jt��|j|j�|j�WdQRX|j	|j
�WdQRXdS)N)rr*r	r@rArErFrGr)r��closed)r�biorHrrr�testReadBytesIO:s
 zBZ2FileTest.testReadBytesIOcCs�t|j��q}t|��[}|j�}|jt|�d�|j|jj|��|j	|j
�|j�WdQRXWdQRXdS)Nr)rr*r	r[r\rPr]r)r^rGrE)rr�rHr_rrr�testPeekBytesIOAszBZ2FileTest.testPeekBytesIOcCs�t��r}t|d��*}|jt|j�|j|j�WdQRX|jt|j��|j�|j	|j
�WdQRXdS)Nrr)rr	r@rAr9r)rGr�getvaluer�r�)rr�rHrrr�testWriteBytesIOIszBZ2FileTest.testWriteBytesIOcCsvt|j��`}t|��J}|jt|j�|jd�|j|j�|jdd��WdQRXWdQRXdS)Nr~)	rr*r	r@rArrGrEr))rr�rHrrr�testSeekForwardBytesIOQs

z"BZ2FileTest.testSeekForwardBytesIOcCsst|j��]}t|��G}|jd�|jdd�|j|j�|jdd��WdQRXWdQRXdS)Ni�r~rij���i^)rr*r	rErrGr))rr�rHrrr�testSeekBackwardsBytesIOXs

z$BZ2FileTest.testSeekBackwardsBytesIOcCs�|jdd�}tt|���}|jt|j�WdQRXtt|���B}|j|jt|j��|j�|jt|jd�WdQRXxPt	d�D]B}tt|d|����}|jt|jd�WdQRXq�WdS)Nr?r�i����)
r*r	rr@�EOFErrorrErGrPr)r�)rZ	truncatedr<r�rrr�test_read_truncated_s%zBZ2FileTest.test_read_truncatedN)Br#r$r%r&r=rDrIrKrMrQrRrSrTrWrXrZr`rcrfrgrirjrmrnrqrsrtrurxr{r}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��unittestZ
skipUnlessr�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr7Xsx
	

	

r7c@seeZdZdd�Zdd�Zdd�Zededd	d
�dd��Zd
d�Z	dS)�BZ2CompressorTestcCs[t�}|jt|j�|j|j�}||j�7}|jt|�|j�dS)N)r
r@rAr5r)�flushrGr)r�bz2crrrr�testCompressns
	zBZ2CompressorTest.testCompresscCs?t�}|jd�}||j�7}|j||j�dS)Nr)r
r5r�rGr+)rr�rrrr�testCompressEmptyStringus	z)BZ2CompressorTest.testCompressEmptyStringcCs�t�}d}d}xG|j|d|dd�}|s>P||j|�7}|d7}qW||j�7}|jt|�|j�dS)Nrrr?r)r
r)r5r�rGr)rr�rarrVrrr�testCompressChunks10{s	z&BZ2CompressorTest.testCompressChunks10�sizerY�memuser|cCs�t�}d|}z#|j|�}||j�7}Wdd}Xtj|�}z9|jt|�|�|jt|jd��d�Wdd}XdS)N�xr)r
r5r�rrrGrP�strip)rr�r�r�
compressedrrr�testCompress4G�s	
#z BZ2CompressorTest.testCompress4GcCsLxEttjd�D]0}|jt��tjt�|�WdQRXqWdS)Nr)r��pickle�HIGHEST_PROTOCOLr@rA�dumpsr
)r�protorrr�
testPickle�szBZ2CompressorTest.testPickleN)
r#r$r%r�r�r�rrr�r�rrrrr�ms

%r�c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zede	dd
d�dd��Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�BZ2DecompressorTestcCs|jttd�dS)N�*)r@rAr)rrrr�test_Constructor�sz$BZ2DecompressorTest.test_ConstructorcCsEt�}|jt|j�|j|j�}|j||j�dS)N)rr@rArr*rGr))r�bz2drUrrr�testDecompress�s	z"BZ2DecompressorTest.testDecompresscCsvt�}d}d}xG|j|d|dd�}|s>P||j|�7}|d7}qW|j||j�dS)Nrrr?r)rr*rrGr))rr�rUrarVrrr�testDecompressChunks10�s	z*BZ2DecompressorTest.testDecompressChunks10cCsOt�}d}|j|j|�}|j||j�|j|j|�dS)Nsthis is unused data)rrr*rGr)�unused_data)rr�r�rUrrr�testDecompressUnusedData�s
	z,BZ2DecompressorTest.testDecompressUnusedDatacCsKt�}|j|j�}|jt|jd�|jt|jd�dS)Nsanythingr)rrr*r@r�)rr�rUrrr�testEOFError�s	z BZ2DecompressorTest.testEOFErrorr�rYr�gffffff
@c
Cs�d}tj|d�j|d�}zP|||d}tj|�}t�}|j|�}|j||k�Wdd}d}d}XdS)Nr?i��littleri(i�)�randomZgetrandbits�to_bytesrr5rrr])rr�Z	blocksize�blockrr�r�Zdecompressedrrr�testDecompress4G�s	z$BZ2DecompressorTest.testDecompress4GcCsLxEttjd�D]0}|jt��tjt�|�WdQRXqWdS)Nr)r�r�r�r@rAr�r)rr�rrrr��szBZ2DecompressorTest.testPicklecCs�t�}d}g}t|j�d}|j|j|jd|�d|��|j|j�|jt|d�|�|j|jdd|��|j|j�|jt|d�|�|j|j|j|d�d|��|jt|d�|�xC|j	sI|j|jdd|��|jt|d	�|�qWdj
|�}|j||j�|j|jd�dS)
NrY�@�
max_lengthrr���r�r�r�)
rrPr6�appendrr�Zneeds_inputrGr��eofr(r.r�)r�bzdr��outZlen_rrr�testDecompressorChunksMaxsize�s(	

z1BZ2DecompressorTest.testDecompressorChunksMaxsizecCs�t�}g}|j|j|jdd�dd�d�|j|jdd��|j|j|jdd�d��|j|j|jdd���|jdj|�|j�dS)NrYr�rrr|�i�)rrGrr*r�r(r))rr�r�rrr�test_decompressor_inputbuf_1�s	
&#z0BZ2DecompressorTest.test_decompressor_inputbuf_1cCs�t�}g}|j|j|jdd�dd�d�|j|jd��|j|j|jdd�d��|j|j|jdd�d��|j|j|jdd���|jdj|�|j�dS)N��r�rrir|i,)rrGrr*r�r(r))rr�r�rrr�test_decompressor_inputbuf_2s	
&&#z0BZ2DecompressorTest.test_decompressor_inputbuf_2cCs�t�}g}|j|j|jdd�d��|j|j|jdd�d��|j|j|jdd���|jdj|�|j�dS)Nr�rLi,r)rr�rr*rGr(r))rr�r�rrr�test_decompressor_inputbuf_3!s	&&#z0BZ2DecompressorTest.test_decompressor_inputbuf_3cCsGt�}|jt|j|jd�|jt|j|jd�dS)N�)rr@�	Exceptionrr,)rr�rrr�test_failure1s	z BZ2DecompressorTest.test_failureN)r#r$r%r�r�r�r�r�rrr�r�r�r�r�r�r�rrrrr��s%r�c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�CompressDecompressTestcCs/tj|j�}|jt|�|j�dS)N)rr5r)rGr)rrrrrr�8sz#CompressDecompressTest.testCompresscCs&tjd�}|j||j�dS)Nr)rr5rGr+)rrUrrrr�<sz.CompressDecompressTest.testCompressEmptyStringcCs)tj|j�}|j||j�dS)N)rrr*rGr))rrUrrrr�@sz%CompressDecompressTest.testDecompresscCs#tjd�}|j|d�dS)Nr)rrrG)rrUrrr�testDecompressEmptyDsz*CompressDecompressTest.testDecompressEmptycCs&tj|j�}|j|d�dS)Nr)rrr+rG)rrUrrr�testDecompressToEmptyStringHsz2CompressDecompressTest.testDecompressToEmptyStringcCs'|jttj|jdd��dS)Nr?i����)r@rBrrr*)rrrr�testDecompressIncompleteLsz/CompressDecompressTest.testDecompressIncompletecCs|jttj|j�dS)N)r@rJrrr,)rrrr�testDecompressBadDataOsz,CompressDecompressTest.testDecompressBadDatacCs1tj|jd�}|j||jd�dS)NrL)rrr*rGr))rrUrrr�testDecompressMultiStreamRsz0CompressDecompressTest.testDecompressMultiStreamcCs0tj|j|j�}|j||j�dS)N)rrr*r,rGr))rrUrrr�testDecompressTrailingJunkVsz1CompressDecompressTest.testDecompressTrailingJunkcCs8tj|jd|j�}|j||jd�dS)NrL)rrr*r,rGr))rrUrrr�%testDecompressMultiStreamTrailingJunkZsz<CompressDecompressTest.testDecompressMultiStreamTrailingJunkN)
r#r$r%r�r�r�r�r�r�r�r�r�r�rrrrr�7sr�c@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�OpenTestzTest the open function.cOstj||�S)N)rr2)r�args�kwargsrrrr2bsz
OpenTest.openc(CsJxCdD];}|dkr&t|j�|j|j|��}|j|j�WdQRXt|jd��,}t|j��}|j||j�WdQRX|j|jd�� }|j|j�|j�WdQRX|j|jd��}|j|j�WdQRXt|jd��0}t|j��}|j||jd�WdQRXqWdS)Nr8�xbrZabr|)r8r)rrr2r9r)rrErG)r�moder<�	file_datarrr�test_binary_modeses

 zOpenTest.test_binary_modesc(CsJxCdD];}|dkr&t|j�|j|j|��}|j|j�WdQRXt|jd��,}t|j��}|j||j�WdQRX|j|jd�� }|j|j�|j�WdQRX|j|jd��}|j|j�WdQRXt|jd��0}t|j��}|j||jd�WdQRXqWdS)Nrr�xrryrvr|)rrr)rrr2r9r)rrErG)rrr<rrrr�test_implicit_binary_modesvs

 z#OpenTest.test_implicit_binary_modesc(Cst|jjd�}|jdtj�}xFd	D]>}|dkrMt|j�|j|j|��}|j|�WdQRXt|jd��2}t	|j
��jd�}|j||�WdQRX|j|jd��}|j|j
�|�WdQRX|j|jd��}|j|�WdQRXt|jd��6}t	|j
��jd�}|j||d�WdQRXq.WdS)
Nr��
�wt�xtr�rtZatr|)rr)r)�decode�replacer�lineseprrr2r9rrErG)rrU�text_native_eolrr<rrrr�test_text_modes�s"

zOpenTest.test_text_modescCswxpdD]h}t|j�|j|j|��}WdQRX|jt��$|j|j|��}WdQRXWdQRXqWdS)Nrrr)rrr)rrr2r@�FileExistsError)rrr<rrr�test_x_mode�s

zOpenTest.test_x_modecCs�|jt|j�d�� }|j|j�|j�WdQRX|jt|j�d�� }|j|j�|j�WdQRX|jjd�}|jt|j�d��}|j|j�|�WdQRXdS)Nryrr�r	)r2rr*rGrEr)r
)rr<rUrrr�test_fileobj�s  zOpenTest.test_fileobjcCs�|jt|j|jd�|jt|j|jd�|jt|j|jddd�|jt|j|jddd�|jt|j|jddd	�dS)
NZwbtZxbtr�encodingzutf-8�errors�ignore�newliner)r@rBr2r)rrrr�test_bad_params�s					zOpenTest.test_bad_paramscCs�|jjd�}|jdtj�}|j|jddd��}|j|�WdQRXt|jd��2}t|j	��jd�}|j
||�WdQRX|j|jddd��}|j
|j	�|�WdQRXdS)Nr�rrrz	utf-16-lerr	)r)r
rrrr2rr9rrErG)rrUr
r<rrrr�
test_encoding�szOpenTest.test_encodingcCsq|j|jd��}|jd�WdQRX|j|jddddd��}|j|j�d�WdQRXdS)	Nr8sfoo�barr	rr�rrZfoobar)r2rr9rGrE)rr<rrr�test_encoding_error_handler�s
!z$OpenTest.test_encoding_error_handlercCs�|jjd�}|j|jddd��}|j|�WdQRX|j|jddd�� }|j|j�|g�WdQRXdS)Nr�rrrr	�
)r)r
r2rr9rGrh)rrUr<rrr�test_newline�s
zOpenTest.test_newlineN)r#r$r%r&r2rrrrrrrrrrrrrr�_s		
r�cCs'tjttttt�tj�dS)N)rZrun_unittestr7r�r�r�r�Z
reap_childrenrrrr�	test_main�sr�__main__)$ZtestrZtest.supportrrr��iorrrr�r/r�rr�sysrrNr��ImportError�
import_modulerr	r
rr
rZTestCaserr7r�r�r�r�rr#rrrr�<module>s>
	4��2�(x