U
    9%eI                     @   sd
  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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mZ ddlZdd	lm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$m%Z% ddl&m	  m'  m(Z) ddl*m+Z+m,Z,m-Z-m.Z. ddl/m0Z0m1Z1m2Z2m3Z3 ddl4m5Z5m6Z6m7Z7m8Z8m9Z9 ddl:m	  m'  m;Z< eee=dZ>dd Z?ej@d ejAdeBdCdd ZDdddideDidgZEeEFdddidedgid eEFdddideGeDdeHeD  id eId ZJeKeLdd!eJd< eKeLddeJdddf< eEFd"d#did#eJid eEFd$d%d$id%eMeJid eJNeOZPePd&  d7  < eEFd'd(d$id(eMePid eEFd)ddd*eDeJd*d eEFd+d,did,e?d-id eEFd.d/did/ed0gid e?g e?dge?dd1gge?dd1d2ggfeQdCdd-ZRed3geRd&< d4d5d4id5eRidgZSe?e?de?d1e?g e?g e?d2feQdCdd-ZTejUd6eQdZVe?deVd&< eSFd7d8d4id8eVid eSFd9d:d4id:eTid eSFd;d<did<ed=d>d?gid eSFd@dAdidAeWeCeKeLddBdCid eeXd1eYdej@gCdd2ZZdDdE dFD Z[eId6e[Z\edGge\dH d&< eZe\dI d&< eZdJ e\dK d&< eSFdLdMdLidMe\id ejIdNeQdZ]e?de]d&< ejIdOeQde]dP< e?d1ej^de]dP d&< e?d2ggej^de]dP dP< ejIdNeQde]dP dQ< e?dej^de]dP dQ d&< e?dRej^de]dP dQ dP< eSFdSdTd4idTe]id ejUd6dUdE dVD dZ_e?de_d& dW< ejUd6d?eQfgde_d& dX< edYge_d& dX d& d?< eSFdZd[dLid[e_id ejUdNd\dE dVD dZ`e?de`d& dW< e?d1e`d& dX< ed]ge`dP dW< ed^ge`dP dX< eSFd_d`dLid`e`id e[dadE dbD Zae%ejId6eaddcZbebd& Zceddgecde< edfgecdg< eddgecdh< e?decdi< e?decdj< e?decdk< eSFdldmdlidmebid edee>dndoZeeef gdpZheei  eSFdqdrdidreehgid eSFd$d%d$id%eMeJid eSFd'd(d$id(eMePid eSFdsdtduidtedvgdwggid eSdd ZjejFdxdydlidyekebd1Cdd1id dzd{ Zld|d} Zmd~d Zndd Zodd ZpdddZqejrsdkddd Ztejrsdkddd Zuejrsddddgfddgfgdd 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 Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zejrsd ddddddgdd Zd	d
 Zdd 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_assert_warns)raises)array)MatlabOpaqueMatlabFunctionMatlabObject)matdimsMatWriteErrorMatReadErrormatfile_version)mat_reader_factoryloadmatsavematwhosmat)MatFile5WriterMatFile5Readervarmats_from_matto_writeableEmptyStructMarkerdatac                  O   s   t j| |}t||_|S )z;Convenience function to return matlab-compatible 2-D array.)npr   r   shape)argskwargsarr r%   ]/var/www/html/Darija-Ai-API/env/lib/python3.8/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              ?)         matrix
testmatrixsparseZ
testsparser   r   ZsparsecomplexZtestsparsecomplexmulti)thetaaminusZ	testminusZonecharZtestonecharr   r4   z@This cell contains this string and 3 arrays of increasing lengthcellZtestcellr,   r,   Z
scalarcellZtestscalarcellZ	emptycellZtestemptycellZstringarrayZteststringarrayzone  ztwo  threeZ3dmatrixZtest3dmatrix   )r(   r4   rA   c                 C   s   g | ]}|t fqS r%   object.0nr%   r%   r&   
<listcomp>   s     rK   )stringfielddoublefieldcomplexfieldzRats live on no evil star.rL   rM   y      ?      ?rN   structZ
teststructr,   rA   )r,   r4   r   r,   )r   rA   r5   ZcellnestZtestcellnestc                 C   s   g | ]}|t fqS r%   rF   rH   r%   r%   r&   rK      s     onetworS   rT   znumber 3Z
structnestZteststructnestc                 C   s   g | ]}|t fqS r%   rF   rH   r%   r%   r&   rK      s     znumber 1znumber 2Z	structarrZteststructarrc                 C   s   g | ]}|t fqS r%   rF   rH   r%   r%   r&   rK      s     )expr	inputExprr"   isEmptynumArgsversioninlinexrU   z x = INLINE_INPUTS_{1};rV   r"   rW   rX   rY   rG   Z
testobjectzjapanese_utf8.txtrbzutf-8unicodeZtestunicodebool	testboolsZlogicalTFZobjectarrayZtestobjectarrayc                 C   sh   t | }t |}||krdS |tjkr@| jdkr@t |  |kS |tjkrd|jdkrdt | |kS dS )zkCheck if types are same or compatible.

    0-D numpy scalars are compatible with bare python scalars.
    Tr%   F)typer    ndarrayr!   item)Zvar1Zvar2Ztype1Ztype2r%   r%   r&   types_compatible   s    rc   c                 C   sd  t |r4tt | t| | | 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 t|D ]$\}}d| |f }t||||  qdS |jr(|jD ]$}d| |f }t||| ||  qdS |jttjtjfkrPt||| d	 dS t||| dd dS )
z/ Check one level of a potentially nested array r5   )err_msgdecimalNzExpected type %s, got %s at %szExpected shape %s, got %s at %s)msgz
%s, [%d], z%s, field %s, rd   )SPissparser   r	   toarrayrc   r`   
isinstancer    voidra   r   r
   r!   r+   Z	hasobject	classname	enumerate_check_levelfieldsstrZunicode_bool_)labelr0   actualZex_dtypeiZevZlevel_labelfnr%   r%   r&   ro      s^    




 ro   c           	      C   sf   |D ]\}t |dd}d| |f }| D ]6\}}d||f }t||kd|  t||||  q(qd S )NTstruct_as_recordtest %s; file %sz%s, variable %szMissing key at %s)r   itemsr   ro   )	r.   filescase	file_nameZmatdictrs   kr0   Zk_labelr%   r%   r&   _load_check_case*  s    r   c                    s^   |D ]T}d| |f }t |} fdd| D }|  |  t||d|||f  qd S )Nry   c                    s    g | ]\}}||j  | fqS r%   )r!   )rI   r~   r0   r/   r%   r&   rK   :  s    z$_whos_check_case.<locals>.<listcomp>z%s: %r != %r)r   rz   sortr
   )r.   r{   r|   r/   r}   rs   ZwhosZexpected_whosr%   r   r&   _whos_check_case4  s    
r   c                 C   s0   t  }t|||d |d t| |g| d S )Nformatr   )r   r   seekr   )r.   r0   r   
mat_streamr%   r%   r&   _rt_check_caseE  s    
r   test%(name)s_*.matc           	      c   s   | dkrt }n| dkrt}n| dks(tt}|D ]p}|d }|d }|d krRd }n8tt|t|d }t|}t|dkstd||f |d	 }||||fV  q0d S )
N455_rtr.   r0   )r.   r   z$No files for test %s using filter %sr/   )	case_table4case_table5AssertionErrorcase_table5_rtpjointest_data_pathdictr   len)	rY   filtZcasesr|   r.   r0   r{   use_filtr/   r%   r%   r&   _casesM  s$    
r   r   r   c                 C   s"   t | D ]}t|d d   qd S )Nr4   )r   r   rY   r|   r%   r%   r&   	test_loadc  s    r   c                 C   s   t | D ]}t|  qd S N)r   r   r   r%   r%   r&   	test_whosi  s    r   zversion, fmtsr   r   r   c                 C   s4   t | d dD ]"}|D ]}t|d |d | qqd S )N)r   r   rA   )r   r   )rY   Zfmtsr|   fmtr%   r%   r&   test_round_tripp  s    r   c            	   	   C   s   t d} d| d< d| d< t| }d}d|i}d}t }zTt||}tj	|d	d
}t
|||d |  tj	|dd
}t|dd}|  W 5 t| X t|d  |d  t|d d S )N)   r   gffffff@rA   r4   g      @)r(   r5   Z	gzip_testr[   r   wb)moder   r\   Trw   rg   )r    zerosrh   
csc_matrixr   shutilrmtreer   gzipopenr   closer   r	   rj   repr)	Zxdenser[   r.   r0   r   tmpdirfnamer   rt   r%   r%   r&   test_gzip_simplez  s*    



r   c               	   C   s   t  } zttdd}t| d}t|| t	| t|| t
| t	| t|d}t|| |d |  t|d}t
| |d |  W 5 t|  X d S )N)rA   rA   r[   za.matr   r   r\   )r   r   r   r   r    r   r   r   osunlinkr   r   r   r   )r   r[   r   fr%   r%   r&   test_multiple_open  s$    









r   c                  C   sN   t ttd} tt| dk | D ]&}t|d}ttt|dd |	  q"d S )Nztesthdf5*.matr   r\   Trw   )
r   r   r   r   r   r   assert_raisesNotImplementedErrorr   r   )	filenamesfilenamefpr%   r%   r&   
test_mat73  s    
r   c               	   C   sD   t td} t ( td t| dd t| dd W 5 Q R X d S )Nztestdouble_7.1_GLNX86.materrorTrw   F)r   r   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t t|d d k d S )Ndr,   rA   r   r   rC   r:   	r   r   r   r
   r!   r+   r    rG   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   r=   rC   r*   
longstructr   r   r,   r    r   rG   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 )NrC   Zmy_fieldnamer*   	my_structr   Tr   long_field_names)r    r   rG   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?   r=   rC   r*   r   r   Tr   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   r=   rP   r*   rC   r:   rQ   r   r   Tr   F)r    ra   rG   r   r   r   r   r   )r   r   rB   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 )NrP   r*   Hellor:   ZWorldrQ   r[   r   r   rC   zHello, world)r    ra   rG   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d}|d|i t|  }| d | d |d|i t	|t|   dk | d | d |d|i t	t|  | dk  d S )N
   Zaaaaar   Zaaaar(   Zaaaaaa)
r   r   r    r   put_variablesr   getvaluetruncater   r   )r   wtrr$   Zw_szr%   r%   r&   test_use_small_element&  s    




r   c                  C   s~   t jdggdtfdtfgd} ttfD ]R}|ddg}t }t|d|i |d t|d }t	|j
jd	 t||  q&d S )
NrP   r=   br*   )r=   r,   )r   rA   r   r   r=   r   )r    r   rG   r   r   r   r   r   r   r
   r+   namesr   )Zab_exp	dict_typer   streamvalsr%   r%   r&   test_save_dict:  s    
r   c                  C   s   t d} d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d S )
Nr5   r   Zonedr   )r,   r5   column)r   Zoned_as)r5   r,   row)r    aranger   r   r   r
   r!   )r$   r   r   r   r%   r%   r&   test_1d_shapeI  s(    


r   c                  C   s  t dd} d| d< t }t|d| i t| }t|}t|d |  t }t|d| idd t| }t|}t|d |  t	||k | 
 }d|d< t }t|| |d	d
d t|}t|d | t }t|| |d	dd t|}t|d | d S )Nd   )r5   r   r,   )rA   r   r$   T)Zdo_compressionr:   )r$   arr2Fr   )r    r   reshaper   r   r   r   r   r   r   copy)r$   r   Zraw_lenr   Zcompressed_lenr   r%   r%   r&   test_compressionb  s.    r   c                  C   s"   t  } t| dtjdtdi d S )NAr,   r*   )r   r   r    r   rG   )r   r%   r%   r&   test_single_object}  s    r   c                  C   sb   t td} t| dd}td|k td|k t| dd\}}|d}td|k |j  d S )Nztest_skip_variable.matTrw   firstsecond)r   r   r   r   r   get_variablesr   r   )r   r   factoryZfile_openedr%   r%   r&   test_skip_variable  s    

r   c                  C   s   t td} t| dd}|d }t|jd t|jtt t|d d k t	 }tj
ddd	}t|d
|i t|}|d
 }t|| d S )Nztest_empty_struct.matTrw   r=   rC   r:   r%   Ur*   r$   )r   r   r   r
   r!   r+   r    rG   r   r   r   r   r   )r   r   r=   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t t|d d k d S )Nr$   rC   r:   r   )r   r   r=   r%   r%   r&   test_save_empty_dict  s    r   c                 C   s0   d}|D ]}t | |krd} q$qt| dS )zH Assert `output` is equal to at least one element in `alternatives`
    FTN)r    allr   )outputalternativesZ	one_equalr0   r%   r%   r&   assert_any_equal  s    r   c                  C   s6  t t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}|}d|_d|_tt || t g } t| jd t| j	j
tj t d} t| jd t| j	j
tj tt d d k tt dj	j
tj t d} t| jd t| j	j
tdj	j
 t| d tt i tk tt t d k G dd d}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,   rP   )r=   |O8)r   r   r*   )rA   r,   rA   r   r4   )r=   r   Z_c)r=   r   r   )r=   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   r%   a stringc                   @   s   e Zd ZdS )ztest_to_writeable.<locals>.CNr   r%   r%   r%   r&   C  s   r  r=   1Z_a)r  r   rA   )r   r   )r   r    r   r
   r!   r   r   r=   r   r+   r`   Zfloat64r   Zstr_r   rG   Zobject_)resZ	expected1Z	expected2r   r   cr  r%   r%   r&   test_to_writeable  sN    

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 ddg |d j	d }t|d d
 t|d	 d d S )N)f1f8)f2ZS10r  r*   g      ?r   r	  pythonr  c   r,   znot perlr$   Frw   r:   T)r	  O)r  r  )
r    r   r   r   r   r
   r	  r  r+   Zflat)dtr$   r   r   Za20Za21r%   r%   r&   test_recarray  s0    r  c                  C   s   G 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 d S )Nc                   @   s   e Zd ZdS )ztest_save_object.<locals>.CNr   r%   r%   r%   r&   r  $  s   r  r,   r  r  Frw   r:   Tfield1field2)r  r  r   r   r   r
   )r  r  r   r   c2r%   r%   r&   test_save_object#  s    r  c                  C   sn  t ddd} t }t|d| i t|}| }|d }t||  t|dd}t| d | d d|_t||  t|t	j
d}t| d |  t|t	jd}tt|j t	j
|_t| d |  t d	g} |d
 |d
 t|d| i t|}t| d |  t|dd}t t jt|  dd}t| d | d|_t| d |  d S )Nr6   r,   r=   T
squeeze_me)r6   F)
byte_orderr  r   )chars_as_stringsU1r*   )r    r   r   r   r   r   r   r   r  bocZnative_codeZswapped_coder   	Exceptionr  r   r   r   Z
atleast_2dlistrb   r  )r$   r   rdrZ	back_dictrarrZcarrr%   r%   r&   test_read_opts5  s8    



r  c                  C   s   t td} t| d}t|}| }|  t|d tjg dd t	 }t
|dtdgi t|}| }t|d tjg dd |d |d t
|dtjg ddi t|}| }t|d tjg dd |  d S )Nzsingle_empty_string.matr\   r=   r  r*    r   )r   r   r   r   r   r   r   r    r   r   r   r   r   )Zestring_fnamer   r  r   r   r%   r%   r&   test_empty_stringX  s$    



r!  c               
   C   sX   dd l } tdf| jdffD ]8\}}ttt|d}t|}t||j W 5 Q R X qd S )Nr   corrupted_zlib_data.matzcorrupted_zlib_checksum.matr\   )	zlibr   r   r   r   r   r   r   r   )r#  excr   r   r  r%   r%   r&   test_corrupted_datas  s    r%  c               	   C   s4   t ttdd} t| dd}|  W 5 Q R X d S )Nr"  r\   F)Z verify_compressed_data_integrity)r   r   r   r   r   )r   r  r%   r%   r&   )test_corrupted_data_check_can_be_disabled|  s    r&  c                  C   s|   dD ]r} t tt| d}t|}| }|  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d S )N)zbig_endian.matzlittle_endian.matr\   stringshelloworldr*   floats       @      @      @)r   r   r   r   r   r   r   r    r   rG   Zfloat32)r   r   r  r   r%   r%   r&   test_read_both_endian  s&    
r.  c                  C   s   t ddgddgg} t dd}t jddgdd	}t }t||   |  |  d
 t|}|	 }t
|d |  t
|d | t
|d | |  d S )Nr+  r,  r-  r6   r   r(  r)  r   r*   )r*  intsuni_arrr*  r/  r0  )r    r   r   r   r   r   byteswapZnewbyteorderr   r   r   r   )Z	float_arrZint_arrr0  r   r  r   r%   r%   r&   test_write_opposite_endian  s     


r2  c               	   C   sl   t ttdd} t| dd}| }W 5 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.matr\   TZ	mat_dtypeFr*   r_   )r   r   r   r   r   r    r   rr   r   r
   r+   )Zfobjr  r   r[   r%   r%   r&   test_logical_array  s    r4  c                  C   s   t  } tdddg}t| d|i | d t| }|  |  | \}}t	|j
tj t	|jd ||d}t	|jjtj d S )NFTZbarrayr   )r   r    r   r   r   r   initialize_readread_file_headerread_var_headerr
   Zmclassmio5pZmxUINT8_CLASSZ
is_logicalZread_var_arrayr+   r`   uint8)r   Zbarrreaderhdr_varr%   r%   r&   test_logical_out_type  s    
r>  c                  C   s8   t  } t| dtdi t| }|d jdks4td S )Nr   )r   r   )r   r   r    emptyr   r!   r   )r   r   r%   r%   r&   test_roundtrip_zero_dimensions  s    r@  c                  C   s0   t  } tdd}ttt| d|idd d S )N   )rA   r4   r(   r=   Tr   )r   r    r   r   r   r   r   )r   r$   r%   r%   r&   test_mat4_3d  s    rB  c                  C   s^   t td} t| d}t|}| }|  t|d ts>tt	 }t
|}tt|j| d S )Nztestfunc_7.4_GLNX86.matr\   Ztestfunc)r   r   r   r   r   r   rk   r   r   r   r   r   r   r   )func_egr   r  r   r   r   r%   r%   r&   test_func_read  s    

rD  c                  C   s~   t td} t| d}t|dd}| }|  t|d jjd t| d}t|dd}| }|  t|d jjd d S )	Nztestmatrix_6.1_SOL2.matr\   Fr3  r8   uTr   )	r   r   r   r   r   r   r
   r+   kind)Z	double_egr   r  r   r%   r%   r&   test_mat_dtype  s    


rG  c                  C   sX   dt tdi} t }t|d| i t|dd}t|d d d  td d S )NZsparsefieldr(   r=   Trw   r:   )	rh   
coo_matrixr    eyer   r   r   r   rj   )str   r   r%   r%   r&   test_sparse_in_struct  s
    rK  c                  C   s<   t  } ddddi}t| | t| dd t| ddd d S )	NrJ  r,   rA   rR   Frw   T)rx   r  )r   r   r   )r   in_dr%   r%   r&   test_mat_struct_squeeze  s
    
rM  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 )N皙?zmy namer,   rA   rR   )scalarr1   rJ  Tr  rO  r1   rJ  )	r   r   r   r   rk   floatrq   r    ra   )r   rL  Zout_dr%   r%   r&   test_scalar_squeeze  s    
rQ  c                  C   s   t  } tddg}tddg}t| t|d t| }t|d | | d | d |j	dd}tj
tj|jd|d	}t| t|d t|d | | d | d |d
}|d
}t| d|i t| }t|d | d S )Nr   ZFoobzFoob )r=   r=   r   F)order)r!   r+   rS  bufferr   )r   r    r   r   r   r   r   r   r   tobytesra   r=   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.    





rW  c                  C   sD   t  } t| ddddi t| }|d jj}tt|td d S )Nr=   r,   rA   r   )r   r   r   r+   r   r
   set)r   r  field_namesr%   r%   r&   test_fieldnames$  s
    rZ  c                  C   s@  dddg} t tdg ft td| ffD ]\}}t|}tt| tddg|  t|dd}tt| tdg|  t|dgd}tt| tdg|  t|dgd}tt| tdg|  t|d	d}tt| tdg|  t|g d}tt| t| dg}t||d}t|dg q&d S )
N__globals__Z
__header____version__ztestmulti_4.2c_SOL2.matztestmulti_7.4_GLNX86.matr=   r<   )Zvariable_names)r<   )r   r   r   r
   rX  keys)Zmat5_sys_namesZeg_fileZsys_v_namesvarsZvnamesr%   r%   r&   test_loadmat_varnames-  s6      r_  c                  C   sd   t d} t }dD ]J}|d |d t|d| |i t|}tt 	||d j	 qd S )Nr   )r
  Zf4i8i4i2i1u8Zu4u2u1Zc16Zc8r   r$   )
r    r   r   r   r   r   rV  r   r
   r+   )r$   r   dtsr^  r%   r%   r&   test_round_typesF  s    


rh  c            	         s   dt tdfdt dfdt dff G  fddd} t }t||   t|}tt|d tdD ]<}|| \}} | \}}t|| t	|}t
|| | qjd S )	Nr$   r   Zmystrr  Zmynumc                       s   e Zd Z fddZdS )z test_varmats_from_mat.<locals>.Cc                    s    S r   r%   )selfZ
names_varsr%   r&   rz   [  s    z&test_varmats_from_mat.<locals>.C.itemsN)r   r   r   rz   r%   rj  r%   r&   r  Z  s   r  r4   )r'   r    r   r   r   r   r
   r   ranger   r   )	r  r   Zvarmatsru   r.   Z
var_streamZexp_nameZexp_resr  r%   rj  r&   test_varmats_from_matS  s    


rl  c                  C   s@   t td} t| d}t|}| }|  t|d jd d S )Nzone_by_zero_char.matr\   r=  r  )r   r   r   r   r   r   r
   r!   )rC  r   r  r   r%   r%   r&   test_one_by_zeroi  s    

rm  c                  C   s*   t td} t| }t|d ddgg d S )Nztest_mat4_le_floats.matr=   rN  g333333?)r   r   r   r   )Z
mat4_fnamer^  r%   r%   r&   test_load_mat4_les  s    
rn  c                  C   s:   t  } ddi}t| |dd t| }t|d |d  d S )NZ
second_catu   Schrödingerr   r   )r   r   r   r
   )Zbior=  Zvar_backr%   r%   r&   test_unicode_mat4{  s
    ro  c               
   C   s   t td} t| dd}|d }tt|tj t|jj	t
j t| 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.matTrw   Z
sp_log_5_4F)r   r   r   r   rk   rh   r   r
   r+   r`   r    rr   r   rj   )r   r   Zlog_spr%   r%   r&   test_logical_sparse  s    





rp  c                  C   s   t  } dd l}|jddgddgg}t| t|d | d t| }t|d j	|j	 t|d 
 d | d t| }|  |  | \}}t|jd d S )Nr   r   r[   r,   )r   scipy.sparser9   Z
csr_matrixr   r   r   r   r   r!   rj   r   r5  r6  r7  r
   Znzmax)r   scipyZempty_sparser  r:  r;  r<  r%   r%   r&   test_empty_sparse  s    

rs  c                  C   s   t  } ttt|  d S r   )r   r   r   r   )r   r%   r%   r&   test_empty_mat_error  s    rt  c               	   C   s\   t td} t| }t|d tdd d d f  t td} tt t|  W 5 Q R X d S )Nzmiuint32_for_miint32.matZan_arrayr   zbad_miuint32.mat)r   r   r   r
   r    r   r   r   r   r  r%   r%   r&   test_miuint32_compromise  s    
 

rv  c               	   C   sN   t td} t| }t|d dgg t td} tt t|  W 5 Q R X d S )Nzmiutf8_array_name.matZ
array_namer,   zbad_miutf8_array_name.mat)r   r   r   r
   r   r   ru  r%   r%   r&   !test_miutf8_for_miint8_compromise  s    


rw  c                  C   s,   t td} t| }t|d ddd d S )Nzbroken_utf8.matZ
bad_strings    am brokenutf8replace)r   r   r   r
   decoderu  r%   r%   r&   test_bad_utf8  s
    

r{  c                 C   s.   t jt| d}ddddi}t|| d S )Nztest.matr=   r,   Ztest_str)r   r  )r   pathr   rq   r   )r   r   Z	test_dictr%   r%   r&   test_save_unicode_field  s    r}  c                   C   s   t ttd t ttd d S )NzNotExistentFile00.matZNotExistentFile00)r   OSErrorr   r%   r%   r%   r&   test_filenotfound  s    r  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	ddd	g d S )
Nztestsimplecell.matT)Zsimplify_cellsFsZmycellr=   r   r  )
r   r   r   r   rk   r   r    ra   r   r   )r   Zres1Zres2r%   r%   r&   test_simplify_cells  s    
r  zversion, filt, regex)r   z_4*_*N)r,   z_5*_*N)r,   z_6*_*N)r,   _7*_*z^((?!hdf5).)*$)rA   r  z.*hdf5.*)r,   z8*_*Nc                    sr   t td| }t|} d k	r0 fdd|D }t|dksLtd| |f |D ]}t|}|d | ksPtqPd S )Nztest*%s.matc                    s    g | ]}t  |d k	r|qS r   )rematch)rI   fileregexr%   r&   rK     s      z(test_matfile_version.<locals>.<listcomp>r   z'No files for version %s using filter %s)r   r   r   r   r   r   )rY   r   r  r   r{   r  Zgot_versionr%   r  r&   test_matfile_version  s    	
r  c                  C   sF   t ttd} t| d ts tt| d  d  d tsBtdS )z,Test that we can read a MatlabOpaque object.zparabola.matZparabolar4   N)r   r   r   rk   r   r   rb   r   )r   r%   r%   r&   test_opaque  s    r  c               	   C   sD   t t tjjjj W 5 Q R X t t ddlm}  W 5 Q R X dS )z4Test that access to previous attributes still works.r   r   N)	r   DeprecationWarningrr  iomatlabZmio5_paramsr   Zscipy.io.matlab.miobaser   r  r%   r%   r&   test_deprecation  s    

r  )r   )__doc__r   collectionsr   os.pathr   r   r   r   r  r   r  tempfiler   r   r   r   Znumpy.testingr   r	   r
   r   r   Zpytestr   r   numpyr    r   rq  r9   rh   Zscipy.iorr  Zscipy.io.matlabr   r   r   Zscipy.io.matlab._byteordercodesr  Z_byteordercodesr  Zscipy.io.matlab._miobaser   r   r   r   Zscipy.io.matlab._mior   r   r   r   Zscipy.io.matlab._mio5r   r   r   r   r   Zscipy.io.matlab._mio5_paramsZ_mio5_paramsr8  __file__r   r'   pir   rP  r   r<   r   appendcossinr   r   r  rk  rH  rV  r3   BrG   CAr   ZCAEr?  ZobjarrZ	transposesqrtexpZ
st_sub_arrr+   r   ZCNr9  Zst2r=   ZODTZMOZm0r   Zfp_u_strreadrz  Zu_strr   r   repeatrc   ro   r   r   r   r   markZparametrizer   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.  r2  r4  r>  r@  rB  rD  rG  rK  rM  rQ  rW  rZ  r_  rh  rl  rm  rn  ro  rp  rs  rt  rv  rw  r{  r}  r  r  r  r  r  r%   r%   r%   r&   <module>   s   


   $
/




?#	


	
	

