
    Ugv                     \    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          ZdS )	z'unit tests for sparse utility functions    N)assert_equal)raises)_sputils)matrixc                   \    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd ZdS )TestSparseUtilsc                    t          t          j        d          t          j                   t          t          j        dd          t          j                   t          t          j        dt          t                    t          j                   t          t          j        dd          t          j                   d S )Nintcint32float32boolid)	r   sputilsupcastnpr
   float64complexfloat
complex128selfs    ^/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/sparse/tests/test_sputils.pytest_upcastzTestSparseUtils.test_upcast   s    W^F++RW555W^GY77DDDW^FGU;;R]KKKW^C--rz:::::    c                 r   t          j        dgd          }t          t          j        d t
                    t
                     t          t          j        d |          t           j                   t          t          d          5  t          j        d           d d d            d S # 1 swxY w 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   As     r   test_getdtypezTestSparseUtils.test_getdtype   s    HaS'''W%dE:::EBBBW%da000"':::D
 
 
 	" 	" S!!!		" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   
B,,B03B0c                    t          t          j        d          d           t          t          j        d          d           t          t          j        d          d           t          t          j        d          d           t          t          j        t          j        d                    d           t          t          j        d          d           t          t          j        t          j        dg                    d           t          t          j        dgg          d           t          t          j        d	          d           t          t          j        d
          d           d S )N      @T      @      ?      @   16Fr   r      )r   r   isscalarliker   r&   r   s    r   test_isscalarlikez!TestSparseUtils.test_isscalarlike   s,   W)#..555W)"--t444W)#..555W)&114888W)"(1++66===W)$//666W)"(A3--88%@@@W)A3%00%888W)$//777W)&11599999r   c                    t          t          j        d          d           t          t          j        t          j        d                    d           t          t          j        t          j        dg                    d           t          t          d          5  t          j        d           d d d            n# 1 swxY w Y   t          t          j        d          d           t          t          j        d	          d           t          t          j        d
          d           t          t          j        d          d           d S )Nr.   Tr1   Fz4Inexact indices into sparse matrices are not allowedr#   r-   r/   r0   r3   r4   )r   r   	isintliker   r&   r(   r)   r   s    r   test_isintlikezTestSparseUtils.test_isintlike+   s\   W&r**D111W&rx{{33T:::W&rx}}55u===H
 
 
 	# 	# c"""		# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	W&s++U333W&v..666W&t,,e444W&v..66666s   "CC
Cc                 8   t          t          j        d          d           t          t          j        d          d           t          t          j        d          d           t          t          j        d          d           t          t          j        dgdf          d           t          t          j        dd	          d           t          t          j        d
d	          d           t          t          j        dd	          d           t          t          j        d
d	          d           t          t          j        dd          d           t          t          j        dgdfd          d           t          t          j        ddd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           d S )Nr4   T)   r5   )      ?r5   F)r5   r5   r5   r5   )r5   )nonneg)r5   r>   )allow_1d)r5   r5   )r?   r@   )r5   )r5   r5   )r   r   isshaper   s    r   test_isshapezTestSparseUtils.test_isshape:   s   W_V,,d333W_V,,d333W_X..666W_Y//777W_qc1X..666W_WU;;;DAAAW_WU;;;DAAAW_WT:::5AAAW_WT:::5AAAW_X===uEEEW_qc1X===uEEEW_ZtLLL	 	 	W_TD9994@@@W_Wt<<<dCCCW_Y>>>FFFFFr   c           	      @   t          t          j        d          d           t          t          j        d          d           t          t          j        dg          d           t          t          j        g d          d           t          t          j        t          j        g d                    d           t          t          j        t          j        dgdgdgg                    d           t          t          j        d          d           d S )Nr3   Tr   r5   r1   r   r5   r1   F)r   r   
issequencer   r&   r   s    r   test_issequencezTestSparseUtils.test_issequenceN   s    W'--t444W'	22D999W',,d333W'			22D999W'(;(;<<dCCCW'1#sQC(A(ABBEJJJW'**E22222r   c                 H   t          t          j        d          d           t          t          j        dgdgg          d           t          t          j        t          j        d          d                    d           t          t          j        ddg          d           t          t          j        t          j        d                    d           t          t          j        dggg          d           t          t          j        d          d           d S )N) Tr   r5   r1   F)r   r   ismatrixr   aranger   s    r   test_ismatrixzTestSparseUtils.test_ismatrixX   s    W%e,,d333W%sQCj114888W%bill4&8994@@@W%q!f--u555W%bill33U;;;W%ug..666W%a((%00000r   c                     t          t          j        t          j        dg                    d           t          t          j        t          dg                    d           d S )Nr   T)r   r   isdenser   r&   r   r   s    r   test_isdensezTestSparseUtils.test_isdenseb   sN    W_RXqc]]33T:::W_VQC[[11488888r   c                     t          t          t          j        d           t          t          t          j        d           t          t          t          j        d           dD ]}t          j        |           d S )N)r   r   r=   r1   )rA   r>   r   r   N)r(   	TypeErrorr   validateaxisr)   )r   axiss     r   test_validateaxisz!TestSparseUtils.test_validateaxisf   sp    i!5v>>>i!5s;;;j'"6::: ) 	' 	'D &&&&	' 	'r   c           	         t          j        t          j        t           j                  j                  }|dz   }t          j        dd          }t          j        dd          }t          t          j        t          j	        ||fd                    t          j        d                     ||d<   t          t          j        t          j	        ||fd                    t          j        d                     ||d<   t          t          j        t          j	        ||fd                    t          j        d	                     t          j        d
d          }t          j        d
d          }t          t          j        t          j	        ||f                    t          j        d	                     t          j        dd          }t          j        dd          }t          t          j        t          j	        ||f|d                    t          j        d	                     ||d<   t          t          j        t          j	        ||f|                    t          j        d	                     d S )Nr   Z   uint32r   T)check_contentsr   r>   int64Y      )maxvalrX   )r\   )
r   rY   iinfor   maxonesr   r    r   get_index_dtype)r   imaxtoo_biga1a2s        r   test_get_index_dtypez$TestSparseUtils.test_get_index_dtypeo   s\   x**.//( WRx(((WRx(((HW,b"XdKKKLLHW	
 	
 	
 2HW,b"XdKKKLLHW	
 	
 	
 2HW,b"XdKKKLLHW	
 	
 	
 WRx(((WRx(((HW,b"X6677HW	
 	
 	
 WRx(((WRx(((HW,R     HW		
 	
 	
 2HW,b"XgFFFGGHW	
 	
 	
 	
 	
r   c                 R    t          j        dgd          }t          |d           d S )N)
   r>   )i  i )rg   i23)r   check_shaper   )r   	new_shapes     r   test_check_shape_overflowz)TestSparseUtils.test_check_shape_overflow   s,    '
ODD	Y00000r   c                    g dg}t          j        |          }t          t          j        |          t           j                  sJ t          t          j        |          t           j                  sJ t          j        |          }d|d d d d f<   t          ||           t          j        |d          }d|d d d d f<   t          |g dg           d S )NrE   {   F)copyrl   rl   rl   )r   r&   
isinstancer   r   r   r   r"   bcs       r   test_matrixzTestSparseUtils.test_matrix   s    YYKHQKK'.++RY77777'.++RY77777N1!!!QQQ$QN15)))!!!QQQ$Q)*****r   c                 T   g dg}t          j        |          }t          t          j        |          t           j                  sJ t          t          j        |          t           j                  sJ t          j        |          }d|d d d d f<   t          |g dg           d S )NrE   rl   rn   )r   r&   ro   r   asmatrixr   r   rp   s       r   test_asmatrixzTestSparseUtils.test_asmatrix   s    YYKHQKK'*1--ry99999'*1--ry99999Q!!!QQQ$Q)*****r   N)__name__
__module____qualname__r   r+   r7   r:   rC   rG   rL   rO   rT   re   rj   rs   rv   rI   r   r   r   r   
   s        ; ; ;
" 
" 
": : :7 7 7G G G(3 3 31 1 19 9 9' ' '7
 7
 7
r1 1 1+ + +	+ 	+ 	+ 	+ 	+r   r   )__doc__numpyr   numpy.testingr   pytestr   r(   scipy.sparser   r   scipy.sparse._sputilsr   r   rI   r   r   <module>r      s    - -     & & & & & & * * * * * * , , , , , , ( ( ( ( ( (z+ z+ z+ z+ z+ z+ z+ z+ z+ z+r   