curds: Implement a node.append_child() function
Sometimes we just want to append a node instead of inserting it in a sorted position. Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
6efc456f0d
commit
1a01dd9047
|
@ -19,16 +19,21 @@ class PlaylistNode:
|
|||
def __lt__(self, rhs):
|
||||
return self.name < rhs.name
|
||||
|
||||
def append_child(self, child):
|
||||
prev = None
|
||||
if len(self.children) > 0:
|
||||
prev = self.children[-1]
|
||||
self.children.append(child)
|
||||
self.__link_children__(prev, child)
|
||||
return self.children.index(child)
|
||||
|
||||
def insert_child(self, child):
|
||||
n = None
|
||||
for i, n in enumerate(self.children):
|
||||
if child < n:
|
||||
self.children.insert(i, child)
|
||||
self.__link_children__(child, n)
|
||||
return self.children.index(child)
|
||||
self.children.append(child)
|
||||
self.__link_children__(n, child)
|
||||
return self.children.index(child)
|
||||
return self.append_child(child)
|
||||
|
||||
def n_children(self):
|
||||
return len(self.children)
|
||||
|
|
|
@ -23,6 +23,29 @@ class TestPlaylistNode(unittest.TestCase):
|
|||
self.assertFalse(b < a)
|
||||
self.assertFalse(a < a)
|
||||
|
||||
def test_node_append_child(self):
|
||||
root = node.PlaylistNode()
|
||||
a = node.PlaylistNode("a")
|
||||
b = node.PlaylistNode("b")
|
||||
c = node.PlaylistNode("c")
|
||||
|
||||
self.assertEqual(root.n_children(), 0)
|
||||
self.assertEqual(root.append_child(b), 0)
|
||||
self.assertEqual(root.n_children(), 1)
|
||||
self.assertEqual(root.children, [ b ])
|
||||
|
||||
self.assertEqual(root.append_child(a), 1)
|
||||
self.assertEqual(root.n_children(), 2)
|
||||
self.assertEqual(root.children, [ b, a ])
|
||||
self.assertEqual(b.next, a)
|
||||
self.assertEqual(a.prev, b)
|
||||
|
||||
self.assertEqual(root.append_child(c), 2)
|
||||
self.assertEqual(root.n_children(), 3)
|
||||
self.assertEqual(root.children, [ b, a, c ])
|
||||
self.assertEqual(a.next, c)
|
||||
self.assertEqual(c.prev, a)
|
||||
|
||||
def test_node_insert_child(self):
|
||||
root = node.PlaylistNode()
|
||||
a = node.PlaylistNode("a")
|
||||
|
|
Loading…
Reference in New Issue