e72c25b0bc
Create infrastructure for input event handling and add i3bar event processing. For each event, callbacks can be registered in the input module. Modules and widgets both identify themselves using a unique ID (the module name for modules, a generated UUID for the widgets). This ID is then used for registering the callbacks. This is possible since both widgets and modules are statically allocated & do not change their IDs. Callback actions can be either callable Python objects (in which case the event is passed as parameter), or strings, in which case the string is interpreted as a shell command. see #23
55 lines
1.8 KiB
Python
55 lines
1.8 KiB
Python
# pylint: disable=C0103,C0111,W0703,W0212
|
|
|
|
import unittest
|
|
|
|
from bumblebee.error import ModuleLoadError
|
|
from bumblebee.engine import Engine
|
|
from bumblebee.config import Config
|
|
|
|
from tests.util import MockOutput, MockInput
|
|
|
|
class TestEngine(unittest.TestCase):
|
|
def setUp(self):
|
|
self.engine = Engine(config=Config(), output=MockOutput(), inp=MockInput())
|
|
self.singleWidgetModule = [{"module": "test", "name": "a"}]
|
|
self.testModule = "test"
|
|
self.invalidModule = "no-such-module"
|
|
self.testModuleSpec = "bumblebee.modules.{}".format(self.testModule)
|
|
self.testModules = [
|
|
{"module": "test", "name": "a"},
|
|
{"module": "test", "name": "b"},
|
|
]
|
|
|
|
def test_stop(self):
|
|
self.assertTrue(self.engine.running())
|
|
self.engine.stop()
|
|
self.assertFalse(self.engine.running())
|
|
|
|
def test_load_module(self):
|
|
module = self.engine._load_module(self.testModule)
|
|
self.assertEquals(module.__module__, self.testModuleSpec)
|
|
|
|
def test_load_invalid_module(self):
|
|
with self.assertRaises(ModuleLoadError):
|
|
self.engine._load_module(self.invalidModule)
|
|
|
|
def test_load_none(self):
|
|
with self.assertRaises(ModuleLoadError):
|
|
self.engine._load_module(None)
|
|
|
|
def test_load_modules(self):
|
|
modules = self.engine.load_modules(self.testModules)
|
|
self.assertEquals(len(modules), len(self.testModules))
|
|
self.assertEquals(
|
|
[module.__module__ for module in modules],
|
|
[self.testModuleSpec for module in modules]
|
|
)
|
|
|
|
def test_run(self):
|
|
self.engine.load_modules(self.singleWidgetModule)
|
|
try:
|
|
self.engine.run()
|
|
except Exception as e:
|
|
self.fail(e)
|
|
|
|
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
|