
    ܛ7i                        d Z ddlZddlZddlZd Zej                  j                  d edd            d        Z	d Z
ej                  j                  d ed	d            d
        Zej                  j                  d edd            d        Zej                  j                  dej                  ej                  g      ej                  j                  dej                  ej                   ej"                  g      d               Zej                  j                  dej                  ej                  g      ej                  j                  dej&                  ej(                  g      d               Zd Zy)z'Unit tests for the broadcasting module.    Nc                  &   g d} t        j                  |       }t        j                  |      \  }}|dk(  sJ |ddhk(  sJ t        j                  |d      dk(  sJ t        j                  |d      dk(  sJ t        j                  |      dk(  sJ y	)
zo
    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       h/home/rose/Desktop/poly/venv/lib/python3.12/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                 X   t        j                  |       }t        j                  |      \  }}|t        j                  | dz        k(  sJ |t        j                  | dz        | dz  t        j                  | dz  dz
        | dz  dz
  hk(  sJ t        j
                  |      | dz
  k(  sJ y )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                      t        j                  d      } t        j                  |       \  }}|dk(  sJ |dhk(  sJ t        j                  |       dk(  sJ y )Nr   r   )r   empty_graphr   r   )Hr   r   s      r    test_empty_graph_broadcastr-   =   sV    
qA''*HC!8O81#::!!!$)))r"   r   c                     t        j                  |       }t        j                  |      \  }}|| k(  sJ |t        |j	                               k(  sJ t        j
                  |      |k(  sJ y )N)r   
star_graphr   setnodesr   r(   s       r    test_star_broadcastr2   E   s`    
aA''*HC!8O8#aggi.   !!!$+++r"   r   c                     t        j                  |       }t        j                  |      \  }}|| k(  sJ |dd| dz
  z  hk(  sJ t        j                  |      d| z  dz
  k(  sJ y )Nr   r   r   )r   binomial_treer   r   r(   s       r    test_binomial_tree_broadcastr5   N   sm    
A''*HC!8O81aAEl####!!!$A	111r"   fn
graph_typec                     t        j                  d|      }t        j                  t         j                  d      5   | |       ddd       y# 1 sw Y   yxY w)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                      |d      }t        j                  t        j                  d      5   | |       ddd       y# 1 sw Y   yxY w)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  A	c                      t        j                  d      } t        j                  t         j                  d      5  t        j
                  | d       ddd       y# 1 sw Y   yxY w)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"   