|
@@ -1,7 +1,7 @@
|
|
|
import unittest
|
|
import unittest
|
|
|
|
|
|
|
|
from src.node import ExpressionNode as N, ExpressionLeaf as L
|
|
from src.node import ExpressionNode as N, ExpressionLeaf as L
|
|
|
-from src.rules.poly import match_combine_factors, combine_polynomes
|
|
|
|
|
|
|
+from src.rules.poly import match_combine_polynomes, combine_polynomes
|
|
|
from src.possibilities import Possibility as P
|
|
from src.possibilities import Possibility as P
|
|
|
from src.parser import Parser
|
|
from src.parser import Parser
|
|
|
from tests.parser import ParserWrapper
|
|
from tests.parser import ParserWrapper
|
|
@@ -13,10 +13,10 @@ def tree(exp, **kwargs):
|
|
|
|
|
|
|
|
class TestRulesPoly(unittest.TestCase):
|
|
class TestRulesPoly(unittest.TestCase):
|
|
|
|
|
|
|
|
- #def test_match_combine_factors_numeric_combinations(self):
|
|
|
|
|
|
|
+ #def test_match_combine_polynomes_numeric_combinations(self):
|
|
|
# l0, l1, l2 = L(1), L(2), L(2)
|
|
# l0, l1, l2 = L(1), L(2), L(2)
|
|
|
# plus = N('+', N('+', l0, l1), l2)
|
|
# plus = N('+', N('+', l0, l1), l2)
|
|
|
- # p = match_combine_factors(plus)
|
|
|
|
|
|
|
+ # p = match_combine_polynomes(plus)
|
|
|
# self.assertEqualPos(p, [P(plus, combine_polynomes, (l0, l1)),
|
|
# self.assertEqualPos(p, [P(plus, combine_polynomes, (l0, l1)),
|
|
|
# P(plus, combine_polynomes, (l0, l2)),
|
|
# P(plus, combine_polynomes, (l0, l2)),
|
|
|
# P(plus, combine_polynomes, (l1, l2))])
|
|
# P(plus, combine_polynomes, (l1, l2))])
|
|
@@ -32,63 +32,59 @@ class TestRulesPoly(unittest.TestCase):
|
|
|
|
|
|
|
|
self.assertEqual(p, e)
|
|
self.assertEqual(p, e)
|
|
|
|
|
|
|
|
- def test_basic(self):
|
|
|
|
|
|
|
+ def test_numbers(self):
|
|
|
l1, l2 = root = tree('1+2')
|
|
l1, l2 = root = tree('1+2')
|
|
|
- self.assertEqualPos(match_combine_factors(root),
|
|
|
|
|
- [P(root, combine_polynomes, ((l1, (l1, l1, l1, False)),
|
|
|
|
|
- (l2, (l2, l1, l1, False))))])
|
|
|
|
|
|
|
+ self.assertEqualPos(match_combine_polynomes(root),
|
|
|
|
|
+ [P(root, combine_polynomes, ((l1, (l1, l1, l1)),
|
|
|
|
|
+ (l2, (l1, l2, l1))))])
|
|
|
|
|
|
|
|
|
|
+ def test_identifiers_basic(self):
|
|
|
|
|
+ l1, l2 = tree('1,2')
|
|
|
a1, a2 = root = tree('a+a')
|
|
a1, a2 = root = tree('a+a')
|
|
|
- self.assertEqualPos(match_combine_factors(root),
|
|
|
|
|
- [P(root, combine_polynomes, ((a1, (a1, l1, l1, False)),
|
|
|
|
|
- (a2, (a2, l1, l1, False))))])
|
|
|
|
|
|
|
+ self.assertEqualPos(match_combine_polynomes(root),
|
|
|
|
|
+ [P(root, combine_polynomes, ((a1, (l1, a1, l1)),
|
|
|
|
|
+ (a2, (l1, a2, l1))))])
|
|
|
|
|
|
|
|
|
|
+ def test_identifiers_normal(self):
|
|
|
|
|
+ l1, l2 = tree('1,2')
|
|
|
a1, a2 = root = tree('a+2a')
|
|
a1, a2 = root = tree('a+2a')
|
|
|
- self.assertEqualPos(match_combine_factors(root),
|
|
|
|
|
- [P(root, combine_polynomes, ((a1, (a1, l1, l1, False)),
|
|
|
|
|
- (a2, (a2[1], l1, l2, False))))])
|
|
|
|
|
|
|
+ self.assertEqualPos(match_combine_polynomes(root),
|
|
|
|
|
+ [P(root, combine_polynomes, ((a1, (l1, a1, l1)),
|
|
|
|
|
+ (a2, (l2, a2[1], l1))))])
|
|
|
|
|
|
|
|
|
|
+ def test_identifiers_reverse(self):
|
|
|
|
|
+ l1, l2, la = tree('1,2,a')
|
|
|
a1, a2 = root = tree('a+a*2')
|
|
a1, a2 = root = tree('a+a*2')
|
|
|
- self.assertEqualPos(match_combine_factors(root),
|
|
|
|
|
- [P(root, combine_polynomes, ((a1, (a1, l1, l1, False)),
|
|
|
|
|
- (a2, (a2[1], l1, l2, False))))])
|
|
|
|
|
|
|
+ self.assertEqualPos(match_combine_polynomes(root),
|
|
|
|
|
+ [P(root, combine_polynomes, ((a1, (l1, a1, l1)),
|
|
|
|
|
+ (a2, (l2, la, l1))))])
|
|
|
|
|
|
|
|
|
|
+ def test_identifiers_exponent(self):
|
|
|
|
|
+ l1, l2 = tree('1,2')
|
|
|
a1, a2 = root = tree('a2+a2')
|
|
a1, a2 = root = tree('a2+a2')
|
|
|
- self.assertEqualPos(match_combine_factors(root),
|
|
|
|
|
- [P(root, combine_polynomes, ((a1, (a1[0], l2, l1, True)),
|
|
|
|
|
- (a2, (a2[0], l2, l1, True))))])
|
|
|
|
|
|
|
+ self.assertEqualPos(match_combine_polynomes(root),
|
|
|
|
|
+ [P(root, combine_polynomes, ((a1, (l1, a1[0], l2)),
|
|
|
|
|
+ (a2, (l1, a2[0], l2))))])
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_basic_subexpressions(self):
|
|
def test_basic_subexpressions(self):
|
|
|
- return # TODO: test this!!
|
|
|
|
|
- a_b = tree('a+b')
|
|
|
|
|
- c, d = tree('c+d')
|
|
|
|
|
- l1 = tree('1')
|
|
|
|
|
- l5, l7 = tree('5+7')
|
|
|
|
|
-
|
|
|
|
|
|
|
+ a_b, c, d, l1, l5, l7 = tree('a+b,c,d,1,5,7')
|
|
|
left, right = root = tree('(a+b)^d + (a+b)^d')
|
|
left, right = root = tree('(a+b)^d + (a+b)^d')
|
|
|
|
|
|
|
|
self.assertEqual(left, right)
|
|
self.assertEqual(left, right)
|
|
|
- self.assertEqualPos(match_combine_factors(root),
|
|
|
|
|
- [P(root, combine_polynomes, ((left, (a_b, d, l1, True)),
|
|
|
|
|
- (right, (a_b, d, l1, True))))])
|
|
|
|
|
|
|
+ self.assertEqualPos(match_combine_polynomes(root),
|
|
|
|
|
+ [P(root, combine_polynomes, ((left, (l1, a_b, d)),
|
|
|
|
|
+ (right, (l1, a_b, d))))])
|
|
|
|
|
|
|
|
left, right = root = tree('5(a+b)^d + 7(a+b)^d')
|
|
left, right = root = tree('5(a+b)^d + 7(a+b)^d')
|
|
|
|
|
|
|
|
- #<Possibility root="5 * (a + b) ^ d + 7 * (a + b) ^ d"
|
|
|
|
|
- # handler=combine_polynomes args=((<src.node.ExpressionNode object at
|
|
|
|
|
- # 0x9fb2e0c>, (<src.node.ExpressionNode object at 0x9fb2c2c>,
|
|
|
|
|
- # 'd', 5, True)), (<src.node.ExpressionNode object at
|
|
|
|
|
- # 0x9fb438c>, (<src.node.ExpressionNode object at
|
|
|
|
|
- # 0x9fb2f0c>, 'd', 7, True)))>
|
|
|
|
|
-
|
|
|
|
|
- self.assertEqualPos(match_combine_factors(root),
|
|
|
|
|
- [P(root, combine_polynomes, ((left, (a_b, d, l5, True)),
|
|
|
|
|
- (right, (a_b, d, l7, True))))])
|
|
|
|
|
|
|
+ self.assertEqualPos(match_combine_polynomes(root),
|
|
|
|
|
+ [P(root, combine_polynomes, ((left, (l5, a_b, d)),
|
|
|
|
|
+ (right, (l7, a_b, d))))])
|
|
|
|
|
|
|
|
left, right = root = tree('c(a+b)^d + c(a+b)^d')
|
|
left, right = root = tree('c(a+b)^d + c(a+b)^d')
|
|
|
|
|
|
|
|
self.assertEqual(left, right)
|
|
self.assertEqual(left, right)
|
|
|
- self.assertEqualPos(match_combine_factors(root),
|
|
|
|
|
- [P(root, combine_polynomes, ((left, (left[0], c, d, True)),
|
|
|
|
|
- (right, (right[0], c, d, True))))])
|
|
|
|
|
|
|
+ self.assertEqualPos(match_combine_polynomes(root),
|
|
|
|
|
+ [P(root, combine_polynomes, ((left, (c, a_b, d)),
|
|
|
|
|
+ (right, (c, a_b, d))))])
|