o
    &?e                     @   s   d dl Z d dlZd dlZd dlmZmZ ejdej	ej
fdd Zejdg dg dg d	g d
fdd Zejddd Zejddd Zejddd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% ZdS )&    N)arbitrary_elementgraphs_equalprefix_tree_fnc                    s  g d}| | d\}} fdd}t  | |d\}}}t | dks'J t | }t | dks7J t | dksAJ t  | |d\}}	t | dksUJ t |	 dks_J t  |	 |d\}}
t | dkssJ t |
 dks}J t |
 }t | dksJ t  | |d\}}t | dksJ t | }t | dksJ t  | |d\}}}t | dksJ t | dksJ t | dksJ t | }t | dksJ t | }t | dksJ t | }t | dksJ ||d u sJ ||d	ksJ ||d
ks&J ||dks/J ||	dks8J ||
dksAJ ||dksJJ ||dksSJ ||d	ks\J ||dkseJ ||dksnJ ||dkswJ d S )Natoteatedteniininn)r   c                    s    j |  d S )Nsource)nodes)vT e/home/www/facesmatcher.com/pyenv/lib/python3.10/site-packages/networkx/generators/tests/test_trees.pysource_label   s   z,test_basic_prefix_tree.<locals>.source_label)key   r      r   r   tnoedNIL)sortedlenr   )r   stringsrootr   r   r   r   r   nilZin_r   ter   r   r	   r
   r   r   r   test_basic_prefix_tree	   sV   r&   r"   r   )ababsad)r'   r(   r)    )distantZdisparagingr+   Zdiamondrubyc                 C   s   t t| t| sJ dS )zBEnsure results are consistent between prefix_tree implementations.N)r   nxprefix_treeprefix_tree_recursive)r"   r   r   r   test_implementations_consistentI   s   r0   ignorec                  C   s    t jddd} t | sJ dS )z+Tests that a random tree is in fact a tree.
     seedN)r-   random_treeis_treer   r   r   r   test_random_treeW   s   r8   c                  C   s$   t jddt  d} |  sJ dS )zGenerates a directed tree.r2   r3   r5   Zcreate_usingN)r-   r6   ZDiGraphZis_directedr   r   r   r   test_random_directed_tree^   s   r:   c                  C   s*   t  } t jdd| d}t |sJ dS )z8Tests that creating a random tree with a generator worksr2   r3   r9   N)r-   ZGraphr6   r7   )Gr   r   r   r    test_random_tree_using_generatore   s   r<   c                  C   sn   t ddD ]/} tj| dd}tj| dd}tjj||sJ t|s&J d|jv s-J d|jvs4J qd S Nr   r2   *   r4   r#   roots)ranger-   random_labeled_rooted_treeutilsmiscr   r7   graph)r   t1t2r   r   r   test_random_labeled_rooted_treem   s   rG   c                  C   z   t tj tjddd} W d   n1 sw   Y  t tj tjddd} W d   dS 1 s6w   Y  dS zETests if n = 0 then the NetworkXPointlessConcept exception is raised.r   r3   r4   N)pytestraisesr-   NetworkXPointlessConceptZrandom_labeled_treerA   r   r   r   r   test_random_labeled_tree_n_zerow      "rM   c                  C   s   t ddD ]:} tj| dd}tj| dd}tjj||sJ t|D ]}t||s0J q$d|j	vs8J d|j	v s?J qd S r=   )
r@   r-   random_labeled_rooted_forestrB   rC   r   connected_componentsr7   subgraphrD   )r   rE   rF   cr   r   r   !test_random_labeled_rooted_forest   s   rS   c                  C   8   t jddd} t| dksJ t| jd dksJ dS )z*Tests generation of empty labeled forests.r   r3   r4   r?   N)r-   rO   r!   rD   Fr   r   r   (test_random_labeled_rooted_forest_n_zero      rW   c                  C   s   t ddD ]/} tj| dd}tj| dd}tjj||sJ t|s&J d|jv s-J d|jvs4J qtjdddd	}t	d tjddtd	}t dD ]+} tjj||  ||  s^J t||  sgJ d||  jv spJ d||  jvsyJ qNd S )
Nr   r2   r>   r4   r#   r?      +   Znumber_of_treesr5   )
r@   r-   random_unlabeled_rooted_treerB   rC   r   r7   rD   randomr5   r   rE   rF   r   sr   r   r   !test_random_unlabeled_rooted_tree       
r`   c                  C   rH   rI   )rJ   rK   r-   rL   random_unlabeled_treer\   r   r   r   r   !test_random_unlabeled_tree_n_zero   rN   rc   c                  C   s  t t tjdddd W d    n1 sw   Y  tddD ]N} td| d D ]D}tj| |dd}tj| |dd}tjj||sGJ t	|D ]}t
||sXJ t||ks`J qLd|jvshJ d|jv soJ q+q"tjddd	d
}td	 tjddtd
}tdD ]8} tjj||  ||  sJ t	||  D ]}t
||  |sJ qd||  jvsJ d||  jv sJ qd S )Nr2   r   r>   )qr5   r   r#   r?   rY   rZ   )Znumber_of_forestsr5   )rJ   rK   
ValueErrorr-   random_unlabeled_rooted_forestr@   rB   rC   r   rP   r7   rQ   r!   rD   r]   r5   )r   rd   rE   rF   rR   r   r_   r   r   r   #test_random_unlabeled_rooted_forest   s0   	
rg   c                  C   rT   )z,Tests generation of empty unlabeled forests.r   r3   r4   r?   N)r-   rf   r!   rD   rU   r   r   r   #test_random_unlabeled_forest_n_zero   rX   rh   c                  C   s   t ddD ]/} tj| dd}tj| dd}tjj||sJ t|s&J d|jvs-J d|jvs4J qtjdddd}t	d tjddtd}t dD ]+} tjj||  ||  s^J t||  sgJ d||  jvspJ d||  jvsyJ qNd S )	Nr   r2   r>   r4   r#   r?   rZ   r[   )
r@   r-   rb   rB   rC   r   r7   rD   r]   r5   r^   r   r   r   test_random_unlabeled_tree   ra   ri   )r]   rJ   Znetworkxr-   Znetworkx.utilsr   r   markZparametrizer.   r/   r&   r0   filterwarningsr8   r:   r<   rG   rM   rS   rW   r`   rc   rg   rh   ri   r   r   r   r   <module>   s<    
?
	






