ó
Ë½÷Xc           @` sZ  d  Z  d d l m Z m Z m 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 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 „  Z  e! d	 „ Z" d
 „  Z# e j$ d „ Z% d „  Z& d „  Z' d „  Z( d „  Z) d „  Z* e+ d k rVe ƒ  n  d S(   s#    Testing mio5_utils Cython module

i    (   t   divisiont   print_functiont   absolute_importN(   t   BytesIO(   t   assert_truet   assert_equalt   assert_raises(   t   assert_array_equalt   run_module_suite(   t   uc          C` s}   xv d D]n }  t  j |  d t  j ƒ} | j ƒ  } t j | ƒ } t | j ƒ  | ƒ t j | ƒ } t | j ƒ  | ƒ q Wd  S(   Ni   i   i   t   dtype(   i   i   i   (   t   npt   arrayt   uint32t   byteswapt   m5ut   byteswap_u4R   t   item(   t   valt   at   bt   ct   d(    (    sD   /tmp/pip-build-7oUkmx/scipy/scipy/io/matlab/tests/test_mio5_utils.pyt   test_byteswap   s      
c   
      C` sF  t  j |  ƒ }  t j |  j ƒ } |  j } | s‹ | d } d | d } d | f d | f d |  f g } | r| j d d | f ƒ qn„ | d } d	 | } | d
 k rÏ d | f d | f d |  f g } n! d | f d | f d |  f g } | r| j d d | f ƒ n  t  j d d | ƒ}	 | |	 d <| |	 d <| |	 d <|	 S(   s(    Makes a simple matlab tag, full or sde t   u4i   t   mdtypet
   byte_countR   t   paddingt   u1t   u2i   t   <i   R
   (   i   (   R   R
   t   boct   to_numpy_codet	   byteordert   itemsizet   appendt   zeros(
   t   base_dtR   R   t   sdet   boR   t   udtR   t   all_dtt   tag(    (    sD   /tmp/pip-build-7oUkmx/scipy/scipy/io/matlab/tests/test_mio5_utils.pyt	   _make_tag&   s6    	
		

				


c         G` sI   |  j  d ƒ |  j d ƒ x | D] } |  j | ƒ q! W|  j d ƒ d  S(   Ni    (   t   truncatet   seekt   write(   t   streamt   stringst   s(    (    sD   /tmp/pip-build-7oUkmx/scipy/scipy/io/matlab/tests/test_mio5_utils.pyt   _write_streamG   s
    c         C` sh   d t  f d „  ƒ  Y} | ƒ  } |  | _ | | _ t | _ t j ƒ  | _ t | _	 t | _
 t | _ | S(   Nt   Rc           B` s   e  Z RS(    (   t   __name__t
   __module__(    (    (    sD   /tmp/pip-build-7oUkmx/scipy/scipy/io/matlab/tests/test_mio5_utils.pyR3   P   s   (   t   objectt
   mat_streamt
   byte_ordert   Truet   struct_as_recordt   syst   getdefaultencodingt   uint16_codect   Falset   chars_as_stringst	   mat_dtypet
   squeeze_me(   R/   R8   R3   t   r(    (    sD   /tmp/pip-build-7oUkmx/scipy/scipy/io/matlab/tests/test_mio5_utils.pyt   _make_readerlikeO   s    							c          C` s€   t  ƒ  }  t |  ƒ } t j | ƒ } t t | j ƒ t d d t j	 d t
 ƒ} d | d <t |  | j ƒ  ƒ t t | j ƒ d  S(   Nt   i4i   R&   i   R   (   R   RC   R   t
   VarReader5R   t   IOErrort   read_tagR+   t   mio5pt   miINT32R9   R2   t   tostringt
   ValueError(   t   str_ioRB   t   c_readerR*   (    (    sD   /tmp/pip-build-7oUkmx/scipy/scipy/io/matlab/tests/test_mio5_utils.pyt   test_read_tag]   s    	
c          C` sn   t  d d t j d t ƒ}  |  j ƒ  } t | ƒ } t j | ƒ } t j | |  j	 ƒ } t
 | |  j ƒ  ƒ d  S(   NRD   i   R&   (   R+   RH   RI   R9   RJ   t	   cStringIOt   streamst   make_streamt
   _read_intoR"   R   (   R*   t   tag_strRL   t   stR1   (    (    sD   /tmp/pip-build-7oUkmx/scipy/scipy/io/matlab/tests/test_mio5_utils.pyt   test_read_streaml   s    c          C` sp  t  ƒ  }  t |  ƒ } xTd d t j f d d t j f d d t j f f D]\ } } } xd	 D]} | | _ t j | ƒ } t	 | j
 | d k ƒ t	 | j | t j k ƒ xµ t t f D]§ } t j | ƒ j | ƒ } t | | | | ƒ }	 |	 j ƒ  }
 t |  |
 ƒ | j ƒ  } t	 | | ƒ t |  |
 |
 ƒ | j ƒ  } t	 | | ƒ | j ƒ  } t	 | | ƒ q¹ Wq_ WqI Wd  S(
   NR   i   RD   i   t   i2iÿÿÿÿR   t   >(   R   RW   (   RO   RC   RH   t   miUINT16RI   t   miINT16R8   R   RE   R   t   little_endiant
   is_swappedR   t   native_codeR>   R9   R   R
   t   newbyteorderR+   RJ   R2   t   read_numeric(   RL   RB   R%   R   R   t	   byte_codeRM   t   sde_ft   dtR   t   a_strt   el(    (    sD   /tmp/pip-build-7oUkmx/scipy/scipy/io/matlab/tests/test_mio5_utils.pyt   test_read_numericu   s,    	"	c          C` s‡   t  ƒ  }  t |  d ƒ } t j | ƒ } t j d ƒ } t | d t j d ƒ } | j	 ƒ  } t
 |  | ƒ | j ƒ  } t | j j ƒ d  S(   NR   s   <u2i   i    (   RO   RC   R   RE   R   R
   R+   RH   RX   RJ   R2   R^   R   t   flagst	   writeable(   RL   RB   RM   Ra   R   Rb   Rc   (    (    sD   /tmp/pip-build-7oUkmx/scipy/scipy/io/matlab/tests/test_mio5_utils.pyt   test_read_numeric_writeable‘   s    	c          C` sc  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 | t d ƒ ƒ d | d <t |  | j ƒ  ƒ |  j d ƒ | j | ƒ } t | t d ƒ ƒ |  j d ƒ | j d	 g ƒ | j | ƒ } t | t d ƒ g d	 ƒ d  S(   NR   R   R   i   R
   s           i    t    i   (   s   mdtypes   u4(   s
   byte_counts   u4(   i   (   RO   RC   R   R\   R   RE   R   R
   R$   RH   t   miINT8t
   VarHeader5t   set_dimsR2   RJ   R-   t	   read_charR   R	   R   (   RL   RB   RM   t   tag_dtR*   t   hdrR   (    (    sD   /tmp/pip-build-7oUkmx/scipy/scipy/io/matlab/tests/test_mio5_utils.pyt   test_zero_byte_stringž   s,    	

t   __main__(,   t   __doc__t
   __future__R    R   R   R;   t   ioR   RO   t   numpyR   t
   nose.toolsR   R   R   t   numpy.testingR   R   t   scipy._lib.sixR	   t   scipy.io.matlab.byteordercodest   matlabt   byteordercodesR   t   scipy.io.matlab.streamsRP   t   scipy.io.matlab.mio5_paramst   mio5_paramsRH   t   scipy.io.matlab.mio5_utilst
   mio5_utilsR   R   R>   R+   R2   R\   RC   RN   RU   Rd   Rg   Ro   R4   (    (    (    sD   /tmp/pip-build-7oUkmx/scipy/scipy/io/matlab/tests/test_mio5_utils.pyt   <module>   s.   	!							