from src.rules.fractions import match_constant_division, division_by_one, \ division_of_zero from src.possibilities import Possibility as P from tests.test_rules_poly import tree from tests.rulestestcase import RulesTestCase class TestRulesFractions(RulesTestCase): def test_match_constant_division(self): a, zero = tree('a,0') root = a / zero self.assertRaises(ZeroDivisionError, match_constant_division, root) root = a / 1 possibilities = match_constant_division(root) self.assertEqualPos(possibilities, [P(root, division_by_one, (a,))]) root = zero / a possibilities = match_constant_division(root) self.assertEqualPos(possibilities, [P(root, division_of_zero)]) def test_division_by_one(self): a = tree('a') root = a / 1 self.assertEqualNodes(division_by_one(root, (a,)), a) def test_division_of_zero(self): a, zero = tree('a,0') root = zero / a self.assertEqualNodes(division_of_zero(root, ()), zero)