
    VhV                     (    d dl Z d dlZ G d d      Zy)    Nc                       e Zd Zed        Zej                  j                  d ej                          ej                          ej                         f      d        Zd Zd Zd Zd Zd Zd	 Zd
 Zy)TestMCSc                    t        j                         }|j                  g d       || _        t        j                         }|j                  g d       |j	                  d       || _        t        j                         }|j                  g d       || _        t        j                         }|j                  dg       || _        y )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    s        V/home/dcms/DCMS/lib/python3.12/site-packages/networkx/algorithms/tests/test_chordal.pysetup_classzTestMCS.setup_class   s     !hhj**	
 #6HHJ	  	
 	1!
$$%UV)hhj""F8,%    Gc                     t        j                  t        j                        5  t        j                  |       d d d        y # 1 sw Y   y xY w)N)pytestraisesr   NetworkXNotImplemented
is_chordal)selfr%   s     r"   test_is_chordal_not_implementedz'TestMCS.test_is_chordal_not_implemented6   s5    ]]2445 	MM!	 	 	s   AAc                 Z   t        j                  | j                        rJ t        j                  | j                        sJ t        j                  | j                        sJ t        j                  t        j
                               sJ t        j                  t        j                  d            sJ t        j                  t        j                  d            sJ t        j                  t        j                  d            rJ t        j                  | j                        sJ y )Nr
   r   )	r   r*   r   r   r   r   complete_graphcycle_graphr    r+   s    r"   test_is_chordalzTestMCS.test_is_chordal;   s    ==!3!3444}}T^^,,,}}T55666}}RXXZ(((}}R..q1222}}R^^A.///==!2333}}T--...r$   c                    t         j                  j                  j                  d      }t        j                  |ddd      }|h dk(  sJ t        j                  t         j                  t         j                  |ddd       t        j                  | j                  dd      }|h dk(  sJ t        j                  t         j                  t         j                  | j                  dd       y )	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   NetworkXErrorr   )r+   r%   Induced_nodess      r"   test_induced_nodeszTestMCS.test_induced_nodesE   s    MM!!,,R0--aAq9 ;;;;--r/D/DaAq	
 --dnnaC,,,b&&(=(=t?Q?QSTVWXr$   c                     t        j                  t        j                  d      5  t        j                  | j
                         d d d        y # 1 sw Y   y xY w)NInput graph is not chordalmatch)r'   r(   r   r9   chordal_graph_treewidthr   r0   s    r"   test_graph_treewidthzTestMCS.test_graph_treewidthP   s@    ]]2++3OP 	;&&t'9'9:	; 	; 	;s    AAc                 `   t        dg      t        ddg      t        g d      t        g d      t        g d      h}t        t        j                  | j                              |k(  sJ t        j                  t        j                  d      5  t        t        j                  | j                               d d d        t        j                  t        j                  d      5  t        t        j                  | j                               d d d        y # 1 sw Y   `xY w# 1 sw Y   y xY w)	Nr   r   r   r   r   r
   r   r
   r   r
   r   r   r   r=   r>   )
	frozensetsetr   chordal_graph_cliquesr   r'   r(   r9   r   r    )r+   cliquess     r"   test_chordal_find_cliquesz!TestMCS.test_chordal_find_cliquesT   s    qcNq!fi i l#
 2++DNN;<GGG]]2++3OP 	>((););<=	>]]2++3OP 	<(()9)9:;	< 	<	> 	>	< 	<s   )D&)D$D!$D-c                     t        j                  d      }t        j                  |      }|j                         D ]&  \  }}t	        ||g      |v rt	        ||g      |v r&J  y )Nr3   )r   r6   rH   edgesrF   )r+   r%   	cliquesetuvs        r"   test_chordal_find_cliques_pathz&TestMCS.test_chordal_find_cliques_pathb   sb    MM",,Q/	GGI 	TDAqaV$	1Y1v5F)5SSS	Tr$   c                     t        g d      t        g d      t        g d      h}t        j                  }t         || j                              |k(  sJ y )NrC   rD   rE   )rF   r   rH   rG   r   )r+   rI   cgcs      r"   test_chordal_find_cliquesCCz#TestMCS.test_chordal_find_cliquesCCh   sF    Y'9)=y?VW&&3t//01W<<<r$   c                    t         j                  }t        j                  dd      t        j                  d      t        j                  d      t        j
                  ddg      t        j                  d      t        j                  d      t        j                          |ddd	
      g}|D ]  }t        j                  |      \  }}t        j                  |      sJ t        |      |j                         k(  sJ t        j                  |      rC|j                         |j                         k(  sJ t        |j                               dhk(  rJ t        t        |j                                     |j                         k(  rJ  y )Nr   r         r3   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_edgesrG   values)r+   fgrgtest_graphsr%   Has         r"   test_complete_to_chordal_graphz&TestMCS.test_complete_to_chordal_graphm   s9   ''Q"NN2NN2MM2q'"OOBMM!MMOSq!	
  	CA//2DAq==###q6Q..0000}}Q((*a.?.?.AAAA188:1#---3qxxz?+q/@/@/BBBB	Cr$   N)__name__
__module____qualname__classmethodr#   r'   markparametrizer   DiGraph
MultiGraphMultiDiGraphr,   r1   r;   rA   rJ   rP   rS   rh    r$   r"   r   r      s    ,& ,&\ [[S:2::</"//BS"TU V/	Y;<T=
Cr$   r   )r'   networkxr   r   rr   r$   r"   <module>rt      s     {C {Cr$   