o
    h                   	   @   sR  d dl Z d dlZejdejdZe Zeejdddj	 ej
dejdZejdejdZeg dg d	Zejd
dejdZe jdeeeeeegdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Z d(d) Z!d*d+ Z"d,d- Z#d.d/ Z$d0d1 Z%d2d3 Z&d4d5 Z'd6d7 Z(dS )8    N   create_using
   *   seed   )      r
   r   r   r   )r	   r
   r   r
   r   r	   r   Gc                    s   t | j}t | j}t | j tj| dddd |t | jks!J |t | jks*J  t | jks3J dt fdd| jD ksCJ d S )Nr
   d   nswap	max_triesr   r	   c                 3   s    | ]}| vV  qd S N ).0eedgesr   W/var/www/vscode/kcb/lib/python3.10/site-packages/networkx/algorithms/tests/test_swap.py	<genexpr>       z*test_directed_edge_swap.<locals>.<genexpr>)set	in_degree
out_degreer   nxdirected_edge_swapsum)r   r   r   r   r   r   test_directed_edge_swap   s   


$r    c                  C   s   t t dj} t| j}t j| ddd |t| jksJ t j| dddd h dt| jks3J t j| dddd |t| jksEJ d S )N   r   r   r   r   r
   r   >   r   r   r
   r	   r   r
   )r   DiGraph
path_graphr   r   r   )r   r   r   r   r   *test_directed_edge_swap_undo_previous_swap   s   
r(   c                  C   sZ   d} t g d}tjt j| d t j|dddd W d    d S 1 s&w   Y  d S )NzUMaximum number of swap attempts \(11\) exceeded before desired swaps achieved \(\d\).))r   r   r   r
   )r
   r   r   r	   )r	   r   matchr
   r   r   )r   r&   pytestraisesNetworkXAlgorithmErrorr   )r   graphr   r   r   "test_edge_cases_directed_edge_swap&   s   "r1   c                  C   sP   t dd} tdd |  D }t | d}|tdd |  D ks&J d S )N   r
   c                 s       | ]\}}|V  qd S r   r   r   ndr   r   r   r   4   r   z(test_double_edge_swap.<locals>.<genexpr>(   c                 s   r3   r   r   r4   r   r   r   r   6   r   r   barabasi_albert_graphsorteddegreedouble_edge_swapr0   degreesr   r   r   r   test_double_edge_swap2   s   "r?   c                  C   sT   t dd} tdd |  D }t j| ddd}|tdd |  D ks(J d S )Nr2   r
   c                 s   r3   r   r   r4   r   r   r   r   ;   r   z-test_double_edge_swap_seed.<locals>.<genexpr>r7   r   c                 s   r3   r   r   r4   r   r   r   r   =   r   r8   r=   r   r   r   test_double_edge_swap_seed9   s   "r@   c                  C   sb   t dd} tdd |  D }t j| ddd}t | s J |tdd |  D ks/J d S )Nr2   r
   c                 s   r3   r   r   r4   r   r   r   r   B   r   z2test_connected_double_edge_swap.<locals>.<genexpr>r7   r   c                 s   r3   r   r   r4   r   r   r   r   E   r   r   r9   r:   r;   connected_double_edge_swapis_connectedr=   r   r   r   test_connected_double_edge_swap@   s
   "rD   c                  C   sd   t dd} tdd |  D }t j| dddd}t | s!J |tdd |  D ks0J d S )	Nr2   r
   c                 s   r3   r   r   r4   r   r   r   r   J   r   zGtest_connected_double_edge_swap_low_window_threshold.<locals>.<genexpr>r7   r   _window_thresholdr   c                 s   r3   r   r   r4   r   r   r   r   M   r   rA   r=   r   r   r   4test_connected_double_edge_swap_low_window_thresholdH   s
   "rG   c                  C   s`   t d} tdd |  D }t j| ddd}t | sJ |tdd |  D ks.J d S )Nr7   c                 s   r3   r   r   r4   r   r   r   r   S   r   z7test_connected_double_edge_swap_star.<locals>.<genexpr>r
   r!   r   c                 s   r3   r   r   r4   r   r   r   r   V   r   r   
star_graphr:   r;   rB   rC   r=   r   r   r   $test_connected_double_edge_swap_starP   s
   
"rJ   c                  C   sb   t d} tdd |  D }t j| dddd}t | s J |tdd |  D ks/J d S )	Nr7   c                 s   r3   r   r   r4   r   r   r   r   \   r   zLtest_connected_double_edge_swap_star_low_window_threshold.<locals>.<genexpr>r
   r   r!   rE   c                 s   r3   r   r   r4   r   r   r   r   _   r   rH   r=   r   r   r   9test_connected_double_edge_swap_star_low_window_thresholdY   s
   
"rK   c                  C   sH   t tj ttjdtjd} W d    d S 1 sw   Y  d S )Nr	   r   r-   r.   r   NetworkXErrorr   r'   r&   r   r   r   r   test_directed_edge_swap_smallb      "rO   c                  C   sN   t tj tjtjdtjdddd} W d    d S 1 s w   Y  d S )Nr	   r   r
   r   r"   rL   rN   r   r   r   test_directed_edge_swap_triesg   
   "rQ   c                  C   sJ   t ddg} tt j t | }W d    d S 1 sw   Y  d S )Nr)   r*   )r   Graphr-   r.   NetworkXNotImplementedr   r0   r   r   r   r   "test_directed_exception_undirectedn   s   "rV   c                  C   sN   t tj tjtdt ddd} W d    d S 1 s w   Y  d S Nr!   r
   r   r"   )r-   r.   r   r/   r   complete_graphr&   rN   r   r   r   test_directed_edge_max_triest   rR   rY   c                  C   B   t tj ttd} W d    d S 1 sw   Y  d S Nr	   r-   r.   r   rM   r<   r'   rN   r   r   r   test_double_edge_swap_small{      "r]   c                  C   H   t tj tjtdddd} W d    d S 1 sw   Y  d S )Nr   r
   r   r"   r\   rN   r   r   r   test_double_edge_swap_tries   rP   r`   c                  C   sN   t ddg} tjt jdd t | }W d    d S 1 s w   Y  d S )Nr)   r*   z not defined for directed graphs.r+   )r   r&   r-   r.   rM   r<   rU   r   r   r   test_double_edge_directed   s   "ra   c                  C   r_   rW   )r-   r.   r   r/   r<   rX   rN   r   r   r   test_double_edge_max_tries   rP   rb   c                  C   rZ   r[   )r-   r.   r   rM   rB   r'   rN   r   r   r   %test_connected_double_edge_swap_small   r^   rc   c                  C   sV   t tj td} t| g d t| } W d    d S 1 s$w   Y  d S )Nr	   )r         )r-   r.   r   rM   r'   add_pathrB   rN   r   r   r   -test_connected_double_edge_swap_not_connected   s
   
"rg   c                  C   sP   t d} tdd |  D }t | dd} |tdd |  D ks&J d S )Nr!   c                 s   r3   r   r   r4   r   r   r   r      r   z%test_degree_seq_c4.<locals>.<genexpr>r
   r   c                 s   r3   r   r   r4   r   r   r   r      r   )r   cycle_graphr:   r;   r<   )r   r>   r   r   r   test_degree_seq_c4   s   
"ri   c                  C   sV   t  } | g d tjt jdd t |  W d    d S 1 s$w   Y  d S )N)r   r
   r   z.*fewer than four nodes.r+   )r   r&   add_nodes_fromr-   r.   rM   r   rN   r   r   r   test_fewer_than_4_nodes   s
   "rk   c                  C   s   t ddg} | ddg tjt jdd t |  W d    n1 s&w   Y  t  } | g d tjt jdd t |  W d    d S 1 sOw   Y  d S )	Nr)   )r
   r   r	   r!   z.*fewer than 3 edgesr+   )r   r
   r   r	   z.*fewer than 2 edges)	r   r&   rj   r-   r.   rM   r   rS   r<   rN   r   r   r   test_less_than_3_edges   s   "rl   ))r-   networkxr   rh   r&   cycletreeadd_edges_fromrandom_labeled_treer   r'   pathbinomial_treebinomialdirected_havel_hakimi_graphHHbalanced_treemarkparametrizer    r(   r1   r?   r@   rD   rG   rJ   rK   rO   rQ   rV   rY   r]   r`   ra   rb   rc   rg   ri   rk   rl   r   r   r   r   <module>   s@    
		