94 lines
3.8 KiB
Python
94 lines
3.8 KiB
Python
import unittest
|
|
|
|
import core.decorators
|
|
import core.widget
|
|
import core.module
|
|
import core.config
|
|
|
|
|
|
class TestModule(core.module.Module):
|
|
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
|
|
|
|
|
|
class config(unittest.TestCase):
|
|
def setUp(self):
|
|
self.module = TestModule()
|
|
self.widget = self.module.widget()
|
|
self.width = 10
|
|
self.module.set("scrolling.width", self.width)
|
|
|
|
def test_no_text(self):
|
|
self.assertEqual("", self.module.text)
|
|
self.assertEqual("", self.module.get(self.widget))
|
|
|
|
def test_smaller(self):
|
|
self.module.text = "test"
|
|
self.assertLess(len(self.module.text), self.width)
|
|
self.assertEqual("test", self.module.get(self.widget))
|
|
|
|
def test_bigger(self):
|
|
self.module.text = "abcdefghijklmnopqrst"
|
|
self.assertGreater(len(self.module.text), self.width)
|
|
self.assertEqual(self.module.text[: self.width], self.module.get(self.widget))
|
|
|
|
def test_bounce(self):
|
|
self.module.text = "abcd"
|
|
self.module.set("scrolling.width", 2)
|
|
self.assertEqual("ab", self.module.get(self.widget))
|
|
self.assertEqual("bc", self.module.get(self.widget))
|
|
self.assertEqual("cd", self.module.get(self.widget))
|
|
self.assertEqual("bc", self.module.get(self.widget))
|
|
self.assertEqual("ab", self.module.get(self.widget))
|
|
self.assertEqual("bc", self.module.get(self.widget))
|
|
self.assertEqual("cd", self.module.get(self.widget))
|
|
self.assertEqual("bc", self.module.get(self.widget))
|
|
self.assertEqual("ab", self.module.get(self.widget))
|
|
|
|
def test_nobounce(self):
|
|
self.module.set("scrolling.bounce", False)
|
|
self.module.text = "abcd"
|
|
self.module.set("scrolling.width", 2)
|
|
self.assertEqual("ab", self.module.get(self.widget))
|
|
self.assertEqual("bc", self.module.get(self.widget))
|
|
self.assertEqual("cd", self.module.get(self.widget))
|
|
self.assertEqual("ab", self.module.get(self.widget))
|
|
self.assertEqual("bc", self.module.get(self.widget))
|
|
self.assertEqual("cd", self.module.get(self.widget))
|
|
|
|
def test_changed_data(self):
|
|
self.module.text = "abcd"
|
|
self.module.set("scrolling.width", 2)
|
|
self.assertEqual("ab", self.module.get(self.widget))
|
|
self.assertEqual("bc", self.module.get(self.widget))
|
|
self.module.text = "wxyz"
|
|
self.assertEqual("wx", self.module.get(self.widget))
|
|
|
|
def test_minimum_changed_data(self):
|
|
self.module.text = "this is a sample song (0:00)"
|
|
self.module.set("scrolling.width", 10)
|
|
self.assertEqual(self.module.text[0:10], self.module.get(self.widget))
|
|
self.module.text = "this is a sample song (0:01)"
|
|
self.assertEqual(self.module.text[1:11], self.module.get(self.widget))
|
|
self.module.text = "this is a sample song (0:12)"
|
|
self.assertEqual(self.module.text[2:12], self.module.get(self.widget))
|
|
self.module.text = "this is a different song (0:12)"
|
|
self.assertEqual(self.module.text[0:10], self.module.get(self.widget))
|
|
|
|
def test_n_plus_one(self):
|
|
self.module.text = "10 letters"
|
|
self.module.set("scrolling.width", 9)
|
|
self.assertEqual(self.module.text[0:9], self.module.get(self.widget))
|
|
self.assertEqual(self.module.text[1:10], self.module.get(self.widget))
|
|
self.assertEqual(self.module.text[0:9], self.module.get(self.widget))
|
|
self.assertEqual(self.module.text[1:10], self.module.get(self.widget))
|
|
self.assertEqual(self.module.text[0:9], self.module.get(self.widget))
|
|
|
|
|
|
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
|