|
|
@@ -1,22 +1,23 @@
|
|
|
import unittest
|
|
|
|
|
|
from src.parser import Parser
|
|
|
-from src.node import ExpressionNode as N, ExpressionLeaf as L
|
|
|
-from tests.parser import run_expressions
|
|
|
+from src.node import ExpressionLeaf as L
|
|
|
+from tests.parser import run_expressions, apply_expressions
|
|
|
|
|
|
|
|
|
class TestB1Ch08(unittest.TestCase):
|
|
|
|
|
|
- def test_diagnostic_test(self):
|
|
|
+ def test_diagnostic_test_parser(self):
|
|
|
run_expressions(Parser, [
|
|
|
- ('6*5^2', N('*', L(6), N('^', L(5), L(2)))),
|
|
|
- ('-5*(-3)^2', N('*', N('-', L(5)),
|
|
|
- N('^', N('-', L(3)), L(2)))),
|
|
|
- ('-5*(-3)^2', N('*', N('-', L(5)),
|
|
|
- N('^', N('-', L(3)), L(2)))),
|
|
|
- ('7p-3p', N('-', N('*', L(7), L('p')), N('*', L(3), L('p')))),
|
|
|
- ('-5a*-6', N('*', N('*', N('-', L(5)), L('a')),
|
|
|
- N('-', L(6)))),
|
|
|
- ('3a-8--5-2a', N('-', N('-', N('-', N('*', L(3), L('a')), L(8)),
|
|
|
- N('-', L(5))), N('*', L(2), L('a')))),
|
|
|
+ ('6*5^2', L(6) * L(5) ** 2),
|
|
|
+ ('-5*(-3)^2', (-L(5)) * (-L(3)) ** 2),
|
|
|
+ ('7p-3p', L(7) * 'p' + -(L(3) * 'p')),
|
|
|
+ ('-5a*-6', (-L(5)) * 'a' * (-L(6))),
|
|
|
+ ('3a-8--5-2a', L(3) * 'a' + -L(8) + -(-L(5)) + -(L(2) * 'a')),
|
|
|
+ ])
|
|
|
+
|
|
|
+ def test_diagnostic_test_application(self):
|
|
|
+ apply_expressions(Parser, [
|
|
|
+ ('7p+2p', 1, (L(7) + 2) * 'p'),
|
|
|
+ #('7p-3p', 1, (L(7) - 3) * 'p'),
|
|
|
])
|