o
    3ήc=                     @   sP   d dl Z e d e d d dlZd dlmZ G dd dZG dd dZdS )	    Nnumpyscipy)node_classificationc                   @   sL   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S )TestHarmonicFunctionc                 C   |   t d}d}d|jd |< d|jd |< tj||d}|d dks$J |d dks,J |d	 dks4J |d dks<J d S 
N   labelAr   B   
label_name      nx
path_graphnodesr   harmonic_functionselfGr   	predicted r   Y/tmp/pip-target-vg8gfxp4/lib/python/networkx/algorithms/tests/test_node_classification.pytest_path_graph   s   
z$TestHarmonicFunction.test_path_graphc                 C   F   t tj td}t| W d    d S 1 sw   Y  d S Nr   )pytestraisesr   NetworkXErrorr   r   r   r   r   r   r   r   test_no_labels      
"z#TestHarmonicFunction.test_no_labelsc                 C   D   t tj t }t| W d    d S 1 sw   Y  d S N)r   r    r   r!   Graphr   r   r"   r   r   r   test_no_nodes      "z"TestHarmonicFunction.test_no_nodesc                 C   X   t tj t }|d |d t| W d    d S 1 s%w   Y  d S Nr   r   )r   r    r   r!   r'   add_noder   r   r"   r   r   r   test_no_edges       

"z"TestHarmonicFunction.test_no_edgesc                 C      t tj4 t }|dd |dd |dd d}d|jd |< d|jd |< t| W d    d S 1 s=w   Y  d S Nr   r   r   r   r	   r
   r   	r   r    r   NetworkXNotImplementedDiGraphadd_edger   r   r   r   r   r   r   r   r   test_digraph'      "z!TestHarmonicFunction.test_digraphc                 C   n   t d}d}d|jd |< tj||d}|d dksJ |d dks%J |d dks-J |d dks5J d S 	Nr   r	   r
   r   r   r   r   r   r   r   r   r   r   test_one_labeled_node2   s   
z*TestHarmonicFunction.test_one_labeled_nodec                 C   sJ   t  }d}tj||d}tt|D ]}|| |j| | ks"J qd S )Nclubr   )r   karate_club_graphr   r   rangelenr   r   r   r   r   ir   r   r   test_nodes_all_labeled<   s   z+TestHarmonicFunction.test_nodes_all_labeledc                 C   sx   t  }d}h d}|D ]}|j| |= qtj||d}tttt|| }|D ]}|| |j| | ks9J q*d S )Nr;   >   r   r   r   r   r            r   )	r   r<   r   r   r   setlistr=   r>   )r   r   r   label_removedr@   r   label_not_removedr   r   r   "test_labeled_nodes_are_not_changedC   s   z7TestHarmonicFunction.test_labeled_nodes_are_not_changedN)__name__
__module____qualname__r   r#   r(   r-   r6   r:   rA   rI   r   r   r   r   r   
   s    
r   c                   @   sD   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S )TestLocalAndGlobalConsistencyc                 C   r   r   r   r   r   r   local_and_global_consistencyr   r   r   r   r   P   s   
z-TestLocalAndGlobalConsistency.test_path_graphc                 C   r   r   )r   r    r   r!   r   r   rO   r"   r   r   r   r#   ]   r$   z,TestLocalAndGlobalConsistency.test_no_labelsc                 C   r%   r&   )r   r    r   r!   r'   r   rO   r"   r   r   r   r(   b   r)   z+TestLocalAndGlobalConsistency.test_no_nodesc                 C   r*   r+   )r   r    r   r!   r'   r,   r   rO   r"   r   r   r   r-   g   r.   z+TestLocalAndGlobalConsistency.test_no_edgesc                 C   r/   r0   r1   r5   r   r   r   r6   n   r7   z*TestLocalAndGlobalConsistency.test_digraphc                 C   r8   r9   rN   r   r   r   r   r:   y   s   
z3TestLocalAndGlobalConsistency.test_one_labeled_nodec                 C   sL   t  }d}tj|d|d}tt|D ]}|| |j| | ks#J qd S )Nr;   r   )alphar   )r   r<   r   rO   r=   r>   r   r?   r   r   r   rA      s   z4TestLocalAndGlobalConsistency.test_nodes_all_labeledN)
rJ   rK   rL   r   r#   r(   r-   r6   r:   rA   r   r   r   r   rM   O   s    rM   )r   importorskipnetworkxr   networkx.algorithmsr   r   rM   r   r   r   r   <module>   s    

E