emmental/rind/test_gtk.py

92 lines
3.0 KiB
Python

# Copyright 2019 (c) Anna Schumaker.
from . import gtk
import curds
import time
import unittest
from gi.repository import Gtk, GObject, GLib
class TestGtk(unittest.TestCase):
def setUp(self):
curds.reset()
def test_builder(self):
self.assertIsInstance(gtk.Builder, Gtk.Builder)
self.assertIsInstance(gtk.Builder.get_object("window"), Gtk.ApplicationWindow)
def fake_idle(self):
return GLib.SOURCE_CONTINUE
def test_window(self):
app = gtk.EmmentalApplication()
window = gtk.Builder.get_object("window")
thread = curds.ThreadQueue()
self.assertIsInstance(window, Gtk.ApplicationWindow)
self.assertIsNone(app.window)
thread.push(app.run)
gtk.main_loop(delay=0.1)
self.assertTrue(window.is_visible())
app.idle_id = GLib.idle_add(self.fake_idle)
app.quit()
gtk.main_loop(delay=0.1)
thread.stop()
self.assertEqual(app.idle_id, None)
def test_application(self):
self.assertIsInstance(gtk.Application, Gtk.Application)
def on_show_more(self, visible):
self.show_more = visible
def test_show_more(self):
self.show_more = None
curds.notify.register("show-more", self.on_show_more)
self.assertIsInstance(gtk.ShowMore, Gtk.ToggleButton)
self.assertIsInstance(gtk.UpArrow, Gtk.Image)
self.assertIsInstance(gtk.DownArrow, Gtk.Image)
self.assertFalse(gtk.ShowMore.get_active())
self.assertFalse(gtk.UpArrow.is_visible())
self.assertTrue( gtk.DownArrow.is_visible())
gtk.ShowMore.set_active(True)
self.assertTrue(self.show_more)
self.assertTrue( gtk.ShowMore.get_active())
self.assertTrue( gtk.UpArrow.is_visible())
self.assertFalse(gtk.DownArrow.is_visible())
gtk.ShowMore.set_active(False)
self.assertFalse(self.show_more)
self.assertFalse(gtk.ShowMore.get_active())
self.assertFalse(gtk.UpArrow.is_visible())
self.assertTrue( gtk.DownArrow.is_visible())
def test_accel(self):
play_button = gtk.Builder.get_object("play_button")
track_entry = gtk.Builder.get_object("track_search")
self.assertFalse(gtk.type_focused(Gtk.Entry))
track_entry.grab_focus()
self.assertTrue(gtk.type_focused(Gtk.Entry))
gtk.Window.grab_focus()
self.assertFalse(gtk.type_focused(Gtk.Entry))
signal = GObject.signal_lookup("activate", Gtk.Button)
self.assertTrue(play_button.can_activate_accel(signal))
track_entry.grab_focus()
self.assertFalse(play_button.can_activate_accel(signal))
gtk.Window.grab_focus()
self.assertFalse(gtk.ShowMore.get_active())
signal = GObject.signal_lookup("grab-focus", Gtk.SearchEntry)
self.assertTrue(track_entry.can_activate_accel(signal))
self.assertTrue(gtk.ShowMore.get_active())
track_entry.grab_focus()
self.assertFalse(track_entry.can_activate_accel(signal))
self.assertFalse(gtk.ShowMore.get_active())