test_dataflow.py 748 B

12345678910111213141516171819202122232425
  1. import unittest
  2. from src.statement import Statement as S, Block as B
  3. from src.dataflow import find_leaders, find_basic_blocks
  4. class TestDataflow(unittest.TestCase):
  5. def setUp(self):
  6. add = S('command', 'add', '$1', '$2', '$3')
  7. self.statements = [add, S('command', 'j', 'foo'), add, add, \
  8. S('label', 'foo')]
  9. def tearDown(self):
  10. del self.statements
  11. def test_find_leaders(self):
  12. self.assertEqual(find_leaders(self.statements), [0, 2, 4])
  13. def test_find_basic_blocks(self):
  14. s = self.statements
  15. self.assertEqual(map(lambda b: b.statements, find_basic_blocks(s)), \
  16. [B(s[:2]).statements, B(s[2:4]).statements, \
  17. B(s[4:]).statements])