
    ܛ7i                     2   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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       e/home/rose/Desktop/poly/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#J823'':'$1<<%'K:z?aJNN$4Q1$DDD{q [__%61q5Q,%FFF 	1uzGGDAq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_expander_graphr   r7   is_k_regulardr   r,   s      r   !test_maybe_regular_expander_graphrL   @   sx    
 
''148A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>   z3Too many iterations in maybe_regular_expander_graphmatchd   i  )	max_triesrD      r   r   raisesr   NetworkXErrorrH   )rK   r   msgs      r   +test_maybe_regular_expander_graph_max_triesrW   J   sj    
 DAq
?C	r''s	3
''1$G 
4 ##AqCdC 
4	3s   A>>Bc                  h   t        j                  d       d\  } }t        j                         5  t        j                  || d      }d d d        t              |k(  sJ d       t        |j                        || z  dz  k(  sJ d       t        j                  ||       sJ d       y # 1 sw Y   axY w)	Nr   r=   rB   rC   rE   r   rF   rG   )r   r   deprecated_callr   maybe_regular_expanderr   r7   rI   rJ   s      r   &test_maybe_regular_expander_deprecatedr[   T   s    
 DAq				!%%a6 
" q6Q;---;qww<1q519$?&??$??1a 7"77  
"	!s   B((B1)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`   _   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   r]   )r   r   r   random_regular_expander_graphr   r7   rI   r_   rJ   s      r   test_random_regular_expanderrc   h   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   rb   r   r7   )r,   s    r   2test_random_regular_expander_explicit_constructionre   t   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   rf   s    r   )test_margulis_gabber_galil_graph_badinputrl   |   s<    	
 Q
 	&&qzB
 
 
   AAc                     t        j                  t        j                  d      5  t        j                  d|        d d d        y # 1 sw Y   y xY wrh   )r   rT   r   rU   r+   rk   s    r   !test_chordal_cycle_graph_badinputro      s<    	
 Q
 	qz:
 
 
rm   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   ri   )r   rT   r   rU   r2   
MultiGraph r   r   test_paley_graph_badinputrs      s>    	
 H
 	qr}}5
 
 
s   &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   rr   r   r   *test_maybe_regular_expander_graph_badinputrz      s    
 	r''/M	N
''"2 
O 
r''/U	V
''"2 
W 
r''/J	K
''!q1 
L	K 
O	N 
W	V 
L	Ks#   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   rv   )epsilon)r   r   rT   r   rU   r_   Graphrr   r   r   !test_is_regular_expander_badinputr      sV    
 
 	r''/M	N
rxxz26 
O	N	Ns   *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   ru   rN   rv   r   rw   rx   r   r   ry   r   r   r|   r1   )r   rK   r}   )r   r   rT   r   rU   rb   rr   r   r   %test_random_regular_expander_badinputr      s    
 
 	r''/M	N
((23 
O 
r''/U	V
((23 
W 
r''/J	K
((12 
L 
r''/M	N
((12> 
O	N 
O	N 
W	V 
L	K 
O	Ns0   EEEE%E
EE"%E.)__doc__r   networkxr   markparametrizer   r&   r-   r<   rL   rW   r[   r`   rc   re   r~   DiGraphMultiDiGraphrl   ro   rs   rz   r   r   rr   r   r   <module>r      s   E   ./ 0 ./" 0" m, - /0% 1%$ !;<8 =8D8 m,E -E !FGE HEL "**boo'NOC PC "**boo'NO; P;6
27?r   