o
    3ήcJ                     @   s2   d Z ddlZddlZddlmZ G dd dZdS )z
Tests for degree centrality.
    N)harmonic_centralityc                   @   s   e Zd Ze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d ZdS )TestClosenessCentralityc                 C   s|   t d| _t d| _t d| _t d| _t jdt jd| _	t d| _
t jddd| _t  | _| jg d d S )N         )create_using   )rh)r      )r   r   )r   r   )r   r   r   r   )r   r   )nx
path_graphP3P4complete_graphK5cycle_graphC4DiGraphC4_directedC5balanced_treeTGbadd_edges_from)cls r   d/tmp/pip-target-vg8gfxp4/lib/python/networkx/algorithms/centrality/tests/test_harmonic_centrality.pysetup_class   s   
z#TestClosenessCentrality.setup_classc                 C   sH   t | j}dddd}t| jD ]}|| tj|| ddks!J qd S )N      ?r   r   r   r   MbP?abs)r   r   sortedpytestapproxselfcdnr   r   r   test_p3_harmonic   s
   
 z(TestClosenessCentrality.test_p3_harmonicc                 C   sJ   t | j}ddddd}t| jD ]}|| tj|| ddks"J qd S )Ng"bLUU?      @r   r   r   r   r#   r$   )r   r   r&   r'   r(   r)   r   r   r   test_p4_harmonic!   
   
 z(TestClosenessCentrality.test_p4_harmonicc                 C   sL   t | j}dddddd}t| jD ]}|| tj|| ddks#J qd S )Nr   r   r   r   r   r   r#   r$   )r   r   r&   r   r'   r(   r)   r   r   r   test_clique_complete'   
   
 z,TestClosenessCentrality.test_clique_completec                 C   sJ   t | j}ddddd}t| jD ]}|| tj|| ddks"J qd S )Nr/   r0   r#   r$   )r   r   r&   r'   r(   r)   r   r   r   test_cycle_C4-   r2   z%TestClosenessCentrality.test_cycle_C4c                 C   sN   t | j}ddddddd}t| jD ]}|| tj|| ddks$J qd S )Nr   r   )r   r   r   r   r   r   r#   r$   )r   r   r&   r'   r(   r)   r   r   r   test_cycle_C53   s
   
 z%TestClosenessCentrality.test_cycle_C5c                 C   sP   t | j}dddddddd}t| jD ]}|| tj|| ddks%J qd S )Ng      @g0@g0@)r   r   r   r   r   r      r#   r$   )r   r   r&   r'   r(   r)   r   r   r   test_bal_tree9   s
   
 z%TestClosenessCentrality.test_bal_treec                 C   sL   t | j}dddddd}t| jD ]}|| tj|| ddks#J qd S )Nr   r   r   r/   r3   r#   r$   )r   r   r&   r'   r(   r)   r   r   r   test_exampleGraph?   r5   z)TestClosenessCentrality.test_exampleGraphc                 C   sd   t  }|g d t|dd}ddddddd}t|D ]}|| tj|| d	d
ks/J qd S )N))ab
   )r,   r+   r   )r;   r+   r   )efr   )r?   r+   r   )r;   r?   r   weightdistancer   g?g$C@g_?)r;   r<   r+   r,   r>   r?   r#   r$   )r   r   add_weighted_edges_fromr   r&   r'   r(   )r*   XGr+   r,   r-   r   r   r   test_weighted_harmonicE   s   
 z.TestClosenessCentrality.test_weighted_harmonicc                 C   s(   t  }t|dd}i }||ksJ d S )Nr@   rA   )r   r   r   r*   Gr+   r,   r   r   r   
test_emptyV   s   z"TestClosenessCentrality.test_emptyc                 C   s6   t  }|d t|dd}ddi}||ksJ d S )Nr   r@   rA   )r   r   add_noder   rF   r   r   r   test_singleton\   s
   
z&TestClosenessCentrality.test_singletonc                 C   sN   t | jddgddgd}ddd}dD ]}|| tj|| dd	ks$J qd S )
Nr   r   r   nbunchsourcesg-?gZd;O?r   r#   r$   )r   r   r'   r(   r)   r   r   r   test_cycle_c4_directedc   
   
 z.TestClosenessCentrality.test_cycle_c4_directedc                 C   sL   t | jddgd}dddd}| jD ]}|| tj|| ddks#J qd S )Nr   r   )rM   r!   r"   r#   r$   )r   r   r'   r(   r)   r   r   r   test_p3_harmonic_subseti   s
   
 z/TestClosenessCentrality.test_p3_harmonic_subsetc                 C   sN   t | jddgddgd}ddd}dD ]}|| tj|| d	d
ks$J qd S )Nr   r   r   r   rK   r!   gD^Ř?r   r#   r$   )r   r   r'   r(   r)   r   r   r   test_p4_harmonic_subseto   rO   z/TestClosenessCentrality.test_p4_harmonic_subsetN)__name__
__module____qualname__classmethodr    r.   r1   r4   r6   r7   r9   r:   rE   rH   rJ   rN   rP   rQ   r   r   r   r   r   
   s     
r   )__doc__r'   networkxr   networkx.algorithms.centralityr   r   r   r   r   r   <module>   s
    