
    (ph                         S r SSKrSSKrSSKJr  SSKJr  SSKJr  SSK	r
SSKJrJr  SSKJr  SSKJrJrJrJrJrJr  \S	 5       rS
 rS rS r " S S5      rg)z	Testing

    N)BytesIO)mkstemp)contextmanager)assert_assert_equal)raises)make_streamGenericStreamZlibInputStream
_read_into_read_string
BLOCK_SIZEc               #   \  #    Sn [        5       u  p[        R                  " US5       nUR                  U 5        S S S 5        [	        US5       n[        U 5      n[        U 5      nX4U4v   S S S 5        [        R                  " U5        g ! , (       d  f       NV= f! , (       d  f       N6= f7f)N   a stringwbrb)r   osfdopenwriteopenr   unlink)valfdfnamefsgscss         U/var/www/html/venv/lib/python3.13/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                      [        5        u  pn[        [        [        U5      [        5      5        S S S 5        g ! , (       d  f       g = f)N)r   r   
isinstancer	   r
   )r   r   r   s      r   test_make_streamr"   &   s-    		lrr
;r?M:; 
		s	   &:
Ac                  :   [        5        u  pnXU4 H  n[        U5      nUR                  S5      n[        US5        [        UR	                  5       S5        UR                  S5      n[        US5        [        UR	                  5       S5        UR                  SS5      n[        US5        [        UR	                  5       S5        UR                  SS5      n[        US5        [        UR	                  5       S5        M     S S S 5        g ! , (       d  f       g = f)Nr                  )r   r	   seekr   tellr   r   r   sstress         r   test_tell_seekr0   ,   s    		lrr"AQB''!*Ca A&''!*Ca A&''!Q-Ca A&''"a.Ca A&  
		s   C8D
Dc                     [        5        u  pnXU4 GH  n[        U5      nUR                  S5        UR                  S5      n[	        US5        UR                  S5        UR                  S5      n[	        US5        UR                  S5        [        US5      n[	        US5        [        US5      n[	        US5        [        [        [
        US5        UR                  S5        [        US5      n[	        US5        [        US5      n[	        US5        [        [        [        US5        GM     S S S 5        g ! , (       d  f       g = f)Nr   r      s   a sts   ringr%   )	r   r	   r*   readr   r   assert_raisesOSErrorr   r,   s         r   	test_readr7   >   s    		lrr"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                   J    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)TestZlibInputStreamX   c                     [         R                  R                  SSU5      R                  [         R                  5      R                  5       n[        R                  " U5      n[        U5      nU[        U5      U4$ )Nr      )
nprandomrandintastypeuint8tobyteszlibcompressr   len)selfsizedatacompressed_datastreams        r   	_get_dataTestZlibInputStream._get_dataY   s\    yy  C.55bhh?GGI---)s?+T11    c           	         ^  SSS[         S-  [         S-
  [         [         S-   S[         -  S-
  /n[         S-  [         S-
  [         [         S-   /nU 4S jnU H  nU H  nU" XE5        M     M     g )Nr   r&   
   r%   c                    > T	R                  U 5      u  p#n[        X#5      nSnSn UR                  [        UX-
  5      5      nU(       d  OU[	        U5      -  nXh-  nM9  [        XF5        g )NrM   r   )rK   r   r4   minrE   r   )
rG   	read_sizecompressed_streamcompressed_data_lenrH   rJ   data2so_farblockrF   s
            r   check,TestZlibInputStream.test_read.<locals>.checkf   su    ;?>>$;O8D$%6LFEFC	(,%7 8#e*$  %rM   )r   )rF   SIZES
READ_SIZESrX   rG   rR   s   `     r   r7   TestZlibInputStream.test_read_   sr    Ar:q=*Q,Z\1Z<>; !!mZ\ *Q,0
	& D'	d& ( rM   c                    Sn[         R                  R                  SSU5      R                  [         R                  5      R                  5       n[        R                  " U5      n[        US-   5      n[        U[        U5      5      nUR                  [        U5      5        [        UR                  5       [        U5      5        [        [        UR                  S5        g )Ni  r   r<   s   abbacacar&   )r=   r>   r?   r@   rA   rB   rC   rD   r   r   rE   r4   r   r+   r5   r6   )rF   rG   rH   rI   rS   rJ   s         r   test_read_max_length(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.rM   c                    [         R                  R                  SSS5      R                  [         R                  5      R                  5       n[        R                  " U5      nUS S [        US   S-   S-  /5      -   n[        U5      n[        U[        U5      5      n[        [        R                  UR                  [        U5      5        g Nr   r<   rO   r2   r&      )r=   r>   r?   r@   rA   rB   rC   rD   bytesr   r   rE   r5   errorr4   rF   rH   rI   rS   rJ   s        r   test_read_bad_checksum*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9rM   c                    U R                  S5      u  pn[        X5      nUR                  S5        Sn[        UR	                  5       U5        UR                  S5      n[        XcXUS-    5        UR                  SS5        Sn[        UR	                  5       U5        UR                  S5      n[        XsXUS-    5        UR                  SS	5        Sn[        UR	                  5       U5        UR                  S5      n[        XXUS-    5        [        [        UR                  S
S5        [        [        UR                  SS5        [        [        UR                  SS5        UR                  SS5        [        [        UR
                  S5        g )N   {      iA  r&   i     i  r   rO   r%   r2   i'     )	rK   r   r*   r   r+   r4   r5   r6   
ValueError)	rF   rS   rT   rH   rJ   pd1d2d3s	            r   	test_seekTestZlibInputStream.test_seek   s3   7;~~d7K4 !2HCV[[]A&[[_Ra"&CV[[]A&[[_Ra"&CV[[]A&[[_Ra"&gv{{B2gv{{B2j&++q#6E1gv{{B/rM   c                    [         R                  R                  SSS5      R                  [         R                  5      R                  5       n[        R                  " U5      nUS S [        US   S-   S-  /5      -   n[        U5      n[        U[        U5      5      n[        [        R                  UR                  [        U5      5        g ra   )r=   r>   r?   r@   rA   rB   rC   rD   rc   r   r   rE   r5   rd   r*   re   s        r   test_seek_bad_checksum*TestZlibInputStream.test_seek_bad_checksum   rh   rM   c                 0   U R                  S5      u  pn[        X5      n[        UR                  5       (       + 5        UR	                  S5        [        UR                  5       (       + 5        UR	                  S5        [        UR                  5       5        g )Nrj   i   )rK   r   r   all_data_readr*   )rF   rS   rT   rH   rJ   s        r   test_all_data_read&TestZlibInputStream.test_all_data_read   sr    7;~~d7K4 !2HF((**+CF((**+D$$&'rM   c                    Sn[         R                  " S5      R                  [         R                  5      R	                  5       n[
        R                  " X!5      n[        U5      n[        U[        S-   :H  5        [        U5      n[        XT5      n[        UR                  5       (       + 5        UR                  [        U5      5        [        UR                  5       5        g )Nr)   Sr%   )r=   aranger@   rA   rB   rC   rD   rE   r   r   r   r   rz   r*   rF   COMPRESSION_LEVELrH   rI   rT   rS   rJ   s          r   test_all_data_read_overlap.TestZlibInputStream.test_all_data_read_overlap   s    yy"))"((3;;=--@!/2 	#zA~56#O4 !2HF((**+CI$$&'rM   c                    Sn[         R                  " S5      R                  [         R                  5      R	                  5       n[
        R                  " X!5      n[        U5      n[        U[        S-   :H  5        US S [        US   S-   S-  /5      -   n[        U5      n[        XT5      n[        UR                  5       (       + 5        UR                  [        U5      5        [        [
        R                   UR                  5        g )Nr)   r~   r%   r2   r&   rb   )r=   r   r@   rA   rB   rC   rD   rE   r   r   rc   r   r   rz   r*   r5   rd   r   s          r   test_all_data_read_bad_checksum3TestZlibInputStream.test_all_data_read_bad_checksum   s    yy"))"((3;;=--@!/2 	#zA~56 +3B/"_R%81%<$C#DEF $O4 !2HF((**+CIdjj&"6"67rM    N)__name__
__module____qualname____firstlineno__rK   r7   r^   rf   rt   rw   r{   r   r   __static_attributes__r   rM   r   r9   r9   X   s/    2'2
/:0<:(( 8rM   r9   )__doc__r   rC   ior   tempfiler   
contextlibr   numpyr=   numpy.testingr   r   pytestr   r5   scipy.io.matlab._streamsr	   r
   r   r   r   r   r   r"   r0   r7   r9   r   rM   r   <module>r      s_    
    %  / ** *
 
 
<'$84P8 P8rM   