curds: Implement functions for finding and allocating nodes
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
27196c7069
commit
aef622d39b
|
@ -40,9 +40,19 @@ class PlaylistNode:
|
|||
def __str__(self):
|
||||
return f"<big>{self.name}</big>"
|
||||
|
||||
def alloc_node(self, name):
|
||||
return PlaylistNode(name)
|
||||
|
||||
def append_child(self, child):
|
||||
return self.__insert_node__(child, len(self.children))
|
||||
|
||||
def find_node(self, name):
|
||||
node = self.lookup(name)
|
||||
if node == None:
|
||||
node = self.alloc_node(name)
|
||||
self.insert_child(node)
|
||||
return node
|
||||
|
||||
def get_node(self, path):
|
||||
if len(path) == 1:
|
||||
return self.nth_child(path[0])
|
||||
|
|
|
@ -35,6 +35,13 @@ class TestPlaylistNode(unittest.TestCase):
|
|||
self.assertFalse(b < a)
|
||||
self.assertFalse(a < a)
|
||||
|
||||
def test_node_alloc(self):
|
||||
root = node.PlaylistNode()
|
||||
a = root.alloc_node("A")
|
||||
self.assertIsInstance(a, node.PlaylistNode)
|
||||
self.assertEqual(a.name, "A")
|
||||
self.assertEqual(a.icon, "")
|
||||
|
||||
def test_node_append_child(self):
|
||||
notify.register("node-inserted", self.on_insert_node)
|
||||
self.cb_insert = None
|
||||
|
@ -140,6 +147,19 @@ class TestPlaylistNode(unittest.TestCase):
|
|||
self.assertIsNone(root.lookup_byid(id(c)))
|
||||
self.assertIsNone(root.lookup_byid(42))
|
||||
|
||||
def test_node_find(self):
|
||||
root = node.PlaylistNode()
|
||||
b = root.find_node("B")
|
||||
self.assertIsInstance(b, node.PlaylistNode)
|
||||
self.assertEqual(b.name, "B")
|
||||
|
||||
a = root.find_node("A")
|
||||
self.assertIsInstance(a, node.PlaylistNode)
|
||||
self.assertEqual(a.name, "A")
|
||||
|
||||
self.assertEqual(root.find_node("A"), a)
|
||||
self.assertEqual(root.find_node("B"), b)
|
||||
|
||||
def test_node_nth_child(self):
|
||||
root = node.PlaylistNode()
|
||||
a = node.PlaylistNode("a")
|
||||
|
|
Loading…
Reference in New Issue
Block a user