
    Vh=                     ,   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
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       X/home/dcms/DCMS/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                  || d      }t	        |      |k(  sJ d       t	        |j
                        || z  dz  k(  sJ d       t        j                  ||       sJ d       y )Nr     seed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_expanderrL   @   sx    
 
!!!QT2Aq6Q;---;qww<1q519$?&??$??1a 7"77 r   c                     t        j                  d       d\  } }d}t        j                  t        j                  |      5  t        j
                  || dd       d d d        t        j
                  || dd       y # 1 sw Y   #xY w)	Nr   r>   z-Too many iterations in maybe_regular_expandermatchd   i  )	max_triesrD      r   r   raisesr   NetworkXErrorrH   )rK   r   msgs      r   %test_maybe_regular_expander_max_triesrW   J   su    
 DAq
9C	r''s	3 B
!!!Q#DAB ac=B Bs   A>>B)r   r   r   r   c                     t        j                  d       t        j                  d       t        j                  |       }t        j                  |      sJ d       y )Nr   r   Should be a regular expander)r   r   r   complete_graphis_regular_expander)r   r,   s     r   test_is_regular_expanderr\   T   sH    
 
 
!A!!!$D&DD$r   )r=   r>   r?   )r1   i  c                 n   t        j                  d       t        j                  d       t        j                  || d      }t	        |      |k(  sJ d       t	        |j
                        || z  dz  k(  sJ d       t        j                  ||       sJ d       t        j                  |      sJ d	       y )
Nr   r   rB   rC   rE   r   rF   rG   rY   )r   r   r   random_regular_expander_graphr   r7   rI   r[   rJ   s      r   test_random_regular_expanderr_   ]   s    
 
 
((AD9Aq6Q;---;qww<1q519$?&??$??1a 7"77 !!!$D&DD$r   c                      t        j                  d       t        j                  d       t        j                  ddd      } t	        |       dk(  rt	        | j
                        dk(  sJ d       y )	Nr   r   r1   r   rB   )rK   r   rD   r   zShould be a complete graph)r   r   r   r^   r   r7   )r,   s    r   2test_random_regular_expander_explicit_constructionra   i   s[    
 
 
((1=A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 multigraphrN   r   create_using)r   rT   r   rU   r   rb   s    r   )test_margulis_gabber_galil_graph_badinputrh   q   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rd   )r   rT   r   rU   r+   rg   s    r   !test_chordal_cycle_graph_badinputrk   y   sA    	
 Q
 ; 	qz:; ; ;ri   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.rN   r   re   )r   rT   r   rU   r2   
MultiGraph r   r   test_paley_graph_badinputro      sC    	
 H
 6 	qr}}56 6 6s   &AAc                     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   n must be a positive integerrN   r   r   rK   $d must be greater than or equal to 2r   r   Need n-1>= d to have roomr   r   rS   rn   r   r   $test_maybe_regular_expander_badinputrv      s    
 	r''/M	N -
!!B!,- 
r''/U	V -
!!B!,- 
r''/J	K ,
!!A+, ,- -- -, ,s#   C& C2C>&C/2C;>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 negativerN   rr   )epsilon)r   r   rT   r   rU   r[   Graphrn   r   r   !test_is_regular_expander_badinputr{      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   rq   rN   rr   r   rs   rt   r   r   ru   r   r   rx   r1   )r   rK   ry   )r   r   rT   r   rU   r^   rn   r   r   %test_random_regular_expander_badinputr}      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<   rL   rW   r\   r_   ra   rz   DiGraphMultiDiGraphrh   rk   ro   rv   r{   r}   rn   r   r   <module>r      s   E   ./ 0 ./" 0" m, - /0% 1%$ !;<8 =8> m,E -E !FGE HEL "**boo'NOC PC "**boo'NO; P;6
,7?r   