
    h                     &   S r SSKrSSKr\R                  R                  SS5      S 5       r\R                  R                  SS5      S 5       r\R                  R                  SS5      S	 5       r\R                  R                  SS
5      S 5       r	\R                  R                  S/ SQ5      S 5       r
\R                  R                  SS5      S 5       r\R                  R                  S/ SQ5      S 5       rS r\R                  R                  S\R                  \R                  \R                   45      S 5       r\R                  R                  S\R                  \R                  \R                   45      S 5       rS rS rS rS rg)z?Unit tests for the :mod:`networkx.generators.expanders` module.    Nn)            
   c                    [         R                  " U 5      nUR                  5       X -  :X  d   eU HW  nUR                  U5      S:X  d   e[	        U5      S:X  d   eU H&  n[        U5      U:X  d   eSUs=::  a	  U :  a  M#   e   e   MY     g )N   r   r   )nxmargulis_gabber_galil_graphnumber_of_nodesdegreelenint)r   gnodeis       Z/var/www/html/env/lib/python3.13/site-packages/networkx/generators/tests/test_expanders.py+test_margulis_gabber_galil_graph_propertiesr      s    
&&q)A!%'''xx~"""4yA~~Aq6Q;;:A:::      c                 N   [         R                  " S5      n[         R                  " S5      n[        R                  " U 5      n[	        UR
                  R                  [        R                  " U5      R                  5       5      5      nUS   SUR                  S5      -  :  d   eg )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                 R    [         R                  " U 5      n[        U5      U :X  d   eg)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                    [         R                  " U 5      n[        U5      U :X  d   eUR                   Vs1 s H  o!R	                  U5      iM     nnUR                   Vs1 s H  o!R                  U5      iM     nn[        U5      S:X  a  UR                  5       U S-
  S-  :X  d   e[        U5      S:X  a  UR                  5       U S-
  S-  :X  d   eU S-  S:X  a)  UR                   H  u  pVXe4UR                  ;   a  M   e   ggs  snf s  snf )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'':'$<<%'K:z?aJNN$4Q1$DDD{q [__%61q5Q,%FFF 	1uzGGDA6QWW$$$   9:s   D D
zd, n))r   r(   )r1   r   )r1      c                    [         R                  " S5        [        R                  " X5      n[	        U5      U:X  d   S5       e[	        UR
                  5      X-  S-  :X  d   S5       e[        R                  " X 5      (       d   S5       eg )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   @   ss    
 
!!!'Aq6Q;---;qww<1519$?&??$??1  7"77 r   )r   r   r   r   c                     [         R                  " S5        [         R                  " S5        [        R                  " U 5      n[        R                  " U5      S:X  d   S5       eg )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                    [         R                  " S5        [         R                  " S5        [        R                  " X5      n[	        U5      U:X  d   S5       e[	        UR
                  5      X-  S-  :X  d   S5       e[        R                  " X 5      (       d   S5       e[        R                  " U5      S:X  d   S5       eg )	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q6Q;---;qww<1519$?&??$??1  7"77 !!!$,L.LL,r   c                      [         R                  " S5        [         R                  " S5        [        R                  " SSS9n [	        U 5      S:X  a  [	        U R
                  5      S:X  d   S5       eg )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                     [         R                  " [        R                  SS9   [        R                  " SU S9  S S S 5        g ! , (       d  f       g = fNz/`create_using` must be an undirected multigraphmatchr   create_using)r   raisesr   NetworkXErrorr   rQ   s    r   )test_margulis_gabber_galil_graph_badinputr[   g   s<    	
 Q
 	&&qzB
 
 
   A
Ac                     [         R                  " [        R                  SS9   [        R                  " SU S9  S S S 5        g ! , (       d  f       g = frS   )r   rX   r   rY   r+   rZ   s    r   !test_chordal_cycle_graph_badinputr^   o   s<    	
 Q
 	qz:
 
 
r\   c                      [         R                  " [        R                  SS9   [        R                  " S[        R
                  S9  S S S 5        g ! , (       d  f       g = f)Nz&`create_using` cannot be a multigraph.rT   r   rV   )r   rX   r   rY   r2   
MultiGraph r   r   test_paley_graph_badinputrb   w   s>    	
 H
 	qr}}5
 
 
s   $A
Ac                  H   [         R                  " S5        [         R                  " S5        [         R                  " [        R                  SS9   [        R
                  " SSS9  S S S 5        [         R                  " [        R                  SS9   [        R
                  " S	S
S9  S S S 5        [         R                  " [        R                  SS9   [        R
                  " SSS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       Na= f! , (       d  f       g = f)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!, 
O 
r''/U	V
!!B!, 
W 
r''/J	K
!!A+ 
L	K 
O	N 
W	V 
L	Ks$   C1DD1
C?
D
D!c                  &   [         R                  " S5        [         R                  " S5        [         R                  " [        R                  SS9   [        R
                  " [        R                  " 5       SS9  S S S 5        g ! , (       d  f       g = f)Nr   r   epsilon must be non negativerT   re   )epsilon)r   r   rX   r   rY   rJ   Graphra   r   r   !test_is_regular_expander_badinputrn      sV    
 
 	r''/M	N
rxxz26 
O	N	Ns   )B
Bc                     [         R                  " S5        [         R                  " S5        [         R                  " [        R                  SS9   [        R
                  " SSS9  S S S 5        [         R                  " [        R                  SS9   [        R
                  " S	S
S9  S S S 5        [         R                  " [        R                  SS9   [        R
                  " SSS9  S S S 5        [         R                  " [        R                  SS9   [        R
                  " SSSS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Ns= f! , (       d  f       g = f)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
((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   D3EEE&3
E
E
E#&
E4)__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   