91 lines
3.0 KiB
Python
91 lines
3.0 KiB
Python
import unittest
|
|
|
|
import easygraph as eg
|
|
|
|
from easygraph.utils.exception import EasyGraphNotImplemented
|
|
|
|
|
|
class Test_flowbetweenness(unittest.TestCase):
|
|
def setUp(self):
|
|
self.edges = [
|
|
(1, 2),
|
|
(2, 3),
|
|
("String", "Bool"),
|
|
(2, 1),
|
|
(0, 0),
|
|
(-99, 256),
|
|
((None, None), (None, None)),
|
|
]
|
|
self.test_graphs = [eg.Graph(), eg.DiGraph()]
|
|
self.test_graphs.append(eg.classes.DiGraph(self.edges))
|
|
|
|
self.directed_graph = eg.DiGraph()
|
|
self.directed_graph.add_edges_from(
|
|
[
|
|
(0, 1, {"weight": 3}),
|
|
(1, 2, {"weight": 1}),
|
|
(0, 2, {"weight": 1}),
|
|
(2, 3, {"weight": 2}),
|
|
(1, 3, {"weight": 4}),
|
|
]
|
|
)
|
|
|
|
self.graph_with_self_loop = eg.DiGraph()
|
|
self.graph_with_self_loop.add_edges_from([(0, 1), (1, 2), (2, 2), (2, 3)])
|
|
|
|
self.disconnected_graph = eg.DiGraph()
|
|
self.disconnected_graph.add_edges_from([(0, 1), (2, 3)])
|
|
|
|
self.undirected_graph = eg.Graph()
|
|
self.undirected_graph.add_edges_from([(0, 1), (1, 2)])
|
|
|
|
self.single_node_graph = eg.DiGraph()
|
|
self.single_node_graph.add_node(0)
|
|
|
|
self.mixed_type_graph = eg.DiGraph()
|
|
self.mixed_type_graph.add_edges_from([(1, "A"), ("A", (2, 3)), ((2, 3), "B")])
|
|
|
|
self.multigraph = eg.MultiDiGraph()
|
|
self.multigraph.add_edges_from([(0, 1), (0, 1)])
|
|
|
|
def test_flowbetweenness_centrality(self):
|
|
for i in self.test_graphs:
|
|
print(i.edges)
|
|
print(eg.functions.flowbetweenness_centrality(i))
|
|
|
|
def test_flowbetweenness_on_directed(self):
|
|
result = eg.functions.flowbetweenness_centrality(self.directed_graph)
|
|
self.assertIsInstance(result, dict)
|
|
self.assertTrue(
|
|
all(isinstance(v, float) or isinstance(v, int) for v in result.values())
|
|
)
|
|
|
|
def test_flowbetweenness_on_self_loop(self):
|
|
result = eg.functions.flowbetweenness_centrality(self.graph_with_self_loop)
|
|
self.assertIsInstance(result, dict)
|
|
|
|
def test_flowbetweenness_on_disconnected(self):
|
|
result = eg.functions.flowbetweenness_centrality(self.disconnected_graph)
|
|
self.assertIsInstance(result, dict)
|
|
|
|
def test_flowbetweenness_on_single_node(self):
|
|
result = eg.functions.flowbetweenness_centrality(self.single_node_graph)
|
|
self.assertIsInstance(result, dict)
|
|
self.assertEqual(result, {0: 0})
|
|
|
|
def test_flowbetweenness_on_mixed_types(self):
|
|
result = eg.functions.flowbetweenness_centrality(self.mixed_type_graph)
|
|
self.assertIsInstance(result, dict)
|
|
|
|
def test_flowbetweenness_on_undirected_warns(self):
|
|
result = eg.functions.flowbetweenness_centrality(self.undirected_graph)
|
|
self.assertIsNone(result)
|
|
|
|
def test_flowbetweenness_raises_on_multigraph(self):
|
|
with self.assertRaises(EasyGraphNotImplemented):
|
|
eg.functions.flowbetweenness_centrality(self.multigraph)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|