
    wg$                         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d Zd Zd Zd Zej2                  j5                  dddg      d        Zy)z7Tests for the :mod:`networkx.algorithms.triads` module.    N)defaultdict)samplec                      t        j                  g d      } t        j                         5  t        j                  |        d d d        y # 1 sw Y   y xY w)N)      )r      )r	      )nxDiGraphpytestdeprecated_callall_tripletsGs    j/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/networkx/algorithms/tests/test_triads.pytest_all_triplets_deprecatedr      s>    


+,A				! 
  s   AAc                      t        j                  dt         j                        } t        j                         5  t        j
                  |        d d d        y # 1 sw Y   y xY w)Nr	   create_using)r   
path_graphr   r   r   random_triadr   s    r   test_random_triad_deprecatedr      sC    
abjj1A				! 
  s   AA"c                      t        j                         } | 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 y)"Tests the triadic_census function.
01020304051216515665030Tr   120Cr   210r   120U012	   102r	   021U111U003   030C021D201111D300120D021CN)r   r   add_edges_fromtriadic_census)r   expectedactuals      r   test_triadic_censusr=      s    


AQR 	q 		
 	q 	q 	 	 	q 	 	 	q 	 	q 	  	!H$ q!Fv    c                     t        j                         } | j                         } t        d      D ]M  }t	        t        | j                               d      }| j                  |      }t        j                  |      rMJ  y)zTests the is_triad functiond   r	   N)	r   karate_club_graphto_directedranger   sortednodessubgraphis_triad)r   irE   G2s       r   test_is_triadrJ   2   sc    
A	A3Z vaggi(!,ZZ{{2r>   c                     t        j                         } | j                  g d       t        d      D cg c]4  }t        |dz   d      D ]   }t        |dz   d      D ]  }| d| d|  " 6 c}}}D cg c]  }t	        |j                  d             c}t        j                  |       D cg c]  }t	        |       }}t        fd|D              sJ yc c}}}w c c}w c c}w ) Tests the all_triplets function.r      r   ,c              3   H   K   | ]  t        fd D                yw)c              3   (   K   | ]	  }|k(    y wN ).0s1s2s     r   	<genexpr>z.test_all_triplets.<locals>.<genexpr>.<genexpr>H   s     /28/s   Nany)rS   rU   r;   s    @r   rV   z$test_all_triplets.<locals>.<genexpr>H   s     ABs/h//A   "N)r   r   r9   rC   setsplitr   allr   rH   jkxr<   r;   s         @r   test_all_tripletsra   <   s    


AQR q q1ua q1ua	  #Qqc1#H ,44aAGGCL!4H ooa01c!f1F1A&AAAA 51s   9C :!C'5C,c                     t        j                         } | j                  g d       t        d      D cg c]4  }t        |dz   d      D ]   }t        |dz   d      D ]  }| d| d|  " 6 c}}}D cg c]"  }| j	                  |j                  d            $ c}t        t        j                  |             }t        fd|D              sJ yc c}}}w c c}w )rL   r   rM   r   rN   c              3   H   K   | ]  t        fd D                yw)c              3   J   K   | ]  }t        j                  |        y wrQ   r   is_isomorphic)rS   G1rI   s     r   rV   z,test_all_triads.<locals>.<genexpr>.<genexpr>W   s     ?2##B+?    #NrW   )rS   rI   r;   s    @r   rV   z"test_all_triads.<locals>.<genexpr>W   s     QBs?h??QrY   N)	r   r   r9   rC   rF   r[   list
all_triadsr\   r]   s         @r   test_all_triadsrk   K   s    


AQR q q1ua q1ua	  #Qqc1#H 3;;Q

1773<(;H"--"#FQ&QQQQ <s   9C:'C c                  6   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 y")#zTests the triad_type function.)r   r   r   r0   r   r+   r   r   r   r   r3   r   r-   r   r   r.   r   r8   )rm   r   r   ro   r5   )rm   rp   r   r/   )rm   r   rn   r'   )rm   r   r   r   r2   )rm   rp   rq   rn   r4   )rm   rp   rq   ro   r7   )rm   rp   rn   r   r*   )rm   rp   rn   ro   r(   )rm   rp   ro   r   rn   r)   )rm   rp   r   ro   rn   rq   r6   N)r   r   
triad_typer   s    r   test_triad_typers   Z   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4A==u$$$


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


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


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


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


CDA==u$$$r>   c                    	 t        j                         } | j                  g d       t        j                  |       }t	        t
              }|D ]+  }t        j                  |      }||   j                  |       - t        j                  |       }t        |j                               t        |j                               k(  sJ |j                         D ]'  \  }}||   }|D ]  	t        	fd|D              rJ  ) y)rL   r   c              3   J   K   | ]  }t        j                  |        y wrQ   re   )rS   eas     r   rV   z&test_triads_by_type.<locals>.<genexpr>   s     C!r''1-Crh   N)r   r   r9   rj   r   ri   rr   appendtriads_by_typerZ   keysitemsrX   )
r   rj   r;   triadnamer<   tri_type	actual_Gsexpected_Gsrw   s
            @r   test_triads_by_typer      s    


AQRq!J4 H %}}U#e$% q!Fv{{}X]]_!5555%||~ D)x( 	DAC{CCCC	DDr>   c                     t        j                         } | j                         } t        d      D ],  }t        j                  t        j
                  |             r,J  t        j                         } d}t        j                  t         j                  |      5  t        j
                  |        ddd       y# 1 sw Y   yxY w)zTests the random_triad functionr@   z at least 3 nodes to form a triadmatchN)
r   rA   rB   rC   rG   r   r   r   raisesNetworkXError)r   rH   msgs      r   test_random_triadr      s    
A	A3Z /{{2??1-.../ 	

A
,C	r''s	3 
  s   B99Cc                      t        j                  dt         j                        } ddi}dD ]H  }t        j                  | |      }||j	                         D ci c]  \  }}|dkD  s|| c}}k(  rHJ  y c c}}w )Nabcr   r8   r   )rw   bcabacbcr   nodelistr   r   r   r   r:   r{   )r   r;   nltriad_censustypcnts         r   'test_triadic_census_short_path_nodelistr      sv    
e"**5A{H6 V((R8\5G5G5IUcSSTWCHUUUUVUs   A8
(A8
c                  r   t        j                  dt         j                        } d}t        j                  t
        |      5  t        j                  | g d       d d d        t        j                  t
        |      5  t        j                  | g d       d d d        y # 1 sw Y   FxY w# 1 sw Y   y xY w)N   r   z3nodelist includes duplicate nodes or nodes not in Gr   )r   r   r   r	   )r   r   rw   r	   )r   r   r   r   r   
ValueErrorr:   )r   r   s     r   +test_triadic_census_correct_nodelist_valuesr      s    
abjj1A
@C	z	- +
!\*+	z	- -
!^,- -+ +- -s   B!?B-!B*-B6c                  N   t        j                  t        j                  dt         j                              } i | j	                         D ci c]  \  }}|dkD  s|| c}}k(  sJ t        j                  t        j                  dt         j                              } i | j	                         D ci c]  \  }}|dkD  s|| c}}k(  sJ t        j                  t        j                  dt         j                              } i | j	                         D ci c]  \  }}|dkD  s|| c}}k(  sJ t        j                  t        j                  dg            } i | j	                         D ci c]  \  }}|dkD  s|| c}}k(  sJ y c c}}w c c}}w c c}}w c c}}w )Nr   r   r   r   r   )r   r:   empty_graphr   r{   )tcr   r   s      r   test_triadic_census_tiny_graphsr      s=   			2>>!"**E	FB288:AxsCq#s(AAAA			2>>!"**E	FB288:AxsCq#s(AAAA			2>>!"**E	FB288:AxsCq#s(AAAA			2::vh/	0B288:AxsCq#s(AAAA BAAAs0   FF4FFF)F3F!F!c            	      Z   t        j                  dt         j                        } ddi}| D ]h  }| j                         }|j	                  ||       t        j
                  |      }||j                         D ci c]  \  }}|dkD  s|| c}}k(  rhJ  t        j                  dt         j                        } t        j                  |       }| D ]  }| j	                  ||        t        j
                  |       }||D ci c]  }|t        ||          c}k(  sJ y c c}}w c c}w )Nr   r   r8   r   r   abcde)	r   r   r   copyadd_edger:   r{   ry   len)	GGr;   nr   r   r   r   tbttts	            r   test_triadic_census_selfloopsr      s
   	u2::	6B{H LGGI	

1aq!RXXZKc37CHKKKK	L 
wRZZ	8B


B
C 
Aq			2	BR0r"c#b'l"0000 L 1s   :D"
D"
D(c                      t        j                  dt         j                        } ddd}t        j                  |       }||j	                         D ci c]  \  }}|dkD  s|| c}}k(  sJ y c c}}w )Nabcdr   r   r+   r8   r   r   )r   r;   r   r   r   s        r   test_triadic_census_four_pathr      sc    
f2::6A!$H$$Q'L1C1C1EQXS#qSQQQQQs   A0"A0c                     t        j                  dt         j                        } ddd}ddd}t        j                  | dg      }||j	                         D ci c]  \  }}|dkD  s|| c}}k(  sJ t        j                  | d	g      }||j	                         D ci c]  \  }}|dkD  s|| c}}k(  sJ t        j                  | d
g      }||j	                         D ci c]  \  }}|dkD  s|| c}}k(  sJ t        j                  | dg      }||j	                         D ci c]  \  }}|dkD  s|| c}}k(  sJ y c c}}w c c}}w c c}}w c c}}w )Nr   r   r   r   r   rw   r   r   r   r   dr   )	r   expected_endexpected_mida_triad_censusr   r   b_triad_censusc_triad_censusd_triad_censuss	            r   &test_triadic_census_four_path_nodelistr      sM   
f2::6Aa(La(L&&qC59N^5I5I5KWcsUVwCHWWWW&&qC59N^5I5I5KWcsUVwCHWWWW&&qC59N^5I5I5KWcsUVwCHWWWW&&qC59N^5I5I5KWcsUVwCHWWWW XWWWs0   E*E#E1E*E8E1E?Ec                     t        j                         } | 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}|D ci c]  }|d }}| j                         D ]1  }t        j                  | |g      }|D ]  }||xx   ||   z  cc<    3 |j                         D ]  \  }}||xx   dz  cc<    ||k(  sJ yc c}w )r   r   r'   r   r(   r   r)   r   r*   r+   r,   r-   r	   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r   N)r   r   r9   rE   r:   r{   )r   r;   r_   r<   nodenode_triad_census	triad_keyvs           r   test_triadic_census_nodelistr      s   


AQR 	q 		
 	q 	q 	 	 	q 	 	 	q 	 	q 	  	!H$ %%qad%F%	 >--a4&A! 	>I9!29!==	>>
  1q	a	v &s   
CNr   
   c                    t        j                  | ddd      }t        j                  |      }t        j                  |      }|D ci c]  }|t	        ||          }}||k(  sJ |D ]S  t        j                  |h      }|D ci c]'  }|t        fd|j                  |g       D              ) }}||k(  rSJ  t        j                  |d      D ]]  t              t        j                  |      }|D ci c]'  }|t        fd|j                  |g       D              ) }}||k(  r]J  t        j                  |d	      D ]]  t              t        j                  |      }|D ci c]'  }|t        fd
|j                  |g       D              ) }}||k(  r]J  y c c}w c c}w c c}w c c}w )Ng333333?T*   )directedseedr   c              3   ,   K   | ]  }|v sd   yw)r   NrR   )rS   tr   s     r   rV   z6test_triadic_census_on_random_graph.<locals>.<genexpr>  s     <QQ!Vq<s   	r   c              3   L   K   | ]  }t        fd |D              sd  yw)c              3   &   K   | ]  }|v  
 y wrQ   rR   rS   r   nss     r   rV   z@test_triadic_census_on_random_graph.<locals>.<genexpr>.<genexpr>       5I!a2g5I   r   NrW   rS   r   r   s     r   rV   z6test_triadic_census_on_random_graph.<locals>.<genexpr>       J!#5Iq5I2IAJ   $$r	   c              3   L   K   | ]  }t        fd |D              sd  yw)c              3   &   K   | ]  }|v  
 y wrQ   rR   r   s     r   rV   z@test_triadic_census_on_random_graph.<locals>.<genexpr>.<genexpr>  r   r   r   NrW   r   s     r   rV   z6test_triadic_census_on_random_graph.<locals>.<genexpr>  r   r   )
r   binomial_graphr:   ry   r   sumget	itertoolscombinationsrZ   )r   r   tc1r   r   tc2r   r   s         @@r   #test_triadic_census_on_random_graphr     s   
!S4b9A


A
C


A
C&)
*2s3r7|
*C
*#:: QC0GJKr3<#''"b/<<<KKczz
 $$Q* WB/UX
OQBJswwr2JJJ
 
 czz $$Q* WB/UX
OQBJswwr2JJJ
 
 czz! +
 L

s   
F.
,F3 ,F86,F=)__doc__r   collectionsr   randomr   r   networkxr   r   r   r=   rJ   ra   rk   rs   r   r   r   r   r   r   r   r   r   markparametrizer   rR   r>   r   <module>r      s    =  #   4BR(%VD"
V-B1"RXB q"g& 'r>   