def test_find_cycles(self): graph1 = { 'a': ['b', 'd'], 'b': ['c'], 'c': ['d'], 'd': ['b'], 'e': ['f', 'd'], 'f': ['g'], 'g': ['f'] } graph2 = { 'a': ['c'], 'c': ['b'], 'b': ['a', 'e'], 'd': ['b'], 'e': ['d'], 'z': ['z'] } graph3 = {'a': ['b'], 'b': ['c'], 'd': ['b']} cds = graphutil.find_cycles(graph1) exp_cds = [['b', 'c', 'd'], ['f', 'g']] self.assertEqual(cds, exp_cds) cds = graphutil.find_cycles(graph2) exp_cds = [['a', 'c', 'b', 'e', 'd'], ['z']] self.assertEqual(cds, exp_cds) cds = graphutil.find_cycles(graph3) self.assertEqual([], cds) cds = graphutil.find_cycles(self.group_dep) self.assertEqual([], cds)
def _verify_cycles_impl(self, digraph): cycles = graphutil.find_cycles(digraph) if len(cycles) == 0: logutil.end_msg('ok') else: logutil.end_msg('found cycle(s)', color='RED') for cycle in cycles: logutil.warn('CYCLE: ' + ','.join(cycle)) self.is_success = False
def test_find_cycles(self): graph1 = { 'a': ['b', 'd'], 'b': ['c'], 'c': ['d'], 'd': ['b'], 'e': ['f', 'd'], 'f': ['g'], 'g': ['f'] } graph2 = { 'a': ['c'], 'c': ['b'], 'b': ['a', 'e'], 'd': ['b'], 'e': ['d'], 'z': ['z'] } graph3 = { 'a': ['b'], 'b': ['c'], 'd': ['b'] } cds = graphutil.find_cycles(graph1) exp_cds = [ ['b', 'c', 'd'], ['f', 'g'] ] self.assertEqual(cds, exp_cds) cds = graphutil.find_cycles(graph2) exp_cds = [ ['a', 'c', 'b', 'e', 'd'], ['z'] ] self.assertEqual(cds, exp_cds) cds = graphutil.find_cycles(graph3) self.assertEqual([], cds) cds = graphutil.find_cycles(self.group_dep) self.assertEqual([], cds)