o
    ?Hh                     @   s   d Z ddlZddlZddl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 ddlmZ dd Zeee
e	gZee	gZejd	eG d
d dZejd	eG dd dZdS )z3Test of min-max 1D features of sparse array classes    N)assert_equalassert_array_equal)	coo_array	csr_array	csc_array	bsr_array)
coo_matrix
csr_matrix
csc_matrix
bsr_matrix)isscalarlikec                 C   s    t | tjs
t| r| S |  S )N)
isinstancenpndarrayr   toarray)a r   `/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-packages/scipy/sparse/tests/test_minmax1d.pyr      s   r   	spcreatorc                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
Test_MinMaxMixin1Dc                 C   sR   t d}||}t| d t| d t|  d t|  d d S )N   r      )r   aranger   minmax)selfr   DXr   r   r   test_minmax   s   
zTest_MinMaxMixin1D.test_minmaxc              	   C   s   t d}||}dD ]"}tt|j|d|j|dd tt|j|d|j|dd qdD ]<}tjtdd |j|d W d    n1 sJw   Y  tjtdd |j|d W d    n1 sgw   Y  q0d S )	N2   )r   axisTr#   keepdims)   zaxis out of rangematch)	r   r   r   r   r   r   pytestraises
ValueError)r   r   r   r   r#   r   r   r   test_minmax_axis#   s$   
z#Test_MinMaxMixin1D.test_minmax_axisc                 C   sF   t g d}||}tt |t | tt |t | d S )N)r   r'      )r   arrayr   r   r   )r   r   datdatspr   r   r   test_numpy_minmax4   s   z$Test_MinMaxMixin1D.test_numpy_minmaxc              	   C   sV  t g d}t g d}t g d}t g d}t g d}|||||fD ]6}||}t| t | t| t | t|jddt j|dd t|jddt j|dd q*t d}	d	D ]@}
||	}tjtd
d |j|
d W d    n1 sw   Y  tjtd
d |j|
d W d    n1 sw   Y  qhd S )N)r!   r   r.      r   r   r!   r&   )r!   r&   r   )r'   r.   r3   r   )r'   r.   r   r   r   r"   )r   )Nr   zto an empty matrixr(   )	r   r/   r   argmaxargminemptyr*   r+   r,   )r   r   D1D2D3D4D5r   matD6r#   r   r   r   test_argmax;   s,   
zTest_MinMaxMixin1D.test_argmaxN)__name__
__module____qualname__r   r-   r2   r@   r   r   r   r   r      s
    	r   c                   @   s   e Zd Zdd ZdS )Test_ShapeMinMax2DWithAxisc              	   C   s  t g dg dg dg}||}|jt jf|jt jf|jt jf|jt jffD ],\}}dD ]%\}}tt||d|||d t||dj| ||dj	dksSJ q.q(|j
|jfD ]}dD ]}t||dt jslJ q_q[ttttd}||j	 |}	|	jt jf|	jt jf|	jt jf|	jt jffD ]-\}
}d	D ]&\}}tt|
|d|||d
d t|
|dj| |
|dj	dksJ qq|	j
|	jfD ]}dD ]}t||dt jsJ qqd S )N)r!   r   r   r3   r4   )r   r   r'   r.   ))r   )r   )r'   )r3   r"   coo)r   r'   )rE   csrcscbsr))r   )r'   r   )r'   )r3   r'   Tr$   )r   r/   r   r   nanminnanmaxr   r   shapeformatr7   r6   r   r   r   r	   r
   r   )r   r   r0   r1   spminmaxnpminmaxaxresult_shape
spmat_formdatspmspmnpmr   r   r   r   W   sJ   







z&Test_ShapeMinMax2DWithAxis.test_minmaxN)rA   rB   rC   r   r   r   r   r   rD   U   s    rD   )__doc__r*   numpyr   numpy.testingr   r   scipy.sparser   r   r   r   r   r	   r
   r   scipy.sparse._sputilsr   r   formats_for_minmax formats_for_minmax_supporting_1dmarkparametrizer   rD   r   r   r   r   <module>   s    <