o
    3ήcj                     @   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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S )zAUnit 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   O/tmp/pip-target-vg8gfxp4/lib/python/networkx/generators/tests/test_expanders.py+test_margulis_gabber_galil_graph_properties
   s   
r   c                 C   s^   t d}t d}dd l}t| }t|jt|	 }|d d|
d k s-J d S )Nnumpyscipyr   r   r   )pytestimportorskipscipy.linalgr	   r
   sortedlinalgeigvalshadjacency_matrixtoarraysqrt)r   npspr   r   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>7       z#test_paley_graph.<locals>.<setcomp>c                    r,   r   )
out_degreer.   r0   r   r   r1   8   r2      r      N)r	   paley_graphr   nodespopedges)r%   
in_degreesout_degreesuvr   r0   r   test_paley_graph0   s   
$$r>   
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
   r?   r   r   r   )test_margulis_gabber_galil_graph_badinputC   
   "rI   c                 C   r@   rA   )r   rF   r	   rG   r(   rH   r   r   r   !test_chordal_cycle_graph_badinputK   rJ   rK   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.rB   r   rD   )r   rF   r	   rG   r6   
MultiGraphr   r   r   r   test_paley_graph_badinputS   s
   "rM   )__doc__r   networkxr	   markparametrizer   r$   r*   r>   GraphDiGraphMultiDiGraphrI   rK   rM   r   r   r   r   <module>   s     





