o
    3ήc@                     @   s   d dl Z d dlZd dlm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G dd dZdS )    N)approximationc                  C   sX   t  } | g d dt| ddksJ dt| ksJ dt| ddks*J d S )N))      )r      )r      )r      )r   r   )r      )r   r   )r   r   )r   r   )r      )r   r	   )r      )r   	   )r	   r
   )r	   
   )r
      )r   r   )r   r   )r   r   r   r   r   )nxGraphadd_edges_fromapproxlocal_node_connectivitynode_connectivityG r   `/tmp/pip-target-vg8gfxp4/lib/python/networkx/algorithms/approximation/tests/test_connectivity.pytest_global_node_connectivity   s   r   c                  C   s   t t dt d} | d tddD ]}| d| qt | t d} | |  d  tddD ]}| d| q6dt| ksHJ d S )Nr   r	   r   r   r   )	r   disjoint_unioncomplete_graphremove_noderangeadd_edgeorderr   r   )r   ir   r   r   test_white_harary1&   s   
r    c                  C   sP   t dddD ]} t| }| d t|ksJ | d t|ddks%J qd S )Nr      r   r   r   )r   r   r   r   r   )nr   r   r   r   test_complete_graphs5   s
   
r#   c                  C   sH   t dddD ]} t| }dt|ksJ dt|ddks!J qd S )Nr   r!   r   r   )r   r   empty_graphr   r   )kr   r   r   r   test_empty_graphs<   s
   
r&   c                  C   4   t  } dt| ksJ dt| ddksJ d S Nr   r   r   )r   petersen_graphr   r   r   r   r   r   test_petersenC      r*   c                  C   r'   r(   )r   dodecahedral_graphr   r   r   r   r   r   test_dodecahedralO   r+   r-   c                  C   r'   )Nr   r   r   )r   octahedral_graphr   r   r   r   r   r   test_octahedralU   r+   r/   c                  C   $   t d} tjt jtj| dd d S )Nr   r   )sr   r   pytestraisesNetworkXErrorr   r   r   r   r   r   test_only_sourcec      
r6   c                  C   r0   )Nr   r   )tr2   r   r   r   r   test_only_targeth   r7   r9   c                  C   $   t d} tt jtj| dd d S )Nr   r   r   r   
path_graphr3   r4   r5   r   r   r   r   r   r   test_missing_sourcem   r7   r=   c                  C   r:   )Nr   r   r   r;   r   r   r   r   test_missing_targetr   r7   r>   c                  C   s$   t d} tt jtj| dd d S )Nr   r   )r   r   r3   r4   r5   r   r   r   r   r   r   test_source_equals_targetw   r7   r?   c                  C   st   t jdt  d} t d }dt| ksJ dt| ddks$J dt|ks-J dt|ddks8J d S )Nr   create_usingr   r   r   )r   cycle_graphDiGraphto_directedr   r   )r   Dr   r   r   test_directed_node_connectivity|   s   rF   c                   @   s@   e Zd Zedd Zdd Zdd Zdd Zd	d
 Zdd Z	dS )"TestAllPairsNodeConnectivityApproxc              	   C   s   t d| _t jdt  d| _t d| _t jdt  d| _t dd| _	t jdddd| _
t d| _t d| _t d	| _| j| j| j| j| j	| j
| j| j| jg	| _d S )
Nr	   r@      g?T)directed   r   r   )r   r<   pathrC   directed_pathrB   cycledirected_cyclegnp_random_graphgnpdirected_gnpr   K20K10K5G_list)clsr   r   r   setup_class   s&   
z.TestAllPairsNodeConnectivityApprox.setup_classc                 C   st   t | j}|D ]}||  D ]
\}}|dksJ qqt | j}|D ]}||  D ]
\}}|dks6J q,q$d S )Nr   r   )r   all_pairs_node_connectivityrM   itemsrN   selfK_undirsourcetargetr%   K_dirr   r   r   test_cycles   s   z.TestAllPairsNodeConnectivityApprox.test_cyclesc                 C   sX   | j | j| jfD ]!}t|}|D ]}||  D ]\}}|t|d ks'J qqqd S )Nr   )rS   rT   rR   r   rX   rY   len)r[   r   Kr]   r^   r%   r   r   r   test_complete   s   
z0TestAllPairsNodeConnectivityApprox.test_completec                 C   s   t | j}|D ]}||  D ]
\}}|dksJ qqt | j}|D ]}||  D ]\}}||k r;|dks:J q,|dksAJ q,q$d S )Nr   r   )r   rX   rK   rY   rL   rZ   r   r   r   
test_paths   s   z-TestAllPairsNodeConnectivityApprox.test_pathsc                 C   s^   | j | j| jfD ]$}dD ]}tj||d}|D ]}||  D ]
\}}||ks)J qqqqd S )N)r   r   r   )cutoff)rS   rT   rR   r   rX   rY   )r[   r   mppathsr]   r^   rb   r   r   r   test_cutoff   s   z.TestAllPairsNodeConnectivityApprox.test_cutoffc                 C   s8   t d}g d}tj||d}t|t|ksJ d S )Nr   )r   r   r   )nbunch)r   r   r   rX   ra   )r[   r   ri   Cr   r   r   "test_all_pairs_connectivity_nbunch   s   
zETestAllPairsNodeConnectivityApprox.test_all_pairs_connectivity_nbunchN)
__name__
__module____qualname__classmethodrW   r`   rc   rd   rh   rk   r   r   r   r   rG      s    

rG   )r3   networkxr   networkx.algorithmsr   r   r   r    r#   r&   r*   r-   r/   r6   r9   r=   r>   r?   rF   rG   r   r   r   r   <module>   s"    	