Esempio n. 1
0
    def test_check_cycles(self):
        G = Graph()
        a, b, c, d, e, f, g = Node('A'), Node('B'), Node('C'), Node('D'), Node(
            'E'), Node('F'), Node('G')

        N = [a, b, c, d, e, f, g]

        for node in N:
            G.add_node(node)

        E = [
            Edge(a, b),
            Edge(b, c),
            Edge(c, d),
            Edge(a, d),
            Edge(d, e),
            Edge(e, a),
            Edge(e, f),
            Edge(f, g),
            Edge(g, f),
        ]

        for edge in E:
            G.add_edge(edge)

        self.assertEqual(Graph.check_cycles(G, True),
                         [[g, f], [e, d, c, b, a]])
        self.assertEqual(Graph.check_cycles(G, False), [[g, f]])
    def validate(
            self,
            check_everything: bool = False
    ) -> Tuple[bool, List[BaseException]]:
        valid = True
        stack = []

        cycle = Graph.check_cycles(self._graph, False)
        if cycle:
            stack.append(CyclicServiceOperations(cycle[0]))

        return valid, stack