104 lines
3.4 KiB
Python
104 lines
3.4 KiB
Python
|
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
|