emmental/sidebar/test_pulser.py

56 lines
1.7 KiB
Python

# Copyright 2021 (c) Anna Schumaker.
from . import pulser
from gi.repository import Gtk, GLib
import lib
import threading
import unittest
class TestThread:
def __init__(self): pass
def running(self): return False
class TestUIPulser(unittest.TestCase):
def setUp(self):
pulser.reset()
pulser.initialize()
pulser.reset()
def test_pulser_init(self):
self.assertIsInstance(pulser.Bar, Gtk.ProgressBar)
self.assertIsInstance(pulser.Box, Gtk.Box)
self.assertIsInstance(pulser.Lock, type(threading.Lock()))
self.assertIsNone(pulser.Timeout)
self.assertTrue(pulser.Bar.get_hexpand())
self.assertFalse(pulser.Bar.get_visible())
self.assertEqual(pulser.Threads, [ ])
self.assertEqual(pulser.Bar.get_valign(), Gtk.Align.CENTER)
self.assertIn(pulser.Bar, pulser.Box)
self.assertIn(pulser.start_pulsing, lib.thread.Start.subscribers)
self.assertIn(pulser.start_pulsing, lib.bus.Start.subscribers)
def test_pulser_pulse(self):
t1 = TestThread()
t2 = TestThread()
pulser.start_pulsing(t1)
self.assertEqual(pulser.Threads, [ t1 ])
tid = pulser.Timeout
self.assertIsNotNone(tid)
self.assertTrue(pulser.Bar.get_visible())
pulser.start_pulsing(t2)
self.assertEqual(pulser.Threads, [ t1, t2 ])
self.assertEqual(pulser.Timeout, tid)
pulser.do_pulses()
self.assertEqual(pulser.Threads, [ t2 ])
pulser.do_pulses()
self.assertEqual(pulser.Threads, [ ])
self.assertIsNone(pulser.Timeout)
self.assertFalse(pulser.Bar.get_visible())
GLib.source_remove(tid)