test_rewrite.py 955 B

123456789101112131415161718192021222324252627282930
  1. from unittest import TestCase
  2. from src.parser import Parser
  3. from tests.parser import ParserWrapper
  4. def rewrite(exp, **kwargs):
  5. return ParserWrapper(Parser, **kwargs).run([exp, '@'])
  6. class TestRewrite(TestCase):
  7. def assertRewrite(self, rewrite_chain):
  8. try:
  9. for i, exp in enumerate(rewrite_chain[:-1]):
  10. self.assertEqual(str(rewrite(exp)), str(rewrite_chain[i+1]))
  11. except AssertionError: # pragma: nocover
  12. print 'rewrite failed:', exp, '->', rewrite_chain[i+1]
  13. print 'rewrite chain:', rewrite_chain
  14. raise
  15. def test_addition_rewrite(self):
  16. self.assertRewrite(['2 + 3 + 4', '5 + 4', '9'])
  17. def test_addition_identifiers_rewrite(self):
  18. self.assertRewrite(['2 + 3a + 4', '6 + 3a'])
  19. def test_division_rewrite(self):
  20. self.assertRewrite(['2/7 - 4/11', '22 / 77 + -28 / 77',
  21. '(22 + -28) / 77', '-6 / 77'])