o
    ]Zh                   	   @   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   Z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   R/var/www/auris/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   "r-   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   r/   r   r   r0   r   r   r   r   6   r   r   barabasi_albert_graphsorteddegreedouble_edge_swapr,   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 )Nr.   r	   c                 s   r/   r   r   r0   r   r   r   r   ;   r   z-test_double_edge_swap_seed.<locals>.<genexpr>r3   r   c                 s   r/   r   r   r0   r   r   r   r   =   r   r4   r9   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 )Nr.   r	   c                 s   r/   r   r   r0   r   r   r   r   B   r   z2test_connected_double_edge_swap.<locals>.<genexpr>r3   r   c                 s   r/   r   r   r0   r   r   r   r   E   r   r   r5   r6   r7   connected_double_edge_swapis_connectedr9   r   r   r   test_connected_double_edge_swap@   s
   "r@   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 )	Nr.   r	   c                 s   r/   r   r   r0   r   r   r   r   J   r   zGtest_connected_double_edge_swap_low_window_threshold.<locals>.<genexpr>r3   r   Z_window_thresholdr   c                 s   r/   r   r   r0   r   r   r   r   M   r   r=   r9   r   r   r   4test_connected_double_edge_swap_low_window_thresholdH   s
   "rB   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 )Nr3   c                 s   r/   r   r   r0   r   r   r   r   S   r   z7test_connected_double_edge_swap_star.<locals>.<genexpr>r	   r    r   c                 s   r/   r   r   r0   r   r   r   r   V   r   r   Z
star_graphr6   r7   r>   r?   r9   r   r   r   $test_connected_double_edge_swap_starP   s
   
"rD   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 )	Nr3   c                 s   r/   r   r   r0   r   r   r   r   \   r   zLtest_connected_double_edge_swap_star_low_window_threshold.<locals>.<genexpr>r	   r   r    rA   c                 s   r/   r   r   r0   r   r   r   r   _   r   rC   r9   r   r   r   9test_connected_double_edge_swap_star_low_window_thresholdY   s
   
"rE   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      "rI   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!   rF   rH   r   r   r   test_directed_edge_swap_triesg   
   "rK   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*   ZNetworkXNotImplementedr   r,   r   r   r   r   "test_directed_exception_undirectedn   s   "rO   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"   rH   r   r   r   test_directed_edge_max_triest   rL   rR   c                  C   B   t tj ttd} W d    d S 1 sw   Y  d S Nr   r)   r*   r   rG   r8   r#   rH   r   r   r   test_double_edge_swap_small{      "rV   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!   rU   rH   r   r   r   test_double_edge_swap_tries   rJ   rY   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*   rG   r8   rN   r   r   r   test_double_edge_directed   s   "rZ   c                  C   rX   rP   )r)   r*   r   r+   r8   rQ   rH   r   r   r   test_double_edge_max_tries   rJ   r[   c                  C   rS   rT   )r)   r*   r   rG   r>   r#   rH   r   r   r   %test_connected_double_edge_swap_small   rW   r\   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   rG   r#   Zadd_pathr>   rH   r   r   r   -test_connected_double_edge_swap_not_connected   s
   
"r_   c                  C   sP   t d} tdd |  D }t | dd} |tdd |  D ks&J d S )Nr    c                 s   r/   r   r   r0   r   r   r   r      r   z%test_degree_seq_c4.<locals>.<genexpr>r	   r   c                 s   r/   r   r   r0   r   r   r   r      r   )r   cycle_graphr6   r7   r8   )r   r:   r   r   r   test_degree_seq_c4   s   
"ra   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*   rG   r   rH   r   r   r   test_fewer_than_4_nodes   s
   "rc   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"   rb   r)   r*   rG   r   rM   r8   rH   r   r   r   test_less_than_3_edges   s   "rd   ))r)   Znetworkxr   r`   r"   cycletreeZadd_edges_fromZrandom_labeled_treer   r#   pathZbinomial_treeZbinomialZdirected_havel_hakimi_graphZHHZbalanced_treemarkZparametrizer   r$   r-   r;   r<   r@   rB   rD   rE   rI   rK   rO   rR   rV   rY   rZ   r[   r\   r_   ra   rc   rd   r   r   r   r   <module>   s@    
		