Files
2026-07-13 12:36:30 +08:00

100 lines
3.4 KiB
Python

import unittest
import easygraph as eg
class Test_betweenness(unittest.TestCase):
def setUp(self):
self.edges = [
(1, 4),
(2, 4),
("String", "Bool"),
(4, 1),
(0, 4),
(4, 256),
((None, None), (None, None)),
]
self.test_graphs = [eg.Graph(), eg.DiGraph()]
self.test_graphs.append(eg.classes.DiGraph(self.edges))
self.undirected = eg.Graph()
self.undirected.add_edges_from([(0, 1), (1, 2), (2, 3), (3, 4)])
self.directed = eg.DiGraph()
self.directed.add_edges_from([(0, 1), (1, 2), (2, 3), (3, 4)])
self.disconnected = eg.Graph()
self.disconnected.add_edges_from([(0, 1), (2, 3)])
self.single_node = eg.Graph()
self.single_node.add_node(42)
self.two_node = eg.Graph()
self.two_node.add_edge("A", "B")
self.named_nodes = eg.Graph()
self.named_nodes.add_edges_from([("X", "Y"), ("Y", "Z")])
def test_betweenness(self):
for i in self.test_graphs:
print(eg.functions.betweenness_centrality(i))
def test_basic_undirected(self):
result = eg.functions.betweenness_centrality(self.undirected)
self.assertEqual(len(result), len(self.undirected.nodes))
self.assertTrue(all(isinstance(x, float) for x in result))
def test_basic_directed(self):
result = eg.functions.betweenness_centrality(self.directed)
self.assertEqual(len(result), len(self.directed.nodes))
def test_disconnected(self):
result = eg.functions.betweenness_centrality(self.disconnected)
self.assertEqual(len(result), len(self.disconnected.nodes))
self.assertTrue(all(v == 0.0 for v in result))
def test_single_node_graph(self):
result = eg.functions.betweenness_centrality(self.single_node)
self.assertEqual(result, [0.0])
def test_two_node_graph(self):
result = eg.functions.betweenness_centrality(self.two_node)
self.assertEqual(len(result), 2)
self.assertTrue(all(v == 0.0 for v in result))
def test_named_nodes_graph(self):
result = eg.functions.betweenness_centrality(self.named_nodes)
self.assertEqual(len(result), 3)
def test_with_endpoints(self):
result = eg.functions.betweenness_centrality(self.undirected, endpoints=True)
self.assertEqual(len(result), len(self.undirected.nodes))
def test_unormalized(self):
result = eg.functions.betweenness_centrality(self.undirected, normalized=False)
self.assertEqual(len(result), len(self.undirected.nodes))
def test_subset_sources(self):
result = eg.functions.betweenness_centrality(self.undirected, sources=[1, 2])
self.assertEqual(len(result), len(self.undirected.nodes))
def test_parallel_workers(self):
result = eg.functions.betweenness_centrality(self.undirected, n_workers=2)
self.assertEqual(len(result), len(self.undirected.nodes))
def test_multigraph_error(self):
G = eg.MultiGraph()
G.add_edges_from([(0, 1), (0, 1)])
with self.assertRaises(eg.EasyGraphNotImplemented):
eg.functions.betweenness_centrality(G)
def test_all_nodes_type_mix(self):
G = eg.Graph()
G.add_edges_from([(1, 2), ("A", "B"), ((1, 2), (3, 4))])
result = eg.functions.betweenness_centrality(G)
self.assertEqual(len(result), len(G.nodes))
if __name__ == "__main__":
unittest.main()