3
Pd;`                 @   s  d dl mZmZ d dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
 d dlmZmZmZ d dlZd dlmZ d dlZd dlmZmZmZ d#d$gZG dd deZG dd deZdZdZdZdZdZ dZ!dZ"dZ#G dd deZ$dZ%dZ&dZ'dZ(dZ)dZ*G dd  d eZ+d!d" Z,dS )%    )mkdtempmktempN)array	transposepi)assert_equalassert_array_equalassert_array_almost_equal)raises)mminfommreadmmwriteintegerintunsigned-integeruintc               @   s   e Zd Zdd Zdd Zdd Zdd Zejj	d	e
d
d Zejj	d	e
dd Zdd Zdd Zejj	d	e
dd Zejj	d	e
dd Zejj	d	e
dd Zdd Zdd Zdd Zejj	d	e
dd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*S )+TestMMIOArrayc             C   s   t  | _tjj| jd| _d S )Nztestfile.mtx)r   tmpdirospathjoinfn)self r   L/var/www/html/virt/lib64/python3.6/site-packages/scipy/io/tests/test_mmio.pysetup_method   s    zTestMMIOArray.setup_methodc             C   s   t j| j d S )N)shutilrmtreer   )r   r   r   r   teardown_method   s    zTestMMIOArray.teardown_methodc             C   s4   t | j| tt| j| t| j}t|| d S )N)r   r   r   r   r   r	   )r   ainfobr   r   r   check   s    
zTestMMIOArray.checkc             C   s4   t | j| tt| j| t| j}t|| d S )N)r   r   r   r   r   )r   r   r    r!   r   r   r   check_exact"   s    
zTestMMIOArray.check_exactztypeval, dtypec             C   s0   | j tddgddgg|ddddd|df d S )N            )dtyper   general)r#   r   )r   typevalr(   r   r   r   test_simple_integer(   s    z!TestMMIOArray.test_simple_integerc             C   s4   t d
dgddgg|d}| j|dddd|df d S )Nr%      r$   r&   r'   )r(   r   r)   l        il        il        il        i)r   r#   )r   r*   r(   r   r   r   r   test_32bit_integer-   s    z TestMMIOArray.test_32bit_integerc             C   sL   t ddgddggtjd}tjdjdk r<ttt| j| n| j	|d d S )Nr%   r,       ?   r$   )r(   r      r'   r   r   r)   l        l        l            l    l            l    )r%   r%   r'   r   r   r)   )
r   npint64intpitemsizeassert_raisesOverflowErrorr   r   r#   )r   r   r   r   r   test_64bit_integer2   s    z TestMMIOArray.test_64bit_integerc             C   s*   t ddgddggtjd}| j|d d S )Nr%   r,   r.   @   r$   )r(   r'   r   unsigned-integerr)   l        l        l            l    l            l    )r%   r%   r'   r   r9   r)   )r   r1   uint64r#   )r   r   r   r   r   test_64bit_unsigned_integer9   s    z)TestMMIOArray.test_64bit_unsigned_integerc             C   s0   | j tddgddgg|ddddd|df d S )Nr   r$   )r(   r%   r'   r   r)   )r#   r   )r   r*   r(   r   r   r   "test_simple_upper_triangle_integer=   s    z0TestMMIOArray.test_simple_upper_triangle_integerc             C   s0   | j tddgddgg|ddddd|df d S )Nr   r$   )r(   r%   r'   r   r)   )r#   r   )r   r*   r(   r   r   r   "test_simple_lower_triangle_integerB   s    z0TestMMIOArray.test_simple_lower_triangle_integerc             C   s4   | j tdddgdddgg|ddddd|d	f d S )
Nr$   r%   r&   r'         )r(   r   r)   )r#   r   )r   r*   r(   r   r   r   test_simple_rectangular_integerG   s    z-TestMMIOArray.test_simple_rectangular_integerc             C   s"   | j ddgddgddggd d S )Nr$   r%   g      @r'   r>   r?   r&   r   realr)   )r&   r%   r?   r   rA   r)   )r"   )r   r   r   r   test_simple_rectangular_floatL   s    z+TestMMIOArray.test_simple_rectangular_floatc             C   s   | j ddgddggd	 d S )
Nr$   r%   r&   g      @r'   r   rA   r)   )r%   r%   r'   r   rA   r)   )r"   )r   r   r   r   test_simple_floatP   s    zTestMMIOArray.test_simple_floatc             C   s   | j ddgddggd	 d S )
Nr$   r%   r&   y              @r'   r   complexr)   )r%   r%   r'   r   rD   r)   )r"   )r   r   r   r   test_simple_complexT   s    z!TestMMIOArray.test_simple_complexc             C   s0   | j tddgddgg|ddddd|df d S )Nr$   r%   r'   )r(   r   	symmetric)r#   r   )r   r*   r(   r   r   r   test_simple_symmetric_integerX   s    z+TestMMIOArray.test_simple_symmetric_integerc             C   s   | j ddgddggd d S )	Nr   r%   r'   r   r   skew-symmetric)r%   r%   r'   r   r   rH   )r#   )r   r   r   r   "test_simple_skew_symmetric_integer]   s    z0TestMMIOArray.test_simple_skew_symmetric_integerc             C   s"   | j tddgd
dggdd d S )Nr   r%   g       @g        fr'   r   rA   skew-symmetricg       )r%   r%   r'   r   rA   rL   )r"   r   )r   r   r   r    test_simple_skew_symmetric_floata   s    z.TestMMIOArray.test_simple_skew_symmetric_floatc             C   s   | j ddgd	dggd
 d S )Nr$   r%   y              @r'   r   rD   	hermitiany       @      @y       @      )r%   r%   r'   r   rD   rN   )r"   )r   r   r   r   test_simple_hermitian_complexe   s    z+TestMMIOArray.test_simple_hermitian_complexc             C   s,   d}t jj|}|t| }| j|d d S )N     r   rA   rF   )rP   rP   )rP   rP   rQ   r   rA   rF   )r1   randomr   r"   )r   szr   r   r   r   test_random_symmetric_floati   s    z)TestMMIOArray.test_random_symmetric_floatc             C   s    d}t jj|}| j|d d S )	NrP      ,  r   rA   r)   )rP   rU   )rP   rU   rV   r   rA   r)   )r1   rR   r"   )r   rS   r   r   r   r   test_random_rectangular_floato   s    z+TestMMIOArray.test_random_rectangular_floatN)__name__
__module____qualname__r   r   r"   r#   pytestmarkparametrizeparametrize_argsr+   r-   r7   r;   r<   r=   r@   rB   rC   rE   rG   rJ   rM   rO   rT   rW   r   r   r   r   r      s(   r   c               @   s  e Zd Zdd Zdd Zdd Zdd Zejj	d	e
d
d Zdd Zdd Zdd Zdd Zejj	d	e
dd Zejj	d	e
dd Zejj	d	e
dd Zdd Zdd Zdd Zejj	d	e
d d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.S )/TestMMIOSparseCSRc             C   s   t  | _tjj| jd| _d S )Nztestfile.mtx)r   r   r   r   r   r   )r   r   r   r   r   v   s    zTestMMIOSparseCSR.setup_methodc             C   s   t j| j d S )N)r   r   r   )r   r   r   r   r   z   s    z!TestMMIOSparseCSR.teardown_methodc             C   s<   t | j| tt| j| t| j}t|j |j  d S )N)r   r   r   r   r   r	   todense)r   r   r    r!   r   r   r   r"   }   s    
zTestMMIOSparseCSR.checkc             C   s<   t | j| tt| j| t| j}t|j |j  d S )N)r   r   r   r   r   r`   )r   r   r    r!   r   r   r   r#      s    
zTestMMIOSparseCSR.check_exactztypeval, dtypec             C   s4   | j tjjddgddgg|ddddd|df d S )Nr$   r%   r&   r'   )r(   
coordinater)   )r#   scipysparse
csr_matrix)r   r*   r(   r   r   r   r+      s    z%TestMMIOSparseCSR.test_simple_integerc             C   s2   t jjtddgddggtjd}| j|d d S )Nr%   r,   r$   r&   r'   )r(   ra   r   r)   l        il        i   i  l        il        i)r%   r%   r'   ra   r   r)   )rb   rc   rd   r   r1   Zint32r#   )r   r   r   r   r   r-      s    z$TestMMIOSparseCSR.test_32bit_integerc             C   sT   t jjtddgddggtjd}tjdjdk rDtt	t
| j| n| j|d d S )Nr%   r.   r$   r/   )r(   r   r0   r'   ra   r   r)   l        l       l        l       l            l         l l            l    )r%   r%   r'   ra   r   r)   )rb   rc   rd   r   r1   r2   r3   r4   r5   r6   r   r   r#   )r   r   r   r   r   r7      s    z$TestMMIOSparseCSR.test_64bit_integerc             C   s2   t jjtddgddggtjd}| j|d d S )Nr%   r,   r$   r&   r'   )r(   ra   unsigned-integerr)   l        il        il        il        i)r%   r%   r'   ra   re   r)   )rb   rc   rd   r   r1   Zuint32r#   )r   r   r   r   r   test_32bit_unsigned_integer   s    z-TestMMIOSparseCSR.test_32bit_unsigned_integerc             C   s2   t jjtddgddggtjd}| j|d d S )Nr%   r.   r$   r8   )r(   r'   ra   unsigned-integerr)   l        l       l        l       l            l    l            l    )r%   r%   r'   ra   rg   r)   )rb   rc   rd   r   r1   r:   r#   )r   r   r   r   r   r;      s    z-TestMMIOSparseCSR.test_64bit_unsigned_integerc             C   s4   | j tjjddgddgg|ddddd|df d S )Nr   r$   )r(   r%   ra   r)   )r#   rb   rc   rd   )r   r*   r(   r   r   r   r<      s    z4TestMMIOSparseCSR.test_simple_upper_triangle_integerc             C   s4   | j tjjddgddgg|ddddd|df d S )Nr   r$   )r(   r%   ra   r)   )r#   rb   rc   rd   )r   r*   r(   r   r   r   r=      s    z4TestMMIOSparseCSR.test_simple_lower_triangle_integerc             C   s8   | j tjjdddgdddgg|ddddd|d	f d S )
Nr$   r%   r&   r'   r>   r?   )r(   ra   r)   )r#   rb   rc   rd   )r   r*   r(   r   r   r   r@      s    "z1TestMMIOSparseCSR.test_simple_rectangular_integerc             C   s*   | j tjjddgddgddggd d S )Nr$   r%   g      @r'   r>   r?   r&   ra   rA   r)   )r&   r%   r?   ra   rA   r)   )r"   rb   rc   rd   )r   r   r   r   rB      s     z/TestMMIOSparseCSR.test_simple_rectangular_floatc             C   s$   | j tjjddgddggd	 d S )
Nr$   r%   r&   g      @r'   ra   rA   r)   )r%   r%   r'   ra   rA   r)   )r"   rb   rc   rd   )r   r   r   r   rC      s    z#TestMMIOSparseCSR.test_simple_floatc             C   s$   | j tjjddgddggd	 d S )
Nr$   r%   r&   y              @r'   ra   rD   r)   )r%   r%   r'   ra   rD   r)   )r"   rb   rc   rd   )r   r   r   r   rE      s    z%TestMMIOSparseCSR.test_simple_complexc             C   s4   | j tjjddgddgg|ddddd|df d S )Nr$   r%   r'   )r(   r&   ra   rF   )r#   rb   rc   rd   )r   r*   r(   r   r   r   rG      s    z/TestMMIOSparseCSR.test_simple_symmetric_integerc             C   s$   | j tjjddgddggd	 d S )
Nr$   r%   r'   r&   ra   r   skew-symmetricrI   )r%   r%   r&   ra   r   rh   )r#   rb   rc   rd   )r   r   r   r   rJ      s    z4TestMMIOSparseCSR.test_simple_skew_symmetric_integerc             C   s*   | j tjjtddgd
dggdd d S )Nr$   r%   g       @r'   rK   r&   ra   rA   skew-symmetricg       )r%   r%   r&   ra   rA   ri   )r"   rb   rc   rd   r   )r   r   r   r   rM      s     z2TestMMIOSparseCSR.test_simple_skew_symmetric_floatc             C   s$   | j tjjdd	gd
dggd d S )Nr$   r%   y              @r'   r&   ra   rD   rN   y       @      @y       @      )r%   r%   r&   ra   rD   rN   )r"   rb   rc   rd   )r   r   r   r   rO      s    z/TestMMIOSparseCSR.test_simple_hermitian_complexc             C   s8   d}t jj|}|t| }tjj|}| j|d d S )NrP      ra   rA   rF   )rP   rP   )rP   rP   rj   ra   rA   rF   )r1   rR   r   rb   rc   rd   r"   )r   rS   r   r   r   r   rT      s
    z-TestMMIOSparseCSR.test_random_symmetric_floatc             C   s,   d}t jj|}tjj|}| j|d d S )	NrP   rU   ,  ra   rA   r)   )rP   rU   )rP   rU   rk   ra   rA   r)   )r1   rR   rb   rc   rd   r"   )r   rS   r   r   r   r   rW      s    z/TestMMIOSparseCSR.test_random_rectangular_floatc             C   sv   t jjddgddgg}tj|j }d||j dk< d}t| j|d	d tt	| j| t
| j}t||j  d S )Nr   g      ?g      @g      @r$   r%   r&   ra   patternr)   )field)r%   r%   r&   ra   rl   r)   )rb   rc   rd   r1   Z
zeros_liker`   r   r   r   r   r   r	   )r   r   pr    r!   r   r   r   test_simple_pattern   s    
z%TestMMIOSparseCSR.test_simple_patternN)rX   rY   rZ   r   r   r"   r#   r[   r\   r]   r^   r+   r-   r7   rf   r;   r<   r=   r@   rB   rC   rE   rG   rJ   rM   rO   rT   rW   ro   r   r   r   r   r_   u   s,   	r_   z]%%MatrixMarket matrix array integer general
2  2
2147483647
2147483646
2147483647
2147483646
z]%%MatrixMarket matrix coordinate integer symmetric
2  2  2
1  1  2147483647
2  2  2147483646
z%%MatrixMarket matrix array integer general
2  2
          2147483648
-9223372036854775806
         -2147483648
 9223372036854775807
z%%MatrixMarket matrix coordinate integer general
2  2  3
1  1           2147483648
1  2  9223372036854775807
2  2  9223372036854775807
z%%MatrixMarket matrix coordinate integer symmetric
2  2  3
1  1            2147483648
1  2  -9223372036854775807
2  2   9223372036854775807
z%%MatrixMarket matrix coordinate integer skew-symmetric
2  2  3
1  1            2147483648
1  2  -9223372036854775807
2  2   9223372036854775807
z%%MatrixMarket matrix array integer general
2  2
         2147483648
9223372036854775807
         2147483648
9223372036854775808
zq%%MatrixMarket matrix coordinate integer symmetric
2  2  2
1  1            2147483648
2  2  19223372036854775808
c               @   sd   e Z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 )TestMMIOReadLargeIntegersc             C   s   t  | _tjj| jd| _d S )Nztestfile.mtx)r   r   r   r   r   r   )r   r   r   r   r   /  s    z&TestMMIOReadLargeIntegers.setup_methodc             C   s   t j| j d S )N)r   r   r   )r   r   r   r   r   3  s    z)TestMMIOReadLargeIntegers.teardown_methodc       	      C   s~   t | jd}|j| W d Q R X tt| j| |rFtjdjdk sJ|rZtt	t
| j n t
| j}|sp|j }t|| d S )Nwr   r0   )openr   writer   r   r1   r3   r4   r5   r6   r   r`   )	r   exampler   r    denseover32over64rK   r!   r   r   r   
check_read6  s    
z$TestMMIOReadLargeIntegers.check_readc          	   C   s4   t ddgddggtjd}| jt|dd	d
d
d d S )Nr%   r,   r$   )r(   r'   r   r   r)   TF)ru   rv   rw   l        il        il        il        i)r%   r%   r'   r   r   r)   )r   r1   r2   rx   _32bit_integer_dense_example)r   r   r   r   r   test_read_32bit_integer_denseB  s    z7TestMMIOReadLargeIntegers.test_read_32bit_integer_densec          	   C   s4   t ddgddggtjd}| jt|dd	d	d	d
 d S )Nr%   r,   r$   r   )r(   ra   r   rF   F)ru   rv   rw   l        il        i)r%   r%   r%   ra   r   rF   )r   r1   r2   rx   _32bit_integer_sparse_example)r   r   r   r   r   test_read_32bit_integer_sparseL  s    z8TestMMIOReadLargeIntegers.test_read_32bit_integer_sparsec          	   C   s4   t ddgddggtjd}| jt|dd
d
dd d S )Nr%   r,   r/   r$   )r(   r'   r   r   r)   TF)ru   rv   rw   l        l        i   l            l         l l            l    )r%   r%   r'   r   r   r)   )r   r1   r2   rx   _64bit_integer_dense_example)r   r   r   r   r   test_read_64bit_integer_denseV  s    z7TestMMIOReadLargeIntegers.test_read_64bit_integer_densec          	   C   s4   t ddgddggtjd}| jt|ddddd d S )Nr%   r,   r/   r$   r   )r(   r&   ra   r   r)   FT)ru   rv   rw   l        l            l    l            l    )r%   r%   r&   ra   r   r)   )r   r1   r2   rx   %_64bit_integer_sparse_general_example)r   r   r   r   r   &test_read_64bit_integer_sparse_general`  s    z@TestMMIOReadLargeIntegers.test_read_64bit_integer_sparse_generalc          	   C   s4   t ddgddggtjd}| jt|dd
dd
d d S )Nr%   r,   r/   r$   )r(   r&   ra   r   rF   FT)ru   rv   rw   l        l            l         l l            l         l l            l    )r%   r%   r&   ra   r   rF   )r   r1   r2   rx   '_64bit_integer_sparse_symmetric_example)r   r   r   r   r   (test_read_64bit_integer_sparse_symmetricj  s    zBTestMMIOReadLargeIntegers.test_read_64bit_integer_sparse_symmetricc          	   C   s4   t ddgddggtjd}| jt|dd
dd
d d S )Nr%   r,   r/   r$   )r(   r&   ra   r   skew-symmetricFT)ru   rv   rw   l        l            l         l l            l    l            l    )r%   r%   r&   ra   r   r   )r   r1   r2   rx   "_64bit_integer_sparse_skew_example)r   r   r   r   r   #test_read_64bit_integer_sparse_skewt  s    z=TestMMIOReadLargeIntegers.test_read_64bit_integer_sparse_skewc          	   C   s   | j td ddddd d S )	Nr%   r'   r   r   r)   T)ru   rv   rw   )r%   r%   r'   r   r   r)   )rx    _over64bit_integer_dense_example)r   r   r   r   !test_read_over64bit_integer_dense~  s    z;TestMMIOReadLargeIntegers.test_read_over64bit_integer_densec          	   C   s   | j td ddddd d S )	Nr%   ra   r   rF   FT)ru   rv   rw   )r%   r%   r%   ra   r   rF   )rx   !_over64bit_integer_sparse_example)r   r   r   r   "test_read_over64bit_integer_sparse  s    z<TestMMIOReadLargeIntegers.test_read_over64bit_integer_sparseN)rX   rY   rZ   r   r   rx   rz   r|   r~   r   r   r   r   r   r   r   r   r   rp   .  s   





rp   a&  %%MatrixMarket matrix coordinate real general
%=================================================================================
%
% This ASCII file represents a sparse MxN matrix with L
% nonzeros in the following Matrix Market format:
%
% +----------------------------------------------+
% |%%MatrixMarket matrix coordinate real general | <--- header line
% |%                                             | <--+
% |% comments                                    |    |-- 0 or more comment lines
% |%                                             | <--+
% |    M  N  L                                   | <--- rows, columns, entries
% |    I1  J1  A(I1, J1)                         | <--+
% |    I2  J2  A(I2, J2)                         |    |
% |    I3  J3  A(I3, J3)                         |    |-- L lines
% |        . . .                                 |    |
% |    IL JL  A(IL, JL)                          | <--+
% +----------------------------------------------+
%
% Indices are 1-based, i.e. A(1,1) is the first element.
%
%=================================================================================
  5  5  8
    1     1   1.000e+00
    2     2   1.050e+01
    3     3   1.500e-02
    1     4   6.000e+00
    4     2   2.505e+02
    4     4  -2.800e+02
    4     5   3.332e+01
    5     5   1.200e+01
a   %%MatrixMarket matrix coordinate complex hermitian
  5  5  7
    1     1     1.0      0
    2     2    10.5      0
    4     2   250.5     22.22
    3     3     1.5e-2   0
    4     4    -2.8e2    0
    5     5    12.       0
    5     4     0       33.32
z%%MatrixMarket matrix coordinate real skew-symmetric
  5  5  7
    1     1     1.0
    2     2    10.5
    4     2   250.5
    3     3     1.5e-2
    4     4    -2.8e2
    5     5    12.
    5     4     0
z%%MatrixMarket matrix coordinate real symmetric
  5  5  7
    1     1     1.0
    2     2    10.5
    4     2   250.5
    3     3     1.5e-2
    4     4    -2.8e2
    5     5    12.
    5     4     8
z%%MatrixMarket matrix coordinate pattern symmetric
  5  5  7
    1     1
    2     2
    4     2
    3     3
    4     4
    5     5
    5     4
a  %%MatrixMarket  MATRIX    Coordinate    Real General

   5  5         8

1 1  1.0
2 2       10.5
3 3             1.5e-2
4 4                     -2.8E2
5 5                              12.
     1      4      6
     4      2      250.5
     4      5      33.32

c               @   s   e Z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d Zdd Zdd Zdd Zdd  Zd!S )"TestMMIOCoordinatec             C   s   t  | _tjj| jd| _d S )Nztestfile.mtx)r   r   r   r   r   r   )r   r   r   r   r     s    zTestMMIOCoordinate.setup_methodc             C   s   t j| j d S )N)r   r   r   )r   r   r   r   r     s    z"TestMMIOCoordinate.teardown_methodc             C   sJ   t | jd}|j| |j  tt| j| t| jj }t|| d S )Nrq   )	rr   r   rs   closer   r   r   r`   r	   )r   rt   r   r    rK   r!   r   r   r   rx     s    
zTestMMIOCoordinate.check_readc          	   C   sR   dddddgdddddgdddddgdddddgddddd	gg}| j t|d d S )Nr$   r   r?   g      %@gQ?g     Po@i  g)\@@   r>   r0   ra   rA   r)   i)r>   r>   r0   ra   rA   r)   )rx   _general_example)r   r   r   r   r   test_read_general  s    z$TestMMIOCoordinate.test_read_generalc          	   C   sR   dddddgdddddgdddddgdddddgddddd	gg}| j t|d d S )Nr$   r   g      %@g     Po@y        Q86@gQ?i  y        )\@@r   r>      ra   rD   rN   y     Po@Q86y     Po@Q86@iy       )\@)r>   r>   r   ra   rD   rN   )rx   _hermitian_example)r   r   r   r   r   test_read_hermitian  s    z&TestMMIOCoordinate.test_read_hermitianc          	   C   sR   dddddgdddddgdddddgdddddgdddddgg}| j t|d d S )Nr$   r   g      %@g     Po@gQ?i  r   r>   r   ra   rA   skew-symmetricg     Poi)r>   r>   r   ra   rA   r   )rx   _skew_example)r   r   r   r   r   test_read_skew  s    z!TestMMIOCoordinate.test_read_skewc          	   C   sR   dddddgdddddgdddddgdddddgdddddgg}| j t|d d S )Nr$   r   g      %@g     Po@gQ?i  r0   r   r>   r   ra   rA   rF   i)r>   r>   r   ra   rA   rF   )rx   _symmetric_example)r   r   r   r   r   test_read_symmetric  s    z&TestMMIOCoordinate.test_read_symmetricc          	   C   sR   dddddgdddddgdddddgdddddgdddddgg}| j t|d d S )	Nr$   r   r>   r   ra   rl   rF   )r>   r>   r   ra   rl   rF   )rx   _symmetric_pattern_example)r   r   r   r   r   test_read_symmetric_pattern(  s    z.TestMMIOCoordinate.test_read_symmetric_patternc          	   C   sR   dddddgdddddgdddddgdddddgddddd	gg}| j t|d d S )Nr$   r   r?   g      %@gQ?g     Po@i  g)\@@r   r>   r0   ra   rA   r)   i)r>   r>   r0   ra   rA   r)   )rx   _empty_lines_example)r   r   r   r   r   test_read_empty_lines1  s    z(TestMMIOCoordinate.test_read_empty_linesc             C   sL   t jjd}t| j| tt| jd |j }t| jj }t	|| d S )N
   r   ra   rA   rF   )r   r   )r   r   r   ra   rA   rF   )
rb   rc   
coo_matrixr   r   r   r   r`   r   r	   )r   r!   r   r   r   r   test_empty_write_read:  s    
z(TestMMIOCoordinate.test_empty_write_readc       
      C   s   ydd l }W n tk
r    d S X tddddddddg}tddddddddg}tdddd	d
dddg}tjj|||ffdd}t| j| d| j }t| jd(}|j	|d}|j
|j  |j  W d Q R X t|j }	t|	|j  d S )Nr   r$   r%   r&   r'   g      ?g      @g      %@gQ?g     Po@g     q@g)\@@g      (@r>   )shapez%s.bz2rbwbg     q)r>   r>   )bz2ImportErrorr   rb   rc   r   r   r   rr   BZ2Filers   readr   r   r`   r	   )
r   r   IJVr!   Zfn_bzip2f_inf_outr   r   r   r   test_bzip2_py3F  s     
z!TestMMIOCoordinate.test_bzip2_py3c       
      C   s   ydd l }W n tk
r    d S X tddddddddg}tddddddddg}tdddd	d
dddg}tjj|||ffdd}t| j| d| j }t| jd(}|j|d}|j	|j
  |j  W d Q R X t|j }	t|	|j  d S )Nr   r$   r%   r&   r'   g      ?g      @g      %@gQ?g     Po@g     q@g)\@@g      (@r>   )r   z%s.gzr   r   g     q)r>   r>   )gzipr   r   rb   rc   r   r   r   rr   rs   r   r   r   r`   r	   )
r   r   r   r   r   r!   Zfn_gzipr   r   r   r   r   r   test_gzip_py3^  s     
z TestMMIOCoordinate.test_gzip_py3c          	   C   s   t ddddddddg}t ddddddddg}t dddd	d
dddg}tjj|||ffdd}t| j| tt| jd |j }t	| jj }t
|| d S )Nr   r$   r%   r&   r'   g      ?g      @g      %@gQ?g     Po@g     q@g)\@@g      (@r>   )r   r0   ra   rA   r)   g     q)r>   r>   )r>   r>   r0   ra   rA   r)   )r   rb   rc   r   r   r   r   r   r`   r   r	   )r   r   r   r   r!   r   r   r   r   test_real_write_readv  s    
z'TestMMIOCoordinate.test_real_write_readc          
   C   s   t ddddddddg}t ddddddddg}t dddd d!d#d$d%g}tjj|||ffd&d}t| j| tt| jd' |j }t	| jj }t
|| d S )(Nr   r$   r%   r&   r'   g      ?y              @g      @y               @g      %@y        ?gQ?y        @g     Po@y                g     q@y              @g)\@@y        @g      (@y        ?r>   )r   r0   ra   rD   r)   y      ?      @y      @       @y      %@?y       yQ?y     Po@        g     qy     q      @y)\@@@y      (@?)r>   r>   )r>   r>   r0   ra   rD   r)   )r   rb   rc   r   r   r   r   r   r`   r   r	   )r   r   r   r   r!   r   r   r   r   test_complex_write_read  s    

z*TestMMIOCoordinate.test_complex_write_readc       
   
   C   s   g }t ddddddddg}t ddddddddg}t dddd	d
dddg}|jtjj|||ffdd t ddd d"d#d%d&d'g}|jtjj|||ffd(d xT|D ]L}|j }x>d)D ]6}t| jd}t||j	| t
|j }	t|	| qW qW d S )*Nr   r$   r%   r&   r'   g      ?g      @g      %@gQ?g     Po@g     q@g)\@@g      (@r>   )r   y              @y               @y        ?y        @y                y              @y        @y        ?csrcsccoo)dirg     q)r>   r>   y      ?      @y      @       @y      %@?y       yQ?y     Po@        g     qy     q      @y)\@@@y      (@?)r>   r>   )r   r   r   )r   appendrb   rc   r   r`   r   r   r   Zasformatr   r	   )
r   Zmatsr   r   r   matexpectedfmtr   resultr   r   r   test_sparse_formats  s    


z&TestMMIOCoordinate.test_sparse_formatsc             C   s   t gdd tddd	D  }tdd}x|D ]}x|D ]}d| d }tjj||f}|||d |d f< t| j||d tjj| j}t	|j
|d g t	|j|d g t|jtd| | g q6W q,W d S )
Nc             S   s   g | ]}d | qS )r   r   ).0ir   r   r   
<listcomp>  s    z5TestMMIOCoordinate.test_precision.<locals>.<listcomp>r   r   r$   )	precisionz%%.%dgi)r   rangerb   rc   Z
dok_matrixr   r   ior   r   rowcolr	   datafloat)r   Ztest_valuesZtest_precisionsvaluer   nAr   r   r   test_precision  s    


z!TestMMIOCoordinate.test_precisionN)rX   rY   rZ   r   r   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s    						r   c               C   s   t tjd d S )Nzg%%MatrixMarket matrix coordinate complex symmetric
 1 1 1
1 1 -2.1846000000000e+02  0.0000000000000e+00)r   r   StringIOr   r   r   r   test_gh11389  s    r   )r   r   )r   r   )-tempfiler   r   r   r   r   Znumpyr1   r   r   r   Znumpy.testingr   r   r	   r[   r
   r5   Zscipy.sparserb   Zscipy.io.mmior   r   r   r^   objectr   r_   ry   r{   r}   r   r   r   r   r   rp   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sB   a		  K