3
Pd0                 @   s   d Z ddlZddlmZ eZddlZddlmZm	Z	m
Z
 ddlmZ ddljjjZddljjjZddljjjZddljjjZdd Zdd	d
Zdd ZejfddZdd Zdd Z dd Z!dd Z"dd Z#dS )z# Testing mio5_utils Cython module

    N)BytesIO)assert_array_equalassert_equalassert_)raisesc              C   sZ   xTdD ]L} t j| t jd}|j }tj|}t|j | tj|}t|j | qW d S )N         )dtype)r   r   r	   )nparrayZuint32byteswapm5uZbyteswap_u4r   item)valabcd r   Y/var/www/html/virt/lib64/python3.6/site-packages/scipy/io/matlab/tests/test_mio5_utils.pytest_byteswap   s      

r   Fc       
      C   s   t j| } tj| j}| j}|s`|d }d|d  }d|fd|fd| fg}|r|jdd|f nZ|d }d	| }|d
krd|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< ||	d< |	S )z( Makes a simple matlab tag, full or sde u4   mdtype
byte_countr   paddingu1u2   <r   )r
   )r   )r   r
   bocZto_numpy_code	byteorderitemsizeappendzeros)
base_dtr   r   sdeZbor   Zudtr   Zall_dttagr   r   r   	_make_tag!   s6    


r)   c             G   s:   | j d | jd x|D ]}| j| qW | jd d S )Nr   )truncateseekwrite)streamstringssr   r   r   _write_streamB   s
    


r0   c             C   sH   G dd dt }| }| |_||_d|_tj |_d|_d|_d|_	|S )Nc               @   s   e Zd ZdS )z_make_readerlike.<locals>.RN)__name__
__module____qualname__r   r   r   r   RK   s   r4   TF)
objectZ
mat_stream
byte_orderZstruct_as_recordsysgetdefaultencodingZuint16_codecZchars_as_stringsZ	mat_dtypeZ
squeeze_me)r-   r6   r4   rr   r   r   _make_readerlikeJ   s    
r:   c              C   s\   t  } t| }tj|}tt|j tddtj	dd}d|d< t
| |j  tt|j d S )Ni4r   T)r'      r   )r   r:   r   
VarReader5assert_raisesIOErrorZread_tagr)   mio5pmiINT32r0   tobytes
ValueError)str_ior9   c_readerr(   r   r   r   test_read_tagX   s    
rF   c              C   sL   t ddtjdd} | j }t|}tj|}tj|| j}t	|| j  d S )Nr;   r   T)r'   )
r)   r@   rA   rB   	cStringIOstreamsZmake_streamZ
_read_intor#   r   )r(   Ztag_strrD   str/   r   r   r   test_read_streamg   s    
rJ   c              C   s  t  } t| }xddtjfddtjfdd
tjffD ]\}}}xdD ]}||_tj|}t	|j
|dk t	|j|tjk x~dD ]v}tj|j|}t||||}	|	j }
t| |
 |j }t	|| t| |
|
 |j }t	|| |j }t	|| q~W qBW q2W d S )Nr      r;   r   i2r    >FT)r    rM   )FT)rG   r:   r@   miUINT16rA   ZmiINT16r6   r   r=   r   Zlittle_endianZ
is_swappedr!   native_coder   r
   Znewbyteorderr)   rB   r0   read_numeric)rD   r9   r&   r   r   Z	byte_coderE   Zsde_fdtr   a_strelr   r   r   test_read_numericp   s,    






rU   c              C   sb   t  } t| d}tj|}tjd}t|dtjd}|j	 }t
| | |j }t|jjdk d S )Nr    z<u2rK   r   T)rG   r:   r   r=   r   r
   r)   r@   rO   rB   r0   rQ   r   flagsZ	writeable)rD   r9   rE   rR   r   rS   rT   r   r   r   test_read_numeric_writeable   s    



rW   c              C   s   t  } t| tj}tj|}tjd
dg}tjd|d}t	j
|d< d|d< tj }|jdg t| |j d  | jd |j|}t|d d|d< t| |j  | jd |j|}t|d | jd |jd	g |j|}t|dgd	  d S )Nr   r   r   r   )r
   s           r    r   )r   r   )r   r   )r   )rG   r:   r!   rP   r   r=   r   r
   r%   r@   ZmiINT8Z
VarHeader5Zset_dimsr0   rB   r+   Z	read_charr   r   )rD   r9   rE   Ztag_dtr(   hdrr   r   r   r   test_zero_byte_string   s,    









rZ   )F)$__doc__r7   ior   rG   Znumpyr   Znumpy.testingr   r   r   Zpytestr   r>   Zscipy.io.matlab.byteordercodesZmatlabZbyteordercodesr!   Zscipy.io.matlab.streamsrH   Zscipy.io.matlab.mio5_paramsZmio5_paramsr@   Zscipy.io.matlab.mio5_utilsZ
mio5_utilsr   r   r)   r0   rP   r:   rF   rJ   rU   rW   rZ   r   r   r   r   <module>   s&   
!	