100 lines
3.4 KiB
Python
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()
|