def testInfiniteLoop(self): # Make sure that this at least stops in case of an infinite dependency loop with self.assertRaises(AssertionError): toposorted = Graph.toposort_classes([ { 'name': 'A', 'superClasses': ['B']}, { 'name': 'B', 'superClasses': ['A']} ])
def testToposort(self): toposorted = Graph.toposort_classes([ { 'name': 'A', 'superClasses': None}, { 'name': 'B', 'superClasses': None}, { 'name': 'C', 'superClasses': ['B']}, { 'name': 'D', 'superClasses': ['E', 'F']}, { 'name': 'E', 'superClasses': None}, { 'name': 'F', 'superClasses': ['B']}, { 'name': 'G', 'superClasses': None, 'properties': [{'linkedClass': 'H'}]}, { 'name': 'H', 'superClasses': None} ]) assert set([c['name'] for c in toposorted]) == set(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']) assert OGMToposortTestCase.before(toposorted, 'B', 'C') assert OGMToposortTestCase.before(toposorted, 'E', 'D') assert OGMToposortTestCase.before(toposorted, 'F', 'D') assert OGMToposortTestCase.before(toposorted, 'B', 'F') assert OGMToposortTestCase.before(toposorted, 'B', 'D') assert OGMToposortTestCase.before(toposorted, 'H', 'G')