from unittest import TestCase from src.validation import validate, REWRITE_SUCCESS, REWRITE_FAILURE, \ REWRITE_INVALID, REWRITE_CHECKED class TestValidation(TestCase): # TODO: test REWRITE_INVALID (because a BisonSyntaxError is thrown now). #def test_INVALID(self): # self.assertEqual(validate('3a +', '3a'), REWRITE_INVALID) def test_simple_CHECKED(self): self.assertEqual(validate('3a + a', '4a'), (REWRITE_CHECKED, 0)) def test_simple_failure(self): self.assertEqual(validate('3a + a', '4a + 1'), (REWRITE_FAILURE, 0)) def test_intermediate_success(self): self.assertEqual(validate('3a + a + b + 2b', '4a + 3b'), (REWRITE_CHECKED, 0)) self.assertEqual(validate('a / b / (c / d)', '(ad) / (bc)'), (REWRITE_CHECKED, 0)) def test_intermediate_failure(self): self.assertEqual(validate('3a + a + b + 2b', '4a + 4b'), (REWRITE_FAILURE, 0)) # TODO: this test fails due 'maximum recursion depth exceeded'. def test_indefinite_integral(self): self.assertEqual(validate('int_2^4 x^2', '4^3/3 - 2^3/3'), (REWRITE_SUCCESS, 0)) def test_advanced_failure(self): self.assertEqual(validate('(x-1)^3+(x-1)^3', '4a+4b'), (REWRITE_FAILURE, 0))