test_rules_fractions.py 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. from src.rules.fractions import match_constant_division, division_by_one, \
  2. division_of_zero
  3. from src.possibilities import Possibility as P
  4. from tests.test_rules_poly import tree
  5. from tests.rulestestcase import RulesTestCase
  6. class TestRulesFractions(RulesTestCase):
  7. def test_match_constant_division(self):
  8. a, zero = tree('a,0')
  9. root = a / zero
  10. self.assertRaises(ZeroDivisionError, match_constant_division, root)
  11. root = a / 1
  12. possibilities = match_constant_division(root)
  13. self.assertEqualPos(possibilities, [P(root, division_by_one, (a,))])
  14. root = zero / a
  15. possibilities = match_constant_division(root)
  16. self.assertEqualPos(possibilities, [P(root, division_of_zero)])
  17. def test_division_by_one(self):
  18. a = tree('a')
  19. root = a / 1
  20. self.assertEqualNodes(division_by_one(root, (a,)), a)
  21. def test_division_of_zero(self):
  22. a, zero = tree('a,0')
  23. root = zero / a
  24. self.assertEqualNodes(division_of_zero(root, ()), zero)