Skip to content

Commit 7a21c50

Browse files
authored
Merge pull request #154 from caesar0301/dev
#128 Merge v1.6.1
2 parents a78d08a + f8146ed commit 7a21c50

File tree

11 files changed

+701
-174
lines changed

11 files changed

+701
-174
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
*.py[cod]
22
.idea
3+
env/*
34
.python-version
45

56
# C extensions

HISTORY

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
Oct 13 2019 V1.5.6
2+
Add ability to independently mutate multiple shallow copies of same initial tree.
3+
14
Mar 27, 2014 V1.2.6
25
Node identifier supports multiple data types beyond int and str.
36
Finish depth() and leaves() routines.

setup.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
license="Apache License, Version 2.0",
1414
packages=['treelib'],
1515
keywords=['data structure', 'tree', 'tools'],
16+
install_requires=["future"],
1617
classifiers=[
1718
'Development Status :: 4 - Beta',
1819
'Environment :: Console',

tests/test_node.py

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import unittest
22

3+
from collections import defaultdict
34
from treelib import Node
45

56

@@ -11,9 +12,13 @@ def setUp(self):
1112
def test_initialization(self):
1213
self.assertEqual(self.node1.tag, "Test One")
1314
self.assertEqual(self.node1.identifier, "identifier 1")
14-
self.assertEqual(self.node1.expanded, True)
15+
# retro-compatibility
1516
self.assertEqual(self.node1.bpointer, None)
1617
self.assertEqual(self.node1.fpointer, [])
18+
19+
self.assertEqual(self.node1.expanded, True)
20+
self.assertEqual(self.node1._predecessor, {})
21+
self.assertEqual(self.node1._successors, defaultdict(list))
1722
self.assertEqual(self.node1.data, None)
1823

1924
def test_set_tag(self):
@@ -32,21 +37,45 @@ def test_set_identifier(self):
3237
self.node1.identifier = "identifier 1"
3338

3439
def test_set_fpointer(self):
40+
# retro-compatibility
3541
self.node1.update_fpointer("identifier 2")
3642
self.assertEqual(self.node1.fpointer, ['identifier 2'])
3743
self.node1.fpointer = []
44+
self.assertEqual(self.node1.fpointer, [])
45+
46+
def test_update_successors(self):
47+
self.node1.update_successors("identifier 2", tree_id="tree 1")
48+
self.assertEqual(self.node1.successors("tree 1"), ['identifier 2'])
49+
self.assertEqual(self.node1._successors["tree 1"], ['identifier 2'])
50+
self.node1.set_successors([], tree_id="tree 1")
51+
self.assertEqual(self.node1._successors["tree 1"], [])
3852

3953
def test_set_bpointer(self):
54+
# retro-compatibility
4055
self.node2.update_bpointer("identifier 1")
4156
self.assertEqual(self.node2.bpointer, 'identifier 1')
4257
self.node2.bpointer = None
58+
self.assertEqual(self.node2.bpointer, None)
59+
60+
def test_set_predecessor(self):
61+
self.node2.set_predecessor("identifier 1", "tree 1")
62+
self.assertEqual(self.node2.predecessor("tree 1"), 'identifier 1')
63+
self.assertEqual(self.node2._predecessor["tree 1"], 'identifier 1')
64+
self.node2.set_predecessor(None, "tree 1")
65+
self.assertEqual(self.node2.predecessor("tree 1"), None)
4366

4467
def test_set_is_leaf(self):
4568
self.node1.update_fpointer("identifier 2")
4669
self.node2.update_bpointer("identifier 1")
4770
self.assertEqual(self.node1.is_leaf(), False)
4871
self.assertEqual(self.node2.is_leaf(), True)
4972

73+
def test_tree_wise_is_leaf(self):
74+
self.node1.update_successors("identifier 2", tree_id="tree 1")
75+
self.node2.set_predecessor("identifier 1", "tree 1")
76+
self.assertEqual(self.node1.is_leaf("tree 1"), False)
77+
self.assertEqual(self.node2.is_leaf("tree 1"), True)
78+
5079
def test_data(self):
5180

5281
class Flower(object):

tests/test_plugins.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
# -*- coding: utf-8 -*-
33
from __future__ import unicode_literals
44

5-
import unittest
6-
5+
import codecs
76
import os
7+
import unittest
88

99
from treelib import Tree
1010
from treelib.plugins import *

0 commit comments

Comments
 (0)