o
    h                     @   s&  d Z ddlZddlZejdddd Zejdddd Zejd	d
dd Zejd	ddd Z	ejdg ddd Z
ejdddd Zejdg ddd Zdd Zejdejejejfdd Zejdejejejfdd Zd d! Zd"d# Zd$d% Zd&d' ZdS )(z?Unit tests for the :mod:`networkx.generators.expanders` module.    Nn)            
   c                 C   s   t | }| | |  ksJ |D ].}||dksJ t|dks$J |D ]}t||ks0J d|  kr;| k s>J  J q&qd S )N   r   r   )nxmargulis_gabber_galil_graphnumber_of_nodesdegreelenint)r   gnodei r   \/var/www/vscode/kcb/lib/python3.10/site-packages/networkx/generators/tests/test_expanders.py+test_margulis_gabber_galil_graph_properties   s   
r   c                 C   sV   t d}t d}t| }t|jt| }|d d|	d k s)J d S )Nnumpyscipyr   r   )
pytestimportorskipr	   r
   sortedlinalgeigvalshadjacency_matrixtoarraysqrt)r   npspr   wr   r   r   (test_margulis_gabber_galil_graph_eigvals   s
   


r#   p)r   r         c                 C   s   t | }t|| ksJ dS )z;Test for the :func:`networkx.chordal_cycle_graph` function.N)r	   chordal_cycle_graphr   )r$   Gr   r   r   test_chordal_cycle_graph    s   
r)   )r   r   r%   r&      c                    s   t |  t | ksJ  fdd jD } fdd jD }t|dkr1| | d d ks3J t|dkrC| | d d ksEJ | d dkr\ jD ]\}}||f jv s[J qNdS dS )z3Test for the :func:`networkx.paley_graph` function.c                       h | ]}  |qS r   )	in_degree.0r   r(   r   r   	<setcomp>4       z#test_paley_graph.<locals>.<setcomp>c                    r+   r   )
out_degreer-   r/   r   r   r0   5   r1      r      N)r	   paley_graphr   nodespopedges)r$   
in_degreesout_degreesuvr   r/   r   test_paley_graph-   s   
$$r=   zd, n))r   r%   )r4   r   )r4      c                 C   s`   t d t|| }t||ksJ dt|j||  d ks$J dt|| s.J dd S )Nr   Should have n nodesr   Should have n*d/2 edgesShould be d-regular)r   r   r	   maybe_regular_expanderr   r8   is_k_regulardr   r(   r   r   r   test_maybe_regular_expander@   s
   
rF   )r   r   r   r   c                 C   s8   t d t d t| }t|dksJ dd S )Nr   r   TShould be a regular expander)r   r   r	   complete_graphis_regular_expander)r   r(   r   r   r   test_is_regular_expanderJ   s   


rJ   c                 C   s   t d t d t|| }t||ksJ dt|j||  d ks)J dt|| s3J dt|dks>J dd S )	Nr   r   r?   r   r@   rA   TrG   )r   r   r	   random_regular_expander_graphr   r8   rC   rI   rD   r   r   r   test_random_regular_expanderS   s   

rL   c                  C   sH   t d t d tjddd} t| dkrt| jdks"J dd S )Nr   r   r4   r   )rE   r   r   zShould be a complete graph)r   r   r	   rK   r   r8   r/   r   r   r   2test_random_regular_expander_explicit_construction_   s   

&rM   
graph_typec                 C   D   t jtjdd tjd| d W d    d S 1 sw   Y  d S Nz/`create_using` must be an undirected multigraphmatchr   create_using)r   raisesr	   NetworkXErrorr
   rN   r   r   r   )test_margulis_gabber_galil_graph_badinputg   
   "rX   c                 C   rO   rP   )r   rU   r	   rV   r'   rW   r   r   r   !test_chordal_cycle_graph_badinputo   rY   rZ   c                   C   sF   t jtjdd tjdtjd W d    d S 1 sw   Y  d S )Nz&`create_using` cannot be a multigraph.rQ   r   rS   )r   rU   r	   rV   r5   
MultiGraphr   r   r   r   test_paley_graph_badinputw   s
   "r\   c                   C   s   t d t d t jtjdd tjddd W d    n1 s$w   Y  t jtjdd tjd	d
d W d    n1 sCw   Y  t jtjdd tjddd W d    d S 1 scw   Y  d S )Nr   r   n must be a positive integerrQ   r   r   rE   $d must be greater than or equal to 2r   r   Need n-1>= d to have roomr   r   )r   r   rU   r	   rV   rB   r   r   r   r   $test_maybe_regular_expander_badinput~   s   

"rb   c                   C   s\   t d t d t jtjdd tjt dd W d    d S 1 s'w   Y  d S )Nr   r   epsilon must be non negativerQ   r^   )epsilon)r   r   rU   r	   rV   rI   Graphr   r   r   r   !test_is_regular_expander_badinput   s
   

"rf   c                   C   s  t d t d t jtjdd tjddd W d    n1 s$w   Y  t jtjdd tjd	d
d W d    n1 sCw   Y  t jtjdd tjddd W d    n1 sbw   Y  t jtjdd tjdddd W d    d S 1 sw   Y  d S )Nr   r   r]   rQ   r^   r   r_   r`   r   r   ra   r   r   rc   r4   )r   rE   rd   )r   r   rU   r	   rV   rK   r   r   r   r   %test_random_regular_expander_badinput   s   

"rg   )__doc__r   networkxr	   markparametrizer   r#   r)   r=   rF   rJ   rL   rM   re   DiGraphMultiDiGraphrX   rZ   r\   rb   rf   rg   r   r   r   r   <module>   s4    




	



