
    Vh                     z    d Z ddlZddlZddlmZ ddlmZmZ ddlm	Z	  G d d      Z
 G d d	      Zd
 Zd Zd Zy)zIUnit tests for the :mod:`networkx.algorithms.community.quality`
module.

    N)barbell_graph)
modularitypartition_quality)inter_community_edgesc                       e Zd ZdZd Zd Zy)TestPerformancez0Unit tests for the :func:`performance` function.c                 ~    t        dd      }h dh dg}dt        j                  t        ||      d   d      k(  sJ y	)
z:Tests that a poor partition has a low performance measure.   r      r               r
      g?r   Hz>absNr   pytestapproxr   selfG	partitions      `/home/dcms/DCMS/lib/python3.12/site-packages/networkx/algorithms/community/tests/test_quality.pytest_bad_partitionz"TestPerformance.test_bad_partition   s>    !Q	*	'8I'Fq'ItTTTT    c                 ~    t        dd      }h dh dg}dt        j                  t        ||      d   d      k(  sJ y	)
z;Tests that a good partition has a high performance measure.r
   r      r   r   r      r
   r   r   g?r   r   r   Nr   r   s      r   test_good_partitionz#TestPerformance.test_good_partition   s?    !Q	*	&--(9!Y(G(JPTUUUUr   N__name__
__module____qualname____doc__r   r!    r   r   r   r      s    :UVr   r   c                       e Zd ZdZd Zd Zy)TestCoveragez-Unit tests for the :func:`coverage` function.c                 ~    t        dd      }h dh dg}dt        j                  t        ||      d   d      k(  sJ y)	z7Tests that a poor partition has a low coverage measure.r
   r   r   r   ۶m۶m?r   r   Nr   r   s      r   r   zTestCoverage.test_bad_partition!   >    !Q	*	&79&Ea&HdSSSSr   c                 ~    t        dd      }h dh dg}dt        j                  t        ||      d   d      k(  sJ y)	z8Tests that a good partition has a high coverage measure.r
   r   r   r    ۶m۶m?r   r   Nr   r   s      r   r!   z TestCoverage.test_good_partition'   r,   r   Nr"   r'   r   r   r)   r)      s    7TTr   r)   c                  p   t        j                  dd      } h dh dg}dt        j                  t	        | |      d      k(  sJ h dh d	g}d
t        j                  t	        | |      d      k(  sJ d}t        j
                  |ddd      } t        t        |dz              t        t        |dz  |            g}dt        j                  t	        | |      d      k(  sJ t        j                  d      } | j                         dz  }t        | j                        }t        |d |       t        ||d        g}dt        j                  t	        | |      d      k(  sJ t        j                         } | j                  g d       ddhddhg}dt        j                  t	        | |      d      k(  sJ y )Nr
   r   r   r   g9/崿r   r   r   r    gm۶m?i  g
ףp=
?*   T)seeddirectedr   g_]|&?
   gp=
ף?))r   r   )r   r
   )r
   r   r   r   gqq?)nxr   r   r   r   erdos_renyi_graphsetrangemargulis_gabber_galil_graphnumber_of_nodeslistnodesDiGraphadd_edges_from)r   Cn	mid_valuer;   s        r   test_modularityrA   .   s   
AA	IAfmmJq!,<$GGGG	IAz!Q/?T!JJJJA
Q2=A	U16]	SqAvq!123A!V]]:a3C%NNNN
&&r*A!!#q(IME	U:I	U9:%6!78A6==Aq!1t<<<<


A-.
Q!QAFMM*Q"2====r   c                     t        j                  dd      } h dh dg}t        | |      t        j                  d      k(  sJ d}t        | ||      }|t        j                  d|d	z  d
z  z
        k(  sJ d}t        | ||      }|t        j                  d|d	z  d
z  z
        k(  sJ h dh dg}t        | |      t        j                  d      k(  sJ d}t        | ||      }|t        j                  d|dz  d
z  z
        k(  sJ d}t        | ||      }|t        j                  d|dz  d
z  z
        k(  sJ t        j                  dd      } t        t        d            t        t        dd            t        t        dd            g}d}t        | ||      }|t        j                  d|dz  z
        k(  sJ d}t        | ||      }|t        j                  d|dz  z
        k(  sJ d}t        | ||      }|t        j                  d|dz  z
        k(  sJ h dh dh ddhdhg}d}t        | ||      }|t        j                  d|dz  z
        k(  sJ d}t        | ||      }|t        j                  d|dz  z
        k(  sJ d}t        | ||      }|t        j                  d|dz  z
        k(  sJ t        t        d            t        t        dd            g}d}t        | ||      }|t        j                  d|dz  z
        k(  sJ d}t        | ||      }|t        j                  d|dz  z
        k(  sJ d }t        | ||      }|t        j                  d|dz  z
        k(  sJ y )!Nr
   r   r   r   g</崿r   )
resolutionr+   d      g?r   r    gm۶m?r.   b   r         r   gUUUUUU?g     ?>   r   r   r   r
   >   	   r3         >   r         r   g?gqq?g      @g?g     @?g333333?)r4   r   r   r   r   	frozensetr7   )r   r>   gammaresults       r   test_modularity_resolutionrQ   F   s   
AA	IAav}}-@AAAAE1/FV]]553;+>#>????E1/FV]]553;+>#>????	IAav}}-?@@@@E1/FV]]552:+=#=>>>>E1/FV]]552:+=#=>>>>
AA	58	ia5yq!7MNAE1/FV]]Gu/F#FGGGGE1/FV]]Gu/F#FGGGGE1/FV]]Gu/F#FGGGG		A3<AE1/FV]]Gu/F#FGGGGE1/FV]]Gu/F#FGGGGE1/FV]]Gu/F#FGGGG	58	ia56AE1/FV]]Gu/G#GHHHHE1/FV]]Gu/G#GHHHHE1/FV]]Gu/G#GHHHHr   c                     t        j                  dt        j                               } dhdhg}t        | |      dk(  sJ t        j                  dt        j                               } dhddhh dh dg}t        | |      dk(  sJ t        j                  d	t        j                               } ddhdd
hg}t        | |      dk(  sJ y )Nr   )create_usingr   r   r3   r    >   rL   rM   rG   rI   F   r   r
   )r4   complete_graphr<   r   cycle_graph)r   r   s     r   (test_inter_community_edges_with_digraphsrW      s    
!"**,7Aqc
I I.!333
"2::<8Aq!fi6I I."444
qrzz|4AQ!Q I I.!333r   )r&   r   networkxr4   r   networkx.algorithms.communityr   r   %networkx.algorithms.community.qualityr   r   r)   rA   rQ   rW   r'   r   r   <module>r[      sD   
   " G GV V T T >07It4r   