
    Pi                        d Z ddlZddlZddlZd Zej                            d edd                    d             Z	d Z
ej                            d ed	d                    d
             Zej                            d edd                    d             Zej                            dej        ej        g          ej                            dej        ej        ej        g          d                         Zej                            dej        ej        g          ej                            dej        ej        g          d                         Zd ZdS )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 d	S )
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       /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/networkx/algorithms/tests/test_broadcasting.pytest_example_tree_broadcastr!   
   s      I, 	A'**HC!88882q'>>>>!!R((A----!!Q''1,,,,!!$$******    nr   r   c                 T   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 d S )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 d S )Nr   r   )r   empty_graphr   r   )Hr   r   s      r    test_empty_graph_broadcastr-   =   sc    
qA'**HC!88881#::::!!$$))))))r"   r   c                     t          j        |           }t          j        |          \  }}|| k    sJ |t          |                                          k    sJ t          j        |          |k    sJ d S )N)r   
star_graphr   setnodesr   r(   s       r    test_star_broadcastr2   E   ss    
aA'**HC!8888#aggii..    !!$$++++++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 d S )Nr   r   r   )r   binomial_treer   r   r(   s       r    test_binomial_tree_broadcastr5   N   s{    
A'**HC!88881aAEl#####!!$$A	111111r"   fn
graph_typec                     t          j        d|          }t          j        t           j        d          5   | |           ddd           dS # 1 swxY w Y   dS )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111A	r08N	O	O	O  
1                 s   AAAgenc                      |d          }t          j        t          j        d          5   | |           ddd           dS # 1 swxY w Y   dS )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   `   s     	AA	r{-	8	8	8  
1                 s   AA	A	c                      t          j        d          } t          j        t           j        d          5  t          j        | d           ddd           dS # 1 swxY w Y   dS )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****+ + + + + + + + + + + + + + + + + +s   A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      s   - -      "+ "+ "+J eeArll++
. 
. ,+
.* * * eeArll++, , ,+, eeAqkk**2 2 +*2  8":PQRR
BM2?'STT  UT SR  8":PQRR @AA  BA SR+ + + + +r"   