def test_reduce_tree(): def concatenate(parent_node, node, string): return string + node[0] assert u'abcdefgh' == misc.reduce_tree(concatenate, test_tree_1, test_tree_1, get_children, u'') def get_even_and_total(parent_node, node, even_lst, total): num = node[0] if num % 2 == 0: even_lst.append(num) return even_lst, total + num assert ([2, 4, 6, 8], 36) == misc.reduce_tree(get_even_and_total, test_tree_2, test_tree_2, get_children, [], 0)
def reduce_unit_tree(f, unit_node, *state): return misc.reduce_tree(f, unit_node, unit_node, lambda unit_node: unit_node.placeables, *state)
def reduce_dom_tree(f, dom_node, *state): return misc.reduce_tree(f, dom_node, dom_node, lambda dom_node: dom_node, *state)