
    VhT)                     4    d dl Z G d d      Z G d d      Zy)    Nc                   ^    e Zd Zed        Zd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zy)TestDFSc                     t        j                         }|j                  g d       || _        t        j                         }|j                  ddg       || _        y )Nr      r      r      r
      )r   r   r   r   r   r
   r   )nxGraphadd_edges_fromGDclsr   r   s      \/home/dcms/DCMS/lib/python3.12/site-packages/networkx/algorithms/traversal/tests/test_dfs.pysetup_classzTestDFS.setup_class   sJ     HHJ	IJHHJ	&&)*    c                 &   t        t        j                  | j                  d            g dk(  sJ t        t        j                  | j                              g dk(  sJ t        t        j                  | j                  d            ddgk(  sJ y )Nr   source)r   r   r
   r   r   )r   r   r
   r   r
   r   listr   dfs_preorder_nodesr   r   selfs    r   test_preorder_nodeszTestDFS.test_preorder_nodes   sp    B))$&&;<OOOB))$&&12lBBBB))$&&;<AFFFr   c                 &   t        t        j                  | j                  d            g dk(  sJ t        t        j                  | j                              g dk(  sJ t        t        j                  | j                  d            ddgk(  sJ y )Nr   r   )r   r
   r   r   r   )r   r   r   r
   r   r   r   dfs_postorder_nodesr   r   r!   s    r   test_postorder_nodeszTestDFS.test_postorder_nodes   sp    B**466!<=PPPB**46623|CCCB**466!<=!QGGGr   c                 `   t        j                  | j                  d      dgddgdgdk(  sJ t        j                  | j                  d      ddgdgdgdk(  sJ t        j                  | j                        dgdgd	k(  sJ t        j                  | j                  d      ddgik(  sJ y )
Nr   r   r   r
   r   r   r   r   r
   )r   r   r   )r   r
   )r   dfs_successorsr   r   r!   s    r   test_successorzTestDFS.test_successor   s      21#1a&aS6QQQQ  21a&aSaS6QQQQ  (,<<<<  2q1#h>>>r   c                     t        j                  | j                  d      dddddk(  sJ t        j                  | j                        dddk(  sJ y )Nr   r   r   r
   )r   r
   r   r   r   r   dfs_predecessorsr   r   r!   s    r   test_predecessorzTestDFS.test_predecessor    sK    ""466!4A!a8PPPP""466*!l:::r   c                 |   t        | j                  j                               }g d}t        j                  | j                  d      }t        |j                               |k(  sJ t        |j                               |k(  sJ t        j                  | j                  d       }t        |j                               |k(  sJ t        |j                               |k(  sJ t        j                  | j                        }t        |j                               |k(  sJ t        |j                               |k(  sJ y )N)r   r	   r   r   r   r   )sortedr   nodesr   dfs_treeedges)r"   	exp_nodes	exp_edgesTs       r   test_dfs_treezTestDFS.test_dfs_tree$   s    466<<>*	4	KKq)aggi I---aggi I---KKt,aggi I---aggi I---KKaggi I---aggi I---r   c                     t        j                  | j                  d      }t        |      g dk(  sJ t        j                  | j                        }t        |      ddgk(  sJ y )Nr   r   r   r	   r   r   r   r   )r   	dfs_edgesr   r   r   r"   r4   s     r   test_dfs_edgeszTestDFS.test_dfs_edges4   sR    TVVA.E{>>>>TVV$E{vv....r   c                     t        j                  g d      }t        j                  |dt              }t        j                  |dd       }t	        |      g dk(  sJ t	        |      g dk(  sJ y )Nr   r   r   sort_neighborsc                     t        | d      S NT)reverser1   xs    r   <lambda>z0TestDFS.test_dfs_edges_sorting.<locals>.<lambda>>       &D2I r   r:   )r   )r   r
   r
   r   r   )r   r   r;   r1   r   r"   r   	edges_asc
edges_descs       r   test_dfs_edges_sortingzTestDFS.test_dfs_edges_sorting:   sb    HHEFLL1VD	\\a(I

 I"BBBBJ#CCCCr   c                     t        t        j                  | j                  d            }|D cg c]  \  }}}|dk(  s||f }}}}|g dk(  sJ |g dk(  sJ y c c}}}w )Nr   r   forward)r   r   r   r	   r   r   )r   r   rO   r   r   rO   r   r   nontreer   r
   rO   r
   r   rT   r
   r   rO   r   r
   rT   r   r   rT   r
   r   rC   r   r
   rC   r   r   rO   r   r   rT   r   r   rT   r   r   rC   r   r   rC   r   r   rT   r   r   rT   r   r   rC   r   r   dfs_labeled_edgesr   r"   r4   uvdrO   s         r   test_dfs_labeled_edgeszTestDFS.test_dfs_labeled_edgesC   so    R))$&&;<+0CCiq!QANAq6CCBBBB 
 
 	
 
 Ds   A Ac                     t        j                  g d      }t        j                  |dt              }t        j                  |dd       }t	        |      g dk(  sJ t	        |      g dk(  sJ y )Nr   r   r?   c                     t        | d      S rB   rD   rE   s    r   rG   z8TestDFS.test_dfs_labeled_edges_sorting.<locals>.<lambda>`   rH   r   )rQ   rR   rS   rU   rV   rW   rY   rX   rZ   r[   r\   r^   r]   r_   r`   ra   rb   rc   )rQ   )r   r   rO   )r   r
   rO   )r
   r   rT   )r
   r   rO   r\   r]   r^   r_   )r   r
   rT   rS   )r
   r   rC   )r   r
   rC   rY   )r   r   rC   ra   )r   r   rT   rc   )r   r   re   r1   r   rJ   s       r   test_dfs_labeled_edges_sortingz&TestDFS.test_dfs_labeled_edges_sorting\   sx    HHEF((1VL	))a(I

 I #
 
 	
 
( J $
 
 	
 
r   c                     t        t        j                  | j                              }|D cg c]  \  }}}|dk(  s||f }}}}|g dk(  sJ |g dk(  sJ y c c}}}w )NrO   )rP   r   )r
   r
   r   )
rQ   rR   rS   r`   rc   r
   r
   rO   r
   r   rO   r   r
   rT   r
   r   rC   r
   r
   rC   r   r   re   r   rf   s         r   #test_dfs_labeled_disconnected_edgesz+TestDFS.test_dfs_labeled_disconnected_edges   sm    R))$&&12+0CCiq!QANAq6CC:::: 
 
 	
 
 Ds
   AAc                    t        j                         }|j                  d       |j                  d       t        j                  |d      }t	        |j                               dgk(  sJ t	        |j                               g k(  sJ t        j                  |d       }t	        |j                               ddgk(  sJ t	        |j                               g k(  sJ y )Nr   r
   r   )r   r   add_noder3   r1   r2   r4   )r"   r   r7   s      r   test_dfs_tree_isolateszTestDFS.test_dfs_tree_isolates   s    HHJ	

1	

1KK!$aggi QC'''aggi B&&&KK$'aggi QF***aggi B&&&r   N)__name__
__module____qualname__classmethodr   r#   r'   r+   r/   r8   r=   rM   rj   rm   ru   rx    r   r   r   r      sO     G
H
?;. /D
2-
^
"	'r   r   c                   R    e Zd Zed        Zd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zy)TestDepthLimitedSearchc                 &   t        j                         }t        j                  |g d       t        j                  |g d       || _        t        j                         }|j	                  ddg       t        j                  |g d       || _        y )N)r   r   r
   r   r         )r
         	   
   r   r   )r   r   add_pathr   r   r   r   s      r   r   z"TestDepthLimitedSearch.setup_class   sh     HHJ
A,-
A'(HHJ	&&)*
A'(r   c                     t        t        j                  | j                  dd            g dk(  sJ t        t        j                  | j                  dd            ddgk(  sJ y )Nr   r
   r   depth_limitr)   r   r   r!   s    r   test_dls_preorder_nodesz.TestDepthLimitedSearch.test_dls_preorder_nodes   sU    B))$&&JKyXXXB))$&&JKQRTUPVWWWr   c                     t        t        j                  | j                  dd            g dk(  sJ t        t        j                  | j                  dd            g dk(  sJ y )Nr   r   )r   r   r
   r   r   r   r
   )r   r   r
   r%   r!   s    r   test_dls_postorder_nodesz/TestDepthLimitedSearch.test_dls_postorder_nodes   sa    B**466!KL Q
 
 	
 
 B**466!KL
 	
 
r   c                    t        j                  | j                  dd      }|j                         D ci c]  \  }}|t	        |       c}}ddhdhddhdhd	k(  sJ t        j                  | j
                  dd      }|j                         D ci c]  \  }}|t	        |       c}}d
hdhddhdk(  sJ y c c}}w c c}}w )Nr   r   r   r   r   r
   r   r   )r
   r   r   r   r   r   )r   r
   r   )r   r*   r   itemssetr   )r"   resultnrh   s       r   test_dls_successorz)TestDepthLimitedSearch.test_dls_successor   s    ""466!C&,lln5da3q6	51vs1vs	:
 
 	
 
 ""466!C&,lln5da3q6	5aSaSaQRV9TTTT 6 6s   B=Cc                     t        j                  | j                  dd      dddddk(  sJ t        j                  | j                  dd      ddddd	k(  sJ y )
Nr   r   r   r   r
   )r   r
   r   r   r   r   )r   r   r   r   r-   r!   s    r   test_dls_predecessorz+TestDepthLimitedSearch.test_dls_predecessor   sr    ""466!C	H
 
 	
 
 ""466!C	H
 
 	
 
r   c                     t        j                  | j                  dd      }t        |j	                               ddgk(  sJ y )Nr   r   r   )r   r
   )r   r   )r   r3   r   r1   r4   )r"   r7   s     r   test_dls_treez$TestDepthLimitedSearch.test_dls_tree   s6    KKqa8aggi VV$4444r   c                 l    t        j                  | j                  dd      }t        |      g dk(  sJ y )Nr   r   r   ))r   r   )r   r   )r   r
   rI   r   )r   r   )r   r;   r   r   r<   s     r   test_dls_edgesz%TestDepthLimitedSearch.test_dls_edges   s+    TVVA1=E{OOOOr   c                     t        t        j                  | j                  dd            }|D cg c]  \  }}}|dk(  s||f }}}}|g dk(  sJ |g dk(  sJ y c c}}}w )Nr   r   r   rO   ))r   r   r   r   )r   r   ))r   r   rO   r   r   rO   r   r   reverse-depth_limit)r   r   rO   )r   r   r   )r   r   rC   rd   rf   s         r   test_dls_labeled_edges_depth_1z5TestDepthLimitedSearch.test_dls_labeled_edges_depth_1   sq    R))$&&JK+0CCiq!QANAq6CC2222 
 
 	
 
 D   AAc                     t        t        j                  | j                  dd            }|D cg c]  \  }}}|dk(  s||f }}}}|g dk(  sJ |g dk(  sJ y c c}}}w )Nr   r
   r   rO   ))r   r   )r   r   r   ))r   r   rO   )r   r   rO   r   r   )r   r   rT   )r   r   rC   )r   r   rC   rd   rf   s         r   test_dls_labeled_edges_depth_2z5TestDepthLimitedSearch.test_dls_labeled_edges_depth_2   sq    R))$&&JK+0CCiq!QANAq6CC2222 
 
 	
 
 Dr   c                     t        t        j                  | j                  d            }|g dk(  sJ t        t        j                  | j                  d            }|g dk(  sJ y )Nr   )r   )rQ   rR   )r   r   r   rc   ro   rp   )r
   r   r   r
   r   rO   )r
   r   r   rs   )r   r   rO   r   r   rT   r   r   rO   )r   r   r   )r   r   rC   )r   r   rO   r   r   rT   )r   r   rC      )rQ   rR   rS   r`   rc   ro   rp   rq   rr   r   )r   r
   rT   )r   r   rO   r   r   )r   r   rT   )r   r   rO   r   )r   r   rC   )r   r   rC   )r   r   rC   )r
   r   rC   rs   rt   r<   s     r   #test_dls_labeled_disconnected_edgesz:TestDepthLimitedSearch.test_dls_labeled_disconnected_edges  sh    R))$&&a@A 
 
 	
 
* R))$&&bAB 
 
 	
 
r   N)ry   rz   r{   r|   r   r   r   r   r   r   r   r   r   r   r}   r   r   r   r      sD    
 
X
	U
5P

/
r   r   )networkxr   r   r   r}   r   r   <module>r      s!    a' a'HK
 K
r   