1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
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, 8)
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)
|