
    Ph                     @    d Z ddlZddlZ G d d      Z G d d      Zy)zIUnit tests for the :mod:`networkx.algorithms.centrality.reaching` module.    Nc                   X    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y)TestGlobalReachingCentralityz7Unit tests for the global reaching centrality function.c                     t        j                  t        j                        5  t        j                         }t        j
                  |d       d d d        y # 1 sw Y   y xY w)Nweightr   )pytestraisesnxNetworkXErrorDiGraphglobal_reaching_centralityselfGs     }C:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\networkx/algorithms/centrality/tests/test_reaching.pytest_non_positive_weightsz6TestGlobalReachingCentrality.test_non_positive_weights   s;    ]]2++,

A))!H= -,,s   ,AA"c                     t        j                  t        j                        5  t        j                         }|j                  ddg       t        j                  |d       d d d        y # 1 sw Y   y xY w)Nr      r      r   r   r   )r   r	   r
   r   Graphadd_weighted_edges_fromr   r   s     r   test_negatively_weightedz5TestGlobalReachingCentrality.test_negatively_weighted   sN    ]]2++,
A%%z:&>?))!H= -,,   ?A,,A5c                     t        j                         }|j                  ddg       t         j                  } ||dd      dk(  sJ  ||      dk(  sJ y )N)r   r         ?)r      r   Fr   
normalizedr   r   r   r
   r   r   r   r   r   grcs      r   test_directed_starz/TestGlobalReachingCentrality.test_directed_star   sR    JJL	!!;"<=++1x8C???1v{{    c                 n    t        j                  d      }t         j                  } ||dd       dk(  sJ y )Nr   Fr          ?)r
   
star_graphr   r#   s      r   test_undirected_unweighted_starz<TestGlobalReachingCentrality.test_undirected_unweighted_star   s2    MM!++1t4<<<r&   c                     t        j                         }|j                  ddg       t         j                  } ||dd      dk(  sJ y )Nr   r   r   r   Fr   r    g      ?)r
   r   r   r   r#   s      r   test_undirected_weighted_starz:TestGlobalReachingCentrality.test_undirected_weighted_star"   sB    HHJ	!!9i"89++1x8EAAAr&   c                     t        j                         }|j                  dd       |j                  dd       t        j                  |d       dk(  sJ y Nr   r   r   r   )r
   r   add_edger   r   s     r   test_cycle_directed_unweightedz;TestGlobalReachingCentrality.test_cycle_directed_unweighted(   sD    JJL	

1a	

1a,,Qt<AAAr&   c                     t        j                         }|j                  dd       t        j                  |d       dk(  sJ y r/   r
   r   r0   r   r   s     r    test_cycle_undirected_unweightedz=TestGlobalReachingCentrality.test_cycle_undirected_unweighted.   s6    HHJ	

1a,,Qt<AAAr&   c                     t        j                         }|j                  ddg       t        j                  |      dk(  sJ y )Nr   )r   r   r   r   r"   r   s     r   test_cycle_directed_weightedz9TestGlobalReachingCentrality.test_cycle_directed_weighted3   s9    JJL	!!9i"89,,Q/1444r&   c                     t        j                         }|j                  ddd       t         j                  } ||d      dk(  sJ y )Nr   r   r   F)r!   r   r3   r#   s      r   test_cycle_undirected_weightedz;TestGlobalReachingCentrality.test_cycle_undirected_weighted8   s?    HHJ	

1a
"++1'1,,,r&   c                    t        j                         }|j                  ddd       |j                  ddd       |j                  ddd       |j                  dd	d       t        |      dz
  }t	        g d
      |z  }t	        g d      |z  }d}t	        dg      |z  }d}|||||g}t        |      t	        fd|D              |z  }	t         j                  }
 |
|dd      }|	t        j                  |d      k(  sJ y )NAB   r   Cr   Dr(   E)r<   r   g      @g` @)r   r(   g      ?r   c              3   (   K   | ]	  }|z
    y w)N ).0lrc	max_locals     r   	<genexpr>zFTestGlobalReachingCentrality.test_directed_weighted.<locals>.<genexpr>N   s     C2B3y32Bs   Fr   r    gHz>)abs)	r
   r   r0   lensummaxr   r   approx)r   r   denomA_localB_localC_localD_localE_locallocal_reach_ctrsexpectedr$   actualrD   s               @r   test_directed_weightedz3TestGlobalReachingCentrality.test_directed_weighted>   s   JJL	

3A
&	

3A
&	

3D
)	

3A
&A
45=&'%/qc(U"#WgwH()	C2BCCeK++Q5:6==T::::r&   c                     t        j                  dg      }t        j                  t         j                  d      5  t        j
                  |       d d d        y # 1 sw Y   y xY w)Nr   r   local_reaching_centralitymatch)r
   r   r   r	   r   r   r   s     r   test_single_node_with_cyclez8TestGlobalReachingCentrality.test_single_node_with_cycleS   sB    JJx ]]2++3NO))!, POOs   AA$c                     t        j                         }|j                  dg       t        j                  t         j
                  d      5  t        j                  |d       d d d        y # 1 sw Y   y xY w)Nr   r   r   rW   rX   r   r   )r
   r   r   r   r	   r   r   r   s     r   $test_single_node_with_weighted_cyclezATestGlobalReachingCentrality.test_single_node_with_weighted_cycleX   sO    JJL	!!9+.]]2++3NO))!H= POOs   A--A6N)__name__
__module____qualname____doc__r   r   r%   r*   r-   r1   r4   r6   r8   rT   rZ   r]   rA   r&   r   r   r      sD    A>
>=
BBB
5
-;*-
>r&   r   c                   :    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
y	)
TestLocalReachingCentralityz6Unit tests for the local reaching centrality function.c                     t        j                  t        j                        5  t        j                         }|j                  dg       t        j                  |dd       d d d        y # 1 sw Y   y xY w)N)r   r   r   r   r   r   )r   r	   r
   r   r   r   rW   r   s     r   r   z5TestLocalReachingCentrality.test_non_positive_weightsb   sM    ]]2++,

A%%yk2((Ah? -,,r   c                     t        j                  t        j                        5  t        j                         }|j                  ddg       t        j                  |dd       d d d        y # 1 sw Y   y xY w)Nr   r   r   r   r   )r   r	   r
   r   r   r   rW   r   s     r   r   z4TestLocalReachingCentrality.test_negatively_weightedh   sP    ]]2++,
A%%z:&>?((Ah? -,,s   A A--A6c                 p    t        j                  d      }t         j                  } ||dd d      dk(  sJ y )Nr   r   F)r   r!   g      ?)r
   r)   rW   r#   s      r   r*   z;TestLocalReachingCentrality.test_undirected_unweighted_starn   s4    MM!**1a74???r&   c                     t        j                         }|j                  ddg       t        j                  |ddd      }|dk(  sJ y )Nr   r,   r   Fr   r    g      ?r
   r   r   rW   r   r   
centralitys      r   r-   z9TestLocalReachingCentrality.test_undirected_weighted_stars   sI    HHJ	!!9i"8911qU8

 S   r&   c                     t        j                         }|j                  ddg       t        j                  |ddd      }|dk(  sJ y )Nr   r,   r   Tr   r    g      ?rh   ri   s      r   #test_undirected_weighted_normalizedz?TestLocalReachingCentrality.test_undirected_weighted_normalized{   sI    HHJ	!!9i"8911qT(

 S   r&   c                     t        j                  dg      }t        j                  t         j                  d      5  t        j
                  |d       d d d        y # 1 sw Y   y xY w)NrV   rW   rX   r   )r
   r   r   r	   r   rW   r   s     r   rZ   z7TestLocalReachingCentrality.test_single_node_with_cycle   sD    JJx ]]2++3NO((A. POOs   AA%c                     t        j                         }|j                  dg       t        j                  t         j
                  d      5  t        j                  |dd       d d d        y # 1 sw Y   y xY w)Nr\   rW   rX   r   r   r   )r
   r   r   r   r	   r   rW   r   s     r   r]   z@TestLocalReachingCentrality.test_single_node_with_weighted_cycle   sQ    JJL	!!9+.]]2++3NO((Ah? POOs   A..A7N)r^   r_   r`   ra   r   r   r*   r-   rl   rZ   r]   rA   r&   r   rc   rc   _   s,    @@@@
!!/
@r&   rc   )ra   r   networkxr
   r   rc   rA   r&   r   <module>rp      s'    O  T> T>n-@ -@r&   