
    sg                         d Z ddlZddlmZ ddlZddlmZmZm	Z	 ddl
mZ ddlmc mc mZ ddlmc mc mZ ddlmc mc mZ ddlmc mc mZ d ZddZd Zej:                  fd	Zd
 Zd Z d Z!d Z"d Z#y)z# Testing mio5_utils Cython module

    N)BytesIO)assert_array_equalassert_equalassert_)raisesc                  8   dD ]  } t        j                  | t         j                        }|j                         }t	        j
                  |      }t        |j                         |       t	        j
                  |      }t        |j                         |        y )N)      i   dtype)nparrayuint32byteswapm5ubyteswap_u4r   item)valabcds        X/var/www/html/venv/lib/python3.12/site-packages/scipy/io/matlab/tests/test_mio5_utils.pytest_byteswapr      sp     	" HHS		*JJLOOAQVVXq!OOAQVVXq!	"    c                    t        j                  |       } t        j                  | j                        }| j
                  }|s/|dz   }d|dz  z
  }d|fd|fd| fg}|rQ|j                  dd|f       n<|dz   }d	|z
  }|d
k(  rd|fd|fd| fg}nd|fd|fd| fg}|r|j                  dd|f       t        j                  d|      }	||	d<   ||	d<   ||	d<   |	S )z( Makes a simple matlab tag, full or sde u4   mdtype
byte_countr   paddingu1u2   <r	   r   )r   r   bocto_numpy_code	byteorderitemsizeappendzeros)
base_dtr   r   sdebor    udtr!   all_dttags
             r   	_make_tagr3       s!   hhwG			7,,	-B!!J4izA~&S/%'"$ MM9dG454iJ,9o#S)g&(F $S)og&(F MM9dG45
((4v
&CCM"CCJJr   c                     | j                  d       | j                  d       |D ]  }| j                  |        | j                  d       y )Nr   )truncateseekwrite)streamstringsss      r   _write_streamr;   A   s>    
OOA
KKN Q
KKNr   c                      G d d      } |       }| |_         ||_        d|_        t        j                         |_        d|_        d|_        d|_        |S )Nc                       e Zd Zy)_make_readerlike.<locals>.RN)__name__
__module____qualname__ r   r   Rr>   J   s    r   rC   TF)	
mat_stream
byte_orderstruct_as_recordsysgetdefaultencodinguint16_codecchars_as_strings	mat_dtype
squeeze_me)r8   rE   rC   rs       r   _make_readerlikerN   I   sT     	AALALA++-ANAAKALHr   c                  8   t               } t        |       }t        j                  |      }t	        t
        |j                         t        ddt        j                  d      }d|d<   t        | |j                                t	        t        |j                         y )Ni4r	   Tr.      r    )r   rN   r   
VarReader5assert_raisesOSErrorread_tagr3   mio5pmiINT32r;   tobytes
ValueError)str_iorM   c_readerr2   s       r   test_read_tagr]   W   sq     YF A~~a H'8,,-
D!U]]
5CC&#++-(*h//0r   c                     t        ddt        j                  d      } | j                         }t	        |      }t        j                  |      }t        j                  || j                        }t        || j                                y )NrP   r	   TrQ   )
r3   rW   rX   rY   r   streamsmake_stream
_read_intor*   r   )r2   tag_strr[   str:   s        r   test_read_streamrd   f   sa    
D!U]]
5CkkmGWF			V	$B2s||,ACKKM"r   c            	         t               } t        |       }ddt        j                  fddt        j                  fddt        j
                  ffD ]"  \  }}}dD ]  }||_        t        j                  |      }t        |j                  |dk(         t        |j                  |t        j                  k7         d	D ]  }t        j                  |      j!                  |      }t#        ||||      }	|	j%                         }
t'        | |
       |j)                         }t        ||       t'        | |
|
       |j)                         }t        ||       |j)                         }t        ||         % y )
Nr#      rP   r	   i2)r%   >r%   )FT)r   rN   rW   miUINT16rX   miINT16rE   r   rS   r   little_endian
is_swappedr'   native_coder   r   newbyteorderr3   rY   r;   read_numeric)r[   rM   r-   r   r   	byte_coder\   sde_fdtr   a_strels               r   test_read_numericrv   o   sJ   YF A"&ENN!;"&5==!9"&EMM!:!< &f $ 	&I$AL~~a(H//c1AB,,i3??.JK& &XXg&33I>b#vu5		fe,**,R%feU3**,R%**,R%&	&&r   c                  V   t               } t        | d      }t        j                  |      }t	        j
                  d      }t        |dt        j                  d      }|j                         }t        | |       |j                         }t        |j                  j                  du        y )Nr%   z<u2rf   r   T)r   rN   r   rS   r   r   r3   rW   rj   rY   r;   rp   r   flags	writeable)r[   rM   r\   rs   r   rt   ru   s          r   test_read_numeric_writeablerz      s~    YF%A~~a H	%B"b%..!,AIIKE&% 				 BBHH$&'r   c                     t               } t        | t        j                        }t	        j
                  |      }t        j                  ddg      }t        j                  d|      }t        j                  |d<   d|d<   t	        j                         }|j                  dg       t        | |j                         dz          | j                  d	       |j!                  |      }t#        |d
       d	|d<   t        | |j                                | j                  d	       |j!                  |      }t#        |d
       | j                  d	       |j                  dg       |j!                  |      }t%        |d
gdz         y )N)r   r   )r    r   r&   r   r   r	   r    s           r    r$   )r   rN   r'   rn   r   rS   r   r   r,   rW   miINT8
VarHeader5set_dimsr;   rY   r6   	read_charr   r   )r[   rM   r\   tag_dtr2   hdrr   s          r   test_zero_byte_stringr      s1    YF1A~~a HXX')=>?F
((4v
&CLLCMC
..
CLL!&#++-+56
KKN


S
!CcC&#++-(
KKN


S
!Cc
KKNLL!


S
!CsSEAI&r   )F)$__doc__rG   ior   numpyr   numpy.testingr   r   r   pytestr   rT   scipy.io.matlab._byteordercodesmatlab_byteordercodesr'   scipy.io.matlab._streams_streamsr_   scipy.io.matlab._mio5_params_mio5_paramsrW   scipy.io.matlab._mio5_utils_mio5_utilsr   r   r3   r;   rn   rN   r]   rd   rv   rz   r   rB   r   r   <module>r      sm       C C * - - * * , , ) )
"B ), 1#&8
('r   