
    Vh/                     H    d dl mZ d dlZd dlZ G d d      Z G d d      Zy)    )partialNc                   d    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d Zy)TestBFSc                 `    t        j                         }|j                  g d       || _        y )Nr      r	      r	      r      r   r   )nxGraphadd_edges_fromG)clsr   s     \/home/dcms/DCMS/lib/python3.12/site-packages/networkx/algorithms/traversal/tests/test_bfs.pysetup_classzTestBFS.setup_class	   s%     HHJ	AB    c                 r    t        t        j                  | j                  d            dgddgdgdk(  sJ y )Nr   sourcer	   r   r   r   )r   r	   r   )dictr   bfs_successorsr   selfs    r   test_successorzTestBFS.test_successor   s7    B%%dffQ78ATUSV<WWWWr   c                 l    t        t        j                  | j                  d            dddddk(  sJ y )Nr   r   r	   r   )r	   r   r   r   )r   r   bfs_predecessorsr   r   s    r   test_predecessorzTestBFS.test_predecessor   s0    B''q9:!aTU>VVVVr   c                    t        j                  | j                  d      }t        |j	                               t        | j                  j	                               k(  sJ t        |j                               g dk(  sJ y Nr   r   )r   r
   r   r   )r   bfs_treer   sortednodesedgesr   Ts     r   test_bfs_treezTestBFS.test_bfs_tree   sX    KKq)aggi F466<<>$::::aggi $DDDDr   c                 j    t        j                  | j                  d      }t        |      g dk(  sJ y r%   r   	bfs_edgesr   listr   r)   s     r   test_bfs_edgeszTestBFS.test_bfs_edges   s)    TVVA.E{>>>>r   c                     t        j                         }|j                  g d       t        j                  |dd      }t	        |      g dk(  sJ y )Nr   r   T)r   reverse))r   r   )r   r   r   r	   )r	   r   )r   DiGraphr   r/   r0   )r   Dr)   s      r   test_bfs_edges_reversezTestBFS.test_bfs_edges_reverse   sA    JJL	ABQq$7E{>>>>r   c                 $   t        j                         }|j                  g d       t        t        d      }t        j
                  |dt              }t        j
                  |d|      }t        |      g dk(  sJ t        |      g dk(  sJ y )N)r   r   r   r	   r   r   r      T)r4   r   )r   sort_neighbors)r   r:   r   r;   r<   )r:   r   r<   r;   r   )r   r6   r   r   r'   r/   r0   )r   r7   	sort_desc	edges_asc
edges_descs        r   test_bfs_edges_sortingzTestBFS.test_bfs_edges_sorting%   ss    JJL	ABFD1	LL1VD	\\!AiH
I"JJJJJ#KKKKr   c                    t        j                         }|j                  d       |j                  d       t        j                  |d      }t	        |j                               dgk(  sJ t	        |j                               g k(  sJ y )Nr	   r   r   )r   r   add_noder&   r'   r(   r)   )r   r   r+   s      r   test_bfs_tree_isolateszTestBFS.test_bfs_tree_isolates.   sg    HHJ	

1	

1KK!$aggi QC'''aggi B&&&r   c           	          dgdgddgdgd}ddgd dD        ddgfD ]9  }t        t        t        j                  | j                  |                  |k(  r9J  y )	Nr   r	   r   r   r   )r   r	   r   r   c              3       K   | ]  }|  y w)N ).0is     r   	<genexpr>z*TestBFS.test_bfs_layers.<locals>.<genexpr>=   s      0q 0s   )r   )r   	enumerater   
bfs_layersr   )r   expectedsourcess      r   test_bfs_layerszTestBFS.test_bfs_layers6   sn    ss1vs	
 A3 0C 01a&9 	OG	"--"@ABhNNN	Or   c                    t        j                  t        j                        5  t	        t        j
                  | j                  d             d d d        t        j                  t        j                        5  t	        t        j
                  | j                  dg             d d d        y # 1 sw Y   axY w# 1 sw Y   y xY w)NabcrO   )pytestraisesr   NetworkXErrornextrM   r   r   s    r   test_bfs_layers_missing_sourcez&TestBFS.test_bfs_layers_missing_source@   s    ]]2++, 	7tvvu56	7]]2++, 	9tvvw78	9 	9	7 	7	9 	9s   +B/:,B;/B8;Cc                     t        dhdhddhdhg      D ]+  \  }}t        j                  | j                  d|      |k(  r+J  y )Nr   r	   r   r   r   )rL   r   descendants_at_distancer   r   distancedescendantss      r   test_descendants_at_distancez$TestBFS.test_descendants_at_distanceF   sQ    %.aS1a&1#/F%G 	R!Hk--dffaBkQQQ	Rr   c                     t        j                  t        j                        5  t        j                  | j
                  dd       d d d        y # 1 sw Y   y xY w)NrR   r   )rT   rU   r   rV   rZ   r   r   s    r   +test_descendants_at_distance_missing_sourcez3TestBFS.test_descendants_at_distance_missing_sourceJ   s?    ]]2++, 	9&&tvvua8	9 	9 	9s   "AAc                    t        j                  dt         j                        }g d}t        t        j                  |d            }||k(  sJ |j                  dd       |j                  d       t        t        j                  |d            }||k(  sJ |j                  dd       |j                  dd       |j                  dd       |j                  dd       g d	}t        t        j                  |d            }||k(  sJ |j                         }|j                  dd       g d
}t        t        j                  |d            }||k(  sJ y )Nr=   )create_using)r   r	   tree)r	   r   rd   r   r   rd   r   r   rd   r   r   r4   r   r   r   r   levelr   r	   )rc   r   r   rd   r	   r   ri   r	   r=   rd   re   r   r=   forwardrf   rg   )	rc   rj   )r   r   rd   rk   rl   re   rm   )r   r   rn   rh   )	r   cycle_graphr6   r0   bfs_labeled_edgesadd_edgeappendremove_edgeto_undirected)r   r7   rN   answerr   s        r   test_bfs_labeled_edges_directedz'TestBFS.test_bfs_labeled_edges_directedN   s1   NN12::6
 b**1a016!!!	

1a(b**1a016!!!	

1a	

1a	

1a	a	
 b**1a016!!!OO	

1a

 b**1a016!!!r   N)__name__
__module____qualname__classmethodr   r    r#   r,   r2   r8   rB   rE   rP   rX   r^   r`   rv   rH   r   r   r   r      sV     XWE
??L'O9R90"r   r   c                   @    e Zd Zed        Zd Zd Zd Zd Zd Z	d Z
y)	TestBreadthLimitedSearchc                 &   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   )r   r   add_pathr   r   r7   )r   r   r7   s      r   r   z$TestBreadthLimitedSearch.setup_class   sh     HHJ
A,-
A'(HHJ	&&)*
A'(r   c                     t        t        j                  | j                  dd            ddgddgdgdgd	k(  sJ t        j                  | j                  dd      D ci c]  \  }}|t        |       }}}|d
gdgddgdk(  sJ y c c}}w )Nr	   r   r   depth_limitr   r   r   r   r   )r	   r   r   r   r   )r   r   r   )r   r   r   r   r7   r'   )r   nsresults       r   test_limited_bfs_successorz3TestBreadthLimitedSearch.test_limited_bfs_successor   s    B%%dffQAFG1v1vss	L
 
 	
 
 &(%6%6tvvaUV%W
!QAvayL
 
 aSaSaV4444
s   !B
c                     t        t        j                  | j                  dd            dddddddk(  sJ t        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   r   r"   r   r7   r   s    r   test_limited_bfs_predecessorz5TestBreadthLimitedSearch.test_limited_bfs_predecessor   s    B''qaHIN
 
 	
 
 B''qaHI	N
 
 	
 
r   c                     t        j                  | j                  dd      }t        |j	                               ddgk(  sJ y )Nr   r	   r   )r   r   r   )r   r&   r   r'   r)   r*   s     r   test_limited_bfs_treez.TestBreadthLimitedSearch.test_limited_bfs_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   )r   r   r5   r   r.   r1   s     r   test_limited_bfs_edgesz/TestBreadthLimitedSearch.test_limited_bfs_edges   s+    TVVA1=E{OOOOr   c           	      $   t        t        t        j                  | j                  dg                  dgdgdgddgddgd	d
gddgdk(  sJ t        t        t        j                  | j
                  d                  dgddgdgd
gdgdk(  sJ y )Nr   rS   r	   r   r   r   r   r   r=   r   r   r   r~   )r   r	   r   r   r   )r   rL   r   rM   r   r7   r   s    r   test_limited_bfs_layersz0TestBreadthLimitedSearch.test_limited_bfs_layers   s    IbmmDFFQC@ABsss1v1v1v2wG
 
 	
 
 IbmmDFFA>?@s1vsstE
 
 	
 
r   c           
      "   t        dhdhdhddhddhdd	hd
dhg      D ]+  \  }}t        j                  | j                  d|      |k(  r+J  t        dhddhdhd	hdhg      D ]+  \  }}t        j                  | j                  d|      |k(  r+J  y )Nr   r	   r   r   r   r   r   r=   r   r   r   )rL   r   rZ   r   r7   r[   s      r   $test_limited_descendants_at_distancez=TestBreadthLimitedSearch.test_limited_descendants_at_distance   s    %.S1#sQFQFQFQG<&
 	R!Hk --dffaBkQQQ	R &/aVaS1#t/L%M 	R!Hk--dffaBkQQQ	Rr   N)rw   rx   ry   rz   r   r   r   r   r   r   r   rH   r   r   r|   r|      s4    
 

5
 5P
$Rr   r|   )	functoolsr   rT   networkxr   r   r|   rH   r   r   <module>r      s)      v" v"rJR JRr   