diff --git a/pytests/core/test_config.py b/pytests/core/test_config.py index 77ac308..774b806 100644 --- a/pytests/core/test_config.py +++ b/pytests/core/test_config.py @@ -1,4 +1,3 @@ - import os import pytest diff --git a/pytests/core/test_decorators.py b/pytests/core/test_decorators.py new file mode 100644 index 0000000..25f8b9c --- /dev/null +++ b/pytests/core/test_decorators.py @@ -0,0 +1,103 @@ +import pytest + +import core.decorators +import core.widget +import core.module +import core.config + +@pytest.fixture +def module(): + class TestModule(core.module.Module): + @core.decorators.never + def __init__(self, config=None, theme=None): + config = core.config.Config([]) + super().__init__(config, theme, core.widget.Widget(self.get)) + self.text = "" + + @core.decorators.scrollable + def get(self, widget): + return self.text + module = TestModule() + module.set("scrolling.width", 10) + return module + +def test_never(module): + assert module.parameter("interval") == "never" + +def test_no_text(module): + assert module.text == "" + assert module.get(module.widget()) == "" + +def test_smaller(module): + module.text = "test" + assert module.parameter("scrolling.width") > len(module.text) + assert module.get(module.widget()) == module.text + +def test_bigger(module): + module.text = "this is a really really long sample text" + maxwidth = module.parameter("scrolling.width") + assert maxwidth < len(module.text) + assert module.get(module.widget()) == module.text[:maxwidth] + +def test_bounce(module): + module.text = "abcd" + module.set("scrolling.width", 2) + assert module.get(module.widget()) == "ab" + assert module.get(module.widget()) == "bc" + assert module.get(module.widget()) == "cd" + assert module.get(module.widget()) == "bc" + assert module.get(module.widget()) == "ab" + assert module.get(module.widget()) == "bc" + assert module.get(module.widget()) == "cd" + assert module.get(module.widget()) == "bc" + assert module.get(module.widget()) == "ab" + +def test_nobounce(module): + module.set("scrolling.bounce", False) + module.set("scrolling.width", 2) + module.text = "abcd" + + assert module.get(module.widget()) == "ab" + assert module.get(module.widget()) == "bc" + assert module.get(module.widget()) == "cd" + assert module.get(module.widget()) == "ab" + assert module.get(module.widget()) == "bc" + assert module.get(module.widget()) == "cd" + +def test_completely_changed_data(module): + module.text = "abcd" + module.set("scrolling.width", 2) + + assert module.get(module.widget()) == "ab" + assert module.get(module.widget()) == "bc" + + module.text = "wxyz" + assert module.get(module.widget()) == "wx" + assert module.get(module.widget()) == "xy" + +def test_slightly_changed_data(module): + module.text = "this is a sample song (0:00)" + module.set("scrolling.width", 10) + + assert module.get(module.widget()) == module.text[0:10] + module.text = "this is a sample song (0:01)" + assert module.get(module.widget()) == module.text[1:11] + module.text = "this is a sample song (0:02)" + assert module.get(module.widget()) == module.text[2:12] + module.text = "this is a sample song (0:13)" + assert module.get(module.widget()) == module.text[3:13] + module.text = "this is a different song (0:13)" + assert module.get(module.widget()) == module.text[0:10] + +def test_n_plus_one(module): + module.text = "10 letters" + module.set("scrolling.width", 9) + + assert module.get(module.widget()) == module.text[0:9] + assert module.get(module.widget()) == module.text[1:10] + assert module.get(module.widget()) == module.text[0:9] + assert module.get(module.widget()) == module.text[1:10] + assert module.get(module.widget()) == module.text[0:9] + + +# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4