test_utils.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import unittest
  2. from src.utils import Statement as S, Block as B, find_leaders, \
  3. find_basic_blocks
  4. class TestUtils(unittest.TestCase):
  5. def setUp(self):
  6. pass
  7. def test_find_leaders(self):
  8. add = S('command', 'add', '$1', '$2', '$3')
  9. s = [add, S('command', 'j', 'foo'), add, add, S('label', 'foo')]
  10. self.assertEqual(find_leaders(s), [0, 2, 4])
  11. def test_find_basic_blocks(self):
  12. add = S('command', 'add', '$1', '$2', '$3')
  13. s = [add, S('command', 'j', 'foo'), add, add, S('label', 'foo')]
  14. self.assertEqual(map(lambda b: b.statements, find_basic_blocks(s)), \
  15. [B(s[:2]).statements, B(s[2:4]).statements, \
  16. B(s[4:]).statements])
  17. def test_eq(self):
  18. self.assertTrue(S('command', 'foo') == S('command', 'foo'))
  19. self.assertFalse(S('command', 'foo') == S('command', 'bar'))
  20. def test_stype(self):
  21. self.assertTrue(S('comment', 'foo', inline=False).is_comment())
  22. self.assertTrue(S('directive', 'foo').is_directive())
  23. self.assertTrue(S('label', 'foo').is_label())
  24. self.assertTrue(S('command', 'foo').is_command())
  25. self.assertFalse(S('command', 'foo').is_comment())
  26. self.assertFalse(S('label', 'foo').is_directive())
  27. self.assertFalse(S('comment', 'foo', inline=False).is_label())
  28. self.assertFalse(S('directive', 'foo').is_command())
  29. def test_is_inline_comment(self):
  30. self.assertTrue(S('comment', 'foo', inline=True).is_inline_comment())
  31. self.assertFalse(S('comment', 'foo', inline=False).is_inline_comment())
  32. def test_jump_target(self):
  33. self.assertEqual(S('command', 'j', 'foo').jump_target(), 'foo')
  34. self.assertRaises(Exception, S('command', 'foo').jump_target)