U
    ?h                     @   s   d dl Z d dl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d$d% Zd&d' Zd(d) Zd*d+ ZdS ),    Nc                  C   s   t jdt jd} tdd |  D }tdd |  D }t j| dddd	}|td
d | D kslt|tdd | D kstd S )N   Zcreate_usingc                 s   s   | ]\}}||fV  qd S N .0ndr   r   U/var/www/html/venv/lib/python3.8/site-packages/networkx/algorithms/tests/test_swap.py	<genexpr>   s     z*test_directed_edge_swap.<locals>.<genexpr>c                 s   s   | ]\}}||fV  qd S r   r   r   r   r   r
   r   	   s     (   i     nswap	max_triesseedc                 s   s   | ]\}}||fV  qd S r   r   r   r   r   r
   r      s     c                 s   s   | ]\}}||fV  qd S r   r   r   r   r   r
   r      s     )nx
path_graphDiGraphsortedZ	in_degreeZ
out_degreedirected_edge_swapAssertionError)graphZ
in_degreesZout_degreesGr   r   r
   test_directed_edge_swap   s    r   c               	   C   sJ   d} t dddddg}tjt j| d t j|dd	dd
 W 5 Q R X d S )NzUMaximum number of swap attempts \(11\) exceeded before desired swaps achieved \(\d\).)r   r   r   r   )r   r         )r   r   matchr   
   r   )r   r   pytestraisesNetworkXAlgorithmErrorr   )er   r   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sLtd S )Nr   r   c                 s   s   | ]\}}|V  qd S r   r   r   r   r   r
   r      s     z(test_double_edge_swap.<locals>.<genexpr>r   c                 s   s   | ]\}}|V  qd S r   r   r   r   r   r
   r      s     r   barabasi_albert_graphr   degreedouble_edge_swapr   r   degreesr   r   r   r
   test_double_edge_swap   s    r-   c                  C   sT   t dd} tdd |  D }t j| ddd}|tdd |  D ksPtd S )Nr   r   c                 s   s   | ]\}}|V  qd S r   r   r   r   r   r
   r   $   s     z-test_double_edge_swap_seed.<locals>.<genexpr>r   r   c                 s   s   | ]\}}|V  qd S r   r   r   r   r   r
   r   &   s     r'   r+   r   r   r
   test_double_edge_swap_seed"   s    r/   c                  C   sb   t dd} tdd |  D }t j| ddd}t | s@t|tdd |  D ks^td S )Nr   r   c                 s   s   | ]\}}|V  qd S r   r   r   r   r   r
   r   +   s     z2test_connected_double_edge_swap.<locals>.<genexpr>r   r.   c                 s   s   | ]\}}|V  qd S r   r   r   r   r   r
   r   .   s     r   r(   r   r)   connected_double_edge_swapis_connectedr   r+   r   r   r
   test_connected_double_edge_swap)   s
    r3   c                  C   sd   t dd} tdd |  D }t j| dddd}t | sBt|tdd |  D ks`td S )	Nr   r   c                 s   s   | ]\}}|V  qd S r   r   r   r   r   r
   r   3   s     zGtest_connected_double_edge_swap_low_window_threshold.<locals>.<genexpr>r   r   Z_window_thresholdr   c                 s   s   | ]\}}|V  qd S r   r   r   r   r   r
   r   6   s     r0   r+   r   r   r
   4test_connected_double_edge_swap_low_window_threshold1   s
    r5   c                  C   s`   t d} tdd |  D }t j| ddd}t | s>t|tdd |  D ks\td S )Nr   c                 s   s   | ]\}}|V  qd S r   r   r   r   r   r
   r   <   s     z7test_connected_double_edge_swap_star.<locals>.<genexpr>r      r.   c                 s   s   | ]\}}|V  qd S r   r   r   r   r   r
   r   ?   s     r   Z
star_graphr   r)   r1   r2   r   r+   r   r   r
   $test_connected_double_edge_swap_star9   s
    
r8   c                  C   sb   t d} tdd |  D }t j| dddd}t | s@t|tdd |  D ks^td S )	Nr   c                 s   s   | ]\}}|V  qd S r   r   r   r   r   r
   r   E   s     zLtest_connected_double_edge_swap_star_low_window_threshold.<locals>.<genexpr>r   r   r6   r4   c                 s   s   | ]\}}|V  qd S r   r   r   r   r   r
   r   H   s     r7   r+   r   r   r
   9test_connected_double_edge_swap_star_low_window_thresholdB   s
    
r9   c               	   C   s2   t tj ttjdtjd} W 5 Q R X d S )Nr   r   r"   r#   r   NetworkXErrorr   r   r   r   r   r   r
   test_directed_edge_swap_smallK   s    r=   c               	   C   s8   t tj" tjtjdtjdddd} W 5 Q R X d S )Nr   r   r   r   r   r   r:   r<   r   r   r
   test_directed_edge_swap_triesP   s      r?   c               	   C   s4   t ddg} tt j t | }W 5 Q R X d S )Nr   r   )r   Graphr"   r#   ZNetworkXNotImplementedr   r   r   r   r   r
   "test_directed_exception_undirectedW   s    rB   c               	   C   s8   t tj" tjtdt ddd} W 5 Q R X d S Nr6   r      r>   )r"   r#   r   r$   r   complete_graphr   r<   r   r   r
   test_directed_edge_max_tries]   s      rF   c               	   C   s,   t tj ttd} W 5 Q R X d S Nr   r"   r#   r   r;   r*   r   r<   r   r   r
   test_double_edge_swap_smalld   s    rI   c               	   C   s2   t tj tjtdddd} W 5 Q R X d S )Nr!   r   r   r>   rH   r<   r   r   r
   test_double_edge_swap_triesi   s    rJ   c               	   C   s8   t ddg} tjt jdd t | }W 5 Q R X d S )Nr   r   z not defined for directed graphs.r   )r   r   r"   r#   r;   r*   rA   r   r   r
   test_double_edge_directedn   s    rK   c               	   C   s2   t tj tjtdddd} W 5 Q R X d S rC   )r"   r#   r   r$   r*   rE   r<   r   r   r
   test_double_edge_max_triest   s    rL   c               	   C   s,   t tj ttd} W 5 Q R X d S rG   )r"   r#   r   r;   r1   r   r<   r   r   r
   %test_connected_double_edge_swap_smally   s    rM   c               	   C   sB   t tj, td} t| dddg t| } W 5 Q R X d S )Nr   r!         )r"   r#   r   r;   r   Zadd_pathr1   r<   r   r   r
   -test_connected_double_edge_swap_not_connected~   s    
rP   c                  C   sP   t d} tdd |  D }t | dd} |tdd |  D ksLtd S )Nr6   c                 s   s   | ]\}}|V  qd S r   r   r   r   r   r
   r      s     z%test_degree_seq_c4.<locals>.<genexpr>r   d   c                 s   s   | ]\}}|V  qd S r   r   r   r   r   r
   r      s     )r   Zcycle_graphr   r)   r*   r   )r   r,   r   r   r
   test_degree_seq_c4   s    
rR   c               	   C   sB   t  } | dddg tjt jdd t |  W 5 Q R X d S )Nr   r   r   z.*fewer than four nodes.r   )r   r   add_nodes_fromr"   r#   r;   r   r<   r   r   r
   test_fewer_than_4_nodes   s    rT   c               	   C   s   t ddg} | ddg tjt jdd t |  W 5 Q R X t  } | ddd	dg tjt jd
d t |  W 5 Q R X d S )Nr   )r   r   r   r6   z.*fewer than 3 edgesr   r   r   r   z.*fewer than 2 edges)	r   r   rS   r"   r#   r;   r   r@   r*   r<   r   r   r
   test_less_than_3_edges   s    rU   )r"   Znetworkxr   r   r&   r-   r/   r3   r5   r8   r9   r=   r?   rB   rF   rI   rJ   rK   rL   rM   rP   rR   rT   rU   r   r   r   r
   <module>   s,   			