U
    /d	                     @   s   d dl Z d dlZd dlZd dlmZ d dlmZm	Z	 d dl
mZmZmZmZmZmZmZmZ e je j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S )    N)raises)assert_equalassert_)
csc_matrix
csr_matrix
bsr_matrix
dia_matrix
coo_matrixsave_npzload_npz
dok_matrixdatac              	   C   sB   t jdd\}}t| zt||  t|}W 5 t| X |S )N.npzsuffix)tempfilemkstemposcloseremover
   r   )matrixfdtmpfileloaded_matrix r   E/tmp/pip-unpacked-wheel-9gxwnfpp/scipy/sparse/tests/test_matrix_io.py_save_and_load   s    

r   c                 C   sf   t ttttfD ]R}|| }t|}tt||k t|j| jk t|j	| j	k t
| |  qd S )N)r   r   r   r   r	   r   r   typeshapeZdtyper   toarray)dense_matrixZmatrix_classr   r   r   r   r   _check_save_and_load   s    r!   c                  C   s8   d} t jd t j| | f}d||dk< t| d S )N
   r   gffffff?)nprandomseedr!   )Nr    r   r   r   test_save_and_load_random"   s
    r'   c                  C   s   t d} t|  d S )N      r#   zerosr!   r    r   r   r   test_save_and_load_empty)   s    
r.   c                  C   s   t d} d| d< t|  d S )Nr(      )r/      r+   r-   r   r   r   test_save_and_load_one_entry-   s    
r1   c               	   C   sZ   G dd d} t jdd\}}t| z tj||  d ttt	| W 5 t| X d S )Nc                   @   s   e Zd Zdd ZdS )z%test_malicious_load.<locals>.Executorc                 S   s   t dfS )N)Fzunexpected code execution)r   )selfr   r   r   
__reduce__5   s    z0test_malicious_load.<locals>.Executor.__reduce__N)__name__
__module____qualname__r3   r   r   r   r   Executor4   s   r7   r   r   )format)
r   r   r   r   r   r#   Zsavezassert_raises
ValueErrorr   )r7   r   r   r   r   r   test_malicious_load3   s    
r;   c                  C   sX   t tjtd} t tjtd}tdgg}t|  |  t| |  d S )Nzcsc_py2.npzzcsc_py3.npzr   )r   r   pathjoinDATA_DIRr   r   r   )abcr   r   r   test_py23_compatibilityC   s
    rB   c                  C   s"   t d} d| d< tttd|  d S )N)r0      r/   )r   r/   zx.npz)r   r9   NotImplementedErrorr
   )xr   r   r   test_implemented_errorO   s    rF   ) r   Znumpyr#   r   Zpytestr   r9   Znumpy.testingr   r   Zscipy.sparser   r   r   r   r	   r
   r   r   r<   r=   dirname__file__r>   r   r!   r'   r.   r1   r;   rB   rF   r   r   r   r   <module>   s   (
	