3
Pd                 @   s   d 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mZmZ ddlmZ ddlmZmZmZmZmZmZ ed	d
 Zdd Zdd Zdd ZG dd deZdS )z
 Testing

    N)BytesIO)mkstemp)contextmanager)assert_assert_equal)raises)make_streamGenericStreamZlibInputStream
_read_into_read_string
BLOCK_SIZEc              c   sp   d} t  \}}tj|d}|j|  W d Q R X t|d"}t| }t| }|||fV  W d Q R X tj| d S )Ns   a stringwbrb)r   osfdopenwriteopenr   unlink)valfdfnamefsgscs r   V/var/www/html/virt/lib64/python3.6/site-packages/scipy/io/matlab/tests/test_streams.pysetup_test_file   s    
r   c              C   s.   t  \} }}ttt|t W d Q R X d S )N)r   r   
isinstancer   r	   )r   r   r   r   r   r   test_make_stream&   s    r   c              C   s   t  \} }}x| ||fD ]}t|}|jd}t|d t|j d |jd}t|d t|j d |jdd}t|d t|j d |jdd}t|d t|j d qW W d Q R X d S )Nr                  )r   r   seekr   tell)r   r   r   sstresr   r   r   test_tell_seek,   s    





r+   c              C   s   t  \} }}x| ||fD ]}t|}|jd |jd}t|d |jd |jd}t|d |jd t|d}t|d t|d}t|d ttt|d |jd t|d}t|d t|d}t|d ttt|d qW W d Q R X d S )	Nr   r"   s   a string   s   a sts   ringr!   )	r   r   r&   readr   r   assert_raisesIOErrorr   )r   r   r   r(   r)   r*   r   r   r   	test_read>   s*    















r1   c               @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )TestZlibInputStreamc             C   s<   t jjdd|jt jj }tj|}t|}|t	||fS )Nr      )
nprandomrandintastypeuint8tobyteszlibcompressr   len)selfsizedatacompressed_datastreamr   r   r   	_get_dataY   s    
zTestZlibInputStream._get_datac          	      sv   dddt d t d t t d dt  d g}t d t d t t d g} fdd}x$|D ]}x|D ]}||| q\W qRW d S )Nr   r"   
   r!   c       	         sd    j | \}}}t||}d}d}x2|jt|| | }|s>P |t|7 }||7 }q$W t|| d S )N    r   )rB   r
   r.   minr<   r   )	r>   	read_sizecompressed_streamcompressed_data_lenr?   rA   Zdata2Zso_farblock)r=   r   r   checkf   s    
z,TestZlibInputStream.test_read.<locals>.check)r   )r=   ZSIZESZ
READ_SIZESrJ   r>   rF   r   )r=   r   r1   _   s    

zTestZlibInputStream.test_readc             C   sv   d}t jjdd|jt jj }tj|}t|d }t	|t
|}|jt
| t|j t
| tt|jd d S )Ni  r   r3   s   abbacacar"   )r4   r5   r6   r7   r8   r9   r:   r;   r   r
   r<   r.   r   r'   r/   r0   )r=   r>   r?   r@   rG   rA   r   r   r   test_read_max_lengthx   s    
z(TestZlibInputStream.test_read_max_lengthc             C   sv   t jjdddjt jj }tj|}|d d t|d d d@ g }t	|}t
|t|}ttj|jt| d S )Nr   r3   rC   r"      r-   r-   )r4   r5   r6   r7   r8   r9   r:   r;   bytesr   r
   r<   r/   errorr.   )r=   r?   r@   rG   rA   r   r   r   test_read_bad_checksum   s    
"z*TestZlibInputStream.test_read_bad_checksumc       	      C   s   | j d\}}}t||}|jd d}t|j | |jd}t||||d   |jdd d}t|j | |jd}t||||d   |jdd d}t|j | |jd}t||||d   tt|jd	d
 tt|jdd tt|jdd |jdd tt|jd d S )Ni   {      iA  r"      i  r   rC   r!   i'        i  r-   )	rB   r
   r&   r   r'   r.   r/   r0   
ValueError)	r=   rG   rH   r?   rA   pZd1Zd2Zd3r   r   r   	test_seek   s,    




zTestZlibInputStream.test_seekc             C   sv   t jjdddjt jj }tj|}|d d t|d d d@ g }t	|}t
|t|}ttj|jt| d S )Nr   r3   rC   r"   rL   r-   r-   )r4   r5   r6   r7   r8   r9   r:   r;   rM   r   r
   r<   r/   rN   r&   )r=   r?   r@   rG   rA   r   r   r   test_seek_bad_checksum   s    
"z*TestZlibInputStream.test_seek_bad_checksumc             C   sZ   | j d\}}}t||}t|j   |jd t|j   |jd t|j  d S )Ni   i   )rB   r
   r   all_data_readr&   )r=   rG   rH   r?   rA   r   r   r   test_all_data_read   s    


z&TestZlibInputStream.test_all_data_readc             C   s|   d}t jdjt jj }tj||}t|}t|t	d k t
|}t||}t|j   |jt| t|j  d S )Nr$   iSr!   )r4   aranger7   r8   r9   r:   r;   r<   r   r   r   r
   rY   r&   )r=   COMPRESSION_LEVELr?   r@   rH   rG   rA   r   r   r   test_all_data_read_overlap   s    
z.TestZlibInputStream.test_all_data_read_overlapc             C   s   d}t jdjt jj }tj||}t|}t|t	d k |d d t
|d d d@ g }t|}t||}t|j   |jt| ttj|j d S )Nr$   iSr!   r"   rL   r-   r-   )r4   r[   r7   r8   r9   r:   r;   r<   r   r   rM   r   r
   rY   r&   r/   rN   )r=   r\   r?   r@   rH   rG   rA   r   r   r   test_all_data_read_bad_checksum   s    "
z3TestZlibInputStream.test_all_data_read_bad_checksumN)__name__
__module____qualname__rB   r1   rK   rO   rW   rX   rZ   r]   r^   r   r   r   r   r2   X   s   	r2   )__doc__r   r:   ior   tempfiler   
contextlibr   Znumpyr4   Znumpy.testingr   r   Zpytestr   r/   Zscipy.io.matlab.streamsr   r	   r
   r   r   r   r   r   r+   r1   objectr2   r   r   r   r   <module>   s    