[test_i3bar-output] Added i3bar output test modules
This commit is contained in:
parent
70f138b97b
commit
728cb73189
1 changed files with 131 additions and 0 deletions
131
tests/test_i3baroutput.py
Normal file
131
tests/test_i3baroutput.py
Normal file
|
@ -0,0 +1,131 @@
|
|||
# pylint: disable=C0103,C0111
|
||||
|
||||
import json
|
||||
import mock
|
||||
import unittest
|
||||
|
||||
try:
|
||||
from StringIO import StringIO
|
||||
except ImportError:
|
||||
from io import StringIO
|
||||
|
||||
import mocks
|
||||
|
||||
from bumblebee.output import I3BarOutput
|
||||
|
||||
class TestI3BarOutput(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.theme = mock.Mock()
|
||||
self.theme.separator_fg.return_value = "#123456"
|
||||
self.theme.separator_bg.return_value = "#000000"
|
||||
self.theme.separator.return_value = ""
|
||||
self.theme.prefix.return_value = ""
|
||||
self.theme.suffix.return_value = ""
|
||||
self.theme.separator_block_width.return_value = 1
|
||||
self.theme.fg.return_value = "#ababab"
|
||||
self.theme.bg.return_value = "#ababab"
|
||||
self.output = I3BarOutput(self.theme)
|
||||
|
||||
self._stdout = mock.patch("bumblebee.output.sys.stdout", new_callable=StringIO)
|
||||
self.stdout = self._stdout.start()
|
||||
|
||||
self.anyWidget = mocks.MockWidget("some text")
|
||||
self.anyModule = mock.Mock()
|
||||
self.anyModule.id = mocks.rand(10)
|
||||
self.anyModule.name = mocks.rand(10)
|
||||
|
||||
self.expectedStart = json.dumps({"version": 1, "click_events": True}) + "[\n"
|
||||
self.expectedStop = "]\n"
|
||||
|
||||
self.anyColor = "#ffffff"
|
||||
self.anotherColor = "#cdcdcd"
|
||||
|
||||
def tearDown(self):
|
||||
self._stdout.stop()
|
||||
|
||||
def test_start(self):
|
||||
self.output.start()
|
||||
self.assertEquals(self.expectedStart, self.stdout.getvalue())
|
||||
|
||||
def test_stop(self):
|
||||
self.output.stop()
|
||||
self.assertEquals(self.expectedStop, self.stdout.getvalue())
|
||||
|
||||
def test_draw_single_widget(self):
|
||||
self.output.draw(self.anyWidget, self.anyModule)
|
||||
self.output.flush()
|
||||
result = json.loads(self.stdout.getvalue())[0]
|
||||
self.assertEquals(result["full_text"], self.anyWidget.full_text())
|
||||
|
||||
def test_draw_multiple_widgets(self):
|
||||
for i in range(4):
|
||||
self.output.draw(self.anyWidget, self.anyModule)
|
||||
self.output.flush()
|
||||
result = json.loads(self.stdout.getvalue())
|
||||
for res in result:
|
||||
self.assertEquals(res["full_text"], self.anyWidget.full_text())
|
||||
|
||||
def test_begin(self):
|
||||
self.output.begin()
|
||||
self.assertEquals("", self.stdout.getvalue())
|
||||
|
||||
def test_end(self):
|
||||
self.output.end()
|
||||
self.assertEquals(",\n", self.stdout.getvalue())
|
||||
|
||||
def test_prefix(self):
|
||||
self.theme.prefix.return_value = " - "
|
||||
self.output.draw(self.anyWidget, self.anyModule)
|
||||
self.output.flush()
|
||||
result = json.loads(self.stdout.getvalue())[0]
|
||||
self.assertEquals(result["full_text"], " - {}".format(self.anyWidget.full_text()))
|
||||
|
||||
def test_suffix(self):
|
||||
self.theme.suffix.return_value = " - "
|
||||
self.output.draw(self.anyWidget, self.anyModule)
|
||||
self.output.flush()
|
||||
result = json.loads(self.stdout.getvalue())[0]
|
||||
self.assertEquals(result["full_text"], "{} - ".format(self.anyWidget.full_text()))
|
||||
|
||||
def test_bothfix(self):
|
||||
self.theme.prefix.return_value = "*"
|
||||
self.theme.suffix.return_value = " - "
|
||||
self.output.draw(self.anyWidget, self.anyModule)
|
||||
self.output.flush()
|
||||
result = json.loads(self.stdout.getvalue())[0]
|
||||
self.assertEquals(result["full_text"], "*{} - ".format(self.anyWidget.full_text()))
|
||||
|
||||
def test_colors(self):
|
||||
self.theme.fg.return_value = self.anyColor
|
||||
self.theme.bg.return_value = self.anotherColor
|
||||
self.output.draw(self.anyWidget, self.anyModule)
|
||||
self.output.flush()
|
||||
result = json.loads(self.stdout.getvalue())[0]
|
||||
self.assertEquals(result["color"], self.anyColor)
|
||||
self.assertEquals(result["background"], self.anotherColor)
|
||||
|
||||
def test_widget_link(self):
|
||||
self.anyWidget.link_module(self.anyModule)
|
||||
self.assertEquals(self.anyWidget._module, self.anyModule)
|
||||
self.assertEquals(self.anyWidget.module, self.anyModule.name)
|
||||
|
||||
def test_unlinked_widget_state(self):
|
||||
state = self.anyWidget.state()
|
||||
self.assertTrue(type(state) == list)
|
||||
|
||||
def test_linked_widget_state(self):
|
||||
self.anyWidget.link_module(self.anyModule)
|
||||
for lst in [ "samplestate", ["a", "b", "c"], [] ]:
|
||||
self.anyModule.state.return_value = lst
|
||||
state = self.anyWidget.state()
|
||||
self.assertEquals(type(state), list)
|
||||
if type(lst) is not list: lst = [lst]
|
||||
self.assertEquals(state, lst)
|
||||
|
||||
def test_widget_fulltext(self):
|
||||
self.anyWidget.full_text("some text")
|
||||
self.assertEquals(self.anyWidget.full_text(), "some text")
|
||||
self.anyWidget.full_text(lambda x: "callable fulltext")
|
||||
self.assertEquals(self.anyWidget.full_text(), "callable fulltext")
|
||||
|
||||
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
|
Loading…
Reference in a new issue