B
    18™\ä  ã               @   s    d dl mZ e dd¡ 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mZ ed ZdZG d	d
„ d
ejƒZG dd„ dejƒZedkrœe ¡  dS )é    )ÚsupportÚextralargefilez>test requires loads of disk-space bytes and a long time to runN)ÚTemporaryFile)ÚTESTFNÚrequires_zlibÚ2é<   c               @   s8   e Zd Zdd„ Zdd„ Zdd„ Zedd„ ƒZd	d
„ ZdS )ÚTestsWithSourceFilec             C   sF   dd„ t dƒD ƒ}d |¡ d¡| _ttdƒ}| | j¡ | ¡  d S )Nc             s   s   | ]}d | V  qdS )zTest of zipfile line %d.N© )Ú.0Úir
   r
   úW/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/test/test_zipfile64.pyú	<genexpr>   s    z,TestsWithSourceFile.setUp.<locals>.<genexpr>i@B Ú
ÚasciiÚwb)ÚrangeÚjoinÚencodeÚdataÚopenr   ÚwriteÚclose)ÚselfZline_genÚfpr
   r
   r   ÚsetUp   s
    
zTestsWithSourceFile.setUpc             C   s  t  |d|¡}dt| jƒ }t ¡ t }xZt|ƒD ]N}| d| | j¡ |t ¡ kr2t ¡ t }t	d||f t
jd t
j ¡  q2W | ¡  t  |d|¡}x`t|ƒD ]T}|  | d| ¡| j¡ |t ¡ kr¤t ¡ t }t	d||f t
jd t
j ¡  q¤W | ¡  d S )NÚwl        ztestfn%dz/  zipTest still writing %d of %d, be patient...)ÚfileÚrz/  zipTest still reading %d of %d, be patient...)ÚzipfileÚZipFileÚlenr   ÚtimeÚ	monotonicÚ_PRINT_WORKING_MSG_INTERVALr   ÚwritestrÚprintÚsysÚ
__stdout__Úflushr   ÚassertEqualÚread)r   ÚfÚcompressionZzipfpZ	filecountZ	next_timeÚnumr
   r
   r   ÚzipTest&   s,    zTestsWithSourceFile.zipTestc          	   C   s>   t ƒ  }|  |tj¡ |  |j¡ W d Q R X |  ttj¡ d S )N)r   r/   r   Z
ZIP_STOREDÚassertFalseÚclosedÚTESTFN2)r   r,   r
   r
   r   Ú
testStoredG   s    zTestsWithSourceFile.testStoredc          	   C   s>   t ƒ  }|  |tj¡ |  |j¡ W d Q R X |  ttj¡ d S )N)r   r/   r   ÚZIP_DEFLATEDr0   r1   r2   )r   r,   r
   r
   r   ÚtestDeflatedO   s    z TestsWithSourceFile.testDeflatedc             C   s,   x&t tfD ]}tj |¡r
t |¡ q
W d S )N)r   r2   ÚosÚpathÚexistsÚremove)r   Úfnamer
   r
   r   ÚtearDownX   s    zTestsWithSourceFile.tearDownN)	Ú__name__Ú
__module__Ú__qualname__r   r/   r3   r   r5   r;   r
   r
   r
   r   r	      s
   
!	r	   c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú
OtherTestsc             C   sÐ   t jtddd}d|_d}x,t|ƒD ] }| d| d|d d	  ¡ q$W |  t| ¡ ƒ|¡ | 	¡  t jtd
d}|  t| ¡ ƒ|¡ x<t|ƒD ]0}| 
d| ¡ d¡}|  |d|d d	  ¡ qW | 	¡  d S )Nr   T)ÚmodeÚ
allowZip64éd   i € zfoo%08dz%dé   é9   r   )r@   r   )r   r    r   Údebugr   r%   r*   r!   Únamelistr   r+   Údecode)r   ÚzipfÚnumfilesr   Úzipf2Úcontentr
   r
   r   ÚtestMoreThan64kFiles_   s     zOtherTests.testMoreThan64kFilesc          	   C   sø  t jtddd}d|_d}x,t|ƒD ] }| d| d|d d	  ¡ q$W |  t| ¡ ƒ|¡ |  	t j
¡ | d| d
¡ W d Q R X |  t| ¡ ƒ|¡ | ¡  t jtddd}d|_|  t| ¡ ƒ|¡ |  	t j
¡ | d| d
¡ W d Q R X |  t| ¡ ƒ|¡ | ¡  t jtddd}d|_|  t| ¡ ƒ|¡ d}x0t||ƒD ]"}| d| d|d d	  ¡ qHW |  t| ¡ ƒ|¡ | ¡  t jtdd}|  t| ¡ ƒ|¡ x>t|ƒD ]2}| d| ¡ d¡}|  |d|d d	  ¡ q¶W | ¡  d S )Nr   F)r@   rA   rB   iÿÿ  zfoo%08dz%drC   rD   ó    ÚaTi € r   )r@   r   )r   r    r   rE   r   r%   r*   r!   rF   ÚassertRaisesZLargeZipFiler   r+   rG   )r   rH   rI   r   Z	numfiles2rJ   rK   r
   r
   r   ÚtestMoreThan64kFilesAppendq   s>     "z%OtherTests.testMoreThan64kFilesAppendc             C   s   t  t¡ t  t¡ d S )N)r   Úunlinkr   r2   )r   r
   r
   r   r;   •   s    
zOtherTests.tearDownN)r<   r=   r>   rL   rP   r;   r
   r
   r
   r   r?   ^   s   $r?   Ú__main__)Útestr   Úrequiresr   r6   Úunittestr"   r'   Útempfiler   Ztest.supportr   r   r2   r$   ÚTestCaser	   r?   r<   Úmainr
   r
   r
   r   Ú<module>   s   C;