| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- # vim: set fileencoding=utf-8 :
- import unittest
- from node import Node, Leaf
- from graph import generate_graph
- class TestGraph(unittest.TestCase):
- def setUp(self):
- self.l0, self.l1, self.multi = Leaf(0), Leaf(1), Leaf('test')
- def tearDown(self):
- pass
- def test_simple_unary(self):
- uminus = Node('-', self.l1)
- g = generate_graph(uminus, Node)
- self.assertEqualGraphs(g, """
- -
- │
- 1
- """)
- def test_simple_binary(self):
- plus = Node('+', self.l0, self.l1)
- g = generate_graph(plus, Node)
- self.assertEqualGraphs(g, """
- +
- ╭┴╮
- 0 1
- """)
- def test_multichar_unary(self):
- uminus = Node('-', self.multi)
- g = generate_graph(uminus, Node)
- self.assertEqualGraphs(g, """
- -
- │
- test
- """)
- def test_multichar_binary(self):
- plus = Node('+', self.multi, self.l1)
- g = generate_graph(plus, Node)
- self.assertEqualGraphs(g, """
- +
- ╭──┴╮
- test 1
- """)
- def test_ternary(self):
- exp = Leaf('x')
- inf = Leaf('o')
- minus_inf = Node('-', Leaf('L'))
- integral = Node('n', exp, minus_inf, inf)
- g = generate_graph(integral, Node, verbose=True)
- self.assertEqualGraphs(g, """
- n
- ╭─┼─╮
- x - o
- │
- L
- """)
- def test_ternary_multichar(self):
- exp = Leaf('x')
- inf = Leaf('oo')
- minus_inf = Node('-', Leaf('LL'))
- integral = Node('int', exp, minus_inf, inf)
- g = generate_graph(integral, Node, verbose=True)
- self.assertEqualGraphs(g, """
- int
- ╭─┼──╮
- x - oo
- │
- LL
- """)
- def test_ternary_multichar_middle_right(self):
- exp = Leaf('x')
- minus_99 = Node('-', Leaf('99'))
- minus_inf = Node('-', Leaf('oo'))
- integral = Node('int', exp, minus_inf, minus_99)
- g = generate_graph(integral, Node, verbose=True)
- self.assertEqualGraphs(g, """
- int
- ╭─┼──╮
- x - -
- │ │
- oo 99
- """)
- def test_ternary_multichar_right(self):
- exp = Leaf('x')
- minus_99 = Node('-', Leaf('99'))
- ten = Leaf('10')
- integral = Node('int', exp, ten, minus_99)
- g = generate_graph(integral, Node, verbose=True)
- self.assertEqualGraphs(g, """
- int
- ╭─┼──╮
- x 10 -
- │
- 99
- """)
- def test_quaternary(self):
- a, b, c, d = Leaf(0), Leaf(1), Leaf(2), Leaf(3)
- sum_node = Node('sum', a, b, c, d)
- g = generate_graph(sum_node, Node, verbose=True)
- self.assertEqualGraphs(g, """
- sum
- ╭─┬┴┬─╮
- 0 1 2 3
- """)
- def test_quinary(self):
- a, b, c, d, e = Leaf(0), Leaf(1), Leaf(2), Leaf(3), Leaf(4)
- sum_node = Node('sum', a, b, c, d, e)
- g = generate_graph(sum_node, Node, verbose=True)
- self.assertEqualGraphs(g, """
- sum
- ╭─┬─┼─┬─╮
- 0 1 2 3 4
- """)
- def strip(self, str):
- return str.replace('\n ', '\n')[1:-1]
- def assertEqualGraphs(self, g, expect):
- expect = self.strip(expect)
- if g != expect: # pragma: nocover
- print 'Expected:'
- print expect
- print 'Got:'
- print g
- raise AssertionError('Graph does not match expected value')
|