o
    i                     @   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   Z/home/kim/smarthome/.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#   Z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-   r2   r   )r&   r-   r   r   r   r"   )r   )Nr   zto an empty matrixr'   )	r   r.   r   argmaxargminemptyr)   r*   r+   )r   r   ZD1ZD2ZD3ZD4ZD5r   ZmatZD6r#   r   r   r   test_argmax;   s,   
zTest_MinMaxMixin1D.test_argmaxN)__name__
__module____qualname__r   r,   r1   r8   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   r2   r3   )r   r   r&   r-   ))r   )r   )r&   )r2   r"   coo)r   r&   )r=   ZcsrZcscZbsr))r   )r&   r   )r&   )r2   r&   Tr$   )r   r.   r   r   ZnanminZnanmaxr   r   shapeformatr6   r5   r   r   r   r	   r
   r   )r   r   r/   r0   ZspminmaxZnpminmaxaxZresult_shapeZ
spmat_formZdatspmZspmZnpmr   r   r   r   W   sJ   







z&Test_ShapeMinMax2DWithAxis.test_minmaxN)r9   r:   r;   r   r   r   r   r   r<   U   s    r<   )__doc__r)   numpyr   Znumpy.testingr   r   Zscipy.sparser   r   r   r   r   r	   r
   r   Zscipy.sparse._sputilsr   r   Zformats_for_minmaxZ formats_for_minmax_supporting_1dmarkZparametrizer   r<   r   r   r   r   <module>   s    <