
    fi                          d Z ddlZddlmZ ddlmZ ddlZddl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ej                            dddg          d             ZdS )z7Tests for the :mod:`networkx.algorithms.triads` module.    N)defaultdict)samplec                      t          j                    } |                     g d           i ddddddddd	d
dddddddddddd
dddddddddd}t          j        |           }||k    sJ dS )"Tests the triadic_census function.
01020304051216515665030T   120C   210r   120U012	   102   021U111U003   030C021D201111D300120D021CN)nxDiGraphadd_edges_fromtriadic_census)Gexpectedactuals      }/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/networkx/algorithms/tests/test_triads.pytest_triadic_censusr/      s   

AQQQRRR 	q 		
 	q 	q 	 	 	q 	 	 	q 	 	q 	  	!H$ q!!Fv    c                  ,   t          j                    } |                                 } t          d          D ]\}t	          t          |                                           d          }|                     |          }t          j        |          sJ ]dS )zTests the is_triad functiond   r   N)	r'   karate_club_graphto_directedranger   sortednodessubgraphis_triad)r+   ir7   G2s       r.   test_is_triadr<   &   s    
A	A3ZZ  vaggii((!,,ZZ{2 r0   c                  (   t          j                                        g d           d t          d          D             fdD             t	          t          j                            } t          fd| D                       sJ dS )zTests the all_triads function.r   c           	      z    g | ]8}t          |d z   d          D ]"}t          |d z   d          D ]}| d| d| #9S )r      ,)r5   ).0r:   jks       r.   
<listcomp>z#test_all_triads.<locals>.<listcomp>4   s~       q1ua  q1ua	   q1    r0   r?   c                 `    g | ]*}                     |                    d                     +S )r@   )r8   split)rA   xr+   s     r.   rD   z#test_all_triads.<locals>.<listcomp>:   s/    ;;;Q

1773<<((;;;r0   c              3   P   K   | ]t          fd D                       V   dS )c              3   B   K   | ]}t          j        |          V  d S Nr'   is_isomorphic)rA   G1r;   s     r.   	<genexpr>z,test_all_triads.<locals>.<genexpr>.<genexpr><   s0      ??2#B++??????r0   Nany)rA   r;   r,   s    @r.   rN   z"test_all_triads.<locals>.<genexpr><   sA      QQBs????h?????QQQQQQr0   N)r'   r(   r)   r5   list
all_triadsall)r-   r+   r,   s    @@r.   test_all_triadsrT   0   s    

AQQQRRR q  H <;;;(;;;H"-""##FQQQQ&QQQQQQQQQQr0   c                     t          j        g g g d          } t          j        |           dk    sJ t          j        dgg g d          } t          j        |           dk    sJ t          j        ddg          } t          j        |           dk    sJ t          j        dgdgg d          } t          j        |           d	k    sJ t          j        dd
g          } t          j        |           dk    sJ t          j        ddg          } t          j        |           dk    sJ t          j        g d          } t          j        |           dk    sJ t          j        g d          } t          j        |           dk    sJ t          j        g d          } t          j        |           dk    sJ t          j        g d          } t          j        |           dk    sJ t          j        g d          } t          j        |           dk    sJ t          j        g d          } t          j        |           dk    sJ t          j        g d          } t          j        |           dk    sJ t          j        g d          } t          j        |           dk    sJ t          j        g d          } t          j        |           dk    sJ t          j        g d           } t          j        |           d!k    sJ d"S )#zTests the triad_type function.)r   r   r   r   r   r   r   r   r   r   r!   r   r   r   r   r   r   r   r&   )rV   r   r   rX   r#   )rV   rZ   rY   r   )rV   rY   rW   r   )rV   rY   r   r   r    )rV   rZ   r[   rW   r"   )rV   rZ   r[   rX   r%   )rV   rZ   rW   rY   r   )rV   rZ   rW   rX   r   )rV   rZ   rX   rY   rW   r   )rV   rZ   rY   rX   rW   r[   r$   N)r'   r(   
triad_type)r+   s    r.   test_triad_typer]   ?   s#    	
rbR(())A=u$$$$

srb))**A=u$$$$

FF#$$A=v%%%%

ssr**++A=u$$$$

FF#$$A=v%%%%

FF#$$A=v%%%%

+++,,A=v%%%%

+++,,A=v%%%%

+++,,A=v%%%%

+++,,A=v%%%%

33344A=u$$$$

33344A=v%%%%

33344A=v%%%%

33344A=v%%%%

;;;<<A=u$$$$

CCCDDA=u$$$$$$r0   c                  P  	 t          j                    } |                     g d           t          j        |           }t	          t
                    }|D ]1}t          j        |          }||                             |           2t          j        |           }t          |
                                          t          |
                                          k    sJ |                                D ]/\  }}||         }|D ]	t          	fd|D                       sJ  0d S )Nr   c              3   B   K   | ]}t          j        |          V  d S rJ   rK   )rA   eas     r.   rN   z&test_triads_by_type.<locals>.<genexpr>w   s0      CC!r'1--CCCCCCr0   )r'   r(   r)   rR   r   rQ   r\   appendtriads_by_typesetkeysitemsrP   )
r+   rR   r,   triadnamer-   tri_type	actual_Gsexpected_Gsra   s
            @r.   test_triads_by_typerl   j   s6   

AQQQRRRq!!J4  H % %}U##e$$$$q!!Fv{{}}X]]__!5!55555%||~~ D D)x( 	D 	DACCCC{CCCCCCCCC	DD Dr0   c                      t          j        dt           j                  } ddi}dD ]<}t          j        | |          }|d |                                D             k    sJ =d S )Nabccreate_usingr&   r   )ra   bcabacbcrn   nodelistc                 &    i | ]\  }}|d k    ||S r    rA   typcnts      r.   
<dictcomp>z;test_triadic_census_short_path_nodelist.<locals>.<dictcomp>   s$    UUUcSSTWWCWWWr0   r'   
path_graphr(   r*   rf   )r+   r,   nltriad_censuss       r.   'test_triadic_census_short_path_nodelistr   z   s    
e"*555A{H6 V V(R888UU\5G5G5I5IUUUUUUUUV Vr0   c                  t   t          j        dt           j                  } d}t          j        t
          |          5  t          j        | g d           d d d            n# 1 swxY w Y   t          j        t
          |          5  t          j        | g d           d d d            d S # 1 swxY w Y   d S )N   ro   z3nodelist includes duplicate nodes or nodes not in G)match)r   r   r   r   )r   r   ra   r   )r'   r   r(   pytestraises
ValueErrorr*   )r+   msgs     r.   +test_triadic_census_correct_nodelist_valuesr      s.   
abj111A
@C	z	-	-	- + +
!\\\***+ + + + + + + + + + + + + + +	z	-	-	- - -
!^^^,,,- - - - - - - - - - - - - - - - - -s#   A""A&)A&B--B14B1c                     t          j        t          j        dt           j                            } i d |                                 D             k    sJ t          j        t          j        dt           j                            } i d |                                 D             k    sJ t          j        t          j        dt           j                            } i d |                                 D             k    sJ t          j        t          j        dg                    } i d	 |                                 D             k    sJ d S )
Nr   ro   c                 &    i | ]\  }}|d k    ||S ry   rz   r{   s      r.   r~   z3test_triadic_census_tiny_graphs.<locals>.<dictcomp>   #    AAAxsCq#sr0   r   c                 &    i | ]\  }}|d k    ||S ry   rz   r{   s      r.   r~   z3test_triadic_census_tiny_graphs.<locals>.<dictcomp>   r   r0   r   c                 &    i | ]\  }}|d k    ||S ry   rz   r{   s      r.   r~   z3test_triadic_census_tiny_graphs.<locals>.<dictcomp>   r   r0   rY   c                 &    i | ]\  }}|d k    ||S ry   rz   r{   s      r.   r~   z3test_triadic_census_tiny_graphs.<locals>.<dictcomp>   r   r0   )r'   r*   empty_graphr(   rf   )tcs    r.   test_triadic_census_tiny_graphsr      s'   		2>!"*EEE	F	FBAA288::AAAAAAA		2>!"*EEE	F	FBAA288::AAAAAAA		2>!"*EEE	F	FBAA288::AAAAAAA		2:vh//	0	0BAA288::AAAAAAAAAr0   c                     t          j        dt           j                  } ddi}| D ]d}|                                 }|                    ||           t          j        |          }|d |                                D             k    sJ et          j        dt           j                  } t          j        |           | D ]}|                     ||           t          j        |           }|fd|D             k    sJ d S )Nrn   ro   r&   r   c                 &    i | ]\  }}|d k    ||S ry   rz   r{   s      r.   r~   z1test_triadic_census_selfloops.<locals>.<dictcomp>   s#    KKKc377C777r0   abcdec                 <    i | ]}|t          |                   S rz   lenrA   tttbts     r.   r~   z1test_triadic_census_selfloops.<locals>.<dictcomp>   s%    000r"c#b'll000r0   )r'   r   r(   copyadd_edger*   rf   rc   )GGr,   nr+   r   r   s        @r.   test_triadic_census_selfloopsr      s   	u2:	6	6	6B{H L LGGII	

1aq!!KKRXXZZKKKKKKKK	wRZ	8	8	8B

B

C  
Aq		2		B0000R000000000r0   c                      t          j        dt           j                  } ddd}t          j        |           }|d |                                D             k    sJ d S )Nabcdro   r   r   r&   c                 &    i | ]\  }}|d k    ||S ry   rz   r{   s      r.   r~   z1test_triadic_census_four_path.<locals>.<dictcomp>   s#    QQQXS#qSr0   r   )r+   r,   r   s      r.   test_triadic_census_four_pathr      sg    
f2:666A!$$H$Q''LQQ1C1C1E1EQQQQQQQQQr0   c                  2   t          j        dt           j                  } ddd}ddd}t          j        | dg          }|d |                                D             k    sJ t          j        | d	g          }|d
 |                                D             k    sJ t          j        | dg          }|d |                                D             k    sJ t          j        | dg          }|d |                                D             k    sJ d S )Nr   ro   r   r   r   ra   rv   c                 &    i | ]\  }}|d k    ||S ry   rz   r{   s      r.   r~   z:test_triadic_census_four_path_nodelist.<locals>.<dictcomp>   $    WWWcsUVwwCwwwr0   rq   c                 &    i | ]\  }}|d k    ||S ry   rz   r{   s      r.   r~   z:test_triadic_census_four_path_nodelist.<locals>.<dictcomp>   r   r0   rr   c                 &    i | ]\  }}|d k    ||S ry   rz   r{   s      r.   r~   z:test_triadic_census_four_path_nodelist.<locals>.<dictcomp>   r   r0   dc                 &    i | ]\  }}|d k    ||S ry   rz   r{   s      r.   r~   z:test_triadic_census_four_path_nodelist.<locals>.<dictcomp>   r   r0   r   )r+   expected_endexpected_mida_triad_censusb_triad_censusc_triad_censusd_triad_censuss          r.   &test_triadic_census_four_path_nodelistr      sD   
f2:666Aa((La((L&qC5999NWW^5I5I5K5KWWWWWWW&qC5999NWW^5I5I5K5KWWWWWWW&qC5999NWW^5I5I5K5KWWWWWWW&qC5999NWW^5I5I5K5KWWWWWWWWWr0   c                     t          j                    } |                     g d           i ddddddddd	d
dddddddddddd
dddddddddd}t                              |d          }|                                 D ]4}t          j        | |g          }|D ]}||xx         ||         z  cc<   5|                                D ]\  }}||xx         dz  cc<   ||k    sJ dS )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   rv   N)r'   r(   r)   dictfromkeysr7   r*   rf   )r+   r,   r-   nodenode_triad_census	triad_keyrC   vs           r.   test_triadic_census_nodelistr      s   

AQQQRRR 	q 		
 	q 	q 	 	 	q 	 	 	q 	 	q 	  	!H$ ]]8Q''F		 > >-a4&AAA! 	> 	>I9!29!==	>   1q			a				vr0   Nr   
   c                 n   t          j        | ddd          }t          j        |          }t          j        |          fd|D             }||k    sJ |D ]0t          j        |h          }fd|D             }||k    sJ 1t	          j        |d          D ]>t                    t          j        |          }fd	|D             }||k    sJ ?t	          j        |d
          D ]>t                    t          j        |          }fd|D             }||k    sJ ?d S )Ng333333?T*   )directedseedc                 <    i | ]}|t          |                   S rz   r   r   s     r.   r~   z7test_triadic_census_on_random_graph.<locals>.<dictcomp>   s%    
*
*
*2s3r7||
*
*
*r0   rv   c           
      p    i | ]2}|t          fd                     |g           D                       3S )c              3   $   K   | ]
}|v d V  dS )r   Nrz   )rA   tr   s     r.   rN   zAtest_triadic_census_on_random_graph.<locals>.<dictcomp>.<genexpr>   s'      <<QQ!VVqVVVV<<r0   sumget)rA   r   r   r   s     r.   r~   z7test_triadic_census_on_random_graph.<locals>.<dictcomp>   sD    KKKr3<<<<#''"b//<<<<<KKKr0   r   c           
      p    i | ]2}|t          fd                     |g           D                       3S )c              3   R   K   | ]!}t          fd |D                       dV  "dS )c              3       K   | ]}|v V  	d S rJ   rz   rA   r   nss     r.   rN   zKtest_triadic_census_on_random_graph.<locals>.<dictcomp>.<genexpr>.<genexpr>   '      5I5I!a2g5I5I5I5I5I5Ir0   r   NrO   rA   r   r   s     r.   rN   zAtest_triadic_census_on_random_graph.<locals>.<dictcomp>.<genexpr>   E      JJ!#5I5I5I5Iq5I5I5I2I2IJAJJJJJJr0   r   rA   r   r   r   s     r.   r~   z7test_triadic_census_on_random_graph.<locals>.<dictcomp>   Q     
 
 
OQBJJJJswwr2JJJJJ
 
 
r0   r   c           
      p    i | ]2}|t          fd                     |g           D                       3S )c              3   R   K   | ]!}t          fd |D                       dV  "dS )c              3       K   | ]}|v V  	d S rJ   rz   r   s     r.   rN   zKtest_triadic_census_on_random_graph.<locals>.<dictcomp>.<genexpr>.<genexpr>   r   r0   r   NrO   r   s     r.   rN   zAtest_triadic_census_on_random_graph.<locals>.<dictcomp>.<genexpr>   r   r0   r   r   s     r.   r~   z7test_triadic_census_on_random_graph.<locals>.<dictcomp>   r   r0   )r'   binomial_graphr*   rc   	itertoolscombinationsrd   )r   r+   tc1tc2r   r   r   s       @@@r.   #test_triadic_census_on_random_graphr      s   
!S4b999A

A

C

A

C
*
*
*
*c
*
*
*C#::::  QC000KKKKKsKKKczzzzz$Q**  WWB///
 
 
 
 
UX
 
 
 czzzzz$Q**  WWB///
 
 
 
 
UX
 
 
 czzzzz r0   )__doc__r   collectionsr   randomr   r   networkxr'   r/   r<   rT   r]   rl   r   r   r   r   r   r   r   markparametrizer   rz   r0   r.   <module>r      sT   = =     # # # # # #             4  R R R(% (% (%VD D D V V V- - -B B B1 1 1"R R RX X X  B q"g&&  '&  r0   