3
Pd              
   @   s	  d Z ddlZddlmZ ddlmZmZ ddlmZ ddl	m
Z
 ddlmZ ddlZddlZddlZddlmZmZmZmZ dd	lmZ ddlZdd
lmZ ddljZddlj	jj Z!ddl"m#Z#m$Z$m%Z% ddl&m'Z'm(Z(m)Z)m*Z* ddl+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 ddl3m4Z5 eee6dZ7dd Z8ej9d ej:de;dj<dd Z=dddide=idgZ>e>j?dddidedgid e>j?dddidej@e=dejAe=  id ejBdZCeDeEdd"eCd< eDeEddeCdddf< e>j?d#d$did$eCid e>j?d%d&d%id&ejFeCid eCjGeHZIeId  d7  < e>j?d'd(d%id(ejFeIid e>j?d)ddd*e=eCd*d e>j?d+d,did,e8did e>j?d-d.did.ed/gid e8g e8dge8dd0gge8dd0d ggfeJdj<ddZKed1geKd< d2d3d2id3eKidgZLe8e8de8d0e8g e8g e8d feJdj<ddZMejNdeJdZOe8deOd< eLj?d4d5d2id5eOid eLj?d6d7d2id7eMid eLj?d8d9did9ed:d;d<gid eLj?d=d>did>ejPej<eDeEdd?did eejQd0ejRdej9gj<dd ZSd@dA dD ZTejBdeTZUedEgeUdB d< eSeUdC d< eSd eUdD d< eLj?dFdGdFidGeUid ejBdeJdZVe8deVd< ejBdeJdeVd< e8d0ejWdeVd d< e8d ggejWdeVd d< ejBd eJdeVd d< e8dejWdeVd d d< e8d!ejWdeVd d d< eLj?dHdId2idIeVid ejNd	dJdA d
D dZXe8deXd dK< ejNdd<eJfgdeXd dL< edMgeXd dL d d<< eLj?dNdOdFidOeXid ejNddPdA dD dZYe8deYd dK< e8d0eYd dL< edQgeYd dK< edRgeYd dL< eLj?dSdTdFidTeYid ejTdUdA dD ZZe,ejBdeZdd\Z[e[d Z\ed]ge\dV< ed^ge\dW< ed]ge\dX< e8de\dY< e8de\dZ< e8de\d[< eLj?d_d`d_id`e[id e]ee7dadbZ^e^j_ j`dcZae^jb  eLj?dddedideeeagid eLj?d%d&d%id&ejFeCid eLj?d'd(d%id(ejFeIid eLj?dfdgdhidgedigdjggid eLdd Zcecj?dkdld_idlejde[d0j<dd0id dmdn Zedodp Zfdqdr Zgdsdt Zhdudv Zidwdx Zjdydz Zkd{d| Zld}d~ Zmdd Zndd Zodd Zpdd Zqdd Zrdd Zsdd Ztdd Zudd Zvdd Zwdd Zxdd Zydd Zzdd Z{dd Z|dd Z}dd Z~dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZddĄ ZddƄ ZddȄ Zddʄ Zdd̄ Zdd΄ ZddЄ Zdd҄ ZddԄ Zddք Zdd؄ Zddڄ Zdd܄ Zddބ Zdd Zdd Zdd Zdd Zdd ZdS (  zD Nose test generators

Need function load / save / roundtrip tests

    N)OrderedDict)joindirname)glob)BytesIO)mkdtemp)assert_array_equalassert_array_almost_equalassert_equalassert_)raises)array)matdimsMatWriteErrorMatReadError)mat_reader_factoryloadmatsavematwhosmat)MatlabObjectMatFile5WriterMatFile5ReaderMatlabFunctionvarmats_from_matto_writeableEmptyStructMarker)mio5_paramsdatac              O   s   t j| |}t||_|S )z;Convenience function to return matlab-compatible 2-D array.)npr   r   shape)argskwargsarr r#   R/var/www/html/virt/lib64/python3.6/site-packages/scipy/io/matlab/tests/test_mio.pymlarr%   s    
r%      	   )dtype   doubleZ
testdouble)nameclassesexpectedstringZ
teststringcharz+"Do nine men interpret?" "Nine men," I nod.complexZtestcomplexy              ?         Zmatrix
testmatrixsparseZ
testsparseZsparsecomplexZtestsparsecomplexZmulti)thetaaminusZ	testminusZonecharZtestonecharr   z@This cell contains this string and 3 arrays of increasing lengthcellZtestcellZ
scalarcellZtestscalarcellZ	emptycellZtestemptycellZstringarrayZteststringarrayzone  ztwo  ZthreeZ3dmatrixZtest3dmatrix   c             C   s   g | ]}|t fqS r#   )object).0nr#   r#   r$   
<listcomp>   s    r@   stringfielddoublefieldcomplexfieldzRats live on no evil star.structZ
teststructZcellnestZtestcellnestc             C   s   g | ]}|t fqS r#   )r=   )r>   r?   r#   r#   r$   r@      s    onetwoznumber 3Z
structnestZteststructnestc             C   s   g | ]}|t fqS r#   )r=   )r>   r?   r#   r#   r$   r@      s    znumber 1znumber 2Z	structarrZteststructarrc             C   s   g | ]}|t fqS r#   )r=   )r>   r?   r#   r#   r$   r@      s    expr	inputExprr    isEmptynumArgsversioninlinexz x = INLINE_INPUTS_{1};r=   Z
testobjectzjapanese_utf8.txtrbzutf-8unicodeZtestunicodebool	testboolslogicalTFZobjectarrayZtestobjectarrayc             C   sh   t | }t |}||krdS |tjkr@| jf kr@t | j |kS |tjkrd|jf krdt |j |kS dS )zkCheck if types are same or compatible.

    0-D numpy scalars are compatible with bare python scalars.
    TF)typer   ndarrayr   item)Zvar1Zvar2Ztype1Ztype2r#   r#   r$   types_compatible   s    rV   c             C   sn  t j|r4tt j| t|j |j | dd dS tt||dt|t|| f  t|tj	tj
tfsxt|| dS t|j|jkd|j|j| f d |j}|jrt|trt|j|j x0t|D ]$\}}d| |f }t||||  qW dS |jr2x0|jD ]&}d| |f }t||| ||  qW dS |jttjtjfkrZt||| d	 dS t||| dd dS )
z/ Check one level of a potentially nested array r2   )err_msgdecimalNzExpected type %s, got %s at %szExpected shape %s, got %s at %s)msgz
%s, [%d], z%s, field %s, )rW   )SPissparser   r	   todenserV   rS   
isinstancer   voidrT   r   r
   r   r(   Z	hasobject	classname	enumerate_check_levelfieldsstrZunicode_bool_)labelr-   actualZex_dtypeiZevZlevel_labelfnr#   r#   r$   ra      sL    



ra   c       	      C   sn   xh|D ]`}t |dd}d| |f }xB|j D ]6\}}d||f }t||kd|  t||||  q,W qW d S )NT)struct_as_recordztest %s; file %sz%s, variable %szMissing key at %s)r   itemsr   ra   )	r+   filescase	file_nameZmatdictre   kr-   Zk_labelr#   r#   r$   _load_check_case%  s    
ro   c                sb   x\|D ]T}d| |f }t |} fdd|j D }|j  |j  t||d|||f  qW d S )Nztest %s; file %sc                s    g | ]\}}||j  | fqS r#   )r   )r>   rn   r-   )r,   r#   r$   r@   6  s    z$_whos_check_case.<locals>.<listcomp>z%s: %r != %r)r   rj   sortr
   )r+   rk   rl   r,   rm   re   ZwhosZexpected_whosr#   )r,   r$   _whos_check_case/  s    
rq   c             C   s0   t  }t|||d |jd t| |g| d S )N)formatr   )r   r   seekro   )r+   r-   rr   
mat_streamr#   r#   r$   _rt_check_case@  s    
ru   c              C   sb   x\t t D ]P} | d }| d }ttd| }t|}tt|dkd||f  t||| q
W d S )Nr+   r-   ztest%s_*.matr   z$No files for test %s using filter %s)case_table4case_table5pjointest_data_pathr   r   lenro   )rl   r+   r-   filtrk   r#   r#   r$   	test_loadH  s    r|   c              C   sl   xft t D ]Z} | d }| d }| d }ttd| }t|}tt|dkd||f  t|||| q
W d S )Nr+   r-   r,   ztest%s_*.matr   z$No files for test %s using filter %s)rv   rw   rx   ry   r   r   rz   rq   )rl   r+   r-   r,   r{   rk   r#   r#   r$   	test_whosT  s    r}   c              C   sh   xbt t D ]V} dd t D }| d d }| d }x.| d |krFddgndgD ]}t||| qLW q
W d S )Nc             S   s   g | ]}|d  qS )r+   r#   )r>   rl   r#   r#   r$   r@   c  s    z#test_round_trip.<locals>.<listcomp>r+   Z_round_tripr-   45)rv   case_table5_rtru   )rl   Zcase_table4_namesr+   r-   rr   r#   r#   r$   test_round_tripa  s     r   c        	      C   s   t jd} d| d< d| d< tj| }d}d	|i}d
}t }zTt||}tj|dd}t|||d |j	  tj|dd}t
|dd}|j	  W d tj| X t|d	 j |d	 j t|d d S )N   gffffff@r:   r1   g      @r&   r2   Z	gzip_testrM   r~   wb)mode)rr   rN   T)ri   )rW   )r   r   )r:   r1   )r&   r2   )r   zerosrZ   
csc_matrixr   rx   gzipopenr   closer   shutilrmtreer	   r\   repr)	ZxdenserM   r+   r-   rr   tmpdirfnamert   rf   r#   r#   r$   test_gzip_simplej  s(    



r   c              C   s   t  } zttjdd}t| d}t|| tj| t|| t| tj| t	|d}t|| |j
d |j  t	|d}t| |j
d |j  W d tj|  X d S )Nr:   )rM   za.matr   r   rN   )r:   r:   )r   dictr   r   rx   r   osunlinkr   r   rs   r   r   r   )r   rM   r   fr#   r#   r$   test_multiple_open  s$    









r   c              C   sR   t ttd} tt| dk x.| D ]&}t|d}ttt|dd |j	  q$W d S )Nztesthdf5*.matr   rN   T)ri   )
r   rx   ry   r   rz   r   assert_raisesNotImplementedErrorr   r   )	filenamesfilenamefpr#   r#   r$   
test_mat73  s    

r   c              C   sD   t td} tj ( tjd t| dd t| dd W d Q R X d S )Nztestdouble_7.1_GLNX86.materrorT)ri   F)rx   ry   warningscatch_warningssimplefilterr   )r   r#   r#   r$   test_warnings  s
    


r   c              C   sZ   t  } t| dddiidd t| d }t|jd t|jtjt t|d d k d S )	Ndr)   r:   r   )rr   r   )r)   r)   )r   r   )	r   r   r   r
   r   r(   r   r=   r   )siobackr#   r#   r$   test_regression_653  s    r   c              C   sp   d} d|  }t jd|tfgd}tt d|idd d| d  }t jd	|tfgd}tttt d|idd d S )
N   r7   r)   )r(   
longstructr   )rr   )r)   r)   )r)   r)   )r   r   r=   r   r   r   
ValueError)limfldnamest1r#   r#   r$   test_structname_len  s    
r   c              C   s2   t jddtfgd} tttt d| iddd d S )	Nr)   Zmy_fieldname)r(   	my_structr~   T)rr   long_field_names)r)   r)   )r   r   r=   r   r   r   r   )r   r#   r#   r$   (test_4_and_long_field_names_incompatible  s    
r   c              C   st   d} d|  }t jd	|tfgd}tt d|iddd d| d  }t jd
|tfgd}tttt d|iddd d S )N?   r7   r)   )r(   r   r   T)rr   r   )r)   r)   )r)   r)   )r   r   r=   r   r   r   r   )r   r   r   r#   r#   r$   test_long_field_names  s    
r   c              C   sr   d} d|  }t jdtd}t jd|tfgd}||d< ||d< tt d|idd	d
 tttt d|iddd
 d S )Nr   r7   r)   r:   )r(   r   r   r   T)rr   r   F)r)   r:   )r)   r)   )r   r   )r   r)   )r   rT   r=   r   r   r   r   r   )r   r   r;   r   r#   r#   r$   test_long_field_names_in_struct  s    
r   c              C   s`   t jdtd} d| d< d| d< tt d| idd	 t jdtd} d
| d< tt d| idd	 d S )Nr)   r:   )r(   Hellor   ZWorldrM   r   )rr   zHello, world)r)   r:   )r   r   )r   r)   )r)   r)   )r   r   )r   rT   r=   r   r   )cellsr#   r#   r$   test_cell_with_one_thing_in_it  s    r   c              C   sl   t t } t| jg  dg| _t| jdg t| jd d| _t| jd t| jd d| _t| jd d S )NZavarFT)r   r   r
   global_varsZunicode_stringsr   )Zmfwr#   r#   r$   test_writer_properties  s    
r   c              C   s   t  } t| }tjd}|jd|i t| j }| jd | jd |jd|i t	|t| j  dk | jd | jd |jd|i t	t| j | dk  d S )N
   Zaaaaar   Zaaaar&   Zaaaaaa)
r   r   r   r   put_variablesrz   getvaluetruncaters   r   )r   wtrr"   Zw_szr#   r#   r$   test_use_small_element  s    




r   c              C   s   t dftdff} tjd
ggdtfdtfgd}tjdggdtfdtfgd}x| D ]\}}|ddg}t }t|d|i |jd	 t|d }t	t
|jjt
ddg |rt|| qR|jjd	 dkrt|| qRt|| qRW d S )NFTr)   r:   r7   b)r(   r   r   )r)   r:   )r:   r)   )r7   r)   )r   r:   )r   r   r   r   r=   r   r   rs   r   r
   setr(   namesr   )Z
dict_typesZab_expZba_exp	dict_typeZ
is_orderedr   streamvalsr#   r#   r$   test_save_dict*  s    
r   c              C   s   t jd} xd
D ]}t }t|d| i|d t|}t|d jd t }t|d| i|dd t|}t|d jd t }t|d| i|d	d t|}t|d jd qW d S )Nr2   r~   r   Zoned)rr   r)   column)rr   Zoned_asrow)r~   r   )r)   r2   )r2   r)   )r)   r2   )r   aranger   r   r   r
   r   )r"   rr   r   r   r#   r#   r$   test_1d_shape@  s$    



r   c              C   s  t jdjd} d| d< t }t|d| i t|j }t|}t|d |  t }t|d| idd	 t|j }t|}t|d |  t	||k | j
 }d|d< t }t|| |ddd	 t|}t|d | t }t|| |ddd	 t|}t|d | d S )Nd   r2   r   r)   r:   r   r"   T)Zdo_compressionr   )r"   arr2Fr   )r2   r   )r:   r   )r   r   )r   r   reshaper   r   rz   r   r   r   r   copy)r"   r   Zraw_lenr   Zcompressed_lenr   r#   r#   r$   test_compressionY  s.    r   c              C   s"   t  } t| dtjdtdi d S )NAr)   )r(   )r   r   r   r   r=   )r   r#   r#   r$   test_single_objectt  s    r   c              C   sb   t td} t| dd}td|k td|k t| dd\}}|jd}td|k |jj  d S )Nztest_skip_variable.matT)ri   firstsecond)rx   ry   r   r   r   get_variablesrt   r   )r   r   factoryZfile_openedr#   r#   r$   test_skip_variabley  s    

r   c              C   s   t td} t| dd}|d }t|jd
 t|jtjt t|d d k t	 }tj
f dd}t|d	|i t|}|d	 }t|| d S )Nztest_empty_struct.matT)ri   r7   r)   r   U)r(   r"   )r)   r)   )r   r   )rx   ry   r   r
   r   r(   r   r=   r   r   r   r   r   )r   r   r7   r   r"   Za2r#   r#   r$   test_empty_struct  s    
r   c              C   sV   t  } t| di i t| }|d }t|jd t|jtjt t|d d k d S )Nr"   r)   r   )r)   r)   )r   r   )	r   r   r   r
   r   r(   r   r=   r   )r   r   r7   r#   r#   r$   test_save_empty_dict  s    r   c             C   s2   d}x |D ]}t j| |kr
d}P q
W t| dS )zH Assert `output` is equal to at least one element in `alternatives`
    FTN)r   allr   )outputalternativesZ	one_equalr-   r#   r#   r$   assert_any_equal  s    
r   c              C   s:  t tjdg} t| jd t| d tjdgddgd}tjdgddgd}||f}tt ddd| tt dddd	| tt dddd
| tt dddd| G dd dt}|}d|_d|_	tt || t g } t| jd t| j
jtj t f } t| jd t| j
jtj tt d d k tt dj
jtj t d} t| jf  t| j
jtjdj
j t| d tt i tk tt t d k G dd dt}tt | tk t ddid } t| jd t| j
jtj tt dditk tt dditk tt dddtjd gd!gd d S )"Nr)   r:   r7   |O8r   )r(   )r7   r   r1   )r7   r   Z_c)r7   r   r   )r7   r   Z99c               @   s   e Zd ZdS )z test_to_writeable.<locals>.klassN)__name__
__module____qualname__r#   r#   r#   r$   klass  s   r   r   za stringc               @   s   e Zd ZdS )ztest_to_writeable.<locals>.CN)r   r   r   r#   r#   r#   r$   C  s   r   1Z_a)r   r   r   )r)   )r)   r:   )r7   r   )r   r   )r:   r)   )r   r   )r7   r   )r   )r   )r)   )r:   )r   r   )r   r   r   r
   r   r   r   r=   r7   r   r(   rS   Zfloat64r   Zstr_r   Zobject_)resZ	expected1Z	expected2r   r   cr   r#   r#   r$   test_to_writeable  sL    

r   c              C   s  ddg} t jd| d}d|d d< d	|d d< d
|d d< d|d d< t }t|d|i t|dd}|d d }t|jd t|jd	 t|dd}|d d }t|d d t|d d	 t|jt jddg |d j	d }t|d d
 t|d d d S )Nf1f8f2S10r:   )r(   g      ?r   pythonc   r)   znot perlr"   F)ri   TO)r   r   )r   r   )r:   )r   r   )r   r   )r   r   )r   r   )
r   r   r   r   r   r
   r   r   r(   Zflat)dtr"   r   r   Za20Za21r#   r#   r$   test_recarray  s,    
r   c              C   s   G dd dt } |  }d|_d|_t }t|d|i t|dd}|d d }t|jd t|jd t|d	d}|d d }t|d
 d t|d d d S )Nc               @   s   e Zd ZdS )ztest_save_object.<locals>.CN)r   r   r   r#   r#   r#   r$   r     s   r   r)   za stringr   F)ri   r   Tfield1field2)r   r   )r   r   )r=   r   r   r   r   r   r
   )r   r   r   r   c2r#   r#   r$   test_save_object  s    r   c              C   sn  t jdjdd} t }t|d| i t|}|j }|d }t||  t|dd}t|j d | jd d|_t||  t|t	j
d}t|j d |  t|t	jd}tt|j t	j
|_t|j d |  t jdg} |jd	 |jd	 t|d| i t|}t|j d |  t|dd
}t jt jt| j dd}t|j d | d|_t|j d |  d S )Nr3   r)   r7   T)
squeeze_meF)
byte_orderza stringr   )chars_as_stringsU1)r(   )r3   )r   r   r   r   r   r   r   r   r   bocZnative_codeZswapped_coder   	Exceptionr   r   r   rs   Z
atleast_2dlistrU   r   )r"   r   rdrZ	back_dictrarrZcarrr#   r#   r$   test_read_opts,  s8    



r   c              C   s   t td} t| d}t|}|j }|j  t|d tjg dd t	 }t
|dtjdgi t|}|j }t|d tjg dd |jd |jd t
|dtjg ddi t|}|j }t|d tjg dd |j  d S )Nzsingle_empty_string.matrN   r7   r   )r(    r   )rx   ry   r   r   r   r   r   r   r   r   r   r   rs   )Zestring_fnamer   r   r   r   r#   r#   r$   test_empty_stringO  s$    



r   c              C   s\   dd l } xNtdf| jdfgD ]8\}}ttt|d}t|}t||j W d Q R X qW d S )Nr   zcorrupted_zlib_data.matzcorrupted_zlib_checksum.matrN   )	zlibr   r   r   rx   ry   r   r   r   )r   excr   r   r   r#   r#   r$   test_corrupted_dataj  s    r   c              C   s4   t ttdd} t| dd}|j  W d Q R X d S )Nzcorrupted_zlib_data.matrN   F)Z verify_compressed_data_integrity)r   rx   ry   r   r   )r   r   r#   r#   r$   )test_corrupted_data_check_can_be_disableds  s    r   c              C   s   xzdD ]r} t tt| d}t|}|j }|j  t|d tjdgdggt	d t|d tjd	d
gd
dggtj
d qW d S )Nbig_endian.matlittle_endian.matrN   stringshelloworld)r(   floatsg       @g      @g      @)r  r  )r   rx   ry   r   r   r   r   r   r   r=   Zfloat32)r   r   r   r   r#   r#   r$   test_read_both_endiany  s    

r  c              C   s   t jddgddgg} t jdjd}t jddgd	d
}t }t|| j j |j j |j j d t|}|j	 }t
|d |  t
|d | t
|d | |j  d S )Ng       @g      @g      @r3   r:   r1   r  r  r   )r(   )r  intsuni_arrr  r  r	  )r:   r1   )r   r   r   r   r   r   byteswapZnewbyteorderr   r   r   r   )Z	float_arrZint_arrr	  r   r   r   r#   r#   r$   test_write_opposite_endian  s    

r  c              C   sl   t ttdd} t| dd}|j }W d Q R X tjdgdggtjd}t|d | t	|d j
|j
 d S )Nztestbool_8_WIN64.matrN   T)	mat_dtypeF)r(   rQ   )r   rx   ry   r   r   r   r   rd   r   r
   r(   )Zfobjr   r   rM   r#   r#   r$   test_logical_array  s    r  c              C   s   t  } tjdddg}t| d|i | jd t| }|j  |j  |j \}}t	|j
tj t	|jd |j|d}t	|jjtj d S )NFTZbarrayr   )r   r   r   r   rs   r   initialize_readread_file_headerread_var_headerr
   Zmclassmio5pZmxUINT8_CLASSZ
is_logicalZread_var_arrayr(   rS   uint8)r   Zbarrreaderhdr_varr#   r#   r$   test_logical_out_type  s    
r  c              C   s0   t  } tjdjd}ttt| d|idd d S )	N   r:   r1   r&   r7   Tr~   )r:   r1   r&   )r   r   r   r   r   r   r   )r   r"   r#   r#   r$   test_mat4_3d  s    r  c              C   s^   t td} t| d}t|}|j }|j  tt|d t t	 }t
|}tt|j| d S )Nztestfunc_7.4_GLNX86.matrN   Ztestfunc)rx   ry   r   r   r   r   r   r]   r   r   r   r   r   r   )func_egr   r   r   r   r   r#   r#   r$   test_func_read  s    

r  c              C   s~   t td} t| d}t|dd}|j }|j  t|d jjd t| d}t|dd}|j }|j  t|d jjd d S )	Nztestmatrix_6.1_SOL2.matrN   F)r  r4   uTr   )	rx   ry   r   r   r   r   r
   r(   kind)Z	double_egr   r   r   r#   r#   r$   test_mat_dtype  s    


r  c              C   sX   dt jtjdi} t }t|d| i t|dd}t|d d d j tjd d S )NZsparsefieldr&   r7   T)ri   r   )r   r   )	rZ   
coo_matrixr   Zeyer   r   r   r   r\   )str   r   r#   r#   r$   test_sparse_in_struct  s
    r!  c              C   s<   t  } ddddi}t| | t| dd t| ddd d S )	Nr   r)   r:   )rE   rF   F)ri   T)ri   r   )r   r   r   )r   in_dr#   r#   r$   test_mat_struct_squeeze  s
    
r#  c              C   sn   t  } dggddddd}t| | t| dd}tt|d	 t tt|d
 t tt|d tj d S )Ng?zmy namer)   r:   )rE   rF   )scalarr.   r   T)r   r$  r.   r   )	r   r   r   r   r]   floatrc   r   rT   )r   r"  Zout_dr#   r#   r$   test_scalar_squeeze  s    
r&  c              C   s   t  } tjddg}tjddg}t| t|d t| }t|d | | jd | jd |j	dd}tj
tj|jd|d	}t| t|d t|d | | jd | jd |jd
}|jd
}t| d|i t| }t|d | d S )Nr   ZFoobzFoob )r7   r7   r   F)order)r   r(   r(  bufferr   )r   r   r   r   r   r   r   r   rs   tobytesrT   r7   r   r(   astype)r   Zin_arrZout_arrr   Zin_strZin_from_strZin_arr_uZ	out_arr_ur#   r#   r$   test_str_round  s,    





r,  c              C   sD   t  } t| ddddi t| }|d jj}tt|td d S )Nr7   r)   r:   )r7   r   r   )r7   r   )r   r   r   r(   r   r
   r   )r   r   field_namesr#   r#   r$   test_fieldnames  s
    r.  c              C   sF  dddg} x4t tdg ft td| ffD ]\}}t|}tt|j tddg|  t|dd}tt|j tdg|  t|dgd}tt|j tdg|  t|dgd}tt|j tdg|  t|d	d}tt|j tdg|  t|g d}tt|j t| dg}t||d}t|dg q*W d S )
N__globals__Z
__header____version__ztestmulti_4.2c_SOL2.matztestmulti_7.4_GLNX86.matr7   r6   )Zvariable_names)r6   )rx   ry   r   r
   r   keys)Zmat5_sys_namesZeg_fileZsys_v_namesvarsZvnamesr#   r#   r$   test_loadmat_varnames  s*    r3  c              C   sh   t jd} t }xRdD ]J}|jd |jd t|d| j|i t|}tt j	||d j	 qW d S )Nr   r   f4i8i4i2i1u8u4u2u1c16c8r   r"   )r   r4  r5  r6  r7  r8  r9  r:  r;  r<  r=  r>  )
r   r   r   r   rs   r   r+  r   r
   r(   )r"   r   Zdtsr2  r#   r#   r$   test_round_types6  s    


r?  c        	         s   dt tjdfdt dfdt dff G  fdddt} t }t||   t|}tt|d xHt	dD ]<}|| \}} | \}}t|| t
|}t|| | qnW d S )	Nr"   r   Zmystrza stringZmynumc                   s   e Zd Z fddZdS )z test_varmats_from_mat.<locals>.Cc                s    S )Nr#   )self)
names_varsr#   r$   rj   K  s    z&test_varmats_from_mat.<locals>.C.itemsN)r   r   r   rj   r#   )rA  r#   r$   r   J  s   r   r1   )r%   r   r   r=   r   r   r   r
   rz   ranger   r   )	r   r   Zvarmatsrg   r+   Z
var_streamZexp_nameZexp_resr   r#   )rA  r$   test_varmats_from_matC  s    

rC  c              C   s@   t td} t| d}t|}|j }|j  t|d jd d S )Nzone_by_zero_char.matrN   r  r   )r   )rx   ry   r   r   r   r   r
   r   )r  r   r   r   r#   r#   r$   test_one_by_zeroY  s    

rD  c              C   s*   t td} t| }t|d ddgg d S )Nztest_mat4_le_floats.matr7   g?g333333?)rx   ry   r   r   )Z
mat4_fnamer2  r#   r#   r$   test_load_mat4_lec  s    
rE  c              C   s:   t  } ddi}t| |dd t| }t|d |d  d S )NZ
second_catu   SchrÃ¶dingerr~   )rr   )r   r   r   r
   )Zbior  Zvar_backr#   r#   r$   test_unicode_mat4k  s
    rF  c           
   C   s   t td} t| dd}|d }tt|tj t|jj	t
j t|j ddddgddddgddddgddddgddddgg d S )Nzlogical_sparse.matT)ri   Z
sp_log_5_4F)rx   ry   r   r   r]   rZ   r   r
   r(   rS   r   rd   r   Ztoarray)r   r   Zlog_spr#   r#   r$   test_logical_sparset  s    




rG  c              C   s   t  } dd l}|jjddgddgg}t| t|d | jd t| }t|d j	|j	 t|d j
 d | jd t| }|j  |j  |j \}}t|jd d S )Nr   )rM   rM   r)   )r   scipy.sparser5   Z
csr_matrixr   r   rs   r   r   r   r\   r   r  r  r  r
   Znzmax)r   ZscipyZempty_sparser   r  r  r  r#   r#   r$   test_empty_sparse  s    

rI  c              C   s   t  } ttt|  d S )N)r   r   r   r   )r   r#   r#   r$   test_empty_mat_error  s    rJ  c           	   C   s\   t td} t| }t|d tjdd d d f  t td} tt t|  W d Q R X d S )Nzmiuint32_for_miint32.matZan_arrayr   zbad_miuint32.mat)rx   ry   r   r
   r   r   r   r   )r   r   r#   r#   r$   test_miuint32_compromise  s    
 

rK  c           	   C   sN   t td} t| }t|d dgg t td} tt t|  W d Q R X d S )Nzmiutf8_array_name.matZ
array_namer)   zbad_miutf8_array_name.mat)rx   ry   r   r
   r   r   )r   r   r#   r#   r$   !test_miutf8_for_miint8_compromise  s    


rL  c              C   s,   t td} t| }t|d djdd d S )Nzbroken_utf8.matZ
bad_strings    am brokenutf8replace)rx   ry   r   r
   decode)r   r   r#   r#   r$   test_bad_utf8  s    
rP  c             C   s.   t jjt| d}ddddi}t|| d S )Nztest.matr7   r)   Ztest_str)r   r   )r   pathr   rc   r   )r   r   Z	test_dictr#   r#   r$   test_save_unicode_field  s    rR  c               C   s   t ttd t ttd d S )NzNotExistentFile00.matZNotExistentFile00)r   IOErrorr   r#   r#   r#   r$   test_filenotfound  s    rT  c              C   sj   t td} t| dd}t| dd}tt|d t tt|d tj t|d d tj	ddd	g d S )
Nztestsimplecell.matT)Zsimplify_cellsFsZmycellr7   r   r   )
rx   ry   r   r   r]   r   r   rT   r   r   )r   Zres1Zres2r#   r#   r$   test_simplify_cells  s    
rV  )r1   r2   )r   r   rW  )r   r   rW  )r)   r)   )r   r   )r&   r1   r:   )rA   rB   rC   )r)   r)   )r   r   )r   r   y      ?      ?)r   r   )r)   r:   )r   r   )r)   r1   )r   r)   )r   r)   )r   r   )r   r)   )r   r)   )r)   r:   )r   r)   )r   r:   )r   r)   )r   r:   )r   r   )r   r)   )r   r:   )r   r)   )r)   r)   )rE   rF   )r   r   )r)   r)   )r   r   )r   r   )r   r   )r)   r:   )rE   rF   )r   r   )r   r   )r   r)   )r   r)   )rG   rH   r    rI   rJ   rK   )r)   r)   )r   r   )__doc__r   collectionsr   os.pathr   rx   r   r   ior   tempfiler   r   r   r   Znumpy.testingr   r	   r
   r   Zpytestr   r   Znumpyr   r   rH  r5   rZ   Zscipy.io.matlab.byteordercodesZmatlabZbyteordercodesr   Zscipy.io.matlab.miobaser   r   r   Zscipy.io.matlab.mior   r   r   r   Zscipy.io.matlab.mio5r   r   r   r   r   r   r   Zscipy.io.matlabr   r  __file__ry   r%   pir   r%  r   r6   rv   appendcossinr   r   r   rB  r  r+  r0   Br=   CArw   ZCAEemptyZobjarrZ	transposesqrtexpZ
st_sub_arrr(   r   ZCNr  Zst2r7   ZODTZMOZm0r   Zfp_u_strreadrO  Zu_strr   r   repeatrV   ra   ro   rq   ru   r|   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r!  r#  r&  r,  r.  r3  r?  rC  rD  rE  rF  rG  rI  rJ  rK  rL  rP  rR  rT  rV  r#   r#   r#   r$   <module>   s  
$ "

 &$   
 
/
	?#	


	
	