o
    ]Zh                     @   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   U/var/www/auris/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   Zadd_nodes_frompytestZraisesZ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,   Z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   Zadd_pathr   r   r.   r   r   r    test_bridges_multiple_componentsh   s   "z/TestHasBridges.test_bridges_multiple_componentsN)r%   r&   r'   r(   r   r/   r$   r0   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   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|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)Z	with_span)	nextr   local_bridgesr2   setr3   r   r   r4   )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>)
floatr7   r   r8   r2   r3   r   r9   r   r4   )r   r<   r:   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 )Nr<   r   r   weightc                 S   s    h | ]\}}}||d | fqS )r   r   )r?   r@   rA   wtr   r   r   rB      s     z/TestLocalBridges.test_weight.<locals>.<setcomp>r   )datadefault)rF   c                 S   r=   )r   r   r>   r   r   r   rB      rC   c                 S   s   dS )Nr   r   )r@   rA   dr   r   r   <lambda>   s    z.TestLocalBridges.test_weight.<locals>.<lambda>)rD   r3   copyr   r9   r   r8   )r   r<   r   r:   Zlbr   r   r   test_weight   s   
zTestLocalBridges.test_weightN)	r%   r&   r'   r(   classmethodr6   r;   rE   rM   r   r   r   r   r1   o   s    
r1   )r(   r-   Znetworkxr   r   r)   r1   r   r   r   r   <module>   s    07