Skip to content
Snippets Groups Projects
Commit 8f1b6a12 authored by Robert Forkel's avatar Robert Forkel
Browse files

closes #52

parent 0327c023
No related branches found
No related tags found
No related merge requests found
...@@ -219,8 +219,7 @@ class Node(object): ...@@ -219,8 +219,7 @@ class Node(object):
def _ascii_art(self, char1='\u2500', show_internal=True, maxlen=None): def _ascii_art(self, char1='\u2500', show_internal=True, maxlen=None):
if maxlen is None: if maxlen is None:
maxlen = max( maxlen = max(
len(n.name) for n in self.walk() len((n.name or '') + ' ') for n in self.walk() if show_internal or n.is_leaf)
if n.name and (show_internal or n.is_leaf)) + 4
pad = ' ' * (maxlen - 1) pad = ' ' * (maxlen - 1)
namestr = '\u2500' + (self.name or '') namestr = '\u2500' + (self.name or '')
......
...@@ -253,32 +253,45 @@ def test_Node_custom_length(): ...@@ -253,32 +253,45 @@ def test_Node_custom_length():
assert weird_numbers_tree == root.newick assert weird_numbers_tree == root.newick
def test_Node_ascii_art(): @pytest.mark.parametrize(
assert loads('(A,(B,C)D)Ex;')[0].ascii_art(strict=True) == """\ 'nwk,kw,art',
[
("(A,(B,C)D)Ex;",
{},
"""\
/-A /-A
--Ex-| --Ex-|
| /-B | /-B
\\-D--| \\-D--|
\\-C""" \\-C"""),
("(A,(B,C)D)Ex;",
assert loads('(A,(B,C)D)Ex;')[0].ascii_art(strict=True, show_internal=False) == """\ dict(show_internal=False),
"""\
/-A /-A
----| ----|
| /-B | /-B
\\---| \\---|
\\-C""" \\-C"""),
("(A,B,C)D;",
assert loads('(A,B,C)D;')[0].ascii_art(strict=True, show_internal=False) == """\ dict(show_internal=False),
"""\
/-A /-A
----+-B ----+-B
\\-C""" \\-C"""),
("((A,B)C)Ex;",
{},
def test_Node_ascii_art_singleton(): """\
assert loads('((A,B)C)Ex;')[0].ascii_art(strict=True) == """\
/-A /-A
--Ex --C--| --Ex --C--|
\\-B""" \\-B"""),
("(,(,,),);",
{},
" /-\n | /-\n---+--+-\n | \\-\n \\-"),
]
)
def test_Node_ascii_art(nwk, kw, art):
kw.setdefault('strict', True)
assert loads(nwk)[0].ascii_art(**kw) == art
def test_dumps(*trees): def test_dumps(*trees):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment