
    biw                         d Z ddlZddlZddl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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         ]/home/cdr/jupyterlab/.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#   *   s8    		 <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_seekr1   0   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_readr8   B   s   		 8lr2rb" 	8A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+	88 8 8s   D&D;;Ec                   N   e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                  j                   ej                         dk(  xr ej                   d	k\  d
      d        Ze
j                  j                   ej                         dk(  xr ej                   d	k\  d
      d        Zy)TestZlibInputStreamc                     t        j                  |      }t        j                  |      }t	        |      }|t        |      |fS r!   )random	randbyteszlibcompressr   len)selfsizedatacompressed_datastreams        r   	_get_datazTestZlibInputStream._get_data]   s<    %---)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 )NrG   r   )rF   r   r5   minr@   r   )
rB   	read_sizecompressed_streamcompressed_data_lenrC   rE   data2so_farblockrA   s
            r   checkz,TestZlibInputStream.test_read.<locals>.checkj   s    ;?>>$;O82D$%68KLFEFC	(,v%7 8#e*$  u%rG   )r   )rA   SIZES
READ_SIZESrR   rB   rL   s   `     r   r8   zTestZlibInputStream.test_readc   s~    Ar:q=*Q,Z\1Z<>; !!mZ\ *Q,0
	&  	'D' '	dI&'	'rG   c                 N   t        j                  d      }t        j                  |      }t	        |dz         }t        |t        |            }|j                  t        |             t        |j                         t        |             t        t        |j                  d       y )Ni  s   abbacacar'   )r<   r=   r>   r?   r   r   r@   r5   r   r,   r6   r7   rA   rC   rD   rM   rE   s        r   test_read_max_lengthz(TestZlibInputStream.test_read_max_length|   s{    %---#Ok$AB !2C4HICI&++-s?/CDgv{{A.rG   c                 *   t        j                  d      }t        j                  |      }|d d t	        |d   dz   dz  g      z   }t        |      }t        |t        |            }t        t        j                  |j                  t        |             y NrI   r3   r'      )r<   r=   r>   r?   bytesr   r   r@   r6   errorr5   rV   s        r   test_read_bad_checksumz*TestZlibInputStream.test_read_bad_checksum       #--- +3B/"_R%81%<$C#DEF $O4 !2C4HIdjj&++s4y9rG   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   rI   r&   r3   i'     )	rF   r   r+   r   r,   r5   r6   r7   
ValueError)	rA   rM   rN   rC   rE   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/rG   c                 *   t        j                  d      }t        j                  |      }|d d t	        |d   dz   dz  g      z   }t        |      }t        |t        |            }t        t        j                  |j                  t        |             y rY   )r<   r=   r>   r?   r[   r   r   r@   r6   r\   r+   rV   s        r   test_seek_bad_checksumz*TestZlibInputStream.test_seek_bad_checksum   r^   rG   c                 $   | j                  d      \  }}}t        ||      }t        |j                                 |j	                  d       t        |j                                 |j	                  d       t        |j                                y )Nr`   i   )rF   r   r   all_data_readr+   )rA   rM   rN   rC   rE   s        r   test_all_data_readz&TestZlibInputStream.test_all_data_read   sx    7;~~d7K4. !24GHF((**+CF((**+D$$&'rG   Windows)      zgh-23185)reasonc                    d}t        j                  dt         j                        }t        j                  ||      }t        |      }t        |t        dz   k(         t        |      }t        ||      }t        |j                                 |j                  t        |             t        |j                                y )Nr*   Sdtyper&   )nparangeuint8r>   r?   r@   r   r   r   r   rn   r+   rA   COMPRESSION_LEVELrC   rD   rN   rM   rE   s          r   test_all_data_read_overlapz.TestZlibInputStream.test_all_data_read_overlap   s     yy2--.?@!/2 	#zA~56#O4 !24GHF((**+CI$$&'rG   c                    d}t        j                  dt         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   rv   r&   r3   r'   rZ   )rx   ry   rz   r>   r?   r@   r   r   r[   r   r   rn   r+   r6   r\   r{   s          r   test_all_data_read_bad_checksumz3TestZlibInputStream.test_all_data_read_bad_checksum   s     yy2--.?@!/2 	#zA~56 +3B/"_R%81%<$C#DEF $O4 !24GHF((**+CIdjj&"6"67rG   N)__name__
__module____qualname__rF   r8   rW   r]   rj   rl   ro   pytestmarkskipifplatformsystemsysversion_infor}   r    rG   r   r:   r:   \   s    2'2	/:0<:( [[X__)+K0@0@G0K  ((  [[X__)+K0@0@G0K  88rG   r:   ) __doc__r   r   r<   r   r>   ior   tempfiler   
contextlibr   numpyrx   numpy.testingr   r   r   r   r6   scipy.io.matlab._streamsr	   r
   r   r   r   r   r   r#   r1   r8   r:   r   rG   r   <module>r      sk     	  
    %  / * * *
 
 
<'$84U8 U8rG   