diff options
Diffstat (limited to '.venv/lib/python3.12/site-packages/networkx/algorithms/tests/test_broadcasting.py')
-rw-r--r-- | .venv/lib/python3.12/site-packages/networkx/algorithms/tests/test_broadcasting.py | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/networkx/algorithms/tests/test_broadcasting.py b/.venv/lib/python3.12/site-packages/networkx/algorithms/tests/test_broadcasting.py new file mode 100644 index 00000000..73bf83c8 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/networkx/algorithms/tests/test_broadcasting.py @@ -0,0 +1,82 @@ +"""Unit tests for the broadcasting module.""" + +import math + +import networkx as nx + + +def test_example_tree_broadcast(): + """ + Test the BROADCAST algorithm on the example in the paper titled: "Information Dissemination in Trees" + """ + edge_list = [ + (0, 1), + (1, 2), + (2, 7), + (3, 4), + (5, 4), + (4, 7), + (6, 7), + (7, 9), + (8, 9), + (9, 13), + (13, 14), + (14, 15), + (14, 16), + (14, 17), + (13, 11), + (11, 10), + (11, 12), + (13, 18), + (18, 19), + (18, 20), + ] + G = nx.Graph(edge_list) + b_T, b_C = nx.tree_broadcast_center(G) + assert b_T == 6 + assert b_C == {13, 9} + # test broadcast time from specific vertex + assert nx.tree_broadcast_time(G, 17) == 8 + assert nx.tree_broadcast_time(G, 3) == 9 + # test broadcast time of entire tree + assert nx.tree_broadcast_time(G) == 10 + + +def test_path_broadcast(): + for i in range(2, 12): + G = nx.path_graph(i) + b_T, b_C = nx.tree_broadcast_center(G) + assert b_T == math.ceil(i / 2) + assert b_C == { + math.ceil(i / 2), + math.floor(i / 2), + math.ceil(i / 2 - 1), + math.floor(i / 2 - 1), + } + assert nx.tree_broadcast_time(G) == i - 1 + + +def test_empty_graph_broadcast(): + H = nx.empty_graph(1) + b_T, b_C = nx.tree_broadcast_center(H) + assert b_T == 0 + assert b_C == {0} + assert nx.tree_broadcast_time(H) == 0 + + +def test_star_broadcast(): + for i in range(4, 12): + G = nx.star_graph(i) + b_T, b_C = nx.tree_broadcast_center(G) + assert b_T == i + assert b_C == set(G.nodes()) + assert nx.tree_broadcast_time(G) == b_T + + +def test_binomial_tree_broadcast(): + for i in range(2, 8): + G = nx.binomial_tree(i) + b_T, b_C = nx.tree_broadcast_center(G) + assert b_T == i + assert b_C == {0, 2 ** (i - 1)} + assert nx.tree_broadcast_time(G) == 2 * i - 1 |