o
    ]Zh                     @   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_graphZnumber_of_nodesZdegreelenint)r   gnodei r   W/var/www/auris/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
   sortedZlinalgZeigvalshZadjacency_matrixZ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   )Z	in_degree.0r   r"   r   r   	<setcomp>4       z#test_paley_graph.<locals>.<setcomp>c                    r%   r   )Z
out_degreer&   r(   r   r   r)   5   r*      r      N)r	   paley_graphr   nodespopedges)r   Z
in_degreesZout_degreesuvr   r(   r   test_paley_graph-   s   
$$r3   zd, n))r   r   )r,   r   )r,      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   r0   is_k_regulardr   r"   r   r   r   test_maybe_regular_expander@   s
   
r<   )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	   Zcomplete_graphis_regular_expander)r   r"   r   r   r   test_is_regular_expanderJ   s   


r?   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   r5   r   r6   r7   Tr=   )r   r   r	   random_regular_expander_graphr   r0   r9   r>   r:   r   r   r   test_random_regular_expanderS   s   

rA   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   r,   r   )r;   r   r   zShould be a complete graph)r   r   r	   r@   r   r0   r(   r   r   r   2test_random_regular_expander_explicit_construction_   s   

&rB   
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   Zcreate_using)r   raisesr	   NetworkXErrorr
   rC   r   r   r   )test_margulis_gabber_galil_graph_badinputg   
   "rL   c                 C   rD   rE   )r   rI   r	   rJ   r!   rK   r   r   r   !test_chordal_cycle_graph_badinputo   rM   rN   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.rF   r   rH   )r   rI   r	   rJ   r-   Z
MultiGraphr   r   r   r   test_paley_graph_badinputw   s
   "rO   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 integerrF   r   r   r;   $d must be greater than or equal to 2r   r   Need n-1>= d to have roomr   r   )r   r   rI   r	   rJ   r8   r   r   r   r   $test_maybe_regular_expander_badinput~   s   

"rU   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 negativerF   rQ   )epsilon)r   r   rI   r	   rJ   r>   Graphr   r   r   r   !test_is_regular_expander_badinput   s
   

"rY   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   rP   rF   rQ   r   rR   rS   r   r   rT   r   r   rV   r,   )r   r;   rW   )r   r   rI   r	   rJ   r@   r   r   r   r   %test_random_regular_expander_badinput   s   

"rZ   )__doc__r   Znetworkxr	   markZparametrizer   r   r#   r3   r<   r?   rA   rB   rX   ZDiGraphZMultiDiGraphrL   rN   rO   rU   rY   rZ   r   r   r   r   <module>   s4    




	



