o
    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   s8   g d}t |}d}tt ||}|dg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   )nxGraphlistbridges)selfedgesGsourcer    r   Z/var/www/vscode/kcb/lib/python3.10/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J d S )Nr   r   r   )r   barbell_graphr   r   )r   r   r   r   r   r   r   test_barbell_graph#   s   zTestBridges.test_barbell_graphc                 C   s.   g d}t |}tt |dgksJ d S )Nr   r   r   r   r   r   r   r	   r	   r   )r   
MultiGraphr   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   s6   g d}t |}t |sJ t j|ddsJ d S )Nr   r   root)r   r   has_bridgesr#   r   r   r   r   ;   s   
z!TestHasBridges.test_single_bridgec                 C   sV   t  }|g d tt j t j|dd W d    d S 1 s$w   Y  d S )N)r   r   r   r   r*   )r   r   add_nodes_frompytestraisesNodeNotFoundr,   r   r   r   r   r   %test_has_bridges_raises_root_not_in_GR   s
   "z4TestHasBridges.test_has_bridges_raises_root_not_in_Gc                 C   s@   g d}t |}t |sJ |g d t |rJ d S )Nr   )r    r!   r   )r   r"   r,   add_edges_fromr#   r   r   r   r$   X   s
   
	z$TestHasBridges.test_multiedge_bridgec                 C   sJ   t  }t |g d t |g d tt j|ddddgks#J d S )N)r   r   r   )r
   r   r   r
   r*   )r
   r   r   )r   r   add_pathr   r   r1   r   r   r    test_bridges_multiple_componentsh   s   "z/TestHasBridges.test_bridges_multiple_componentsN)r%   r&   r'   r(   r   r2   r$   r5   r   r   r   r   r)   8   s    r)   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   BB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|v sJ ttj| jdd| jjks"J ttj| jddg ks0J d S )Nr	   )r
   r   F)	with_span)	nextr   local_bridgesr7   setr9   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|v sJ dd | jjD }tt| j|ks/J tt| j	g ks;J d S )Ninfr   r
   c                 S      h | ]	\}}||d fqS )r   r   .0uvr   r   r   	<setcomp>       z2TestLocalBridges.test_no_weight.<locals>.<setcomp>)
floatr>   r   r?   r7   r9   r   r@   r   r:   )r   rC   rA   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s)J d
d |jD }tj|dd d	}t||ksBJ d S )NrC   r   r   weightc                 S   s    h | ]\}}}||d | fqS )r   r   )rF   rG   rH   wtr   r   r   rI      s     z/TestLocalBridges.test_weight.<locals>.<setcomp>r   )datadefault)rM   c                 S   rD   )r   r   rE   r   r   r   rI      rJ   c                 S   s   dS )Nr   r   )rG   rH   dr   r   r   <lambda>   s    z.TestLocalBridges.test_weight.<locals>.<lambda>)rK   r9   copyr   r@   r   r?   )r   rC   r   rA   lbr   r   r   test_weight   s   
zTestLocalBridges.test_weightN)	r%   r&   r'   r(   classmethodr<   rB   rL   rU   r   r   r   r   r6   o   s    
r6   )r(   r.   networkxr   r   r)   r6   r   r   r   r   <module>   s    07