|
|
@@ -0,0 +1,34 @@
|
|
|
+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)
|