diff options
author | mathieui <mathieui@mathieui.net> | 2020-05-09 22:58:17 +0200 |
---|---|---|
committer | mathieui <mathieui@mathieui.net> | 2020-05-09 22:58:17 +0200 |
commit | f68fa1da5e2cccd396ee03eec12359ff905b7bc6 (patch) | |
tree | 135acd2d1ed2a4e7e382d9bd4f574ef6f54a023e /test/test_ui/test_render.py | |
parent | d22b4b8c218cbbaee62002d751bd69bfe1d1deab (diff) | |
parent | ca85411af06c59ec63b9cc2c0b2b2f398da79e8a (diff) | |
download | poezio-f68fa1da5e2cccd396ee03eec12359ff905b7bc6.tar.gz poezio-f68fa1da5e2cccd396ee03eec12359ff905b7bc6.tar.bz2 poezio-f68fa1da5e2cccd396ee03eec12359ff905b7bc6.tar.xz poezio-f68fa1da5e2cccd396ee03eec12359ff905b7bc6.zip |
Merge branch 'split-message-rendering' into 'master'
split message rendering
See merge request poezio/poezio!48
Diffstat (limited to 'test/test_ui/test_render.py')
-rw-r--r-- | test/test_ui/test_render.py | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/test/test_ui/test_render.py b/test/test_ui/test_render.py new file mode 100644 index 00000000..e0db5a8f --- /dev/null +++ b/test/test_ui/test_render.py @@ -0,0 +1,145 @@ +import pytest +from contextlib import contextmanager +from datetime import datetime +from poezio.theming import get_theme +from poezio.ui.render import build_lines, Line, write_pre +from poezio.ui.consts import SHORT_FORMAT +from poezio.ui.types import BaseMessage, Message, StatusMessage, XMLLog + +def test_simple_build_basemsg(): + msg = BaseMessage(txt='coucou') + line = build_lines(msg, 100, True, 10)[0] + assert (line.start_pos, line.end_pos) == (0, 6) + + +def test_simple_render_message(): + msg = Message(txt='coucou', nickname='toto') + line = build_lines(msg, 100, True, 10)[0] + assert (line.start_pos, line.end_pos) == (0, 6) + + +def test_simple_render_xmllog(): + msg = XMLLog(txt='coucou', incoming=True) + line = build_lines(msg, 100, True, 10)[0] + assert (line.start_pos, line.end_pos) == (0, 6) + + +def test_simple_render_separator(): + line = build_lines(None, 100, True, 10)[0] + assert line is None + + +def test_simple_render_status(): + class Obj: + name = 'toto' + msg = StatusMessage("Coucou {name}", {'name': lambda: Obj.name}) + assert msg.txt == "Coucou toto" + Obj.name = 'titi' + build_lines(msg, 100, True, 10)[0] + assert msg.txt == "Coucou titi" + + +class FakeBuffer: + def __init__(self): + self.text = '' + + @contextmanager + def colored_text(self, *args, **kwargs): + yield None + + def addstr(self, txt): + self.text += txt + +@pytest.fixture(scope='function') +def buffer(): + return FakeBuffer() + +@pytest.fixture +def time(): + return datetime.strptime('2019-09-27 10:11:12', '%Y-%m-%d %H:%M:%S') + +def test_write_pre_basemsg(buffer): + str_time = '10:11:12' + time = datetime.strptime(str_time, '%H:%M:%S') + msg = BaseMessage(txt='coucou', time=time) + size = write_pre(msg, buffer, True, 10) + assert buffer.text == '10:11:12 ' + assert size == len(buffer.text) + +def test_write_pre_message_simple(buffer, time): + msg = Message(txt='coucou', nickname='toto', time=time) + size = write_pre(msg, buffer, True, 10) + assert buffer.text == '10:11:12 toto> ' + assert size == len(buffer.text) + + +def test_write_pre_message_simple_history(buffer, time): + msg = Message(txt='coucou', nickname='toto', time=time, history=True) + size = write_pre(msg, buffer, True, 10) + assert buffer.text == '2019-09-27 10:11:12 toto> ' + assert size == len(buffer.text) + + +def test_write_pre_message_highlight(buffer, time): + msg = Message(txt='coucou', nickname='toto', time=time, highlight=True) + size = write_pre(msg, buffer, True, 10) + assert buffer.text == '10:11:12 toto> ' + assert size == len(buffer.text) + +def test_write_pre_message_no_timestamp(buffer): + msg = Message(txt='coucou', nickname='toto') + size = write_pre(msg, buffer, False, 10) + assert buffer.text == 'toto> ' + assert size == len(buffer.text) + + +def test_write_pre_message_me(buffer, time): + msg = Message(txt='/me coucou', nickname='toto', time=time) + size = write_pre(msg, buffer, True, 10) + assert buffer.text == '10:11:12 * toto ' + assert size == len(buffer.text) + + +def test_write_pre_message_revisions(buffer, time): + msg = Message(txt='coucou', nickname='toto', time=time, revisions=5) + size = write_pre(msg, buffer, True, 10) + assert buffer.text == '10:11:12 toto5> ' + assert size == len(buffer.text) + +def test_write_pre_message_revisions_me(buffer, time): + msg = Message(txt='/me coucou', nickname='toto', time=time, revisions=5) + size = write_pre(msg, buffer, True, 10) + assert buffer.text == '10:11:12 * toto5 ' + assert size == len(buffer.text) + + +def test_write_pre_message_ack(buffer, time): + ack = get_theme().CHAR_ACK_RECEIVED + expected = '10:11:12 %s toto> ' % ack + msg = Message(txt='coucou', nickname='toto', time=time, ack=1) + size = write_pre(msg, buffer, True, 10) + assert buffer.text == expected + assert size == len(buffer.text) + + +def test_write_pre_message_nack(buffer, time): + nack = get_theme().CHAR_NACK + expected = '10:11:12 %s toto> ' % nack + msg = Message(txt='coucou', nickname='toto', time=time, ack=-1) + size = write_pre(msg, buffer, True, 10) + assert buffer.text == expected + assert size == len(buffer.text) + + +def test_write_pre_xmllog_in(buffer): + msg = XMLLog(txt="coucou", incoming=True) + size = write_pre(msg, buffer, True, 10) + assert buffer.text == '%s IN ' % msg.time.strftime('%H:%M:%S') + assert size == len(buffer.text) + + +def test_write_pre_xmllog_out(buffer): + msg = XMLLog(txt="coucou", incoming=False) + size = write_pre(msg, buffer, True, 10) + assert buffer.text == '%s OUT ' % msg.time.strftime('%H:%M:%S') + assert size == len(buffer.text) |