예제 #1
0
 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]
         ))
예제 #2
0
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])
예제 #3
0
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) == []
예제 #4
0
    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]))
예제 #5
0
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])
예제 #6
0
    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)
예제 #7
0
 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], [])
예제 #8
0
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
예제 #9
0
 def setUpClass(cls):
     cls.d1 = DirectedGraph({1: [2, 3], 2: [4], 3: [4]})
예제 #10
0
 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))
예제 #11
0
    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)
예제 #12
0
 def test_is_edge(self):
     d = DirectedGraph({1: [2]})
     self.assertTrue(d.is_edge(1, 2))
     self.assertFalse(d.is_edge(2, 1))
예제 #13
0
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)
예제 #14
0
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
예제 #15
0
def test_is_edge():
    graph = DirectedGraph({1: [2]})
    assert graph.is_edge(1, 2)
    assert not graph.is_edge(2, 1)
예제 #16
0
def test_graph_fixture():
    return DirectedGraph({1: [2, 3], 2: [4], 3: [4]})