test_rules_negation.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. from src.rules.negation import match_negated_division, \
  2. single_negated_division, double_negated_division
  3. from src.possibilities import Possibility as P
  4. from tests.rulestestcase import RulesTestCase, tree
  5. class TestRulesNegation(RulesTestCase):
  6. def test_match_negated_division_none(self):
  7. self.assertEqual(match_negated_division(tree('1 / 2')), [])
  8. def test_match_negated_division_single(self):
  9. l1, l2 = root = tree('-1 / 2')
  10. possibilities = match_negated_division(root)
  11. self.assertEqualPos(possibilities,
  12. [P(root, single_negated_division, (l1[0], l2))])
  13. l1, l2 = root = tree('1 / -2')
  14. possibilities = match_negated_division(root)
  15. self.assertEqualPos(possibilities,
  16. [P(root, single_negated_division, (l1, l2[0]))])
  17. def test_match_negated_division_double(self):
  18. root = tree('-1 / -2')
  19. possibilities = match_negated_division(root)
  20. self.assertEqualPos(possibilities,
  21. [P(root, double_negated_division, (root,))])
  22. def test_single_negated_division(self):
  23. l1, l2 = root = tree('-1 / 2')
  24. self.assertEqualNodes(single_negated_division(root, (l1[0], l2)),
  25. -(l1[0] / l2))
  26. l1, l2 = root = tree('1 / -2')
  27. self.assertEqualNodes(single_negated_division(root, (l1, l2[0])),
  28. -(l1 / l2[0]))
  29. def test_double_negated_division(self):
  30. l1, l2 = root = tree('-1 / -2')
  31. self.assertEqualNodes(double_negated_division(root, (root,)),
  32. l1[0] / l2[0])