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