ó
î&]\c           @   sŬ   d  Z  d d l 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 d d l Z d d l m Z m Z e j e j e  d  Z d   Z d	   Z d
   Z d   Z d   Z d   Z d S(   s$    Tests for fortran sequential files i˙˙˙˙N(   t   patht   unlink(   t   iglob(   t   assert_equalt   assert_allclose(   t   FortranFilet   _test_fortrant   datac          C   s#  xt  t j t d   D]}  t j d |  t j  } | sP t d |    n  t | j	 d   t | j	 d   t | j	 d   f } | j	 d  j
 d d	  } t |  d
 d  } | j d |  j | d d } | j   t j t j |   j |  j |  } t | |  q Wd  S(   Ns   fortran-*-*x*x*.dats%   fortran-([^-]+)-(\d+)x(\d+)x(\d+).dats#   Couldn't match %s filename to regexi   i   i   i   t   st   <t   rs   <u4t   dtypet   ordert   F(   R   R    t   joint	   DATA_PATHt   ret   searcht   It   RuntimeErrort   intt   groupt   replaceR   t   read_recordt   reshapet   closet   npt   aranget   prodt   astypeR   (   t   filenamet   mt   dimsR   t   fR   t   expected(    (    s:   lib/python2.7/site-packages/scipy/io/tests/test_fortran.pyt   test_fortranfiles_read   s    <!
*c          C   s   t  j t d  }  t |  d d   } | j d  } Wd  QXt | d d d  t | d d d	  t | d
 d d  t | d d d d g  d  S(   Ns   fortran-mixed.datR
   s   <u4s   <i4,<f4,<i8,(2)<f8t   f0i    i   t   f1gffffff@t   f2i   t   f3gffffff@g333333@(   R    R   R   R   R   R   R   (   R   R!   t   record(    (    s:   lib/python2.7/site-packages/scipy/io/tests/test_fortran.pyt   test_fortranfiles_mixed_record$   s    c    
      C   s  xt  t j t d   D]q}  t j d |  t j  } | sP t d |    n  t | j	 d   t | j	 d   t | j	 d   f } | j	 d  j
 d d	  } t j t j |   j |  j |  } t j   } z t j | t j |    } t | d
 d  } | j | j  | j   t |  d  } t | d  }	 t | j   |	 j   d |  | j   |	 j   Wd  t j |  Xq Wd  S(   Ns   fortran-*-*x*x*.dats%   fortran-([^-]+)-(\d+)x(\d+)x(\d+).dats#   Couldn't match %s filename to regexi   i   i   i   R   R	   t   ws   <u4t   rbt   err_msg(   R   R    R   R   R   R   R   R   R   R   R   R   R   R   R   R   t   tempfilet   mkdtempt   basenameR   t   write_recordt   TR   t   openR   t   readt   shutilt   rmtree(
   R   R   R    R   R   t   tmpdirt   testFileR!   t   originalfilet   newfile(    (    s:   lib/python2.7/site-packages/scipy/io/tests/test_fortran.pyt   test_fortranfiles_write/   s(    <*

c          C   s°   t  j t d  }  t |  d d   } | j d d  } Wd  QXt j d  j d d  j t j	  } t j
 d d g d	 t j } t | d
 | j  t | d | j  d  S(   Ns   fortran-3x3d-2i.datR
   s   <u4s   (3,3)f8t   2i4i   i˙˙˙˙iŝ˙˙˙R   i    i   i	   (   R    R   R   R   R   R   R   R   R   t   doublet   arrayt   int32R   R1   (   R   R!   R(   t   axt   bx(    (    s:   lib/python2.7/site-packages/scipy/io/tests/test_fortran.pyt"   test_fortranfile_read_mixed_recordI   s    'c   	      C   sp  t  j t |   d  } d t j d  t j d  t j d  f f d t j j d
 d d g j t j  t j j d
 d d d g j t j  t j j d
 d d g j t j  f f g } xĤ | D] \ } } t	 | d   } | j
 |   Wd  QXt	 | d   } | j |   } Wd  QXt t |  t |   x* t | |  D] \ } } t | |  qKWqÊ Wd  S(   Ns   test.datt   f4t   i4i   i   id   t   4f4s   (3,3)f4t   8i4i˙   t   sizei   i   R*   R
   (   RB   RB   RC   (   RD   s   (3,3)f4RE   (   R    R   t   strR   t   float32R>   t   randomt   randintR   R   R0   R   R   t   lent   zip(	   R6   t   tft   recordsR   t   aR!   t   bt   aat   bb(    (    s:   lib/python2.7/site-packages/scipy/io/tests/test_fortran.pyt#   test_fortranfile_write_mixed_record`   s    -''0c         C   s  t  j t |   d  } t j j d  d \ } } } t j j | | |  } t | d   } | j | j	  Wd  QXt
 j | | | |  } t | d   } | j d  j	 } Wd  QXt | |  t | |  d \ } } } t j j | | |  j t j  } t | d   } | j | j	  Wd  QXt
 j | | | |  } t | d   } | j d	  j	 } Wd  QXt | |  t | |  d \ } } } t j j | |  } t j j |  j t j  }	 t | d   } | j | j	 |	 j	  Wd  QXt
 j | | | |  \ } }
 t | d  ( } | j d
 d  \ } } | j	 } Wd  QXt | |  t | |  t |
 |	  t | |	  d  S(   Ns   test.dati   i   i   i   R*   R
   s	   (2,3,5)f8s	   (2,3,5)i4s   (3,5)f8R;   (   i   i   i   (   i   i   i   (   i   i   i   (   R    R   RG   R   RI   t   seedt   randnR   R0   R1   R   t   read_unformatted_doubleR   R   R   R>   t   read_unformatted_intt   intct   read_unformatted_mixed(   R6   R   R   t   nt   kRO   R!   t   a2t   a3RP   t   b2t   b3(    (    s:   lib/python2.7/site-packages/scipy/io/tests/test_fortran.pyt   test_fortran_roundtripw   sB    $(   t   __doc__R-   R4   t   osR    R   t   globR   R   t   numpy.testingR   R   t   numpyR   t   scipy.ioR   R   R   t   dirnamet   __file__R   R#   R)   R:   RA   RS   R`   (    (    (    s:   lib/python2.7/site-packages/scipy/io/tests/test_fortran.pyt   <module>   s   					