B
    „Ž0d”  ã               @   sÚ   d Z ddlZddlZddl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ZddlmZmZmZmZ e e e¡d¡Zdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z dd„ Z!dS )z$ Tests for fortran sequential files é    N)Úpath)Úiglob)Úassert_equalÚassert_allclose)ÚFortranFileÚ_test_fortranÚFortranEOFErrorÚFortranFormattingErrorÚdatac              C   sÈ   xÂt t td¡ƒD ]®} t d| tj¡}|s6td|  ƒ‚t| 	d¡ƒt| 	d¡ƒt| 	d¡ƒf}| 	d¡ 
dd	¡}t| d
dƒ}|j|dj|dd}| ¡  t t |¡¡ |¡ |¡}t||ƒ qW d S )Nzfortran-*-*x*x*.datz%fortran-([^-]+)-(\d+)x(\d+)x(\d+).datz#Couldn't match %s filename to regexé   é   é   é   Úsú<Úrz<u4)ÚdtypeÚF)Úorder)r   r   ÚjoinÚ	DATA_PATHÚreÚsearchÚIÚRuntimeErrorÚintÚgroupÚreplacer   Úread_recordÚreshapeÚcloseÚnpÚarangeÚprodÚastyper   )ÚfilenameÚmÚdimsr   Úfr
   Úexpected© r*   úM/var/www/html/venv/lib/python3.7/site-packages/scipy/io/tests/test_fortran.pyÚtest_fortranfiles_read   s    (r,   c           	   C   s~   t  td¡} t| ddƒ}| d¡}W d Q R X t|d d dƒ t|d d d	ƒ t|d
 d dƒ t|d d ddgƒ d S )Nzfortran-mixed.datr   z<u4z<i4,<f4,<i8,(2)<f8Zf0r   r   Úf1gffffff@Úf2r   Zf3gffffff@g333333@)r   r   r   r   r   r   r   )r%   r(   Úrecordr*   r*   r+   Útest_fortranfiles_mixed_record(   s    r0   c        
   
   C   s  xt t td¡ƒD ] } t d| tj¡}|s:td|  ƒ‚t| 	d¡ƒt| 	d¡ƒt| 	d¡ƒf}| 	d¡ 
dd	¡}t t |¡¡ |¡ |¡}t ¡ }zpt |t | ¡¡}t|d
dƒ}| |j¡ | ¡  t| dƒ}t|dƒ}	t| ¡ |	 ¡ | d | ¡  |	 ¡  W d t |¡ X qW d S )Nzfortran-*-*x*x*.datz%fortran-([^-]+)-(\d+)x(\d+)x(\d+).datz#Couldn't match %s filename to regexr   r   r   r   r   r   Úwz<u4Úrb)Úerr_msg)r   r   r   r   r   r   r   r   r   r   r   r!   r"   r#   r   r$   ÚtempfileÚmkdtempÚbasenamer   Úwrite_recordÚTr    Úopenr   ÚreadÚshutilÚrmtree)
r%   r&   r'   r   r
   ÚtmpdirZtestFiler(   ZoriginalfileÚnewfiler*   r*   r+   Útest_fortranfiles_write3   s(    (

r?   c           	   C   s‚   t  td¡} t| ddƒ}| dd¡}W d Q R X t d¡ dd¡ tj	¡}tj
dd	gtjd
}t|d |jƒ t|d |jƒ d S )Nzfortran-3x3d-2i.datr   z<u4z(3,3)<f8z2<i4é	   r   éÿÿÿÿéþÿÿÿ)r   r   r   )r   r   r   r   r   r!   r"   r   r$   ÚdoubleÚarrayÚint32r   r8   )r%   r(   r/   ZaxZbxr*   r*   r+   Ú"test_fortranfile_read_mixed_recordM   s    rF   c       	   
   C   s  t  t| ƒd¡}dt d¡t d¡t d¡ffdtjjddgd	 tj¡tjjdddgd	 tj¡tjjdd
gd	 tj¡ffg}x„|D ]|\}}t	|dƒ}|j
|Ž  W d Q R X t	|dƒ}|j|Ž }W d Q R X tt|ƒt|ƒƒ x t||ƒD ]\}}t||ƒ qîW qˆW d S )Nztest.dat)Úf4rG   Úi4r   r   éd   )Z4f4z(3,3)f4Z8i4éÿ   r   )Úsizeé   r1   r   )r   r   Ústrr!   Zfloat32rE   ÚrandomÚrandintr$   r   r7   r   r   ÚlenÚzip)	r=   ÚtfÚrecordsr   Úar(   ÚbZaaZbbr*   r*   r+   Ú#test_fortranfile_write_mixed_recordd   s     rV   c          	   C   sæ  t  t| ƒd¡}tj d¡ d\}}}tj |||¡}t|dƒ}| |j	¡ W d Q R X t
 ||||¡}t|dƒ}| d¡j	}W d Q R X t||ƒ t||ƒ d\}}}tj |||¡ tj¡}t|dƒ}| |j	¡ W d Q R X t
 ||||¡}t|dƒ}| d¡j	}W d Q R X t||ƒ t||ƒ d\}}}tj ||¡}tj |¡ tj¡}	t|dƒ}| |j	|	j	¡ W d Q R X t
 ||||¡\}}
t|dƒ}| dd	¡\}}|j	}W d Q R X t||ƒ t||ƒ t|
|	ƒ t||	ƒ d S )
Nztest.datr   )é   r   r   r1   r   z	(2,3,5)f8z	(2,3,5)i4z(3,5)f8Z2i4)r   r   rM   r!   rN   ÚseedÚrandnr   r7   r8   r   Zread_unformatted_doubler   r   r$   rE   Zread_unformatted_intZintcZread_unformatted_mixed)r=   r%   r&   ÚnÚkrT   r(   Za2Úa3rU   Úb2Zb3r*   r*   r+   Útest_fortran_roundtrip{   sB    









r^   c          
   C   s¶   t  t| ƒd¡}tj d¡ t|dƒ*}| tj d¡¡ | tj d¡¡ W d Q R X t|dƒL}t	| 
¡ ƒdksvt‚t	| 
¡ ƒdksŠt‚t t¡ | 
¡  W d Q R X W d Q R X d S )NÚscratchr   r1   rW   r   r   )r   r   rM   r!   rN   rX   r   r7   rY   rP   Ú
read_realsÚAssertionErrorÚpytestÚraisesr   )r=   r%   r(   r*   r*   r+   Útest_fortran_eof_ok¦   s    rd   c          
   C   sÖ   t  t| ƒd¡}tj d¡ t|dƒ*}| tj d¡¡ | tj d¡¡ W d Q R X t	|dƒ}| 
d¡ W d Q R X t|dƒL}t| ¡ ƒdks–t‚t| ¡ ƒdksªt‚t t¡ | ¡  W d Q R X W d Q R X d S )	Nr_   r   r1   rW   r   Úabó   ÿr   )r   r   rM   r!   rN   rX   r   r7   rY   r9   ÚwriterP   r`   ra   rb   rc   r	   )r=   r%   r(   r*   r*   r+   Útest_fortran_eof_broken_size³   s    rh   c          
   C   s®   t  t| ƒd¡}tj d¡ t|dƒ*}| tj d¡¡ | tj d¡¡ W d Q R X t	|dƒ}| 
d¡ W d Q R X t|dƒ$}t t¡ | ¡  W d Q R X W d Q R X d S )	Nr_   r   r1   rW   r   zw+bs   ÿÿr   )r   r   rM   r!   rN   rX   r   r7   rY   r9   rg   rb   rc   r	   r`   )r=   r%   r(   r*   r*   r+   Útest_fortran_bogus_sizeÂ   s    ri   c          
   C   sÌ   t  t| ƒd¡}tj d¡ t|dƒ*}| tj d¡¡ | tj d¡¡ W d Q R X t	|dƒ}| 
t  |¡d ¡ W d Q R X t|dƒ8}t| ¡ ƒdks t‚t t¡ | ¡  W d Q R X W d Q R X d S )	Nr_   r   r1   rW   r   re   é   r   )r   r   rM   r!   rN   rX   r   r7   rY   r9   ÚtruncateÚgetsizerP   r`   ra   rb   rc   r	   )r=   r%   r(   r*   r*   r+   Útest_fortran_eof_broken_recordÏ   s    rm   c          
   C   s  t  t| ƒd¡}d\}}}t dtj||ffg¡}tj||d}t|dƒ(}| |d ¡ | |¡ | |¡ W d Q R X t	|dƒ}| 
t  |¡d ¡ W d Q R X t|d	ƒX}t|j|dƒd
ksÆt‚t|j|dƒ|ksÞt‚t t¡ |j|d W d Q R X W d Q R X d S )Nr_   )r   rW   é   Úfield)r   r1   r   re   rj   r   r   )r   r   rM   r!   r   Zfloat64Zzerosr   r7   r9   rk   rl   rP   r   ra   rb   rc   r	   )r=   r%   rZ   r&   ÚqÚdtrT   r(   r*   r*   r+   Ú!test_fortran_eof_multidimensionalÝ   s    

rr   )"Ú__doc__r4   r;   Úosr   Úglobr   r   Znumpy.testingr   r   Únumpyr!   rb   Zscipy.ior   r   r   r	   r   ÚdirnameÚ__file__r   r,   r0   r?   rF   rV   r^   rd   rh   ri   rm   rr   r*   r*   r*   r+   Ú<module>   s*   +