
    Vh                     z    d dl Z d dlZd dlmZ d Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zy)    N)NetworkXNotImplementedc                     | D ch c]  }t        d |D               }}|D ch c]  }t        d |D               }}||k(  sJ y c c}w c c}w )Nc              3   2   K   | ]  }t        |        y wN	frozenset.0es     e/home/dcms/DCMS/lib/python3.12/site-packages/networkx/algorithms/components/tests/test_biconnected.py	<genexpr>z0assert_components_edges_equal.<locals>.<genexpr>        ,QIaL,   c              3   2   K   | ]  }t        |        y wr   r   r	   s     r   r   z0assert_components_edges_equal.<locals>.<genexpr>	   r   r   r   xycsxsys        r   assert_components_edges_equalr      sQ    67	8),!,
,	8B	867	8),!,
,	8B	88O8 
9	8s
   AAc                     | D ch c]  }t        |       }}|D ch c]  }t        |       }}||k(  sJ y c c}w c c}w r   r   r   s        r   assert_components_equalr      sC     !	"1)A,	"B	" !	"1)A,	"B	"8O8 
#	"s   9>c                     t        j                  dd      } t        j                  | g d       t        j                  | g d       t	        t        j
                  |             }|h dk(  sJ h dh dh dd	d
hdd	hddhddhddhddhddhddhg}t        t        t        j                  |             |       | j                  dd       t	        t        j
                  |             }|h dk(  sJ y )N      )            )r             >	   r   r   	   
         r   r   r    >   r'                        >   r            r         r   >   r    r!   r"   r#   r&   r'   r%   r$   r   r   r    r   r0   r,   >   r   r   r   r    )
nxbarbell_graphadd_path	add_cyclesetarticulation_pointsr   listbiconnected_componentsadd_edge)Gptsanswers      r   test_barbellr@      s    
AAKK?#LL$%
b$$Q'
(C3333 	) 	R	R	
B	
A	
A	R	R	
BF D!:!:1!=>GJJq"
b$$Q'
(C/!!!    c                      t        j                         } | j                  g d       t        t        j                  |             dgk(  sJ y )N)r   r/   )r/   r0   )r/   r1   r/   )r4   Graphadd_edges_fromr:   r9   r=   s    r   $test_articulation_points_repetitionsrG   .   s<    

A-.&&q)*qc111rA   c                      t        j                  d      } t        j                  | g d       t        t        j                  |             }|dhk(  sJ y )Nr1   r/   r1   r   r/   )r4   cycle_graphr7   r8   r9   )r=   r>   s     r   test_articulation_points_cyclerK   4   sA    
qALLI
b$$Q'
(C1#::rA   c                      t        j                  d      } t        j                  |       sJ t        j                  | g d       t        j                  |       rJ y )Nr1   rI   )r4   rJ   is_biconnectedr7   rF   s    r   test_is_biconnectedrN   ;   sI    
qAQLLI  ####rA   c                      t        j                  d      } t        j                  |       rJ | j                  dd       t        j                  |       rJ y )Nr2   r   r/   )r4   empty_graphrM   r<   rF   s    r   test_empty_is_biconnectedrQ   B   sI    
qA  ###JJq!  ####rA   c                      t        j                  d      } t        j                  | g d       h dh dg}t        t	        t        j
                  |             |       y )Nr1   rI   >   r   r/   r0   >   r/   r1   r   )r4   rJ   r7   r   r:   r;   )r=   r?   s     r   !test_biconnected_components_cyclerS   I   sB    
qALLI#FD!:!:1!=>GrA   c                      g d} t        j                  |       }t        t        j                  |            }|h dk(  sJ t	        t        j
                  |            }g dg ddgdgdgdgg d	g}t        ||       y )
N)rC   )r   r2   )r   r3   )r   r)   )r/   r2   r/   r3   )r/   r)   )r0   r   r0   r%   r1   r   )r1   r*   )r   r3   r   r   )r   r%   )r2   r)   r3   r)   r   r$   )r   r$   r   r'   )r   r(   r%   r*   )r&   r'   r&   r(   )r'   r(   >   r   r3   r   r   r$   )rW   )r*   r1   r\   )r%   r   rV   )r   r0   ))r(   r'   )r(   r   r]   )r'   r&   r[   )r$   r   rZ   rX   )r3   r   )	)r)   r   )r2   r/   )r2   r   )r)   r2   )r)   r/   rY   )r3   r   rU   rC   )r4   rD   r8   r9   r:   biconnected_component_edgesr   )edgesr=   r>   compsr?   s        r   test_biconnected_components1ra   P   s    E4 	A
b$$Q'
(C/!!!//23E=8				TF "%0rA   c            	      x   t        j                         } t        j                  | d       t        j                  | d       t        j                  | d       t        j                  | d       | j                  dd       t	        t        j
                  |             }t        d      t        d      t        d	      t        d
      t        d      t        d      t        d      gt        d      gt        d      t        d      t        d      gt        d      t        d      t        d      gg}t        ||       y )NABCCDEFIJHGGIJEr=   GFFIIGIJJGJHHGEGCDDECEABBCAC)r4   rD   r7   r<   r:   r^   tupler   )r=   r`   r?   s      r   test_biconnected_components2rw   }   s    

ALLELLELLGLLEJJsC//23E $K$K$K$K$K$K$K	
 
t	teDk5;/	teDk5;/F "%0rA   c                      t        j                         } t        t        j                  |             d   }t	        |       |k(  sJ t        t        t        j                  |                   dk(  sJ y )Nr   )r4   davis_southern_women_graphr:   r;   r8   lenr9   )Dbccs     r   test_biconnected_davisr}      s]    
%%'A
r((+
,Q
/Cq6S==tB**1-./1444rA   c                      t        j                         } h dh dddhg}t        t        j                  |             }t	        ||       t        t        j                  |             dhk(  sJ y )N>   r   r/   r0   r1   r   r   r$   r'   r(   r)   r*   r,   r-   r.   r   r   r    r!   r"   r#                         !   >   r   r   r2   r3   r%   r+   r   r&   )r4   karate_club_graphr:   r;   r   r8   r9   )Kr?   r|   s      r   test_biconnected_karater      sk    
A	
< 		
BA!FD r((+
,CC(r%%a()aS000rA   c                     t        j                  g dddgg dg dg dg ddd	gd
      } t        j                  ddgddgg dg ddgddgddgd	gg dd	      }t        j                  |       sJ t        j                  |      rJ h dh dddhd	dhg}t        t        j                  |            }t        ||       y )N)r/   r0   r2   r   r2   )r   r1   r   )r0   r   r2   r3   )r0   r1   r2   r3   )r   r/   r1   r   r1   r   )r   r/   r0   r1   r   r2   r3   r0   r   )r   r1   r2   )r/   r0   r3   r   r   )r/   r1   r3   )	r   r/   r0   r1   r   r2   r3   r   r   >   r/   r1   r3   r   >   r   r0   r2   )r4   rD   rM   r:   r;   r   )G1G2	answer_G2r|   s       r   test_biconnected_eppsteinr      s    	1v1v	


B 
1v1vs1v1vs
	

B R     $$$y1a&1a&9I
r((,
-CC+rA   c                  ,   t        j                         } t        j                  |       rJ t        t        j                  |             g k(  sJ t        t        j
                  |             g k(  sJ t        t        j                  |             g k(  sJ y r   )r4   rD   rM   r:   r;   r^   r9   rF   s    r   test_null_graphr      s{    

A  ###))!,-333..q12b888&&q)*b000rA   c                  F   t        j                         } t        j                  t              5  t        t        j                  |              d d d        t        j                  t              5  t        t        j                  |              d d d        t        j                  t              5  t        t        j                  |              d d d        t        j                  t        t         j                  |        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   KxY wr   )
r4   DiGraphpytestraisesr   nextr;   r^   r9   rM   )DGs    r   test_connected_raiser      s    	B	-	. ,R&&r*+,	-	. 1R++B/01	-	. )R##B'()
MM("*;*;R@, ,1 1) )s#   C?.D.D?DDD )r   networkxr4   r   r   r   r@   rG   rK   rN   rQ   rS   ra   rw   r}   r   r   r   r    rA   r   <module>r      s^      +"62$$H*1Z125&1R,B1ArA   