o
    3ήco                     @   s(   d dl ZG dd dZG dd dZdS )    Nc                   @   s`   e Zd Ze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 )TestDFSc                 C   s<   t  }|g d || _t  }|ddg || _d S )N)r      r      r      r      )r   r   )r   r
   r   r   r   )nxGraphadd_edges_fromGDclsr   r    r   S/tmp/pip-target-vg8gfxp4/lib/python/networkx/algorithms/traversal/tests/test_dfs.pysetup_class   s   
zTestDFS.setup_classc                 C   s`   t tj| jddg dksJ t t| jg dksJ t tj| jddddgks.J d S )Nr   source)r   r   r   r
   r   )r   r   r   r   r   r   listr   dfs_preorder_nodesr   r   selfr   r   r   test_preorder_nodes       $zTestDFS.test_preorder_nodesc                 C   s`   t tj| jddg dksJ t t| jg dksJ t tj| jddddgks.J d S )Nr   r   )r
   r   r   r   r   )r   r   r   r   r   r   r   dfs_postorder_nodesr   r   r   r   r   r   test_postorder_nodes   r   zTestDFS.test_postorder_nodesc                 C   s   t j| jdddgddgdgdksJ t j| jddddgdgdgdks(J t | jdgdgd	ks7J t j| jddddgiksFJ d S )
Nr   r   r   r   r   r
   r   r   r   )r   r   r
   )r   r   )r   dfs_successorsr   r   r   r   r   r   test_successor   s   (("zTestDFS.test_successorc                 C   s@   t j| jdddddddksJ t | jdddksJ d S )Nr   r   r   r   )r   r   r   r
   r   r   dfs_predecessorsr   r   r   r   r   r   test_predecessor    s   "zTestDFS.test_predecessorc                 C   s   t | j }g d}tj| jdd}t | |ksJ t | |ks'J tj| jd d}t | |ks9J t | |ksCJ t| j}t | |ksSJ t | |ks]J d S )N)r   r   r   r	   r   r   )sortedr   nodesr   dfs_treeedges)r   	exp_nodes	exp_edgesTr   r   r   test_dfs_tree$   s   zTestDFS.test_dfs_treec                 C   sH   t j| jdd}t|g dksJ t | j}t|ddgks"J d S )Nr   r   )r   r   r	   r   r   r   )r   	dfs_edgesr   r   r   r   r+   r   r   r   test_dfs_edges4   s   zTestDFS.test_dfs_edgesc                 C   s6   t tj| jdd}dd |D }|g dksJ d S )Nr   r   c                 S   "   g | ]\}}}|d kr||fqS forwardr   .0uvdr   r   r   
<listcomp><      " z2TestDFS.test_dfs_labeled_edges.<locals>.<listcomp>)r   r   r   r   r	   r   r   r   dfs_labeled_edgesr   r   r+   r5   r   r   r   test_dfs_labeled_edges:   s   zTestDFS.test_dfs_labeled_edgesc                 C   s2   t t| j}dd |D }|g dksJ d S )Nc                 S   r3   r4   r   r6   r   r   r   r;   A   r<   z?TestDFS.test_dfs_labeled_disconnected_edges.<locals>.<listcomp>)r=   r   )r   r   r   )r   r   r?   r   r@   r   r   r   #test_dfs_labeled_disconnected_edges?   s   z+TestDFS.test_dfs_labeled_disconnected_edgesc                 C   s   t  }|d |d t j|dd}t| dgks J t| g ks*J t j|d d}t| ddgks=J t| g ksGJ d S )Nr   r   r   )r   r   add_noder*   r(   r)   r+   )r   r   r.   r   r   r   test_dfs_tree_isolatesD   s   

zTestDFS.test_dfs_tree_isolatesN)__name__
__module____qualname__classmethodr   r   r!   r$   r'   r/   r2   rA   rB   rD   r   r   r   r   r      s    

r   c                   @   sX   e Zd Ze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 )TestDepthLimitedSearchc                 C   s^   t  }t |g d t |g d || _t  }|ddg t |g d || _d S )N)r   r   r   r   r
         )r         	   
   r   r   )r   r   add_pathr   r   r   r   r   r   r   r   Q   s   
z"TestDepthLimitedSearch.setup_classc                 C   sH   t tj| jdddg dksJ t tj| jdddddgks"J d S )Nr   r   r   depth_limitr"   r   r   r   r   r   r   test_dls_preorder_nodes^   s   "&z.TestDepthLimitedSearch.test_dls_preorder_nodesc                 C   sH   t tj| jdddg dksJ t tj| jdddg dks"J d S )Nr   rQ   )r   rL   r   rJ   r
   r   r   )r   rL   r   r   r   r   r   r   test_dls_postorder_nodesb   s   "z/TestDepthLimitedSearch.test_dls_postorder_nodesc                 C   s   t j| jddd}dd | D ddhdhdd	hd
hdks!J t j| jddd}dd | D dhdhddhdks?J d S )Nr
   r   rQ   c                 S      i | ]	\}}|t |qS r   setr7   nr9   r   r   r   
<dictcomp>q       z=TestDepthLimitedSearch.test_dls_successor.<locals>.<dictcomp>r   rL   r   rJ   rK   )r   r   r
   rJ   c                 S   rU   r   rV   rX   r   r   r   rZ   x   r[   rN   rM   )rM   r   rL   )r   r#   r   itemsr   )r   resultr   r   r   test_dls_successoro   s   .z)TestDepthLimitedSearch.test_dls_successorc                 C   sL   t j| jddddddddksJ t j| jdddddddd	ks$J d S )
Nr   r   rQ   r   r   )r   r   r   rL   rL   rM   )rM   rN   r   rL   r%   r   r   r   r   test_dls_predecessorz   s   z+TestDepthLimitedSearch.test_dls_predecessorc                 C   s.   t j| jddd}t| ddgksJ d S )Nr   r   rQ   )r   r   )r   r
   )r   r*   r   r(   r+   )r   r.   r   r   r   test_dls_tree   s   z$TestDepthLimitedSearch.test_dls_treec                 C   s*   t j| jddd}t|g dksJ d S )NrN   r
   rQ   ))rN   rM   )rM   rL   )rL   r   )r   r   r   )rN   rO   )r   r0   r   r   r1   r   r   r   test_dls_edges   s   z%TestDepthLimitedSearch.test_dls_edgesc                 C   8   t tj| jddd}dd |D }|g dksJ d S )NrJ   r   rQ   c                 S   r3   r4   r   r6   r   r   r   r;      r<   zATestDepthLimitedSearch.test_dls_labeled_edges.<locals>.<listcomp>))rJ   rJ   rJ   r
   )rJ   rK   r>   r@   r   r   r   test_dls_labeled_edges      z-TestDepthLimitedSearch.test_dls_labeled_edgesc                 C   rb   )NrK   r   rQ   c                 S   r3   r4   r   r6   r   r   r   r;      r<   zNTestDepthLimitedSearch.test_dls_labeled_disconnected_edges.<locals>.<listcomp>))rK   rK   )rK   rJ   rc   r>   r@   r   r   r   #test_dls_labeled_disconnected_edges   re   z:TestDepthLimitedSearch.test_dls_labeled_disconnected_edgesN)rE   rF   rG   rH   r   rS   rT   r^   r_   r`   ra   rd   rf   r   r   r   r   rI   P   s    
rI   )networkxr   r   rI   r   r   r   r   <module>   s    L