def test_resolve_dependencies(self, edges): dag = DirectedGraph.from_edges(edges) if DirectedGraph._is_cyclic(dag): with self.assertRaises(CyclicDependencyError): _ = EOWorkflow._schedule_dependencies(dag) else: ver2pos = {u: i for i, u in enumerate(EOWorkflow._schedule_dependencies(dag))} self.assertTrue(functools.reduce( lambda P, Q: P and Q, [ver2pos[u] < ver2pos[v] for u, v in edges] ))
def test_resolve_dependencies(edges): graph = DirectedGraph.from_edges(edges) if DirectedGraph._is_cyclic(graph): with pytest.raises(CyclicDependencyError): graph.toplogically_ordered_vertices() else: vertex_position = { vertex: i for i, vertex in enumerate(graph.toplogically_ordered_vertices()) } assert functools.reduce( lambda P, Q: P and Q, [vertex_position[u] < vertex_position[v] for u, v in edges])
def test_add_vertex(): graph = DirectedGraph({1: [2, 3], 2: [4], 3: [4]}) graph.add_vertex(5) assert 5 in graph assert graph.get_indegree(5) == 0 assert graph.get_outdegree(5) == 0 assert graph.get_neighbors(5) == []
def test_vertices(self): self.assertEqual(set(self.d1.vertices()), set([1, 2, 3, 4])) d2 = DirectedGraph() d2.add_edge(1, 2) d2.add_edge(2, 3) d2.add_edge(3, 4) self.assertEqual(set(d2.vertices()), set([1, 2, 3, 4]))
def test_vertices(test_graph): assert test_graph.get_vertices() == set([1, 2, 3, 4]) graph = DirectedGraph() graph.add_edge(1, 2) graph.add_edge(2, 3) graph.add_edge(3, 4) assert graph.get_vertices() == set([1, 2, 3, 4])
def test_del_vertex(self): d = DirectedGraph({1: [2, 3], 2: [4], 3: [4]}) self.assertEqual(d.get_outdegree(1), 2) self.assertEqual(d.get_indegree(4), 2) self.assertEqual(len(d), 4) self.assertTrue(2 in d) d.del_vertex(2) self.assertEqual(d.get_outdegree(1), 1) self.assertEqual(d.get_indegree(4), 1) self.assertEqual(len(d), 3) self.assertFalse(2 in d)
def test_add_vertex(self): d = DirectedGraph({1: [2, 3], 2: [4], 3: [4]}) d.add_vertex(5) self.assertTrue(5 in d) self.assertEqual(d.get_indegree(5), 0) self.assertEqual(d.get_outdegree(5), 0) self.assertEqual(d[5], [])
def test_del_vertex(): graph = DirectedGraph({1: [2, 3], 2: [4], 3: [4]}) assert graph.get_outdegree(1) == 2 assert graph.get_indegree(4) == 2 assert len(graph) == 4 assert 2 in graph graph.del_vertex(2) assert graph.get_outdegree(1) == 1 assert graph.get_indegree(4) == 1 assert len(graph) == 3 assert 2 not in graph
def setUpClass(cls): cls.d1 = DirectedGraph({1: [2, 3], 2: [4], 3: [4]})
def test_del_edge(self): d = DirectedGraph({1: [2]}) self.assertTrue(d.is_edge(1, 2)) d.del_edge(1, 2) self.assertFalse(d.is_edge(1, 2))
def test_add_edge(self): d = DirectedGraph() self.assertFalse(d.is_edge(1, 2)) self.assertEqual(d.get_outdegree(1), 0) d.add_edge(1, 2) self.assertEqual(d.get_outdegree(1), 1) self.assertEqual(d.get_indegree(2), 1) self.assertTrue(d.is_edge(1, 2)) d.add_edge(1, 2) self.assertTrue(1, 2) self.assertEqual(d.get_indegree(2), 1)
def test_is_edge(self): d = DirectedGraph({1: [2]}) self.assertTrue(d.is_edge(1, 2)) self.assertFalse(d.is_edge(2, 1))
def test_del_edge(): graph = DirectedGraph({1: [2]}) assert graph.is_edge(1, 2) graph.del_edge(1, 2) assert not graph.is_edge(1, 2) graph = DirectedGraph({1: [2, 2]}) assert graph.is_edge(1, 2) graph.del_edge(1, 2) assert graph.is_edge(1, 2) graph.del_edge(1, 2) assert not graph.is_edge(1, 2)
def test_add_edge(): graph = DirectedGraph() assert not graph.is_edge(1, 2) assert graph.get_outdegree(1) == 0 graph.add_edge(1, 2) assert graph.get_outdegree(1) == 1 assert graph.get_indegree(2) == 1 assert graph.is_edge(1, 2) graph.add_edge(1, 2) assert graph.get_indegree(1) == 0 assert graph.get_outdegree(1) == 2 assert graph.get_indegree(2) == 2
def test_is_edge(): graph = DirectedGraph({1: [2]}) assert graph.is_edge(1, 2) assert not graph.is_edge(2, 1)
def test_graph_fixture(): return DirectedGraph({1: [2, 3], 2: [4], 3: [4]})