
    9 j                        S r SSKrSSKrSSKrS r\R                  R                  S\" SS5      5      S 5       r	S r
\R                  R                  S\" S	S5      5      S
 5       r\R                  R                  S\" SS5      5      S 5       r\R                  R                  S\R                  \R                  /5      \R                  R                  S\R                  \R                   \R"                  /5      S 5       5       r\R                  R                  S\R                  \R                  /5      \R                  R                  S\R&                  \R(                  /5      S 5       5       rS rg)z'Unit tests for the broadcasting module.    Nc                  8   / SQn [         R                  " U 5      n[         R                  " U5      u  p#US:X  d   eUSS1:X  d   e[         R                  " US5      S:X  d   e[         R                  " US5      S:X  d   e[         R                  " U5      S:X  d   eg	)
zg
Test the BROADCAST algorithm on the example in the paper titled: "Information Dissemination in Trees"
))r      )r      )r      )      )   r   )r   r   )   r   )r   	   )   r   )r      )r      )r      )r      )r      )r      )r   
   )r      )r      )r      )r      r
   r   r   r   r   r   r   N)nxGraphtree_broadcast_centertree_broadcast_time)	edge_listGb_Tb_Cs       |/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/networkx/algorithms/tests/test_broadcasting.pytest_example_tree_broadcastr!   
   s    I, 	A''*HC!8O82q'>>!!!R(A---!!!Q'1,,,!!!$***    nr   r   c                 h   [         R                  " U 5      n[         R                  " U5      u  p#U[        R                  " U S-  5      :X  d   eU[        R                  " U S-  5      U S-  [        R                  " U S-  S-
  5      U S-  S-
  1:X  d   e[         R
                  " U5      U S-
  :X  d   eg )Nr   r   )r   
path_graphr   mathceilr   r#   r   r   r   s       r    test_path_broadcastr)   /   s    
aA''*HC$))AE""""		!a%	Q		!a%!)	Q
	    !!!$A---r"   c                      [         R                  " S5      n [         R                  " U 5      u  pUS:X  d   eUS1:X  d   e[         R                  " U 5      S:X  d   eg )Nr   r   )r   empty_graphr   r   )Hr   r   s      r    test_empty_graph_broadcastr-   =   sT    
qA''*HC!8O81#::!!!$)))r"   r   c                     [         R                  " U 5      n[         R                  " U5      u  p#X :X  d   eU[        UR	                  5       5      :X  d   e[         R
                  " U5      U:X  d   eg )N)r   
star_graphr   setnodesr   r(   s       r    test_star_broadcastr2   E   s\    
aA''*HC8O8#aggi.   !!!$+++r"   r   c                     [         R                  " U 5      n[         R                  " U5      u  p#X :X  d   eUSSU S-
  -  1:X  d   e[         R                  " U5      SU -  S-
  :X  d   eg )Nr   r   r   )r   binomial_treer   r   r(   s       r    test_binomial_tree_broadcastr5   N   si    
A''*HC8O81aAEl####!!!$A	111r"   fn
graph_typec                     [         R                  " SUS9n[        R                  " [         R                  SS9   U " U5        SSS5        g! , (       d  f       g= f)zPCheck that broadcast functions properly raise for directed and multigraph types.r	   )create_usingznot implemented formatchN)r   r%   pytestraisesNetworkXNotImplemented)r6   r7   r   s      r    test_raises_graph_typer?   W   s=     	aj1A	r008N	O
1 
P	O	Os   	A
Agenc                     U" S5      n[         R                  " [        R                  SS9   U " U5        SSS5        g! , (       d  f       g= f)zACheck that broadcast functions properly raise for nontree graphs.r	   z
not a treer:   N)r<   r=   r   NotATree)r6   r@   r   s      r    test_raises_not_treerC   `   s2     	AA	r{{-	8
1 
9	8	8s	   	>
Ac                      [         R                  " S5      n [        R                  " [         R                  SS9   [         R
                  " U SS9  SSS5        g! , (       d  f       g= f)zCCheck that `tree_broadcast_time` properly raises for invalid nodes.r	   znode.*not in Gr:   r   )nodeN)r   r%   r<   r=   NodeNotFoundr   )r   s    r    test_raises_node_not_in_GrG   i   s@    
aA	r.?	@
qr* 
A	@	@s   A
A')__doc__r&   r<   networkxr   r!   markparametrizeranger)   r-   r2   r5   r   r   DiGraph
MultiGraphMultiDiGraphr?   r+   cycle_graphrC   rG    r"   r    <module>rR      sd   -   "+J eArl+
. ,
.* eArl+, ,, eAqk*2 +2  8 8":P:PQR

BMM2??'ST U S  8 8":P:PQR @A B S+r"   