o
    h                     @   sN   d Z ddlZddlmZ ddlmZ ddlm	Z
 ddlmZ G dd dZdS )	z'unit tests for sparse utility functions    N)assert_equal)raises)_sputils)matrixc                   @   st   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S )TestSparseUtilsc                 C   sT   t tdtj t tddtj t tdtttj t tddtj d S )Nintcint32float32boolid)	r   sputilsupcastnpr   float64complexfloat
complex128self r   Z/var/www/html/scripts/venv/lib/python3.10/site-packages/scipy/sparse/tests/test_sputils.pytest_upcast   s   zTestSparseUtils.test_upcastc                 C   sv   t jdgdd}ttjd tdt ttjd |dt j ttdd td W d    d S 1 s4w   Y  d S )	N   int8dtype)default)az0object dtype is not supported by sparse matricesmatchO)	r   arrayr   r   getdtyper   r   assert_raises
ValueError)r   Ar   r   r   test_getdtype   s   "zTestSparseUtils.test_getdtypec                 C   s   t tdd t tdd t tdd t tdd t ttdd t tdd t ttdgd t tdggd t td	d t td
d d S )N      @T      @      ?      @   16Fr   r      )r   r   isscalarliker   r"   r   r   r   r   test_isscalarlike   s   z!TestSparseUtils.test_isscalarlikec                 C   s   t tdd t ttdd t ttdgd ttdd td W d    n1 s5w   Y  t tdd t td	d t td
d t tdd d S )Nr)   Tr,   Fz4Inexact indices into sparse matrices are not allowedr   r(   r*   r+   r.   r/   )r   r   	isintliker   r"   r$   r%   r   r   r   r   test_isintlike+   s   zTestSparseUtils.test_isintlikec                 C   s*  t tdd t tdd t tdd t tdd t tdgdfd t tjddd	d t tjd
dd	d t tjddd	d t tjd
dd	d t tjdddd t tjdgdfddd t tjddddd t tjdddd t tjdddd t tjdddd d S )Nr/   T)   r0   )      ?r0   F)r0   r0   r0   r0   )r0   )nonneg)r0   r7   )
allow_ndim)r0   r0   )r8   r9   )r0   )r0   r0   )r   r   isshaper   r   r   r   test_isshape:   s"   zTestSparseUtils.test_isshapec                 C   s   t tdd t tdd t tdgd t tg dd t ttg dd t ttdgdgdggd t tdd d S )Nr.   Tr   r0   r,   r   r0   r,   F)r   r   
issequencer   r"   r   r   r   r   test_issequenceN   s   "zTestSparseUtils.test_issequencec                 C   s   t tdd t tdgdggd t ttdd  d t tddgd t ttdd t tdgggd t tdd d S )N)r   Tr   r0   r,   F)r   r   ismatrixr   aranger   r   r   r   test_ismatrixX   s   zTestSparseUtils.test_ismatrixc                 C   s2   t ttdgd t ttdgd d S )Nr   T)r   r   isdenser   r"   r   r   r   r   r   test_isdenseb   s   zTestSparseUtils.test_isdensec                 C   sB   t ttjd t ttjd t ttjd dD ]}t| qd S )N)r   r   r6   r,   )r:   r7   r   r   N)r$   	TypeErrorr   validateaxisr%   )r   axisr   r   r   test_validateaxisf   s   z!TestSparseUtils.test_validateaxisc                 C   sb  t t t jj}|d }t jddd}t jddd}tt tj	||fddt d ||d< tt tj	||fddt d ||d< tt tj	||fddt d	 t jd
dd}t jd
dd}tt t	||ft d	 t jddd}t jddd}tt tj	||f|ddt d	 ||d< tt tj	||f|dt d	 d S )Nr   Z   uint32r   T)check_contentsr   r7   int64Y      )maxvalrK   )rO   )
r   rL   iinfor   maxonesr   r   r   get_index_dtype)r   imaxtoo_biga1a2r   r   r   test_get_index_dtypeo   sJ   
	z$TestSparseUtils.test_get_index_dtypec                 C   s   t dgd}t|d d S )N)
   r7   )i  i )rY   i23)r   check_shaper   )r   	new_shaper   r   r   test_check_shape_overflow   s   z)TestSparseUtils.test_check_shape_overflowc                 C   s   g dg}t |}tt|t jsJ tt|t js J t|}d|d d d d f< t|| tj|dd}d|d d d d f< t|g dg d S )Nr=   {   F)copyr]   r]   r]   )r   r"   
isinstancer   r   r   r   r   bcr   r   r   test_matrix   s   



zTestSparseUtils.test_matrixc                 C   sr   g dg}t |}tt|t jsJ tt|t js J t|}d|d d d d f< t|g dg d S )Nr=   r]   r_   )r   r"   r`   r   asmatrixr   r   ra   r   r   r   test_asmatrix   s   


zTestSparseUtils.test_asmatrixN)__name__
__module____qualname__r   r'   r2   r4   r<   r?   rB   rD   rH   rX   r\   rd   rf   r   r   r   r   r   
   s    

	9r   )__doc__numpyr   numpy.testingr   pytestr   r$   scipy.sparser   r   scipy.sparse._sputilsr   r   r   r   r   r   <module>   s    