
    5[g                         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	        Zd
 Zd Zd Z G d d      Zy)z
 Testing

    N)BytesIO)mkstemp)contextmanager)assert_assert_equal)raises)make_streamGenericStreamZlibInputStream
_read_into_read_string
BLOCK_SIZEc               #   H  K   d} t               \  }}t        j                  |d      5 }|j                  |        d d d        t	        |d      5 }t        |       }t        |       }|||f d d d        t        j                  |       y # 1 sw Y   QxY w# 1 sw Y   +xY ww)N   a stringwbrb)r   osfdopenwriteopenr   unlink)valfdfnamefsgscss         ]/var/www/html/bid-api/venv/lib/python3.12/site-packages/scipy/io/matlab/tests/test_streams.pysetup_test_filer      s     
C	IB	2t	
 
	eT	bS\S\"bj 
 IIe 
			s3   &B"B
B"B,B"
BB"BB"c                      t               5 \  } }}t        t        t        |      t                     d d d        y # 1 sw Y   y xY w)N)r   r   
isinstancer	   r
   )r   r   r   s      r   test_make_streamr"   &   s/    		lr2r
;r?M:; 
		s	   ';Ac                  2   t               5 \  } }}| ||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        	 d d d        y # 1 sw Y   y xY w)Nr                  )r   r	   seekr   tellr   r   r   sstress         r   test_tell_seekr0   ,   s    		lr2rb"AQB''!*Ca A&''!*Ca A&''!Q-Ca A&''"a.Ca A&  
		s   C8DDc                     t               5 \  } }}| ||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        	 d d d        y # 1 sw Y   y xY w)Nr   r      s   a sts   ringr%   )	r   r	   r*   readr   r   assert_raisesOSErrorr   r,   s         r   	test_readr7   >   s   		lr2rb"AQBGGAJ''"+Cn-GGAJ''!*Cj)GGAJR#Cj)R#Cg&':r15GGAJr1%Cj)r1%Cg&'<Q7+  
		s   D&D;;Ec                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestZlibInputStreamc                     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streams        r   	_get_datazTestZlibInputStream._get_dataY   s\    yy  C.55bhh?GGI---)s?+T11    c           	           dddt         dz  t         dz
  t         t         dz   dt         z  dz
  g}t         dz  t         dz
  t         t         dz   g} fd}|D ]  }|D ]  } |||         y )Nr   r&   
   r%   c                     	j                  |       \  }}}t        ||      }d}d}	 |j                  t        || |z
              }|sn|t	        |      z  }||z  }5t        ||       y )NrK   r   )rJ   r   r4   minrD   r   )
rF   	read_sizecompressed_streamcompressed_data_lenrG   rI   data2so_farblockrE   s
            r   checkz,TestZlibInputStream.test_read.<locals>.checkf   s    ;?>>$;O82D$%68KLFEFC	(,v%7 8#e*$  u%rK   )r   )rE   SIZES
READ_SIZESrV   rF   rP   s   `     r   r7   zTestZlibInputStream.test_read_   st    Ar:q=*Q,Z\1Z<>; !!mZ\ *Q,0
	& D'	dI& ( rK   c                    d}t         j                  j                  dd|      j                  t         j                        j                         }t        j                  |      }t        |dz         }t        |t        |            }|j                  t        |             t        |j                         t        |             t        t        |j                  d       y )Ni  r   r;   s   abbacacar&   )r<   r=   r>   r?   r@   rA   rB   rC   r   r   rD   r4   r   r+   r5   r6   )rE   rF   rG   rH   rQ   rI   s         r   test_read_max_lengthz(TestZlibInputStream.test_read_max_lengthx   s    yy  C.55bhh?GGI---#Ok$AB !2C4HICI&++-s?/CDgv{{A.rK   c                    t         j                  j                  ddd      j                  t         j                        j                         }t        j                  |      }|d d t        |d   dz   dz  g      z   }t        |      }t        |t        |            }t        t        j                  |j                  t        |             y Nr   r;   rM   r2   r&      )r<   r=   r>   r?   r@   rA   rB   rC   bytesr   r   rD   r5   errorr4   rE   rG   rH   rQ   rI   s        r   test_read_bad_checksumz*TestZlibInputStream.test_read_bad_checksum       yy  C,33BHH=EEG--- +3B/"_R%81%<$C#DEF $O4 !2C4HIdjj&++s4y9rK   c                 ,   | j                  d      \  }}}t        ||      }|j                  d       d}t        |j	                         |       |j                  d      }t        ||||dz           |j                  dd       d}t        |j	                         |       |j                  d      }t        ||||dz           |j                  dd	       d}t        |j	                         |       |j                  d      }t        ||||dz           t        t        |j                  d
d       t        t        |j                  dd       t        t        |j                  dd       |j                  dd       t        t        |j
                  d       y )N   {      iA  r&   i     i  r   rM   r%   r2   i'     )	rJ   r   r*   r   r+   r4   r5   r6   
ValueError)	rE   rQ   rR   rG   rI   pd1d2d3s	            r   	test_seekzTestZlibInputStream.test_seek   sE   7;~~d7K4. !24GHCV[[]A&[[_Ra"&CV[[]A&[[_Ra"&CV[[]A&[[_Ra"&gv{{B2gv{{B2j&++q#6E1gv{{B/rK   c                    t         j                  j                  ddd      j                  t         j                        j                         }t        j                  |      }|d d t        |d   dz   dz  g      z   }t        |      }t        |t        |            }t        t        j                  |j                  t        |             y r\   )r<   r=   r>   r?   r@   rA   rB   rC   r^   r   r   rD   r5   r_   r*   r`   s        r   test_seek_bad_checksumz*TestZlibInputStream.test_seek_bad_checksum   rb   rK   c                 $   | j                  d      \  }}}t        ||      }t        |j                                 |j	                  d       t        |j                                 |j	                  d       t        |j                                y )Nrd   i   )rJ   r   r   all_data_readr*   )rE   rQ   rR   rG   rI   s        r   test_all_data_readz&TestZlibInputStream.test_all_data_read   sx    7;~~d7K4. !24GHF((**+CF((**+D$$&'rK   c                    d}t        j                  d      j                  t         j                        j	                         }t        j                  ||      }t        |      }t        |t        dz   k(         t        |      }t        ||      }t        |j                                 |j                  t        |             t        |j                                y )Nr)   Sr%   )r<   aranger?   r@   rA   rB   rC   rD   r   r   r   r   rr   r*   rE   COMPRESSION_LEVELrG   rH   rR   rQ   rI   s          r   test_all_data_read_overlapz.TestZlibInputStream.test_all_data_read_overlap   s    yy"))"((3;;=--.?@!/2 	#zA~56#O4 !24GHF((**+CI$$&'rK   c                    d}t        j                  d      j                  t         j                        j	                         }t        j                  ||      }t        |      }t        |t        dz   k(         |d d t        |d   dz   dz  g      z   }t        |      }t        ||      }t        |j                                 |j                  t        |             t        t
        j                   |j                         y )Nr)   ru   r%   r2   r&   r]   )r<   rv   r?   r@   rA   rB   rC   rD   r   r   r^   r   r   rr   r*   r5   r_   rw   s          r   test_all_data_read_bad_checksumz3TestZlibInputStream.test_all_data_read_bad_checksum   s    yy"))"((3;;=--.?@!/2 	#zA~56 +3B/"_R%81%<$C#DEF $O4 !24GHF((**+CIdjj&"6"67rK   N)__name__
__module____qualname__rJ   r7   rZ   ra   rn   rp   rs   ry   r{    rK   r   r9   r9   X   s/    2'2
/:0<:(( 8rK   r9   )__doc__r   rB   ior   tempfiler   
contextlibr   numpyr<   numpy.testingr   r   pytestr   r5   scipy.io.matlab._streamsr	   r
   r   r   r   r   r   r"   r0   r7   r9   r   rK   r   <module>r      s_    
    %  / ** *
 
 
<'$84P8 P8rK   