o
    3ήc                     @   sh   d dl Z d dlZe dZe dZd dlZd dlm	Z	 G dd dZ
e jdejejfdd	 ZdS )
    Nnumpyscipy)_hits_pythonc                   @   sP   e Zd Zedd Zdd Zejde	j
e	jefdd Zdd	 Zd
d ZdS )TestHITSc                 C   s\   t  }g d}|j|dd || _ttt|g d| j_ttt|g d| j_d S )N))      )r      )   r   )r   r   )r      )r   r   )   r   r   )weight)        r   w-!l?g&?      ?r   )r   r   镲?r   r   r   )	nxDiGraphadd_edges_fromGdictzipsortedah)clsr   edges r   X/tmp/pip-target-vg8gfxp4/lib/python/networkx/algorithms/link_analysis/tests/test_hits.pysetup_class   s   zTestHITS.setup_classc                 C   sl   | j }t|\}}|D ]}|| tj|j| ddksJ q|D ]}|| tj|j| ddks3J q!d S )N-C6?abs)r   r   
hits_numpypytestapproxr   r   )selfr   r   r   nr   r   r   test_hits_numpy!   s   ""zTestHITS.test_hits_numpyhits_algc                 C   s   | j }||dd\}}|D ]}|| tj|j| ddksJ q|D ]}|| tj|j| ddks4J q"dd |D }|||d\}}|D ]}|| tj|j| ddksXJ qF|D ]}|| tj|j| ddksmJ q[d S )Ng:0yE>)tolr   r    c                 S   s   i | ]}|d qS )r   r   ).0ir   r   r   
<dictcomp>1   s    z&TestHITS.test_hits.<locals>.<dictcomp>)nstart)r   r#   r$   r   r   )r%   r(   r   r   r   r&   r-   r   r   r   	test_hits)   s   """"zTestHITS.test_hitsc                 C   s   t  }t |i i fksJ t |i i fksJ t|i i fks$J t |i i fks/J t |jdks9J t |jdksCJ d S )N)r   r   )	r   Graphhitsr"   r   
hits_scipyauthority_matrixshape
hub_matrixr%   r   r   r   r   
test_empty8   s   zTestHITS.test_emptyc                 C   sj  t d}tt j t j|dd W d    n1 sw   Y  tt j t|dd W d    n1 s9w   Y  tt j t j|dd W d    n1 sVw   Y  tt j t|dd W d    n1 srw   Y  tt t j|dd W d    n1 sw   Y  tt	j
jj t j|dd W d    d S 1 sw   Y  d S )N2   r   )max_iterr   )r   
path_graphr#   raisesPowerIterationFailedConvergencer1   r   
ValueErrorr0   spsparselinalgArpackNoConvergencer5   r   r   r   test_hits_not_convergentA   s&   
"z!TestHITS.test_hits_not_convergentN)__name__
__module____qualname__classmethodr   r'   r#   markparametrizer   r0   r1   r   r.   r6   rA   r   r   r   r   r      s    

	r   r(   c                 C   sH   t t d}tt | | W d   dS 1 sw   Y  dS )z\Make sure deprecation warnings are raised.

    To be removed when deprecations expire.
    r
   N)r   r   r9   r#   warnsDeprecationWarning)r(   r   r   r   r   test_deprecation_warningsQ   s   
"rJ   )r#   networkxr   importorskipnpr=   scipy.sparser   *networkx.algorithms.link_analysis.hits_algr   r   rF   rG   r"   r1   rJ   r   r   r   r   <module>   s    

A