91 lines
2.9 KiB
Python
91 lines
2.9 KiB
Python
import unittest
|
|
|
|
import easygraph as eg
|
|
|
|
from easygraph.utils.exception import EasyGraphNotImplemented
|
|
|
|
|
|
class Test_pagerank(unittest.TestCase):
|
|
def setUp(self):
|
|
edges = [
|
|
(1, 2),
|
|
(2, 3),
|
|
("String", "Bool"),
|
|
(2, 1),
|
|
(0, 0),
|
|
((None, None), (None, None)),
|
|
]
|
|
self.g = eg.classes.DiGraph(edges)
|
|
self.directed_graph = eg.DiGraph()
|
|
self.directed_graph.add_edges_from([(0, 1), (1, 2), (2, 0)])
|
|
|
|
self.undirected_graph = eg.Graph()
|
|
self.undirected_graph.add_edges_from([(0, 1), (1, 2), (2, 0)])
|
|
|
|
self.disconnected_graph = eg.DiGraph()
|
|
self.disconnected_graph.add_edges_from([(0, 1), (2, 3)])
|
|
|
|
self.self_loop_graph = eg.DiGraph()
|
|
self.self_loop_graph.add_edges_from([(0, 0), (0, 1), (1, 2)])
|
|
|
|
self.mixed_graph = eg.DiGraph()
|
|
self.mixed_graph.add_edges_from([("A", "B"), ("B", "C"), ("C", (1, 2))])
|
|
|
|
self.single_node_graph = eg.DiGraph()
|
|
self.single_node_graph.add_node("solo")
|
|
|
|
self.multigraph = eg.MultiDiGraph()
|
|
self.multigraph.add_edges_from([(0, 1), (0, 1)])
|
|
|
|
def test_pagerank(self):
|
|
test_graphs = [eg.Graph(), eg.DiGraph()]
|
|
for i in test_graphs:
|
|
print(eg.functions.pagerank(i))
|
|
|
|
print(self.g.nodes)
|
|
print(eg.functions.pagerank(self.g))
|
|
|
|
"""
|
|
def test_google_matrix(self):
|
|
test_graphs = [eg.Graph(), eg.DiGraph(), eg.MultiGraph(), eg.MultiDiGraph()]
|
|
for g in test_graphs:
|
|
print(eg.functions.pagerank.(g))
|
|
"""
|
|
|
|
def test_directed_graph(self):
|
|
result = eg.functions.pagerank(self.directed_graph)
|
|
self.assertEqual(set(result.keys()), set(self.directed_graph.nodes))
|
|
|
|
def test_undirected_graph(self):
|
|
result = eg.functions.pagerank(self.undirected_graph)
|
|
self.assertEqual(set(result.keys()), set(self.undirected_graph.nodes))
|
|
|
|
def test_disconnected_graph(self):
|
|
result = eg.functions.pagerank(self.disconnected_graph)
|
|
self.assertEqual(set(result.keys()), set(self.disconnected_graph.nodes))
|
|
|
|
def test_self_loop_graph(self):
|
|
result = eg.functions.pagerank(self.self_loop_graph)
|
|
self.assertEqual(set(result.keys()), set(self.self_loop_graph.nodes))
|
|
|
|
def test_mixed_node_types(self):
|
|
result = eg.functions.pagerank(self.mixed_graph)
|
|
self.assertEqual(set(result.keys()), set(self.mixed_graph.nodes))
|
|
|
|
def test_single_node_graph(self):
|
|
result = eg.functions.pagerank(self.single_node_graph)
|
|
self.assertEqual(result, {"solo": 1.0})
|
|
|
|
def test_empty_graph(self):
|
|
empty_graph = eg.DiGraph()
|
|
result = eg.functions.pagerank(empty_graph)
|
|
self.assertEqual(result, {})
|
|
|
|
def test_multigraph_raises(self):
|
|
with self.assertRaises(EasyGraphNotImplemented):
|
|
eg.functions.pagerank(self.multigraph)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|