U
    ?h                     @   sB   d Z ddlZddlZG dd dZG dd dZG dd dZdS )	z)Unit tests for bridge-finding algorithms.    Nc                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	TestBridgesz+Unit tests for the bridge-finding function.c                 C   sP   ddddddddd	d
ddddg}t |}d}tt ||}|dgksLtd S )N      r      r      r      r      r      r      r   	   r   
   r   r   r   r	   r   r   r   r   r   r   r   )nxGraphlistbridgesAssertionError)selfedgesGsourcer    r$   X/var/www/html/venv/lib/python3.8/site-packages/networkx/algorithms/tests/test_bridges.pytest_single_bridge   s&    
zTestBridges.test_single_bridgec                 C   s2   t dd}d}tt ||}|dgks.td S )Nr   r   r   )r   barbell_graphr   r   r   )r    r"   r#   r   r$   r$   r%   test_barbell_graph#   s    zTestBridges.test_barbell_graphc                 C   s8   dddddddg}t |}tt |dgks4td S N)r   r   )r   r   r   r   r   )r   
MultiGraphr   r   r   r    r!   r"   r$   r$   r%   test_multiedge_bridge*   s    	
z!TestBridges.test_multiedge_bridgeN)__name__
__module____qualname____doc__r&   r(   r,   r$   r$   r$   r%   r      s   r   c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )TestHasBridgesz(Unit tests for the has bridges function.c                 C   sN   ddddddddd	d
ddddg}t |}t |s8tt j|ddsJtd S )Nr   r   r   r
   r   r   r   r   r   r   r   r   r   r   r   root)r   r   has_bridgesr   r+   r$   r$   r%   r&   ;   s$    
z!TestHasBridges.test_single_bridgec              	   C   sB   t  }|dddg tt j t j|dd W 5 Q R X d S )Nr   r   r   r   r2   )r   r   Zadd_nodes_frompytestZraisesZNodeNotFoundr4   r    r"   r$   r$   r%   %test_has_bridges_raises_root_not_in_GR   s    z4TestHasBridges.test_has_bridges_raises_root_not_in_Gc                 C   sL   dddddddg}t |}t |s*t|dddg t |rHtd S r)   )r   r*   r4   r   Zadd_edges_fromr+   r$   r$   r%   r,   X   s    	
z$TestHasBridges.test_multiedge_bridgec                 C   sN   t  }t |dddg t |dddg tt j|dddd	gksJtd S )
Nr   r   r   r	   r   r   r2   )r	   r   r   )r   r   Zadd_pathr   r   r   r6   r$   r$   r%    test_bridges_multiple_componentsh   s    z/TestHasBridges.test_bridges_multiple_componentsN)r-   r.   r/   r0   r&   r7   r,   r8   r$   r$   r$   r%   r1   8   s
   r1   c                   @   s4   e Zd ZdZedd Zdd Zdd Zdd	 Zd
S )TestLocalBridgesz)Unit tests for the local_bridge function.c                 C   s*   t dd| _t d| _t d| _d S )Nr	   r   r   )r   r'   BBZcycle_graphsquaretri)clsr$   r$   r%   setup_classr   s    zTestLocalBridges.setup_classc                 C   sd   ddh}t tj| jdd|ks$tttj| jdd| jjksDtttj| j	ddg ks`td S )Nr   )r	   r   F)Z	with_span)
nextr   local_bridgesr:   r   setr;   r!   r   r<   )r    expectedr$   r$   r%   test_nospanx   s     zTestLocalBridges.test_nospanc                 C   sz   t d}dd|fdd|fh}tt| j|ks4tdd | jjD }tt| j|ks^tt	t| j
g ksvtd S )Ninfr   r	   c                 S   s   h | ]\}}||d fqS )r   r$   .0uvr$   r$   r%   	<setcomp>   s     z2TestLocalBridges.test_no_weight.<locals>.<setcomp>)floatr?   r   r@   r:   r   r;   r!   rA   r   r<   )r    rD   rB   r$   r$   r%   test_no_weight~   s    zTestLocalBridges.test_no_weightc                 C   s   t d}| j }d|jd d< dd |jdddD }ttj|dd	|ksRtd
d |jD }tj|dd d	}t||kstd S )NrD   r   r   weightc                 S   s    h | ]\}}}||d | fqS )r   r$   )rF   rG   rH   Zwtr$   r$   r%   rI      s     z/TestLocalBridges.test_weight.<locals>.<setcomp>r   )datadefault)rL   c                 S   s   h | ]\}}||d fqS )r   r$   rE   r$   r$   r%   rI      s     c                 S   s   dS )Nr   r$   )rG   rH   dr$   r$   r%   <lambda>       z.TestLocalBridges.test_weight.<locals>.<lambda>)rJ   r;   copyr!   rA   r   r@   r   )r    rD   r"   rB   Zlbr$   r$   r%   test_weight   s    
zTestLocalBridges.test_weightN)	r-   r.   r/   r0   classmethodr>   rC   rK   rS   r$   r$   r$   r%   r9   o   s   
r9   )r0   r5   Znetworkxr   r   r1   r9   r$   r$   r$   r%   <module>   s
   07