class TestNodeAccessors(object): def setup(self): """ Build a tree that starts from root, radiates to AB, CD. EF and then A to F. Our tree is: - root - ABC - AB - A - B - C - DE - D - E """ t = Tree() r = t.add_root({'title': 'root'}) node_abc, b = t.add_node(r, {'title': 'ABC'}) node_de, b = t.add_node(r, {'title': 'DE'}) node_ab, b = t.add_node(node_abc, {'title': 'AB'}) node_c, b = t.add_node(node_abc, {'title': 'C'}) node_a, b = t.add_node(node_ab, {'title': 'A'}) node_b, b = t.add_node(node_ab, {'title': 'B'}) node_d, b = t.add_node(node_de, {'title': 'D'}) node_e, b = t.add_node(node_de, {'title': 'E'}) # record for use in test functions self.tree = t self.nodes = {} for n in [ r, node_a, node_b, node_c, node_d, node_e, node_ab, node_abc, node_de ]: self.nodes[n.title] = n self.solo_tree = Tree() self.solo_tree.add_root() def teardown(self): pass def test_neighbours(self): neighbours = [ ['ABC', ['root', 'AB', 'C']], ['AB', ['ABC', 'A', 'B']], ['A', ['AB']], ['B', ['AB']], ['DE', ['root', 'D', 'E']], ['D', ['DE']], ['E', ['DE']], ['root', ['ABC', 'DE']], ] for r in neighbours: n = self.nodes[r[0]] names = [ne.title for ne in self.tree.node_neighbours(n)] assert are_lists_equal(names, r[1]), "'%s' is not '%s'" % (names, r[1]) # test the odd case of a tree with a single node solo_node = self.solo_tree.nodes[0] print self.solo_tree.node_neighbours(solo_node) assert (self.solo_tree.node_neighbours(solo_node) == []) def test_children(self): children = [ ['ABC', ['AB', 'C']], ['AB', ['A', 'B']], ['A', []], ['B', []], ['DE', ['D', 'E']], ['D', []], ['E', []], ['root', ['ABC', 'DE']], ] for r in children: print "Testing %s ..." % r n = self.nodes[r[0]] print "Node is %s ..." % n names = [ne.title for ne in self.tree.node_children(n)] assert are_lists_equal(names, r[1]), "'%s' is not '%s'" % (names, r[1]) # test the odd case of a tree with a single node solo_node = self.solo_tree.nodes[0] assert (self.solo_tree.node_children(solo_node) == []) def test_parents(self): parents = [ ['ABC', 'root'], ['AB', 'ABC'], ['A', 'AB'], ['B', 'AB'], ['DE', 'root'], ['D', 'DE'], ['E', 'DE'], ['root', None], ] for r in parents: n = self.nodes[r[0]] node = self.tree.node_parent(n) if node: node = node.title assert (node == r[1]), "'%s' is not '%s'" % (node, r[1]) # test the odd case of a tree with a single node solo_node = self.solo_tree.nodes[0] assert (self.solo_tree.node_parent(solo_node) == None) def test_is_tip(self): nodes = [ ['ABC', False], ['AB', False], ['A', True], ['B', True], ['DE', False], ['D', True], ['E', True], ['root', False], ] for r in nodes: assert (self.tree.is_node_tip(self.nodes[r[0]]) == r[1]) # test the odd case of a tree with a single node solo_node = self.solo_tree.nodes[0] assert (self.solo_tree.is_node_tip(solo_node)) def test_is_internal(self): nodes = [ ['ABC', True], ['AB', True], ['A', False], ['B', False], ['DE', True], ['D', False], ['E', False], ['root', True], ] for r in nodes: assert (self.tree.is_node_internal(self.nodes[r[0]]) == r[1]) # test the odd case of a tree with a single node solo_node = self.solo_tree.nodes[0] assert (self.solo_tree.is_node_internal(solo_node) == False) def test_is_root(self): nodes = [ ['ABC', False], ['AB', False], ['A', False], ['B', False], ['DE', False], ['D', False], ['E', False], ['root', True], ] for r in nodes: assert (self.tree.is_node_root(self.nodes[r[0]]) == r[1]) # test the odd case of a tree with a single node solo_node = self.solo_tree.nodes[0] assert (self.solo_tree.is_node_root(solo_node)) ### END ####################################################################
class TestNodeAccessors (object): def setup (self): """ Build a tree that starts from root, radiates to AB, CD. EF and then A to F. Our tree is: - root - ABC - AB - A - B - C - DE - D - E """ t = Tree() r = t.add_root ({'title': 'root'}) node_abc, b = t.add_node (r, {'title': 'ABC'}) node_de, b = t.add_node (r, {'title': 'DE'}) node_ab, b = t.add_node (node_abc, {'title': 'AB'}) node_c, b = t.add_node (node_abc, {'title': 'C'}) node_a, b = t.add_node (node_ab, {'title': 'A'}) node_b, b = t.add_node (node_ab, {'title': 'B'}) node_d, b = t.add_node (node_de, {'title': 'D'}) node_e, b = t.add_node (node_de, {'title': 'E'}) # record for use in test functions self.tree = t self.nodes = {} for n in [r, node_a, node_b, node_c, node_d, node_e, node_ab, node_abc, node_de]: self.nodes[n.title] = n self.solo_tree = Tree() self.solo_tree.add_root() def teardown (self): pass def test_neighbours (self): neighbours = [ ['ABC', ['root', 'AB', 'C']], ['AB', ['ABC', 'A', 'B']], ['A', ['AB']], ['B', ['AB']], ['DE', ['root', 'D', 'E']], ['D', ['DE']], ['E', ['DE']], ['root', ['ABC', 'DE']], ] for r in neighbours: n = self.nodes[r[0]] names = [ne.title for ne in self.tree.node_neighbours (n)] assert are_lists_equal (names, r[1]), "'%s' is not '%s'" % (names, r[1]) # test the odd case of a tree with a single node solo_node = self.solo_tree.nodes[0] print self.solo_tree.node_neighbours(solo_node) assert (self.solo_tree.node_neighbours(solo_node) == []) def test_children (self): children = [ ['ABC', ['AB', 'C']], ['AB', ['A', 'B']], ['A', []], ['B', []], ['DE', ['D', 'E']], ['D', []], ['E', []], ['root', ['ABC', 'DE']], ] for r in children: print "Testing %s ..." % r n = self.nodes[r[0]] print "Node is %s ..." % n names = [ne.title for ne in self.tree.node_children (n)] assert are_lists_equal (names, r[1]), "'%s' is not '%s'" % (names, r[1]) # test the odd case of a tree with a single node solo_node = self.solo_tree.nodes[0] assert (self.solo_tree.node_children(solo_node) == []) def test_parents (self): parents = [ ['ABC', 'root'], ['AB', 'ABC'], ['A', 'AB'], ['B', 'AB'], ['DE', 'root'], ['D', 'DE'], ['E', 'DE'], ['root', None], ] for r in parents: n = self.nodes[r[0]] node = self.tree.node_parent (n) if node: node = node.title assert (node == r[1]), "'%s' is not '%s'" % (node, r[1]) # test the odd case of a tree with a single node solo_node = self.solo_tree.nodes[0] assert (self.solo_tree.node_parent(solo_node) == None) def test_is_tip (self): nodes = [ ['ABC', False], ['AB', False], ['A', True], ['B', True], ['DE', False], ['D', True], ['E', True], ['root', False], ] for r in nodes: assert (self.tree.is_node_tip (self.nodes[r[0]]) == r[1]) # test the odd case of a tree with a single node solo_node = self.solo_tree.nodes[0] assert (self.solo_tree.is_node_tip(solo_node)) def test_is_internal (self): nodes = [ ['ABC', True], ['AB', True], ['A', False], ['B', False], ['DE', True], ['D', False], ['E', False], ['root', True], ] for r in nodes: assert (self.tree.is_node_internal (self.nodes[r[0]]) == r[1]) # test the odd case of a tree with a single node solo_node = self.solo_tree.nodes[0] assert (self.solo_tree.is_node_internal(solo_node) == False) def test_is_root (self): nodes = [ ['ABC', False], ['AB', False], ['A', False], ['B', False], ['DE', False], ['D', False], ['E', False], ['root', True], ] for r in nodes: assert (self.tree.is_node_root (self.nodes[r[0]]) == r[1]) # test the odd case of a tree with a single node solo_node = self.solo_tree.nodes[0] assert (self.solo_tree.is_node_root(solo_node)) ### END ####################################################################