test_rewrite.py 794 B

1234567891011121314151617181920212223242526
  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'])