test_graph.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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. self.assertEqualGraphs(g, """
  14. -
  15. 1
  16. """)
  17. def test_simple_binary(self):
  18. plus = Node('+', self.l0, self.l1)
  19. g = generate_graph(plus, Node)
  20. self.assertEqualGraphs(g, """
  21. +
  22. ╭┴╮
  23. 0 1
  24. """)
  25. def test_multichar_unary(self):
  26. uminus = Node('-', self.multi)
  27. g = generate_graph(uminus, Node)
  28. self.assertEqualGraphs(g, """
  29. -
  30. test
  31. """)
  32. def test_multichar_binary(self):
  33. plus = Node('+', self.multi, self.l1)
  34. g = generate_graph(plus, Node)
  35. self.assertEqualGraphs(g, """
  36. +
  37. ╭──┴╮
  38. test 1
  39. """)
  40. def test_ternary(self):
  41. exp = Leaf('x')
  42. inf = Leaf('o')
  43. minus_inf = Node('-', Leaf('L'))
  44. integral = Node('n', exp, minus_inf, inf)
  45. g = generate_graph(integral, Node, verbose=True)
  46. self.assertEqualGraphs(g, """
  47. n
  48. ╭─┼─╮
  49. x - o
  50. L
  51. """)
  52. def test_ternary_multichar(self):
  53. exp = Leaf('x')
  54. inf = Leaf('oo')
  55. minus_inf = Node('-', Leaf('LL'))
  56. integral = Node('int', exp, minus_inf, inf)
  57. g = generate_graph(integral, Node, verbose=True)
  58. self.assertEqualGraphs(g, """
  59. int
  60. ╭─┼──╮
  61. x - oo
  62. LL
  63. """)
  64. def strip(self, str):
  65. return str.replace('\n ', '\n')[1:-1]
  66. def assertEqualGraphs(self, g, expect):
  67. expect = self.strip(expect)
  68. if g != expect: # pragma: nocover
  69. print 'Expected:'
  70. print expect
  71. print 'Got:'
  72. print g
  73. raise AssertionError('Graph does not match expected value')