
    wg                     &   d Z ddlZddlZej                  j                  dd      d        Zej                  j                  dd      d        Zej                  j                  dd      d	        Zej                  j                  dd
      d        Z	ej                  j                  dg d      d        Z
ej                  j                  dd      d        Zej                  j                  dg d      d        Zd Zej                  j                  dej                  ej                  ej                   f      d        Zej                  j                  dej                  ej                  ej                   f      d        Zd Zd Zd Zd Zy)z?Unit tests for the :mod:`networkx.generators.expanders` module.    Nn)            
   c                    t        j                  |       }|j                         | | z  k(  sJ |D ]O  }|j                  |      dk(  sJ t	        |      dk(  sJ |D ]"  }t        |      |k(  sJ d|cxk  r| k  rJ  J  Q y )N   r   r   )nxmargulis_gabber_galil_graphnumber_of_nodesdegreelenint)r   gnodeis       m/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/networkx/generators/tests/test_expanders.py+test_margulis_gabber_galil_graph_propertiesr      s    
&&q)A!a%''' xx~"""4yA~~ 	Aq6Q;;:A:::	    c                 D   t        j                  d      }t        j                  d      }t        j                  |       }t	        |j
                  j                  t        j                  |      j                                     }|d   d|j                  d      z  k  sJ y )Nnumpyscipyr   r   )
pytestimportorskipr   r   sortedlinalgeigvalshadjacency_matrixtoarraysqrt)r   npspr   ws        r   (test_margulis_gabber_galil_graph_eigvalsr&      s    			W	%B			W	%B
&&q)A 	ryy!!""5"5a"8"@"@"BCDAR51rwwqz>!!!r   p)r   r         c                 N    t        j                  |       }t        |      | k(  sJ y)z;Test for the :func:`networkx.chordal_cycle_graph` function.N)r   chordal_cycle_graphr   )r'   Gs     r   test_chordal_cycle_graphr-       s$     	q!Aq6Q;;r   )r   r   r(   r)      c                    t        j                  |       }t        |      | k(  sJ |j                  D ch c]  }|j	                  |       }}|j                  D ch c]  }|j                  |       }}t        |      dk(  r|j                         | dz
  dz  k(  sJ t        |      dk(  r|j                         | dz
  dz  k(  sJ | dz  dk(  r'|j                  D ]  \  }}||f|j                  v rJ  yyc c}w c c}w )z3Test for the :func:`networkx.paley_graph` function.   r      N)r   paley_graphr   nodes	in_degree
out_degreepopedges)r'   r,   r   
in_degreesout_degreesuvs          r   test_paley_graphr<   -   s     	qAq6Q;;018!++d#8J823'':$1<<%:K:z?aJNN$4Q1$DDD{q [__%61q5Q,%FFF 	1uzGG 	%DAqq6QWW$$$	%  9:s   C8C=zd, n))r   r(   )r1   r   )r1      c                    t        j                  d       t        j                  ||       }t	        |      |k(  sJ d       t	        |j
                        || z  dz  k(  sJ d       t        j                  ||       sJ d       y )Nr   Should have n nodesr   Should have n*d/2 edgesShould be d-regular)r   r   r   maybe_regular_expanderr   r7   is_k_regulardr   r,   s      r   test_maybe_regular_expanderrF   @   sv    
 
!!!Q'Aq6Q;---;qww<1q519$?&??$??1a 7"77 r   )r   r   r   r   c                     t        j                  d       t        j                  d       t        j                  |       }t        j                  |      dk(  sJ d       y )Nr   r   TShould be a regular expander)r   r   r   complete_graphis_regular_expander)r   r,   s     r   test_is_regular_expanderrK   J   sM    
 
 
!A!!!$,L.LL,r   c                 p   t        j                  d       t        j                  d       t        j                  ||       }t	        |      |k(  sJ d       t	        |j
                        || z  dz  k(  sJ d       t        j                  ||       sJ d       t        j                  |      dk(  sJ d       y )	Nr   r   r?   r   r@   rA   TrH   )r   r   r   random_regular_expander_graphr   r7   rC   rJ   rD   s      r   test_random_regular_expanderrN   S   s    
 
 
((A.Aq6Q;---;qww<1q519$?&??$??1a 7"77 !!!$,L.LL,r   c                      t        j                  d       t        j                  d       t        j                  dd      } t	        |       dk(  rt	        | j
                        dk(  sJ d       y )Nr   r   r1   r   )rE   r   r   zShould be a complete graph)r   r   r   rM   r   r7   )r,   s    r   2test_random_regular_expander_explicit_constructionrP   _   sY    
 
 
((12Aq6Q;3qww<2-K/KK--r   
graph_typec                     t        j                  t        j                  d      5  t        j                  d|        d d d        y # 1 sw Y   y xY wNz/`create_using` must be an undirected multigraphmatchr   create_using)r   raisesr   NetworkXErrorr   rQ   s    r   )test_margulis_gabber_galil_graph_badinputr[   g   sE    	
 Q
 C 	&&qzBC C C   AAc                     t        j                  t        j                  d      5  t        j                  d|        d d d        y # 1 sw Y   y xY wrS   )r   rX   r   rY   r+   rZ   s    r   !test_chordal_cycle_graph_badinputr^   o   sA    	
 Q
 ; 	qz:; ; ;r\   c                      t        j                  t        j                  d      5  t        j                  dt        j
                         d d d        y # 1 sw Y   y xY w)Nz&`create_using` cannot be a multigraph.rT   r   rV   )r   rX   r   rY   r2   
MultiGraph r   r   test_paley_graph_badinputrb   w   sC    	
 H
 6 	qr}}56 6 6s   &AAc                  >   t        j                  d       t        j                  d       t        j                  t        j                  d      5  t        j
                  dd       d d d        t        j                  t        j                  d      5  t        j
                  d	d
       d d d        t        j                  t        j                  d      5  t        j
                  dd       d d d        y # 1 sw Y   xY w# 1 sw Y   [xY w# 1 sw Y   y xY w)Nr   r   n must be a positive integerrT   r   r   rE   $d must be greater than or equal to 2r   r   Need n-1>= d to have roomr   r   )r   r   rX   r   rY   rB   ra   r   r   $test_maybe_regular_expander_badinputri   ~   s    
 
 	r''/M	N -
!!B!,- 
r''/U	V -
!!B!,- 
r''/J	K ,
!!A+, ,- -- -, ,s$   C;DD;DDDc                     t        j                  d       t        j                  d       t        j                  t        j                  d      5  t        j
                  t        j                         d       d d d        y # 1 sw Y   y xY w)Nr   r   epsilon must be non negativerT   re   )epsilon)r   r   rX   r   rY   rJ   Graphra   r   r   !test_is_regular_expander_badinputrn      s^    
 
 	r''/M	N 7
rxxz267 7 7s   *BBc                     t        j                  d       t        j                  d       t        j                  t        j                  d      5  t        j
                  dd       d d d        t        j                  t        j                  d      5  t        j
                  d	d
       d d d        t        j                  t        j                  d      5  t        j
                  dd       d d d        t        j                  t        j                  d      5  t        j
                  ddd       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   hxY w# 1 sw Y   y xY w)Nr   r   rd   rT   re   r   rf   rg   r   r   rh   r   r   rk   r1   )r   rE   rl   )r   r   rX   r   rY   rM   ra   r   r   %test_random_regular_expander_badinputrp      s   
 
 	r''/M	N 4
((234 
r''/U	V 4
((234 
r''/J	K 3
((123 
r''/M	N ?
((12>? ?4 44 43 3? ?s0   EEEE%E
EE"%E.)__doc__r   networkxr   markparametrizer   r&   r-   r<   rF   rK   rN   rP   rm   DiGraphMultiDiGraphr[   r^   rb   ri   rn   rp   ra   r   r   <module>rw      s   E   ./ 0 ./" 0" m, - /0% 1%$ !;<8 =8 m,M -M !;<M =ML "**boo'NOC PC "**boo'NO; P;6,7?r   