
    Ui                         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#dS )z# Testing mio5_utils Cython module

    N)BytesIO)assert_array_equalassert_equalassert_)raisesc                  P   dD ]} t          j        | t           j                  }|                                }t	          j        |          }t          |                                |           t	          j        |          }t          |                                |           d S )N)      i   dtype)nparrayuint32byteswapm5ubyteswap_u4r   item)valabcds        }/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/scipy/io/matlab/tests/test_mio5_utils.pytest_byteswapr      s     	" 	" HS	***JJLLOAQVVXXq!!!OAQVVXXq!!!!	" 	"    Fc                    t          j        |           } t          j        | j                  }| j        }|s3|dz   }d|dz  z
  }d|fd|fd| fg}|r|                    dd|f           nA|dz   }d	|z
  }|d
k    rd|fd|fd| fg}nd|fd|fd| fg}|r|                    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@   hwG		7,	-	-B!J 64izA~&S/%'"$  	6MM9dG45554iJ,99o#S)g&(FF $S)og&(F  	6MM9dG4555
(4v
&
&
&CCM"CCJJr   c                     |                      d           |                     d           |D ]}|                     |           |                     d           d S )Nr   )truncateseekwrite)streamstringsss      r   _write_streamr;   A   sV    
OOA
KKNNN  Q
KKNNNNNr   c                      G d d          } |            }| |_         ||_        d|_        t          j                    |_        d|_        d|_        d|_        |S )Nc                       e Zd ZdS )_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   sv           	AALALA+--ANAAKALHr   c                  X   t                      } t          |           }t          j        |          }t	          t
          |j                   t          ddt          j	        d          }d|d<   t          | |                                           t	          t          |j                   d S )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   s     YYF  A~a  H'8,---
D!U]
5
5
5CC&#++--(((*h/00000r   c                  &   t          ddt          j        d          } |                                 }t	          |          }t          j        |          }t          j        || j                  }t          ||                                            d S )NrP   r	   TrQ   )
r3   rW   rX   rY   r   streamsmake_stream
_read_intor*   r   )r2   tag_strr[   str:   s        r   test_read_streamrd   f   sv    
D!U]
5
5
5CkkmmGWF		V	$	$B2s|,,ACKKMM"""""r   c            	      $   t                      } t          |           }ddt          j        fddt          j        fddt          j        ffD ]D\  }}}dD ]9}||_        t          j        |          }t          |j
        |dk               t          |j        |t          j        k               d	D ]}t          j        |                              |          }t#          ||||          }	|	                                }
t'          | |
           |                                }t          ||           t'          | |
|
           |                                }t          ||           |                                }t          ||           ݐ;Fd S )
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   s   YYF  A"&EN!;"&5=!9"&EM!:!< & &f $ 	& 	&I$AL~a((H/c1ABBB,i3?.JKKK& & &Xg&&33I>>b#vu55		fe,,,**,,R%%%feU333**,,R%%%**,,R%%%%&	&& &r   c                  p   t                      } t          | d          }t          j        |          }t	          j        d          }t          |dt          j        d          }|	                                }t          | |           |                                }t          |j        j        du            d S )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    YYF%%A~a  H	%B"b%.!,,AIIKKE&%   				 	 BBH$&'''''r   c                  x   t                      } t          | t          j                  }t	          j        |          }t          j        ddg          }t          j        d|          }t          j
        |d<   d|d<   t	          j                    }|                    dg           t          | |                                dz              |                     d	           |                    |          }t#          |d
           d	|d<   t          | |                                           |                     d	           |                    |          }t#          |d
           |                     d	           |                    dg           |                    |          }t%          |d
gdz             d S )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      s    YYF11A~a  HX')=>??F
(4v
&
&
&CLCMC
.

CLL!&#++--+5666
KKNNN


S
!
!CcC&#++--(((
KKNNN


S
!
!Cc
KKNNN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      s    


           C C C C C C C C C C * * * * * * - - - - - - - - - - - - * * * * * * * * * * * * , , , , , , , , , , , , ) ) ) ) ) ) ) ) ) ) ) )
" 
" 
"   B   ),    1 1 1# # #& & &8
( 
( 
(' ' ' ' 'r   