
    ިsg^                     .   d dl Z d dlZd dlZd dlmZmZ ej                  j                  dej                  ej                  f      d        Zej                  j                  dg dg dg dg d	f      d
        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)    N)arbitrary_elementgraphs_equalprefix_tree_fnc                 .   g d} | |      d\  }}fd}t        |   |      \  }}}t        |         dk(  sJ t        |         }t        |         dk(  sJ t        |         dk(  sJ t        |   |      \  }}	t        |         dk(  sJ t        |	         dk(  sJ t        |	   |      \  }}
t        |         dk(  sJ t        |
         dk(  sJ t        |
         }t        |         dk(  sJ t        |   |      \  }}t        |         dk(  sJ t        |         }t        |         dk(  sJ t        |   |      \  }}}t        |         dk(  sJ t        |         dk(  sJ t        |         dk(  sJ t        |         }t        |         dk(  sJ t        |         }t        |         dk(  sJ t        |         }t        |         dk(  sJ  ||      J  ||      dk(  sJ  ||      d	k(  sJ  ||      d
k(  sJ  ||	      dk(  sJ  ||
      dk(  sJ  ||      dk(  sJ  ||      dk(  sJ  ||      dk(  sJ  ||      dk(  sJ  ||      dk(  sJ  ||      dk(  sJ y )Natoteatedteniininn)r   c                 (    j                   |    d   S )Nsource)nodes)vTs    W/var/www/html/venv/lib/python3.12/site-packages/networkx/generators/tests/test_trees.pysource_labelz,test_basic_prefix_tree.<locals>.source_label   s    wwqz(##    )key   r      r   r   tnoedNIL)sortedlenr   )r   stringsrootr!   r   r   r   r   nilin_r   ter	   r
   r   r   r   s                   @r   test_basic_prefix_treer)   	   s    AGwAID#$ QtW,/GAq!qt9>>
AaD
!Cqv;!qt9>>ad-HCqv;!qv;!af,/HCqv;!qv;!
AcF
#Cqv;!AaDl+FBqu:??
AbE
"Cqv;!1R5l3MCcqv;!qv;!qv;!
AcF
#Cqv;!
AcF
#Cqv;!
AcF
#Cqv;!
 %%%?c!!!?c!!!?c!!!######s"""s"""#########%%%r   r$   r   )ababsad)r*   r+   r,    )distantdisparagingr.   diamondrubyc                 l    t        t        j                  |       t        j                  |             sJ y)zBEnsure results are consistent between prefix_tree implementations.N)r   nxprefix_treeprefix_tree_recursive)r$   s    r   test_implementations_consistentr6   I   s(     w/1I1I'1RSSSr   c                  H   t        dd      D ]  } t        j                  | d      }t        j                  | d      }t        j                  j                  j                  ||      sJ t        j                  |      sJ d|j                  v sJ d|j                  vrJ  y Nr   
   *   seedr%   roots)ranger3   random_labeled_rooted_treeutilsmiscr   is_treegraph)r   t1t2s      r   test_random_labeled_rooted_treerF   W   s    1b\ '**126**126xx}}))"b111zz"~~!!!bhh&&&'r   c                  @   t        j                  t        j                        5  t        j                  dd      } ddd       t        j                  t        j                        5  t        j
                  dd      } ddd       y# 1 sw Y   MxY w# 1 sw Y   yxY wzETests if n = 0 then the NetworkXPointlessConcept exception is raised.r     r;   N)pytestraisesr3   NetworkXPointlessConceptrandom_labeled_treer?   r   s    r   test_random_labeled_tree_n_zerorO   a   sy    	r22	3 1""1401	r22	3 8))!$78 81 18 8   B'BBBc                     t        dd      D ]  } t        j                  | d      }t        j                  | d      }t        j                  j                  j                  ||      sJ t        j                  |      D ](  }t        j                  |j                  |            r(J  d|j                  vsJ d|j                  v rJ  y r8   )
r>   r3   random_labeled_rooted_forestr@   rA   r   connected_componentsrB   subgraphrC   )r   rD   rE   cs       r   !test_random_labeled_rooted_forestrV   i   s    1b\ #,,QR8,,QR8xx}}))"b111((, 	.A::bkk!n---	.RXX%%%"(("""#r   c                      t        j                  dd      } t        |       dk(  sJ t        | j                  d         dk(  sJ y)z*Tests generation of empty labeled forests.r   rI   r;   r=   N)r3   rR   r#   rC   Fs    r   (test_random_labeled_rooted_forest_n_zerorZ   t   s@    
''5Aq6Q;;qwww A%%%r   c                     t        dd      D ]  } t        j                  | d      }t        j                  | d      }t        j                  j                  j                  ||      sJ t        j                  |      sJ d|j                  v sJ d|j                  vrJ  t        j                  ddd	      }t        j                  d       t        j                  ddt        	      }t        d      D ]t  } t        j                  j                  j                  ||    ||          sJ t        j                  ||          sJ d||    j                  v sJ d||    j                  vrtJ  y )
Nr   r9   r:   r;   r%   r=      +   number_of_treesr<   )
r>   r3   random_unlabeled_rooted_treer@   rA   r   rB   rC   randomr<   r   rD   rE   r   ss        r   !test_random_unlabeled_rooted_treerd   {   s=   1b\ ',,QR8,,QR8xx}}))"b111zz"~~!!!bhh&&&' 	''BRHA
KKO
''BVLA2Y )xx}}))!A$!555zz!A$1###adjj(((	)r   c                  @   t        j                  t        j                        5  t        j                  dd      } ddd       t        j                  t        j                        5  t        j
                  dd      } ddd       y# 1 sw Y   MxY w# 1 sw Y   yxY wrH   )rJ   rK   r3   rL   random_unlabeled_treer`   rN   s    r   !test_random_unlabeled_tree_n_zerorg      sy    	r22	3 3$$QT23	r22	3 :++AD9: :3 3: :rP   c                  b   t        j                  t              5  t        j                  ddd       d d d        t        dd      D ]  } t        d| dz         D ]  }t        j                  | |d      }t        j                  | |d      }t        j                  j                  j                  ||      sJ t        j                  |      D ]8  }t        j                  |j                  |            sJ t        |      |k  r8J  d|j                  vsJ d|j                  v rJ   t        j                  ddd	
      }t        j                  d	       t        j                  ddt        
      }t        d      D ]  } t        j                  j                  j                  ||    ||          sJ t        j                  ||          D ]+  }t        j                  ||    j                  |            r+J  d||    j                  vsJ d||    j                  v rJ  y # 1 sw Y   xY w)Nr9   r   r:   )qr<   r   r%   r=   r\   r]   )number_of_forestsr<   )rJ   rK   
ValueErrorr3   random_unlabeled_rooted_forestr>   r@   rA   r   rS   rB   rT   r#   rC   ra   r<   )r   ri   rD   rE   rU   r   rc   s          r   #test_random_unlabeled_rooted_forestrm      s   	z	" <
))";<1b\ 	'q!a% 	'A221CB221CB88==--b"555,,R0 #zz"++a.1111v{"{# )))bhh&&&	'	' 	))"LA
KKO
))"PA2Y %xx}}))!A$!555((1. 	0A::admmA.///	0QqTZZ'''!A$**$$$%< <s   H$$H.c                      t        j                  dd      } t        |       dk(  sJ t        | j                  d         dk(  sJ y)z,Tests generation of empty unlabeled forests.r   rI   r;   r=   N)r3   rl   r#   rC   rX   s    r   #test_random_unlabeled_forest_n_zeroro      s@    
))!$7Aq6Q;;qwww A%%%r   c                     t        dd      D ]  } t        j                  | d      }t        j                  | d      }t        j                  j                  j                  ||      sJ t        j                  |      sJ d|j                  vsJ d|j                  vrJ  t        j                  ddd      }t        j                  d       t        j                  ddt              }t        d      D ]t  } t        j                  j                  j                  ||    ||          sJ t        j                  ||          sJ d||    j                  vsJ d||    j                  vrtJ  y )	Nr   r9   r:   r;   r%   r=   r]   r^   )
r>   r3   rf   r@   rA   r   rB   rC   ra   r<   rb   s        r   test_random_unlabeled_treerq      s=   1b\ '%%ab1%%ab1xx}}))"b111zz"~~RXX%%%bhh&&&' 	  RbAA
KKO
  RfEA2Y )xx}}))!A$!555zz!A$QqTZZ'''adjj(((	)r   )ra   rJ   networkxr3   networkx.utilsr   r   markparametrizer4   r5   r)   r6   rF   rO   rV   rZ   rd   rg   rm   ro   rq    r   r   <module>rw      s       : )BNNB<T<T+UV<& W<&~ :@	TT
'8#&)$:%0&)r   