o
    gI                     @   sN
  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?g d2gfeQdCdd-ZRed3geRd&< d4d5d4id5eRidgZSe?e?de?d1e?g e?g e?d6feQdCdd-ZTejUd7eQdZVe?deVd&< eSFd8d9d4id9eVid eSFd:d;d4id;eTid eSFd<d=did=eg d>id eSFd?d@did@eWeCeKeLddAdBid eeXd1eYdej@gCdd6ZZdCdD dED Z[eId7e[Z\edFge\dG d&< eZe\dH d&< eZdI e\dJ d&< eSFdKdLdKidLe\id ejIdMeQdZ]e?de]d&< ejIdNeQde]dO< e?d1ej^de]dO d&< e?d6ggej^de]dO dO< ejIdMeQde]dO dP< e?dej^de]dO dP d&< e?dQej^de]dO dP dO< eSFdRdSd4idSe]id ejUd7dTdD dUD dZ_e?de_d& dV< ejUd7dWeQfgde_d& dX< edYge_d& dX d& dW< eSFdZd[dKid[e_id ejUdMd\dD dUD dZ`e?de`d& dV< e?d1e`d& dX< ed]ge`dO dV< ed^ge`dO dX< eSFd_d`dKid`e`id e[dadD dbD Zae%ejId7ead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 g d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| i |}t||_|S )z;Convenience function to return matlab-compatible 2-D array.)npr   r   shape)argskwargsarr r%   \/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/scipy/io/matlab/tests/test_mio.pymlarr*   s   
r'      	   dtype   double
testdouble)nameclassesexpectedstring
teststringcharz+"Do nine men interpret?" "Nine men," I nod.complextestcomplexy              ?)         matrix
testmatrixsparse
testsparser   r   sparsecomplextestsparsecomplexmulti)thetaaminus	testminusonechartestonecharr   )r,   rJ   r7   z@This cell contains this string and 3 arrays of increasing lengthcelltestcellr7   r,   r,   
scalarcelltestscalarcell	emptycelltestemptycellstringarrayteststringarray)zone  ztwo  three3dmatrixtest3dmatrix   )r(   r7   rJ   c                 C      g | ]}|t fqS r%   object.0nr%   r%   r&   
<listcomp>       r^   )stringfielddoublefieldcomplexfieldzRats live on no evil star.r`   ra   y      ?      ?rb   struct
teststructr,   rJ   )r,   r7   r   r,   )r   rJ   r8   cellnesttestcellnestc                 C   rX   r%   rY   r[   r%   r%   r&   r^      r_   onetworj   rT   rk   znumber 3
structnestteststructnestc                 C   rX   r%   rY   r[   r%   r%   r&   r^      r_   znumber 1znumber 2	structarrteststructarrc                 C   rX   r%   rY   r[   r%   r%   r&   r^      r_   )expr	inputExprr"   isEmptynumArgsversioninlinexrp   z x = INLINE_INPUTS_{1};rq   r"   rr   rs   rt   rZ   
testobjectzjapanese_utf8.txtrbzutf-8unicodetestunicodebool	testboolslogicalTFobjectarraytestobjectarrayc                 C   sh   t | }t |}||u rdS |tju r | jdkr t |  |u S |tju r2|jdkr2t | |u 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)var1var2type1type2r%   r%   r&   types_compatible   s   r   c                 C   s`  t |rtt | t| | | dd dS tt||dt|t|| f  t|tj	tj
tfs<t|| dS t|j|jkd|j|j| f d |j}|jrxt|tr_t|j|j t|D ]\}}d| |f }t||||  qcdS |jr|jD ]}d| |f }t||| ||  q~dS |jttjtjfv rt||| d	 dS t||| dd dS )
z/ Check one level of a potentially nested array r8   )err_msgdecimalNzExpected type %s, got %s at %szExpected shape %s, got %s at %s)msgz
%s, [%d], z%s, field %s, r   )SPissparser   r	   toarrayr   r   
isinstancer    voidr   r   r
   r!   r+   	hasobject	classname	enumerate_check_levelfieldsstrunicode_bool_)labelr1   actualex_dtypeievlevel_labelfnr%   r%   r&   r      s\   




r   c           	      C   sf   |D ].}t |dd}d| |f }| D ]\}}d||f }t||v d|  t||||  qqd S )NTstruct_as_recordtest %s; file %sz%s, variable %szMissing key at %s)r   itemsr   r   )	r/   filescase	file_namematdictr   kr1   k_labelr%   r%   r&   _load_check_case*  s   r   c                    s^   |D ]*}d| |f }t |} fdd| D }|  |  t||d|||f  qd S )Nr   c                    s    g | ]\}}||j  | fqS r%   )r!   )r\   r   r1   r0   r%   r&   r^   :  s    z$_whos_check_case.<locals>.<listcomp>z%s: %r != %r)r   r   sortr
   )r/   r   r   r0   r   r   whos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/   r1   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J t}|D ]8}|d }|d }|d u r*d }ntt|t|d }t|}t|dksFJ d||f |d	 }||||fV  qd S )
N455_rtr/   r1   )r/   r   z$No files for test %s using filter %sr0   )case_table4case_table5case_table5_rtpjointest_data_pathdictr   len)	rt   filtcasesr   r/   r1   r   use_filtr0   r%   r%   r&   _casesM  s(   
r   r   r   c                 C   s"   t | D ]
}t|d d   qd S )Nr7   )r   r   rt   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   rJ   )r   r   )rt   fmtsr   fmtr%   r%   r&   test_round_tripp  s
   r   c            	   	   C   s   t d} d| d< d| d< t| }d}d|i}d}t }z/t||}tj|d	d
}t|||d |	  tj|dd
}t
|dd}|	  W t| nt| w t|d  |d  t|d d S )N)   r   gffffff@rJ   r7   g      @)r(   r8   	gzip_testrv   r   wb)moder   rx   Tr   r   )r    zerosr   
csc_matrixr   r   gzipopenr   closer   shutilrmtreer	   r   repr)	xdenserv   r/   r1   r   tmpdirfnamer   r   r%   r%   r&   test_gzip_simplez  s*   





r   c               	   C   s   t  } zRttdd}t| d}t|| t| t|| t| t| t	|d}t|| |
d |  t	|d}t| |
d |  W t|  d S t|  w )N)rJ   rJ   rv   za.matr   r   rx   )r   r   r    r   r   r   osunlinkr   r   r   r   r   r   )r   rv   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   rx   Tr   )
r   r   r   r   r   r   assert_raisesNotImplementedErrorr   r   )	filenamesfilenamefpr%   r%   r&   
test_mat73  s   

r   c                  C   sZ   t td} t  td t| dd t| dd W d    d S 1 s&w   Y  d S )Nztestdouble_7.1_GLNX86.materrorTr   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 u  d S )Ndr,   rJ   r   r   rM   r>   	r   r   r   r
   r!   r+   r    rZ   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   rC   rM   r*   
longstructr   r   r,   r    r   rZ   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 )NrM   my_fieldnamer*   	my_structr   Tr   long_field_names)r    r   rZ   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?   rC   rM   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   rC   re   r*   rM   r>   rf   r   r   Tr   F)r    r   rZ   r   r   r   r   r   )r   r   rK   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 )Nre   r*   Hellor>   Worldrf   rv   r   r   rM   zHello, world)r    r   rZ   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 )NavarFT)r   r   r
   global_varsunicode_stringsr   )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
   aaaaar   aaaar(   aaaaaa)
r   r   r    r   put_variablesr   getvaluetruncater   r   )r   wtrr$   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 ])}|ddg}t }t|d|i |d t|d }t	|j
jd	 t||  qd S )
Nre   rC   br*   )rC   r,   )r  rJ   r   r   rC   r  )r    r   rZ   r   r   r   r   r   r   r
   r+   namesr   )ab_exp	dict_typer   streamvalsr%   r%   r&   test_save_dict:  s   
r  c                  C   s   t d} dD ]L}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 )
Nr8   r   onedr   )r,   r8   column)r   oned_as)r8   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   )r8   r   r,   )rJ   r  r$   T)do_compressionr>   )r$   arr2Fr&  )r    r   reshaper   r   r   r  r   r   r   copy)r$   r  raw_lenr  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   rZ   )r  r%   r%   r&   test_single_object}  s   r-  c                  C   sb   t td} t| dd}td|v  td|v  t| dd\}}|d}td|v  |j  d S )Nztest_skip_variable.matTr   firstsecond)r   r   r   r   r   get_variablesr   r   )r   r   factoryfile_openedr%   r%   r&   test_skip_variable  s   

r3  c                  C   s   t td} t| dd}|d }t|jd t|jtt t|d d u  t	 }tj
ddd	}t|d
|i t|}|d
 }t|| d S )Nztest_empty_struct.matTr   rC   rM   r>   r%   Ur*   r$   )r   r   r   r
   r!   r+   r    rZ   r   r   r   r   r   )r   r   rC   r  r$   a2r%   r%   r&   test_empty_struct  s   
r6  c                  C   sV   t  } t| di i t| }|d }t|jd t|jtt t|d d u  d S )Nr$   rM   r>   r   )r  r   rC   r%   r%   r&   test_save_empty_dict  s   r7  c                 C   s0   d}|D ]}t | |krd} nqt| dS )zH Assert `output` is equal to at least one element in `alternatives`
    FTN)r    allr   )outputalternatives	one_equalr1   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 u  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u  tt t d u  G dd d}tt | tu  t ddid } t| jd t| j	j
tj tt dditu  tt dditu  tt dddtjdgdgd d S )Nr,   )r,   re   )rC   |O8)r  r=  r*   )rJ   r,   rJ   r  r7   )rC   r  _c)rC   r  r$  )rC   r  99c                   @      e Zd ZdS )z test_to_writeable.<locals>.klassN__name__
__module____qualname__r%   r%   r%   r&   klass      rE  r   r%   a stringc                   @   r@  )ztest_to_writeable.<locals>.CNrA  r%   r%   r%   r&   C  rF  rI  rC   1_a)rJ  r   rJ   )r   r=  )r   r    r   r
   r!   r   r<  rC   r  r+   r   float64r   str_r   rZ   object_)res	expected1	expected2r:  rE  crI  r%   r%   r&   test_to_writeable  sN   

rT  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)f2S10rL  r*   g      ?r   rU  pythonrW  c   r,   znot perlr$   Fr   r>   T)rU  O)rW  r[  )
r    r   r   r   r   r
   rU  rW  r+   flat)dtr$   r  r   a20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                   @   r@  )ztest_save_object.<locals>.CNrA  r%   r%   r%   r&   rI  $  rF  rI  r,   rH  rS  Fr   r>   Tfield1field2)ra  rb  r   r   r   r
   )rI  rS  r  r   c2r%   r%   r&   test_save_object#  s   rd  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 )Nr9   r,   rC   T
squeeze_me)r9   F)
byte_orderrH  r   )chars_as_stringsU1r*   )r    r"  r'  r   r   r   r0  r   rf  bocnative_codeswapped_coder   	Exceptionrg  r   r  r   
atleast_2dlistr   rh  )r$   r  rdr	back_dictrarrcarrr%   r%   r&   test_read_opts5  s8   



rt  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.matrx   rC   ri  r*    r   )r   r   r   r   r0  r   r   r    r   r   r   r  r   )estring_fnamer   rp  r   r  r%   r%   r&   test_empty_stringX  s$   



rw  c               	   C   sl   dd l } tdf| jdffD ]&\}}ttt|d}t|}t||j W d    n1 s.w   Y  qd S )Nr   corrupted_zlib_data.matzcorrupted_zlib_checksum.matrx   )	zlibr   r   r   r   r   r   r   r0  )ry  excr   r   rp  r%   r%   r&   test_corrupted_datas  s   r{  c                  C   sJ   t ttdd} t| dd}|  W d    d S 1 sw   Y  d S )Nrx  rx   F) verify_compressed_data_integrity)r   r   r   r   r0  )r   rp  r%   r%   r&   )test_corrupted_data_check_can_be_disabled|  s   
"r}  c                  C   s|   dD ]9} 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.matrx   stringshelloworldr*   floats       @      @      @)r   r   r   r   r0  r   r   r    r   rZ   float32)r   r   rp  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  r9   r   r  r  r4  r*   )r  intsuni_arrr  r  r  )r    r   r"  r'  r   r   byteswapnewbyteorderr   r0  r   r   )	float_arrint_arrr  r  rp  r   r%   r%   r&   test_write_opposite_endian  s    


r  c                  C   s   t ttdd} t| dd}| }W d    n1 sw   Y  tjdgdggtjd}t|d | t	|d j
|j
 d S )Nztestbool_8_WIN64.matrx   T	mat_dtypeFr*   r|   )r   r   r   r   r0  r    r   r   r   r
   r+   )fobjrp  r   rv   r%   r%   r&   test_logical_array  s   
r  c                  C   s   t  } tg d}t| d|i | d t| }|  |  | \}}t	|j
tj t	|jd ||d}t	|jjtj d S )N)FTFbarrayr   TF)r   r    r   r   r   r   initialize_readread_file_headerread_var_headerr
   mclassmio5pmxUINT8_CLASS
is_logicalread_var_arrayr+   r   uint8)r  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sJ d S )Nr   )r  r   )r   r   r    emptyr   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   )rJ   r7   r(   rC   Tr   )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|}| }|  t|d tsJ t }t	|}t
t|j| d S )Nztestfunc_7.4_GLNX86.matrx   testfunc)r   r   r   r   r0  r   r   r   r   r   r   r   r  )func_egr   rp  r   r  r  r%   r%   r&   test_func_read  s   

r  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.matrx   Fr  r;   uTr   )	r   r   r   r   r0  r   r
   r+   kind)	double_egr   rp  r   r%   r%   r&   test_mat_dtype  s   


r  c                  C   sX   dt tdi} t }t|d| i t|dd}t|d d d  td d S )Nsparsefieldr(   rC   Tr   r>   )	r   
coo_matrixr    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,   rJ   ri   Fr   T)r   rf  )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 )N皙?zmy namer,   rJ   ri   )scalarr2   r  Tre  r  r2   r  )	r   r   r   r   r   floatr   r    r   )r  r  out_dr%   r%   r&   test_scalar_squeeze  s   
r  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  FoobzFoob )rC   rC   r   F)order)r!   r+   r  bufferr4  )r   r    r   r   r   r   r   r  r   tobytesr   rC   r!   r+   astype)r  in_arrout_arrrP  in_strin_from_strin_arr_u	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 )NrC   r,   rJ   r  )r   r   r   r+   r  r
   set)r  rP  field_namesr%   r%   r&   test_fieldnames$  s
   r  c                  C   s<  g d} 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__
__header____version__ztestmulti_4.2c_SOL2.matztestmulti_7.4_GLNX86.matrC   rB   )variable_names)rB   )r   r   r   r
   r  keys)mat5_sys_nameseg_filesys_v_namesvarsvnamesr%   r%   r&   test_loadmat_varnames-  s.   r  c                  C   sd   t d} t }dD ]%}|d |d t|d| |i t|}tt 	||d j	 q
d S )Nr  )rV  f4i8i4i2i1u8u4u2u1c16c8r   r$   )
r    r"  r   r  r   r   r  r   r
   r+   )r$   r  dtsr  r%   r%   r&   test_round_typesF  s   


r  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
|| | q5d S )	Nr$   r  mystrrH  mynumc                       s   e Zd Z fddZdS )z test_varmats_from_mat.<locals>.Cc                    s    S r   r%   )self
names_varsr%   r&   r   [  s   z&test_varmats_from_mat.<locals>.C.itemsN)rB  rC  rD  r   r%   r  r%   r&   rI  Z  s    rI  r7   )r'   r    r"  r   r   r   r
   r   ranger   r   )	rI  r  varmatsr   r/   
var_streamexp_nameexp_resrP  r%   r  r&   test_varmats_from_matS  s    


r  c                  C   s@   t td} t| d}t|}| }|  t|d jd d S )Nzone_by_zero_char.matrx   r  rG  )r   r   r   r   r0  r   r
   r!   )r  r   rp  r   r%   r%   r&   test_one_by_zeroi  s   

r  c                  C   s*   t td} t| }t|d ddgg d S )Nztest_mat4_le_floats.matrC   r  g333333?)r   r   r   r   )
mat4_fnamer  r%   r%   r&   test_load_mat4_les  s   
r  c                  C   s:   t  } ddi}t| |dd t| }t|d |d  d S )N
second_catu   Schrödingerr   r   )r   r   r   r
   )bior  var_backr%   r%   r&   test_unicode_mat4{  s
   r  c                  C   sn   t td} t| dd}|d }tt|tj t|jj	t
j t| g dg dg dg dg dg d S )Nzlogical_sparse.matTr   
sp_log_5_4)TTTF)FFTF)FFFF)r   r   r   r   r   r   r   r
   r+   r   r    r   r   r   )r   r   log_spr%   r%   r&   test_logical_sparse  s   
r  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   rv   r,   )r   scipy.sparser<   
csr_matrixr   r   r   r   r   r!   r   r   r  r  r  r
   nzmax)r   scipyempty_sparserP  r  r  r  r%   r%   r&   test_empty_sparse  s   

r  c                  C   s   t  } ttt|  d S r   )r   r   r   r   )r   r%   r%   r&   test_empty_mat_error  s   r  c                  C   sr   t td} t| }t|d tdd d d f  t td} tt t|  W d    d S 1 s2w   Y  d S )Nzmiuint32_for_miint32.matan_arrayr  zbad_miuint32.mat)r   r   r   r
   r    r"  r   r   r   rP  r%   r%   r&   test_miuint32_compromise  s   
 


"r  c                  C   sd   t td} t| }t|d dgg t td} tt t|  W d    d S 1 s+w   Y  d S )Nzmiutf8_array_name.mat
array_namer,   zbad_miutf8_array_name.mat)r   r   r   r
   r   r   r  r%   r%   r&   !test_miutf8_for_miint8_compromise  s   



"r  c                  C   s,   t td} t| }t|d ddd d S )Nzbroken_utf8.mat
bad_strings    am brokenutf8replace)r   r   r   r
   decoder  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.matrC   r,   test_str)r  rS  )r   pathr   r   r   )r   r   	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.matNotExistentFile00)r   OSErrorr   r%   r%   r%   r&   test_filenotfound  s   r  c                  C   sh   t td} t| dd}t| dd}tt|d t tt|d tj t|d d t	g d d S )Nztestsimplecell.matT)simplify_cellsFsmycell)rC   r  rS  )
r   r   r   r   r   r   r    r   r   r   )r   res1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).)*$)rJ   r  z.*hdf5.*)r,   z8*_*Nc                    sr   t td| }t|} d ur fdd|D }t|dks&J d| |f |D ]}t|}|d | ks6J q(d S )Nztest*%s.matc                    s    g | ]}t  |d ur|qS r   )rematch)r\   fileregexr%   r&   r^     s     z(test_matfile_version.<locals>.<listcomp>r   z'No files for version %s using filter %s)r   r   r   r   r   )rt   r   r  r   r   r  got_versionr%   r  r&   test_matfile_version  s   	
r  c                  C   sF   t ttd} t| d tsJ t| d  d  d ts!J dS )z,Test that we can read a MatlabOpaque object.zparabola.matparabolar7   N)r   r   r   r   r   r   r   )r   r%   r%   r&   test_opaque  s   &r  c                  C   sn   t t tjjjj W d   n1 sw   Y  t t ddlm}  W d   dS 1 s0w   Y  dS )z4Test that access to previous attributes still works.Nr   r   )	r   DeprecationWarningr  iomatlabmio5_paramsr   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   numpy.testingr   r	   r
   r   r   pytestr   r   numpyr    r   r  r<   r   scipy.ior  scipy.io.matlabr   r   r   scipy.io.matlab._byteordercodesr!  _byteordercodesrj  scipy.io.matlab._miobaser   r   r   r   scipy.io.matlab._mior   r   r   r   scipy.io.matlab._mio5r   r   r   r   r   scipy.io.matlab._mio5_params_mio5_paramsr  __file__r   r'   pir"  r  r'  rB   r   appendcossinr   r,  ro  r  r  r  r5   BrZ   CAr   CAEr  objarr	transposesqrtexp
st_sub_arrr+   r   CNr  st2rC   ODTMOm0r   fp_u_strreadr  u_strr   r   repeatr   r   r   r   r   r   markparametrizer   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r#  r+  r-  r3  r6  r7  r<  rT  r`  rd  rt  rw  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&   <module>   s~   


$
/




?#	


	
	
