emmental/sidebar/test_tagrow.py

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)