o
    3ήcj                     @   s"   d dl Z d dlZG dd dZdS )    Nc                   @   sx   e Zd Zedd Zejde	 e
 e f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S )TestMCSc                 C   s|   t  }|g d || _t  }|g d |d || _t  }|g d || _t  }|dg || _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   )nxGraphadd_edges_fromconnected_chordal_Gadd_node	chordal_Gnon_chordal_Gself_loop_G)clsr   r   r   r    r   M/tmp/pip-target-vg8gfxp4/lib/python/networkx/algorithms/tests/test_chordal.pysetup_class   s"   

zTestMCS.setup_classGc                 C   s<   t tj t| W d    d S 1 sw   Y  d S )N)pytestraisesr   NetworkXNotImplemented
is_chordal)selfr"   r   r   r    test_is_chordal_not_implemented6   s   "z'TestMCS.test_is_chordal_not_implementedc                 C   s   t | jrJ t | jsJ t | jsJ t t ds"J t t ds,J t t dr6J tjt j	dd t | j
 W d    d S 1 sPw   Y  d S )Nr   r   Input graph is not chordalmatch)r   r&   r   r   r   complete_graphcycle_graphr#   r$   NetworkXErrorr   r'   r   r   r    test_is_chordal;   s   "zTestMCS.test_is_chordalc                 C   s   t jjd}t |ddd}|h dksJ tt jt j|ddd t | jdd}|h dks3J tt j	t j| j
dd d S )	N
   r   r   r   >	   r   r   r   r
   r   r   r   r   r   r   >   r   r   r
   r   r   )r   
generatorsclassic
path_graphfind_induced_nodesr#   r$   NetworkXTreewidthBoundExceededr   r.   r   )r'   r"   Induced_nodesr   r   r    test_induced_nodesE   s   zTestMCS.test_induced_nodesc                 C   sB   t jtjdd t| j W d    d S 1 sw   Y  d S )Nr)   r*   )r#   r$   r   r.   chordal_graph_treewidthr   r/   r   r   r    test_graph_treewidthP   s   "zTestMCS.test_graph_treewidthc                 C   s   t dgt ddgt g dt g dt g dh}t| j|ks$J tjtjdd t| j W d    n1 s=w   Y  tjtjdd t| j W d    d S 1 s\w   Y  d S )	Nr   r   r   r   r   r   r   r   r
   r   r
   r   r   r)   r*   )		frozensetr   chordal_graph_cliquesr   r#   r$   r.   r   r   )r'   cliquesr   r   r    test_chordal_find_cliquesT   s   



"z!TestMCS.test_chordal_find_cliquesc                 C   sN   t d}t |}| D ]\}}t||g|v s$t||g|v s$J qd S )Nr1   )r   r4   r?   edgesr>   )r'   r"   	cliquesetuvr   r   r    test_chordal_find_cliques_pathb   s   

$z&TestMCS.test_chordal_find_cliques_pathc                 C   s>   t g dt g dt g dh}tj}|| j|ksJ d S )Nr;   r<   r=   )r>   r   r?   r   )r'   r@   cgcr   r   r    test_chordal_find_cliquesCCh   s   "z#TestMCS.test_chordal_find_cliquesCCc                 C   s   t j}t ddt dt dt ddgt dt dt  |ddd	d
g}|D ]C}t 	|\}}t 
|s;J t|| ksEJ t 
|r`| | ksTJ t| dhks_J q+tt| | ksnJ q+d S )Nr   r         r1   r
   r   g333333?r   )seedr   )r   fast_gnp_random_graphbarbell_graphr-   wheel_graph
grid_graphladder_graph
star_graph
bull_graphcomplete_to_chordal_graphr&   lennumber_of_nodesnumber_of_edgessetvalues)r'   fgrgtest_graphsr"   Har   r   r    test_complete_to_chordal_graphm   s&   


z&TestMCS.test_complete_to_chordal_graphN)__name__
__module____qualname__classmethodr!   r#   markparametrizer   DiGraph
MultiGraphMultiDiGraphr(   r0   r8   r:   rA   rF   rH   r]   r   r   r   r    r      s    
.

r   )r#   networkxr   r   r   r   r   r    <module>   s    