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