def test_traversal(self): """Tests equivalent traversal behaviour.""" t = (1, (2, (1, 'a')), (2, 'b'), (3, (2, (4, 'x', 'y')))) tuple_iter = tupletraversal.preorder(t) root = parsetree.fromtuple(t) node_iter = root.preorder() for t, n in zip(tuple_iter, node_iter): self.assertEqual(t, n)
def test_preorder_01(self): """Tests preorder traversal through tree representation in tuple.""" l = [] tup = (1, (2,)) exp = [(1, (2,)), (2,)] val = [1, 2] preorder_do(tup, l.append) self.assertListEqual(l, exp) self.assertListEqual(exp, [n for n in preorder(tup)]) self.assertListEqual(val, [n for n in preorder_values(tup)])
def test_traversal_library(self): """Tests equivalent traversal behaviour for all files in library.""" for py in python_library(): sys.stdout.write('{}...'.format(py)) pt = parse(py) root = parsetree.fromtuple(pt) tuple_iter = tupletraversal.preorder(pt) node_iter = root.preorder() for t, n in zip(tuple_iter, node_iter): self.assertEqual(t, n) print('PASS')
def preorder_values(tup): for node in preorder(tup): yield node[0] if isinstance(node, tuple) else node