100 lines
3.3 KiB
Python
100 lines
3.3 KiB
Python
# Copyright 2021 (c) Anna Schumaker.
|
|
from . import tagrow
|
|
from gi.repository import Gtk, Pango
|
|
import unittest
|
|
|
|
class FakeTag:
|
|
def __init__(self, name):
|
|
self.name = name
|
|
self.num = 0
|
|
|
|
def __len__(self):
|
|
return self.num
|
|
|
|
def __lt__(self, rhs):
|
|
return self.name < rhs.name
|
|
|
|
class TestTagRow(unittest.TestCase):
|
|
def test_tag_row_init(self):
|
|
tag = FakeTag("test")
|
|
row = tagrow.TagRow(tag, "missing-icon")
|
|
self.assertIsInstance(row, Gtk.ListBoxRow)
|
|
|
|
self.assertIsInstance(row.grid, Gtk.Grid)
|
|
self.assertIsInstance(row.label, Gtk.Label)
|
|
|
|
self.assertEqual(row.image.get_icon_name(), "missing-icon")
|
|
self.assertEqual(row.image.get_margin_start(), 5)
|
|
self.assertEqual(row.image.get_margin_end(), 5)
|
|
self.assertEqual(row.grid.get_margin_end(), 5)
|
|
|
|
self.assertEqual(row.label.get_text(), "test\n0 Tracks")
|
|
self.assertEqual(row.label.get_halign(), Gtk.Align.START)
|
|
self.assertEqual(row.label.get_ellipsize(), Pango.EllipsizeMode.MIDDLE)
|
|
self.assertTrue(row.label.get_hexpand())
|
|
|
|
self.assertIn(row.image, row.grid)
|
|
self.assertIn(row.label, row.grid)
|
|
self.assertEqual(row.get_child(), row.grid)
|
|
|
|
def test_tag_row_count(self):
|
|
tag = FakeTag("test")
|
|
row = tagrow.TagRow(tag, "missing-icon")
|
|
tag.num = 1
|
|
row.set_label()
|
|
self.assertEqual(row.label.get_text(), "test\n1 Track")
|
|
tag.num = 4
|
|
row.set_label()
|
|
self.assertEqual(row.label.get_text(), "test\n4 Tracks")
|
|
|
|
|
|
class TestParentTagRow(unittest.TestCase):
|
|
def test_parent_tagrow_init(self):
|
|
tag = FakeTag("test")
|
|
row = tagrow.ParentTagRow(tag, "missing-icon")
|
|
|
|
self.assertIsInstance(row, tagrow.TagRow)
|
|
self.assertIsInstance(row.expander, Gtk.ToggleButton)
|
|
|
|
self.assertEqual(row.expander.get_icon_name(), "pan-end-symbolic")
|
|
self.assertEqual(row.children, [ ])
|
|
|
|
self.assertTrue(row.expander.has_css_class("flat"))
|
|
self.assertIn(row.expander, row.grid)
|
|
|
|
def test_parent_tagrow_children(self):
|
|
tag = FakeTag("test")
|
|
row = tagrow.ParentTagRow(tag, "missing-icon")
|
|
|
|
c1 = Gtk.Label.new(str="Child 1")
|
|
row.add_child(c1)
|
|
self.assertEqual(row.children, [ c1 ])
|
|
self.assertFalse(c1.is_visible())
|
|
|
|
row.expander.set_active(True)
|
|
self.assertEqual(row.expander.get_icon_name(), "pan-down-symbolic")
|
|
self.assertTrue(c1.is_visible())
|
|
|
|
c2 = Gtk.Label.new(str="Child 2")
|
|
row.add_child(c2)
|
|
self.assertEqual(row.children, [ c1, c2 ])
|
|
|
|
row.expander.set_active(False)
|
|
self.assertEqual(row.expander.get_icon_name(), "pan-end-symbolic")
|
|
self.assertFalse(c1.is_visible())
|
|
self.assertFalse(c2.is_visible())
|
|
|
|
|
|
class TestTagHeader(unittest.TestCase):
|
|
def test_tag_header(self):
|
|
header = tagrow.TagHeader("A")
|
|
self.assertIsInstance(header, Gtk.Box)
|
|
self.assertIsInstance(header.label, Gtk.Label)
|
|
self.assertIsInstance(header.separator, Gtk.Separator)
|
|
|
|
self.assertEqual(header.label.get_text(), "A")
|
|
self.assertEqual(header.get_margin_top(), 5)
|
|
|
|
self.assertIn(header.label, header)
|
|
self.assertIn(header.separator, header)
|