o
    3ήcG                     @   s.   d dl Z d dlZd dlmZ G dd dZdS )    N)NetworkXNotImplementedc                   @   sH   e Zd Zedd Zdd Zdd Zdd Zd	d
 Zdd Z	dd Z
dS )TestWeaklyConnectedc              
   C   sF  g | _ t }|g d g dg ddgg}| j ||f t }|g d g ddgg}| j ||f t }|g d g d	g}| j ||f tdgd
dgddgddgdgg g d}dgdgd
gdgdgdgdgg}| j ||f tdgg dddgdgdgd}g dddgg}| j ||f 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   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   r   r   r   )r   r   r   )gcnxDiGraphadd_edges_fromappend)clsGC r   a/tmp/pip-target-vg8gfxp4/lib/python/networkx/algorithms/components/tests/test_weakly_connected.pysetup_class   s*   
* $zTestWeaklyConnected.setup_classc                 C   sP   | j D ]"\}}| }dd t|D }dd t|D }||ks%J qd S )Nc                 S      h | ]}t |qS r   	frozenset.0gr   r   r   	<setcomp>5       zGTestWeaklyConnected.test_weakly_connected_components.<locals>.<setcomp>c                 S   r   r   r   r   r   r   r   r    6   r!   )r   to_undirectedr   weakly_connected_componentsconnected_componentsselfr   r   Uwcr   r   r    test_weakly_connected_components2   s   z4TestWeaklyConnected.test_weakly_connected_componentsc                 C   s<   | j D ]\}}| }t|}t|}||ksJ qd S N)r   r"   r   "number_weakly_connected_componentsnumber_connected_componentsr%   r   r   r   'test_number_weakly_connected_components9   s   

z;TestWeaklyConnected.test_number_weakly_connected_componentsc                 C   s4   | j D ]\}}| }t|t|ksJ qd S r+   )r   r"   r   is_weakly_connectedis_connected)r&   r   r   r'   r   r   r   test_is_weakly_connected@   s   z,TestWeaklyConnected.test_is_weakly_connectedc                 C   sp   t  }tt |g ksJ t |dksJ tt j tt 	| W d    d S 1 s1w   Y  d S )Nr   )
r   r   listr#   r,   pytestraisesNetworkXPointlessConceptnextr/   r&   r   r   r   r   test_null_graphE   s   "z#TestWeaklyConnected.test_null_graphc                 C   sd   t  }tt tt | W d    n1 sw   Y  ttt j| ttt j| d S r+   )	r   Graphr3   r4   r   r6   r#   r,   r/   r7   r   r   r   test_connected_raiseL   s   z(TestWeaklyConnected.test_connected_raisec                 C   s\   t jdt jd}t ||}t }t |D ]}t||@ dks"J || |  qd S )Nr   )create_usingr   )	r   
path_graphr   disjoint_unionsetr#   lenupdateclear)r&   DGr   seen	componentr   r   r   test_connected_mutabilityS   s   

z-TestWeaklyConnected.test_connected_mutabilityN)__name__
__module____qualname__classmethodr   r*   r.   r1   r8   r:   rE   r   r   r   r   r      s    
)r   )r3   networkxr   r   r   r   r   r   r   <module>   s    