def test_is_tip(self): t = Tree('root', ['A', 'B']) t.get("B").add("sub", ["b1", "b2"]) assert t.get("A").is_tip assert t.get("B").is_tip is False assert t.get("b1").is_tip assert t.get("b2").is_tip
def test_get_or_create(self): t = Tree('root', ['A', 'B']) c = t.get_or_create("C") c.get_or_create("c1") c.get_or_create("c2") t.get("B").add('b1') assert str(t) == "(A,b1,(c1,c2))"
def test_get(self): t = Tree('root', ['A', 'B', 'C']) c = t.get("C") c.add("c1") c.add("c2") t.get("B").add('b1') assert str(t) == "(A,b1,(c1,c2))" # try from different depths assert t.get('c1').node == 'c1' assert c.get('c1').node == 'c1'
def test_tips(self): t = Tree('root', ['A', 'B']) t.get("B").add("sub", ["b1", "b2"]) assert list([t.node for t in t.tips()]) == ['A', 'b1', 'b2']
def test_recursive_add(self): t = Tree('root', ['A', 'B']) t.get("B").add("sub", ["b1", "b2"]) assert str(t) == "(A,(b1,b2))"
def test_recursive_add(self): t = Tree('root', ['A', 'B'], show_nodelabels=True) t.get("B").add("sub", ["b1", "b2"]) assert str(t) == "(A,(b1,b2)sub)root"
def test_conflicts(self): t = Tree('root', ['A', 'B']) t.get("A").add("sub", ["b1", "b2"]) t.get("B").add("sub", ["b1", "b2"]) assert str(t) == '((b1,b2),(b1,b2))'