test_parser.py 996 B

123456789101112131415161718192021222324252627282930313233343536
  1. # vim: set fileencoding=utf-8 :
  2. import unittest
  3. from external.graph_drawing.graph import generate_graph
  4. from external.graph_drawing.line import generate_line
  5. from src.parser import Parser
  6. from src.node import ExpressionNode as Node, ExpressionLeaf as Leaf
  7. from tests.parser import ParserWrapper, run_expressions
  8. def graph(*exp, **kwargs):
  9. return generate_graph(ParserWrapper(Parser, **kwargs).run(exp))
  10. def line(*exp, **kwargs):
  11. return generate_line(ParserWrapper(Parser, **kwargs).run(exp))
  12. class TestParser(unittest.TestCase):
  13. def test_constructor(self):
  14. node = Node('+', Leaf(1), Leaf(4))
  15. self.assertEqual(ParserWrapper(Parser).run(['1 + 4']), node)
  16. def test_identifiers(self):
  17. run_expressions(Parser, [('a', Leaf('a'))])
  18. def test_graph(self):
  19. assert graph('4a') == ("""
  20. *
  21. ╭┴╮
  22. 4 a
  23. """).replace('\n ', '\n')[1:-1]
  24. def test_line(self):
  25. self.assertEqual(line('4a'), '4 * a')