test_optimize.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import unittest
  2. from src.optimize import optimize_global
  3. from src.statement import Statement as S, Block as B
  4. class TestOptimize(unittest.TestCase):
  5. def setUp(self):
  6. pass
  7. def test_optimize_global_movaa(self):
  8. foo = S('command', 'foo')
  9. bar = S('command', 'bar')
  10. block = B([foo,
  11. S('command', 'move', '$regA', '$regA'),
  12. bar])
  13. optimize_global(block)
  14. self.assertEquals(block.statements, [foo, bar])
  15. def test_optimize_global_movab(self):
  16. foo = S('command', 'foo')
  17. move = S('command', 'move', '$regA', '$regB')
  18. bar = S('command', 'bar')
  19. block = B([foo,
  20. move,
  21. bar])
  22. optimize_global(block)
  23. self.assertEquals(block.statements, [foo, move, bar])
  24. def test_optimize_global_movinst_true(self):
  25. foo = S('command', 'foo')
  26. bar = S('command', 'bar')
  27. block = B([foo,
  28. S('command', 'move', '$regA', '$regB'),
  29. S('command', 'addu', '$regA', '$regA', 2),
  30. bar])
  31. optimize_global(block)
  32. self.assertEquals(block.statements, [foo,
  33. S('command', 'addu', '$regA', '$regB', 2),
  34. bar])
  35. def test_optimize_global_movinst_false(self):
  36. foo = S('command', 'foo')
  37. bar = S('command', 'bar')
  38. block = B([foo,
  39. S('command', 'move', '$regA', '$regB'),
  40. S('command', 'addu', '$regA', '$regC', 2),
  41. bar])
  42. optimize_global(block)
  43. self.assertEquals(block.statements, [foo,
  44. S('command', 'move', '$regA', '$regB'),
  45. S('command', 'addu', '$regA', '$regC', 2),
  46. bar])