o
    Ö­jî  ã                   @   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ƒZdS )z
 Testing

é    N)ÚBytesIO)Úmkstemp)Úcontextmanager)Úassert_Úassert_equal)Úraises)Úmake_streamÚGenericStreamÚZlibInputStreamÚ
_read_intoÚ_read_stringÚ
BLOCK_SIZEc                  c   sš   � d} t ƒ \}}t |d¡�}| | ¡ W d   ƒ n1 sw   Y  t|dƒ�}t| ƒ}t| ƒ}|||fV  W d   ƒ n1 sAw   Y  t |¡ d S )Nó   a stringÚwbÚrb)r   ÚosÚfdopenÚwriteÚopenr   Úunlink)ÚvalÚfdÚfnameÚfsÚgsÚcs© r   ú_/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/io/matlab/tests/test_streams.pyÚsetup_test_file   s   €
ÿýr   c                  C   sD   t ƒ �\} }}ttt|ƒtƒƒ W d   ƒ d S 1 sw   Y  d S )N)r   r   Ú
isinstancer   r	   )r   r   r   r   r   r   Útest_make_stream&   s   "þr    c                  C   sÖ   t ƒ �^\} }}| ||fD ]L}t|ƒ}| d¡}t|dƒ t| ¡ dƒ | d¡}t|dƒ t| ¡ dƒ | dd¡}t|dƒ t| ¡ dƒ | dd¡}t|dƒ t| ¡ dƒ qW d   ƒ d S 1 sdw   Y  d S )Nr   é   é   é   é   éþÿÿÿé   )r   r   Úseekr   Útell©r   r   r   ÚsÚstÚresr   r   r   Útest_tell_seek,   s"   





ó"ÿr-   c                  C   s  t ƒ �v\} }}| ||fD ]d}t|ƒ}| d¡ | d¡}t|dƒ | d¡ | d¡}t|dƒ | d¡ t|dƒ}t|dƒ t|dƒ}t|dƒ ttt|dƒ | d¡ t|dƒ}t|dƒ t|dƒ}t|dƒ ttt|dƒ qW d   ƒ d S 1 s|w   Y  d S )Nr   éÿÿÿÿr   é   s   a sts   ringr"   )	r   r   r'   Úreadr   r   Úassert_raisesÚOSErrorr   r)   r   r   r   Ú	test_read>   s.   















ë"ÿr3   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 dd|¡ t j¡ ¡ }t |¡}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              	      sn   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„}|D ]}|D ]}|||ƒ q,q(d S )Nr   r#   é
   r"   c           	         sb   ˆ   | ¡\}}}t||ƒ}d}d}	 | t|| | ƒ¡}|sn|t|ƒ7 }||7 }qt||ƒ d S )Nó    r   )rD   r
   r0   Úminr>   r   )	r@   Ú	read_sizeÚcompressed_streamÚcompressed_data_lenrA   rC   Údata2Úso_farÚblock©r?   r   r   Úcheckf   s   
ÿúz,TestZlibInputStream.test_read.<locals>.check)r   )r?   ÚSIZESÚ
READ_SIZESrO   r@   rH   r   rN   r   r3   _   s   ÿÿÿÿzTestZlibInputStream.test_readc                 C   sv   d}t j dd|¡ t j¡ ¡ }t |¡}t|d ƒ}t	|t
|ƒƒ}| t
|ƒ¡ t| ¡ t
|ƒƒ tt|jdƒ d S )NiÒ  r   r5   s   abbacacar#   )r6   r7   r8   r9   r:   r;   r<   r=   r   r
   r>   r0   r   r(   r1   r2   )r?   r@   rA   rB   rI   rC   r   r   r   Útest_read_max_lengthx   s   
z(TestZlibInputStream.test_read_max_lengthc                 C   óv   t j ddd¡ t j¡ ¡ }t |¡}|d d… t|d d d@ gƒ }t	|ƒ}t
|t|ƒƒ}ttj|jt|ƒƒ d S ©Nr   r5   rE   r.   r#   éÿ   )r6   r7   r8   r9   r:   r;   r<   r=   Úbytesr   r
   r>   r1   Úerrorr0   ©r?   rA   rB   rI   rC   r   r   r   Útest_read_bad_checksum„   ó   

ÿz*TestZlibInputStream.test_read_bad_checksumc           	      C   s   |   d¡\}}}t||ƒ}| d¡ d}t| ¡ |ƒ | d¡}t||||d … ƒ | dd¡ d}t| ¡ |ƒ | d¡}t||||d … ƒ | dd	¡ d}t| ¡ |ƒ | d¡}t||||d … ƒ tt|jd
dƒ tt|jddƒ tt|jddƒ | dd¡ tt|jdƒ d S )Né   é{   é   iA  r#   iÇ  é   i�  r   rE   r"   r.   i'  é   )	rD   r
   r'   r   r(   r0   r1   r2   Ú
ValueError)	r?   rI   rJ   rA   rC   ÚpÚd1Úd2Úd3r   r   r   Ú	test_seek‘   s,   




zTestZlibInputStream.test_seekc                 C   rS   rT   )r6   r7   r8   r9   r:   r;   r<   r=   rV   r   r
   r>   r1   rW   r'   rX   r   r   r   Útest_seek_bad_checksum¯   rZ   z*TestZlibInputStream.test_seek_bad_checksumc                 C   sZ   |   d¡\}}}t||ƒ}t| ¡  ƒ | d¡ t| ¡  ƒ | d¡ t| ¡ ƒ d S )Nr[   i   )rD   r
   r   Úall_data_readr'   )r?   rI   rJ   rA   rC   r   r   r   Útest_all_data_read¼   s   


z&TestZlibInputStream.test_all_data_readc                 C   s|   d}t  d¡ t j¡ ¡ }t ||¡}t|ƒ}t|t	d kƒ t
|ƒ}t||ƒ}t| ¡  ƒ | t|ƒ¡ t| ¡ ƒ d S )Nr&   éøSr"   )r6   Úaranger9   r:   r;   r<   r=   r>   r   r   r   r
   rg   r'   ©r?   ÚCOMPRESSION_LEVELrA   rB   rJ   rI   rC   r   r   r   Útest_all_data_read_overlapÅ   s   
z.TestZlibInputStream.test_all_data_read_overlapc                 C   s    d}t  d¡ t j¡ ¡ }t ||¡}t|ƒ}t|t	d kƒ |d d… t
|d d d@ gƒ }t|ƒ}t||ƒ}t| ¡  ƒ | t|ƒ¡ ttj|jƒ d S )Nr&   ri   r"   r.   r#   rU   )r6   rj   r9   r:   r;   r<   r=   r>   r   r   rV   r   r
   rg   r'   r1   rW   rk   r   r   r   Útest_all_data_read_bad_checksumÕ   s   
ÿ
z3TestZlibInputStream.test_all_data_read_bad_checksumN)Ú__name__Ú
__module__Ú__qualname__rD   r3   rR   rY   re   rf   rh   rm   rn   r   r   r   r   r4   X   s    	r4   )Ú__doc__r   r<   Úior   Útempfiler   Ú
contextlibr   Únumpyr6   Únumpy.testingr   r   Úpytestr   r1   Úscipy.io.matlab._streamsr   r	   r
   r   r   r   r   r    r-   r3   r4   r   r   r   r   Ú<module>   s      
