aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/networkx/algorithms/community/tests/test_centrality.py
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/networkx/algorithms/community/tests/test_centrality.py
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-master.tar.gz
two version of R2R are hereHEADmaster
Diffstat (limited to '.venv/lib/python3.12/site-packages/networkx/algorithms/community/tests/test_centrality.py')
-rw-r--r--.venv/lib/python3.12/site-packages/networkx/algorithms/community/tests/test_centrality.py85
1 files changed, 85 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/networkx/algorithms/community/tests/test_centrality.py b/.venv/lib/python3.12/site-packages/networkx/algorithms/community/tests/test_centrality.py
new file mode 100644
index 00000000..1a8982f0
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/networkx/algorithms/community/tests/test_centrality.py
@@ -0,0 +1,85 @@
+"""Unit tests for the :mod:`networkx.algorithms.community.centrality`
+module.
+
+"""
+
+from operator import itemgetter
+
+import networkx as nx
+
+
+def set_of_sets(iterable):
+ return set(map(frozenset, iterable))
+
+
+def validate_communities(result, expected):
+ assert set_of_sets(result) == set_of_sets(expected)
+
+
+def validate_possible_communities(result, *expected):
+ assert any(set_of_sets(result) == set_of_sets(p) for p in expected)
+
+
+class TestGirvanNewman:
+ """Unit tests for the
+ :func:`networkx.algorithms.community.centrality.girvan_newman`
+ function.
+
+ """
+
+ def test_no_edges(self):
+ G = nx.empty_graph(3)
+ communities = list(nx.community.girvan_newman(G))
+ assert len(communities) == 1
+ validate_communities(communities[0], [{0}, {1}, {2}])
+
+ def test_undirected(self):
+ # Start with the graph .-.-.-.
+ G = nx.path_graph(4)
+ communities = list(nx.community.girvan_newman(G))
+ assert len(communities) == 3
+ # After one removal, we get the graph .-. .-.
+ validate_communities(communities[0], [{0, 1}, {2, 3}])
+ # After the next, we get the graph .-. . ., but there are two
+ # symmetric possible versions.
+ validate_possible_communities(
+ communities[1], [{0}, {1}, {2, 3}], [{0, 1}, {2}, {3}]
+ )
+ # After the last removal, we always get the empty graph.
+ validate_communities(communities[2], [{0}, {1}, {2}, {3}])
+
+ def test_directed(self):
+ G = nx.DiGraph(nx.path_graph(4))
+ communities = list(nx.community.girvan_newman(G))
+ assert len(communities) == 3
+ validate_communities(communities[0], [{0, 1}, {2, 3}])
+ validate_possible_communities(
+ communities[1], [{0}, {1}, {2, 3}], [{0, 1}, {2}, {3}]
+ )
+ validate_communities(communities[2], [{0}, {1}, {2}, {3}])
+
+ def test_selfloops(self):
+ G = nx.path_graph(4)
+ G.add_edge(0, 0)
+ G.add_edge(2, 2)
+ communities = list(nx.community.girvan_newman(G))
+ assert len(communities) == 3
+ validate_communities(communities[0], [{0, 1}, {2, 3}])
+ validate_possible_communities(
+ communities[1], [{0}, {1}, {2, 3}], [{0, 1}, {2}, {3}]
+ )
+ validate_communities(communities[2], [{0}, {1}, {2}, {3}])
+
+ def test_most_valuable_edge(self):
+ G = nx.Graph()
+ G.add_weighted_edges_from([(0, 1, 3), (1, 2, 2), (2, 3, 1)])
+ # Let the most valuable edge be the one with the highest weight.
+
+ def heaviest(G):
+ return max(G.edges(data="weight"), key=itemgetter(2))[:2]
+
+ communities = list(nx.community.girvan_newman(G, heaviest))
+ assert len(communities) == 3
+ validate_communities(communities[0], [{0}, {1, 2, 3}])
+ validate_communities(communities[1], [{0}, {1}, {2, 3}])
+ validate_communities(communities[2], [{0}, {1}, {2}, {3}])