def generateHeadersDag(options, compilerFacade): dag = HeadersDag() compilationOptions = compilerFacade.processCompOptions( options.compilation_options) for sourceFilename in options.files: print("Processing... ", sourceFilename, ", found ", len(dag.getNodes()), " till now.") headers = compilerFacade.getHeaders(sourceFilename, compilationOptions) for line in headers.split("\n"): if len(line) == 0: continue try: dag.add(*compilerFacade.parseLine(line)) except Exception as e: print("Warning: ", e) dag.processOneFile() print("All files processed, found", len(dag.getNodes()), "headers.") return dag
def test_processOneFile(self): # . A # . B # . C headers = HeadersDag() nodeA = headers.add(1, "A") nodeB = headers.add(1, "B") nodeC = headers.add(1, "C") headers.processOneFile() self.assertFalse(nodeA.isIncluded()) self.assertFalse(nodeB.isIncluded()) self.assertFalse(nodeC.isIncluded()) self.assertEqual(nodeA.getColor(), DfsNode.White) self.assertEqual(nodeB.getColor(), DfsNode.White) self.assertEqual(nodeC.getColor(), DfsNode.White) self.assertTrue(nodeA.getCounter(), 1) self.assertTrue(nodeB.getCounter(), 1) self.assertTrue(nodeC.getCounter(), 1) # . A < # .. D < # . B < # .. D < # . C nodeA = headers.add(1, "A") nodeD = headers.add(2, "D") nodeB = headers.add(1, "B") nodeD = headers.add(2, "D") headers.processOneFile() self.assertFalse(nodeA.isIncluded()) self.assertFalse(nodeB.isIncluded()) self.assertFalse(nodeC.isIncluded()) self.assertFalse(nodeD.isIncluded()) self.assertEqual(nodeA.getColor(), DfsNode.White) self.assertEqual(nodeB.getColor(), DfsNode.White) self.assertEqual(nodeC.getColor(), DfsNode.White) self.assertTrue(nodeA.getCounter(), 2) self.assertTrue(nodeB.getCounter(), 2) self.assertTrue(nodeC.getCounter(), 1) self.assertTrue(nodeD.getCounter(), 1)
def setUp(self): self._dag = HeadersDag() # a # b # c # c self._a = self._dag.add(1, "a") self._b = self._dag.add(2, "b") self._c = self._dag.add(3, "c") self._c = self._dag.add(2, "c") self._dag.processOneFile() self._options = OptionsMock() self._tSorter = TopologicalSorter(self._dag)