U
    »mœd³  ã                   @   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Úint32Zfloat32ÚboolÚiÚd)	r   ÚsputilsZupcastÚnpr   Zfloat64ÚcomplexÚfloatZ
complex128©Úself© r   úX/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/sparse/tests/test_sputils.pyÚtest_upcast   s    zTestSparseUtils.test_upcastc              	   C   s`   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 5 Q R X d S )	Né   Úint8©Údtype)Údefault)Úaz0object dtype is not supported by sparse matrices©ÚmatchÚO)	r   Úarrayr   r   Z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éüÿÿÿç      @ù      ð?      @é   Z16F©r   ©r   é   )r   r   Z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 5 Q R X 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   Z	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ƒ d S )Nr)   T)é   r*   )ç      ø?r*   F)r*   r*   r*   r*   )éÿÿÿÿr*   )Znonneg)r*   r/   )r   r   Z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 dddg¡dƒ t t t dddg¡¡dƒ t t t dgdgdgg¡¡dƒ t t d¡dƒ d S )Nr(   T)r   r*   r'   r   r*   r'   F)r   r   Z
issequencer   r   r   r   r   r   Útest_issequenceF   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   r*   r'   F)r   r   Zismatrixr   Zaranger   r   r   r   Útest_ismatrixP   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   Zisdenser   r   r   r   r   r   r   Útest_isdenseZ   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   r.   r'   )éþÿÿÿr/   r   r   N)r   Ú	TypeErrorr   Zvalidateaxisr    )r   Zaxisr   r   r   Útest_validateaxis^   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   Zuint32r   T)Úcheck_contentsr   r/   Úint64éY   é   )Úmaxvalr8   )r<   )
r   r9   Ziinfor   ÚmaxZonesr   r   r   Zget_index_dtype)r   ZimaxZtoo_bigZa1Za2r   r   r   Útest_get_index_dtypeg   sN    þþþþ  ÿü	þz$TestSparseUtils.test_get_index_dtypec                 C   s   t  dgd¡}t|dƒ d S )N)é
   r/   )iÿÿ  iþÿ )r?   iÍÌ23)r   Zcheck_shaper   )r   Z	new_shaper   r   r   Útest_check_shape_overflow    s    z)TestSparseUtils.test_check_shape_overflowc                 C   s¢   dddgg}t  |¡}tt |¡t jƒs,t‚tt |¡t jƒsBt‚t |¡}d|d d …d d …f< t||ƒ tj|dd�}d|d d …d d …f< t|dddggƒ d S )Nr   r*   r'   é{   F)Úcopy)r   r   Ú
isinstancer   r   ÚAssertionErrorr   ©r   r   ÚbÚcr   r   r   Útest_matrix¤   s    


zTestSparseUtils.test_matrixc                 C   sv   dddgg}t  |¡}tt |¡t jƒs,t‚tt |¡t jƒsBt‚t |¡}d|d d …d d …f< t|dddggƒ d S )Nr   r*   r'   rA   )r   r   rC   r   Zasmatrixr   rD   r   rE   r   r   r   Útest_asmatrix³   s    

zTestSparseUtils.test_asmatrixN)Ú__name__Ú
__module__Ú__qualname__r   r"   r+   r,   r0   r1   r2   r3   r6   r>   r@   rH   rI   r   r   r   r   r   
   s   

	9r   )Ú__doc__Únumpyr   Znumpy.testingr   Zpytestr   r   Zscipy.sparser   r   Zscipy.sparse._sputilsr   r   r   r   r   r   Ú<module>   s   