o
    h                     @   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   V/var/www/vscode/kcb/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      
