예제 #1
0
 def testAddEdge(self):
     g = graph.T()
     n = g.newNode()
     n2 = g.newNode()
     g.newEdge(n, n2)
     self.assertEqual(g.succ(n), [n2])
     self.assertEqual(g.pred(n2), [n])
예제 #2
0
 def testAddTwoEdges(self):
     g = graph.T()
     n = g.newNode()
     n2 = g.newNode()
     n3 = g.newNode()
     g.newEdge(n, n2)
     g.newEdge(n, n3)
     self.assertEqual(g.succ(n), [n2, n3])
     self.assertEqual(g.pred(n2), [n])
     self.assertEqual(g.pred(n3), [n])
예제 #3
0
 def build(self, insns):
     self.control = graph.T()
     self.define = {}
     self.use = {}
     for insn in insns:
         if isinstance(insn, instructions.Insn):
             n = self.control.newNode()
             for d in insn.dest():
                 self.define.setdefault(n, []).append(d)
             for s in insn.source():
                 self.use.setdefault(n, []).append(s)
예제 #4
0
 def testAdd(self):
     g = graph.T()
     n = g.newNode()
     self.assertEqual(g.succ(n), [])
     self.assertEqual(g.pred(n), [])
예제 #5
0
 def testNew(self):
     g = graph.T()