summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Fayolle <alexandre.fayolle@logilab.fr>2006-12-05 10:26:50 +0100
committerAlexandre Fayolle <alexandre.fayolle@logilab.fr>2006-12-05 10:26:50 +0100
commit690a51897fb39719c05c17b4e83c1b0cd7ae0b48 (patch)
tree79462db7a2f83b9ead07a868b8feb27dc5767400
parent745345647e2ac1b23ae273a8a5148539fafb3edf (diff)
downloadlogilab-common-690a51897fb39719c05c17b4e83c1b0cd7ae0b48.tar.gz
flatten testswq
-rw-r--r--test/unittest_tree.py15
-rw-r--r--tree.py9
2 files changed, 23 insertions, 1 deletions
diff --git a/test/unittest_tree.py b/test/unittest_tree.py
index aecb284..598a4a2 100644
--- a/test/unittest_tree.py
+++ b/test/unittest_tree.py
@@ -24,6 +24,21 @@ class Node_ClassTest(TestCase):
def setUp(self):
""" called before each test from this class """
self.o = make_tree(tree)
+
+
+ def test_flatten(self):
+ result = [r.id for r in self.o.flatten()]
+ expected = ['root', 'child_1_1', 'child_2_1', 'child_2_2', 'child_3_1', 'child_1_2', 'child_2_3']
+ self.assertListEqual(result, expected)
+
+ def test_flatten_with_outlist(self):
+ resultnodes = []
+ self.o.flatten(resultnodes)
+ result = [r.id for r in resultnodes]
+ expected = ['root', 'child_1_1', 'child_2_1', 'child_2_2', 'child_3_1', 'child_1_2', 'child_2_3']
+ self.assertListEqual(result, expected)
+
+
def test_known_values_remove(self):
"""
remove a child node
diff --git a/tree.py b/tree.py
index 435b3f0..80f56fc 100644
--- a/tree.py
+++ b/tree.py
@@ -190,7 +190,14 @@ class Node :
"""
return a list with all the nodes descendant from this node
"""
- return flatten(self)
+ if _list is None:
+ _list = []
+ _list.append(self)
+ for c in self.children:
+ c.flatten(_list)
+ return _list
+
+## return flatten(self)
def lineage(self):
"""