rind: Update NodeTreeModel to use the new walk() function
This cleans up the test a bit and makes it more straightforward. Additionally, it checks some extra cases that we hadn't checked up until then. Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
718d44a8d8
commit
3aa6b93e0e
|
@ -55,12 +55,7 @@ class TestNodeTreeModel(unittest.TestCase):
|
|||
path = Gtk.TreePath.new_from_indices([ plist_root.n_children() ])
|
||||
self.assertRaises(ValueError, self.model.get_iter, path)
|
||||
|
||||
for node in plist_root.children:
|
||||
path = Gtk.TreePath(node.get_path())
|
||||
iter = self.model.get_iter(path)
|
||||
self.assertEqual(iter.user_data, id(node))
|
||||
|
||||
for node in self.genre.children:
|
||||
for node in plist_root.walk():
|
||||
path = Gtk.TreePath(node.get_path())
|
||||
iter = self.model.get_iter(path)
|
||||
self.assertEqual(iter.user_data, id(node))
|
||||
|
@ -68,12 +63,7 @@ class TestNodeTreeModel(unittest.TestCase):
|
|||
def test_model_get_path(self):
|
||||
iter = Gtk.TreeIter()
|
||||
|
||||
for node in plist_root.children:
|
||||
iter.user_data = id(node)
|
||||
path = self.model.get_path(iter)
|
||||
self.assertEqual(path.get_indices(), node.get_path())
|
||||
|
||||
for node in self.genre.children:
|
||||
for node in plist_root.walk():
|
||||
iter.user_data = id(node)
|
||||
path = self.model.get_path(iter)
|
||||
self.assertEqual(path.get_indices(), node.get_path())
|
||||
|
@ -83,102 +73,89 @@ class TestNodeTreeModel(unittest.TestCase):
|
|||
rect = node.Treeview.get_cell_area(Gtk.TreePath(0), col)
|
||||
iter = Gtk.TreeIter()
|
||||
|
||||
for i, child in enumerate(plist_root.children):
|
||||
text = str(child) if i != 0 else f"<b>{str(child)}</b>"
|
||||
for child in plist_root.walk():
|
||||
iter.user_data = id(child)
|
||||
text = str(child)
|
||||
height = rect.height
|
||||
if child == plist_root.current[0]:
|
||||
text = f"<b>{text}</b>"
|
||||
if isinstance(child, curds.Playlist):
|
||||
height = -1
|
||||
|
||||
self.assertEqual(self.model.get_value(iter, 0), child.icon)
|
||||
self.assertEqual(self.model.get_value(iter, 1), text)
|
||||
if isinstance(child, curds.Playlist):
|
||||
self.assertEqual(self.model.get_value(iter, 2), -1)
|
||||
else:
|
||||
self.assertEqual(self.model.get_value(iter, 2), rect.height)
|
||||
self.assertEqual(self.model.get_value(iter, 2), height)
|
||||
|
||||
def test_model_iter_children(self):
|
||||
iter = self.model.iter_children(None)
|
||||
self.assertEqual(iter.user_data, id(plist_root.nth_child(0)))
|
||||
|
||||
for node in plist_root.children:
|
||||
for node in plist_root.walk():
|
||||
iter.user_data = id(node)
|
||||
child = self.model.iter_children(iter)
|
||||
if node not in [ self.artist, self.decade, self.genre ]:
|
||||
self.assertIsNone(child)
|
||||
if node.n_children() == 0:
|
||||
self.assertIsNone(self.model.iter_children(iter))
|
||||
else:
|
||||
child = self.model.iter_children(iter)
|
||||
self.assertEqual(child.user_data, id(node.nth_child(0)))
|
||||
|
||||
iter.user_data = 42
|
||||
self.assertIsNone(self.model.iter_children(iter))
|
||||
|
||||
iter = self.model.playlist_iter(self.genre)
|
||||
child = self.model.iter_children(iter)
|
||||
self.assertEqual(child.user_data, id(self.genre.nth_child(0)))
|
||||
|
||||
for node in self.genre.children:
|
||||
child.user_data = id(node)
|
||||
self.assertIsNone(self.model.iter_children(child))
|
||||
|
||||
def test_model_iter_has_child(self):
|
||||
iter = Gtk.TreeIter()
|
||||
|
||||
for node in plist_root.children:
|
||||
for node in plist_root.walk():
|
||||
iter.user_data = id(node)
|
||||
expected = node in [ self.artist, self.decade, self.genre ]
|
||||
self.assertEqual(self.model.iter_has_child(iter), expected)
|
||||
if node.n_children() > 0:
|
||||
self.assertTrue(self.model.iter_has_child(iter))
|
||||
else:
|
||||
self.assertFalse(self.model.iter_has_child(iter))
|
||||
|
||||
iter.user_data = 42
|
||||
self.assertFalse(self.model.iter_has_child(iter))
|
||||
|
||||
for node in self.genre.children:
|
||||
iter.user_data = id(node)
|
||||
self.assertFalse(self.model.iter_has_child(iter))
|
||||
|
||||
def test_model_iter_n_children(self):
|
||||
iter = Gtk.TreeIter()
|
||||
self.assertEqual(self.model.iter_n_children(None), plist_root.n_children())
|
||||
|
||||
for node in plist_root.children:
|
||||
for node in plist_root.walk():
|
||||
iter.user_data = id(node)
|
||||
self.assertEqual(self.model.iter_n_children(iter), node.n_children())
|
||||
|
||||
iter.user_data = 42
|
||||
self.assertEqual(self.model.iter_n_children(iter), 0)
|
||||
|
||||
for node in self.genre.children:
|
||||
iter.user_data = id(node)
|
||||
self.assertEqual(self.model.iter_n_children(iter), 0)
|
||||
|
||||
def test_model_iter_nth_child(self):
|
||||
for i, node in enumerate(plist_root.children):
|
||||
iter = self.model.iter_nth_child(None, i)
|
||||
self.assertEqual(iter.user_data, id(node))
|
||||
if node not in [self.artist, self.decade, self.genre]:
|
||||
self.assertIsNone(self.model.iter_nth_child(iter, 0))
|
||||
self.assertIsNone(self.model.iter_nth_child(None, plist_root.n_children()))
|
||||
iter = Gtk.TreeIter()
|
||||
|
||||
iter = self.model.playlist_iter(self.genre)
|
||||
for i, node in enumerate(self.genre.children):
|
||||
child = self.model.iter_nth_child(iter, i)
|
||||
self.assertEqual(child.user_data, id(node))
|
||||
self.assertIsNone(self.model.iter_nth_child(iter, i + 1))
|
||||
for node in plist_root.walk(root=True):
|
||||
iter = self.model.playlist_iter(node)
|
||||
for i, child in enumerate(node.children):
|
||||
citer = self.model.iter_nth_child(iter, i)
|
||||
self.assertEqual(citer.user_data, id(child))
|
||||
self.assertIsNone(self.model.iter_nth_child(iter, node.n_children()))
|
||||
|
||||
def test_model_iter_next(self):
|
||||
iter = self.model.iter_children(None)
|
||||
for node in plist_root.children:
|
||||
self.assertEqual(iter.user_data, id(node))
|
||||
iter = self.model.iter_next(iter)
|
||||
self.assertIsNone(iter)
|
||||
iter = Gtk.TreeIter()
|
||||
|
||||
iter = self.model.playlist_iter(self.genre)
|
||||
child = self.model.iter_children(iter)
|
||||
for node in self.genre.children:
|
||||
self.assertEqual(child.user_data, id(node))
|
||||
child = self.model.iter_next(child)
|
||||
self.assertIsNone(child)
|
||||
for node in plist_root.walk():
|
||||
iter.user_data = id(node)
|
||||
next = self.model.iter_next(iter)
|
||||
if node.next_child != None:
|
||||
self.assertEqual(next.user_data, id(node.next_child))
|
||||
else:
|
||||
self.assertIsNone(next)
|
||||
|
||||
def test_model_iter_parent(self):
|
||||
iter = Gtk.TreeIter()
|
||||
for node in enumerate(plist_root.children):
|
||||
iter.user_data = id(node)
|
||||
self.assertIsNone(self.model.iter_parent(iter))
|
||||
|
||||
for node in self.genre.children:
|
||||
for node in plist_root.walk():
|
||||
iter.user_data = id(node)
|
||||
parent = self.model.iter_parent(iter)
|
||||
self.assertEqual(parent.user_data, id(self.genre))
|
||||
if node.parent != plist_root:
|
||||
parent = self.model.iter_parent(iter)
|
||||
self.assertEqual(parent.user_data, id(node.parent))
|
||||
else:
|
||||
self.assertIsNone(self.model.iter_parent(iter))
|
||||
|
||||
def test_model_iter_playlist(self):
|
||||
iter = Gtk.TreeIter()
|
||||
|
@ -186,34 +163,27 @@ class TestNodeTreeModel(unittest.TestCase):
|
|||
self.assertEqual(self.model.iter_playlist(None), plist_root)
|
||||
self.assertEqual(self.model.iter_playlist(iter), plist_root)
|
||||
|
||||
for node in plist_root.walk():
|
||||
iter.user_data = id(node)
|
||||
self.assertEqual(self.model.iter_playlist(iter), node)
|
||||
|
||||
iter.user_data = 42
|
||||
self.assertIsNone(self.model.iter_playlist(iter))
|
||||
|
||||
for node in plist_root.children:
|
||||
iter.user_data = id(node)
|
||||
self.assertEqual(self.model.iter_playlist(iter), node)
|
||||
|
||||
for node in self.genre.children:
|
||||
iter.user_data = id(node)
|
||||
self.assertEqual(self.model.iter_playlist(iter), node)
|
||||
|
||||
def test_model_playlist_iter(self):
|
||||
self.assertIsNone(self.model.playlist_iter(None))
|
||||
self.assertIsNone(self.model.playlist_iter(plist_root))
|
||||
|
||||
for node in plist_root.children:
|
||||
for node in plist_root.walk():
|
||||
iter = self.model.playlist_iter(node)
|
||||
self.assertEqual(iter.user_data, id(node))
|
||||
|
||||
iter = self.model.playlist_iter(self.genre)
|
||||
for node in self.genre.children:
|
||||
child = self.model.playlist_iter(node)
|
||||
self.assertEqual(child.user_data, id(node))
|
||||
|
||||
def test_node_selection(self):
|
||||
selection = node.Treeview.get_selection()
|
||||
self.assertIsInstance(selection, Gtk.TreeSelection)
|
||||
node.Treeview.expand_all()
|
||||
|
||||
for child in plist_root.children:
|
||||
for child in plist_root.walk():
|
||||
path = Gtk.TreePath(child.get_path())
|
||||
selection.select_path(path)
|
||||
if isinstance(child, curds.Playlist):
|
||||
|
@ -222,8 +192,9 @@ class TestNodeTreeModel(unittest.TestCase):
|
|||
else:
|
||||
self.assertFalse(selection.path_is_selected(path))
|
||||
|
||||
plist = playlist.PlistModel.playlist
|
||||
selection.unselect_all()
|
||||
self.assertEqual(playlist.PlistModel.playlist, plist_root.lookup("Previous"))
|
||||
self.assertEqual(playlist.PlistModel.playlist, plist)
|
||||
|
||||
def test_node_activate(self):
|
||||
column = node.Treeview.get_column(1)
|
||||
|
@ -250,16 +221,14 @@ class TestNodeTreeModel(unittest.TestCase):
|
|||
self.assertFalse(entry.get_style_context().has_class("warning"))
|
||||
self.assertFalse(node.SearchPopover.is_visible())
|
||||
|
||||
for i, child in enumerate(plist_root.children):
|
||||
iter = filter.iter_nth_child(None, i)
|
||||
text = str(child) if i != 0 else f"<b>{str(child)}</b>"
|
||||
self.assertEqual(filter.get_value(iter, 1), text)
|
||||
if child not in [ self.artist, self.decade, self.genre ]:
|
||||
self.assertIsNone(filter.iter_nth_child(iter, 0))
|
||||
for child in plist_root.walk():
|
||||
citer = self.model.playlist_iter(child)
|
||||
fiter = filter.convert_child_iter_to_iter(citer)
|
||||
self.assertTrue(fiter[0])
|
||||
if child == plist_root.current[0]:
|
||||
self.assertEqual(filter.get_value(fiter[1], 1), f"<b>{str(child)}</b>")
|
||||
else:
|
||||
for i, cnode in enumerate(child.children):
|
||||
c = filter.iter_nth_child(iter, i)
|
||||
self.assertEqual(filter.get_value(c, 1), str(cnode))
|
||||
self.assertEqual(filter.get_value(fiter[1], 1), str(child))
|
||||
|
||||
entry.set_text("*v")
|
||||
self.model.set_filter_text(entry)
|
||||
|
@ -275,14 +244,16 @@ class TestNodeTreeModel(unittest.TestCase):
|
|||
self.assertFalse(entry.get_style_context().has_class("warning"))
|
||||
self.assertFalse(node.SearchPopover.is_visible())
|
||||
|
||||
for i, child in enumerate(plist_root.children[2:]):
|
||||
iter = filter.iter_nth_child(None, i)
|
||||
self.assertEqual(filter.get_value(iter, 1), str(child))
|
||||
c = filter.iter_nth_child(iter, 0)
|
||||
if child != self.genre:
|
||||
self.assertIsNone(c)
|
||||
visible = self.genre.nth_child(1)
|
||||
for child in plist_root.walk():
|
||||
citer = self.model.playlist_iter(child)
|
||||
fiter = filter.convert_child_iter_to_iter(citer)
|
||||
|
||||
if not isinstance(child, curds.Playlist) or child == visible:
|
||||
self.assertTrue(fiter[0])
|
||||
self.assertEqual(filter.get_value(fiter[1], 1), str(child))
|
||||
else:
|
||||
self.assertEqual(filter.get_value(c, 1), str(self.genre.nth_child(1)))
|
||||
self.assertFalse(fiter[0])
|
||||
|
||||
entry.set_text("")
|
||||
self.model.set_filter_text(entry)
|
||||
|
|
|
@ -11,6 +11,7 @@ test_album = os.path.abspath("./trier/Test Library/Test Artist 01/Test Album 1")
|
|||
class TestPlaylist(unittest.TestCase):
|
||||
def setUp(self):
|
||||
curds.reset()
|
||||
playlist.PlistModel.set_playlist(curds.playlist.Root.lookup("Collection"))
|
||||
|
||||
def test_init(self):
|
||||
self.assertIsInstance(gtk.Builder.get_object("playlist_treeview"), Gtk.TreeView)
|
||||
|
|
Loading…
Reference in New Issue