test_graph.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. # vim: set fileencoding=utf-8 :
  2. import unittest
  3. from node import Node, Leaf
  4. from graph import generate_graph
  5. class TestGraph(unittest.TestCase):
  6. def setUp(self):
  7. self.l0, self.l1, self.multi = Leaf(0), Leaf(1), Leaf('test')
  8. def tearDown(self):
  9. pass
  10. def test_simple_unary(self):
  11. uminus = Node('-', self.l1)
  12. g = generate_graph(uminus, Node)
  13. expect = self.strip("""
  14. -
  15. 1
  16. """)
  17. assert g == expect
  18. def test_simple_binary(self):
  19. plus = Node('+', self.l0, self.l1)
  20. g = generate_graph(plus, Node)
  21. expect = self.strip("""
  22. +
  23. ╭┴╮
  24. 0 1
  25. """)
  26. assert g == expect
  27. def test_multichar_unary(self):
  28. uminus = Node('-', self.multi)
  29. g = generate_graph(uminus, Node)
  30. expect = self.strip("""
  31. -
  32. test
  33. """)
  34. print g
  35. print expect
  36. assert g == expect
  37. def test_multichar_binary(self):
  38. plus = Node('+', self.multi, self.l1)
  39. g = generate_graph(plus, Node)
  40. expect = self.strip("""
  41. +
  42. ╭───┴╮
  43. test 1
  44. """)
  45. assert g == expect
  46. def test_function(self):
  47. exp = Leaf('x')
  48. inf = Leaf('oo')
  49. minus_inf = Node('-', inf)
  50. integral = Node('int', exp, minus_inf, inf)
  51. g = generate_graph(integral, Node)
  52. expect = self.strip("""
  53. int
  54. ╭─┼──╮
  55. x - oo
  56. oo
  57. """)
  58. assert g == expect
  59. def strip(self, str):
  60. return str.replace('\n ', '\n')[1:-1]