[tests] Added engine and module tests
Added those two unit tests together, as they are tightly linked together anyhow.
This commit is contained in:
parent
f65ab6bcae
commit
64523119af
3 changed files with 234 additions and 0 deletions
83
tests/test_engine.py
Normal file
83
tests/test_engine.py
Normal file
|
@ -0,0 +1,83 @@
|
|||
# pylint: disable=C0103,C0111,W0703,W0212
|
||||
|
||||
import shlex
|
||||
import unittest
|
||||
|
||||
from bumblebee.error import ModuleLoadError
|
||||
from bumblebee.engine import Engine
|
||||
from bumblebee.config import Config
|
||||
import bumblebee.input
|
||||
|
||||
from mocks 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)
|
||||
|
||||
def test_custom_cmd(self):
|
||||
testmodules = [
|
||||
{ "name": "test", "button": "test.left-click", "action": "echo" },
|
||||
{ "name": "test:alias", "button": "alias.right-click", "action": "echo2" },
|
||||
]
|
||||
cmd = "-m"
|
||||
for test in testmodules:
|
||||
cmd += " " + test["name"]
|
||||
cmd += " -p"
|
||||
for test in testmodules:
|
||||
cmd += " " + test["button"] + "=" + test["action"]
|
||||
cfg = Config(shlex.split(cmd))
|
||||
inp = MockInput()
|
||||
engine = Engine(config=cfg, output=MockOutput(), inp=inp)
|
||||
|
||||
i = 0
|
||||
for module in engine.modules():
|
||||
callback = inp.get_callback(module.id)
|
||||
self.assertTrue(callback is not None)
|
||||
self.assertEquals(callback["command"], testmodules[i]["action"])
|
||||
if "left" in testmodules[i]["button"]:
|
||||
self.assertTrue(callback["button"], bumblebee.input.LEFT_MOUSE)
|
||||
if "right" in testmodules[i]["button"]:
|
||||
self.assertTrue(callback["button"], bumblebee.input.RIGHT_MOUSE)
|
||||
i += 1
|
||||
|
||||
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
|
Loading…
Add table
Add a link
Reference in a new issue