test_validation.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. from unittest import TestCase
  2. from src.validation import validate, REWRITE_SUCCESS, REWRITE_FAILURE, \
  3. REWRITE_INVALID, REWRITE_CHECKED
  4. class TestValidation(TestCase):
  5. # TODO: test REWRITE_INVALID (because a BisonSyntaxError is thrown now).
  6. #def test_INVALID(self):
  7. # self.assertEqual(validate('3a +', '3a'), REWRITE_INVALID)
  8. def test_simple_CHECKED(self):
  9. self.assertEqual(validate('3a + a', '4a'), (REWRITE_CHECKED, 0))
  10. def test_simple_failure(self):
  11. self.assertEqual(validate('3a + a', '4a + 1'), (REWRITE_FAILURE, 0))
  12. def test_intermediate_success(self):
  13. self.assertEqual(validate('3a + a + b + 2b', '4a + 3b'),
  14. (REWRITE_CHECKED, 0))
  15. self.assertEqual(validate('a / b / (c / d)', '(ad) / (bc)'),
  16. (REWRITE_CHECKED, 0))
  17. def test_intermediate_failure(self):
  18. self.assertEqual(validate('3a + a + b + 2b', '4a + 4b'),
  19. (REWRITE_FAILURE, 0))
  20. # TODO: this test fails due 'maximum recursion depth exceeded'.
  21. def test_indefinite_integral(self):
  22. self.assertEqual(validate('int_2^4 x^2', '4^3/3 - 2^3/3'),
  23. (REWRITE_SUCCESS, 0))
  24. def test_advanced_failure(self):
  25. self.assertEqual(validate('(x-1)^3+(x-1)^3', '4a+4b'),
  26. (REWRITE_FAILURE, 0))