From: Christian Heller Date: Thu, 16 Oct 2025 17:15:29 +0000 (+0200) Subject: In testing, restructure TUI command syntax to allow line-alternate repeats. X-Git-Url: https://plomlompom.com/repos/%7B%7B%20web_path%20%7D%7D/static/unset_cookie?a=commitdiff_plain;h=HEAD;p=ircplom In testing, restructure TUI command syntax to allow line-alternate repeats. --- diff --git a/src/ircplom/testing.py b/src/ircplom/testing.py index fda641b..cce6f90 100644 --- a/src/ircplom/testing.py +++ b/src/ircplom/testing.py @@ -150,9 +150,9 @@ _CHAR_SERVER_MSG = '<' _CHAR_RANGE = ':' _CHAR_RANGE_DATA_SEP = ' ' _CHAR_WIN_ID_SEP = ',' +_CHAR_TUI = 't' _TOK_REPEAT = 'repeat' _TOK_WAIT = 'wait' -_TOK_TUI = 'TUI' class _Playbook: @@ -206,7 +206,7 @@ class _Playbook: inserts: list[tuple[str, str]] = [] for inserted_t in self._lines_t[int(start):int(end)]: insert = inserted_t[1] - if len(range_data) != 2\ + if len(range_data) == 3\ and insert and not insert.startswith(_CHAR_ANCHOR): insert = _CHAR_CONTEXT_SEP.join( [range_data[2]] @@ -287,19 +287,17 @@ class _Playbook: self.put_keypress('KEY_ENTER') break if context.startswith(_CHAR_SERVER_MSG): - client = self._get_client(int(context[1:])) + client = self._get_client(int(context[len(_CHAR_SERVER_MSG):])) assert isinstance(client.conn, _FakeIrcConnection), client.conn client.conn.put_server_msg(msg) break - if context == _TOK_TUI: + if context.startswith(_CHAR_TUI): assert self.assert_screen_line is not None assert self.redraw_affected is not None + _, y_str = context.split('.') + x_str, attrs_str, msg = msg.split('.', maxsplit=2) self.redraw_affected() - position, attrs_str, msg = msg.split('.', maxsplit=2) - y, x = ((int(item) for item in position.split(',')) - if ',' in position - else (int(position), 0)) - self.assert_screen_line(y, x, msg, attrs_str) + self.assert_screen_line(int(y_str), int(x_str), msg, attrs_str) elif context == _TOK_WAIT: assert msg.isdigit() sleep(int(msg)) diff --git a/src/tests/tui_draw.test b/src/tests/tui_draw.test index 10e07ff..22fdb61 100644 --- a/src/tests/tui_draw.test +++ b/src/tests/tui_draw.test @@ -1,93 +1,75 @@ -TUI 0.on_black. -TUI 1.on_black. -TUI 2.on_black. -TUI 3.on_black. -TUI 4.on_black. -TUI 5.on_black. -TUI 6.on_black. -TUI 7.on_black. -TUI 8.on_black. -TUI 9.on_black. -TUI 10.on_black. -TUI 11.on_black. -TUI 12.on_black. -TUI 13.on_black. -TUI 14.on_black. -TUI 15.on_black. -TUI 16.on_black. -TUI 17.on_black. -TUI 18.on_black. -TUI 19.on_black. -TUI 20.on_black. -TUI 21.on_black. -TUI 22..:start)=====================================================================([0] +| empty-init-in +| line-0-empty-in +t.0 0.on_black. +| line-0-empty-out +repeat line-0-empty-in line-0-empty-out t.1 +repeat line-0-empty-in line-0-empty-out t.2 +repeat line-0-empty-in line-0-empty-out t.3 +repeat line-0-empty-in line-0-empty-out t.4 +repeat line-0-empty-in line-0-empty-out t.5 +repeat line-0-empty-in line-0-empty-out t.6 +repeat line-0-empty-in line-0-empty-out t.7 +repeat line-0-empty-in line-0-empty-out t.8 +repeat line-0-empty-in line-0-empty-out t.9 +repeat line-0-empty-in line-0-empty-out t.10 +repeat line-0-empty-in line-0-empty-out t.11 +repeat line-0-empty-in line-0-empty-out t.12 +repeat line-0-empty-in line-0-empty-out t.13 +repeat line-0-empty-in line-0-empty-out t.14 +repeat line-0-empty-in line-0-empty-out t.15 +repeat line-0-empty-in line-0-empty-out t.16 +repeat line-0-empty-in line-0-empty-out t.17 +repeat line-0-empty-in line-0-empty-out t.18 +repeat line-0-empty-in line-0-empty-out t.19 +repeat line-0-empty-in line-0-empty-out t.20 +repeat line-0-empty-in line-0-empty-out t.21 +| status-prompt-empty-in +t.22 0..:start)=====================================================================([0] +t.23 0..> +t.23 2.reverse. +t.23 3.. +| status-prompt-empty-out +| empty-init-out -TUI 23,0..> -TUI 23,2.reverse. -TUI 23,3.. # nothing happening on empty command input > -TUI 0.on_black. -TUI 21.on_black. -TUI 22..:start)=====================================================================([0] - -TUI 23,2.reverse. +repeat empty-init-in empty-init-out # non-empty command input starts log at bottom, with date above it > foo 0 .!# invalid prompt command: not prefixed by / +repeat line-0-empty-in line-0-empty-out +repeat line-0-empty-in line-0-empty-out t.19 +| date-at-20-in +t.20 0.on_black.20 +t.20 4.on_black.- +t.20 7.on_black.- +t.20 10.on_black. +| date-at-20-out +t.21 0.on_black,bold,bright_red,bright_cyan..!# +t.21 13.on_black,bold,bright_red,bright_cyan.invalid prompt command: not prefixed by / -TUI 0.on_black. -TUI 20,0.on_black.20 -TUI 20,4.on_black.- -TUI 20,7.on_black.- -TUI 20,10.on_black. -TUI 21,0.on_black,bold,bright_red,bright_cyan..!# -TUI 21,13.on_black,bold,bright_red,bright_cyan.invalid prompt command: not prefixed by / -TUI 22..:start)=====================================================================([0] -TUI 23,0..> -TUI 23,2.reverse. -TUI 23,3.. +repeat status-prompt-empty-in status-prompt-empty-out # further inputs grow log upwards > /foo 0 .!# invalid prompt command: /foo unknown > /foo 0 .!# invalid prompt command: /foo unknown - -TUI 17.on_black. -TUI 18,0.on_black.20 -TUI 19,13.on_black,bold,bright_red,bright_cyan.invalid prompt command: not prefixed by / -TUI 20,13.on_black,bold,bright_red,bright_cyan.invalid prompt command: /foo unknown -TUI 21,13.on_black,bold,bright_red,bright_cyan.invalid prompt command: /foo unknown +repeat line-0-empty-in line-0-empty-out +repeat line-0-empty-in line-0-empty-out t.17 +repeat date-at-20-in date-at-20-out t.18 +t.19 13.on_black,bold,bright_red,bright_cyan.invalid prompt command: not prefixed by / +t.20 13.on_black,bold,bright_red,bright_cyan.invalid prompt command: /foo unknown +t.21 13.on_black,bold,bright_red,bright_cyan.invalid prompt command: /foo unknown # check wrapping > /foo_0123456789_0123456789_01234567 0 .!# invalid prompt command: /foo_0123456789_0123456789_01234567 unknown -TUI 21,13.on_black,bold,bright_red,bright_cyan.invalid prompt command: /foo_0123456789_0123456789_01234567 unknown +t.21 13.on_black,bold,bright_red,bright_cyan.invalid prompt command: /foo_0123456789_0123456789_01234567 unknown > /foo_0123456789_0123456789_012345678 0 .!# invalid prompt command: /foo_0123456789_0123456789_012345678 unknown -TUI 20,13.on_black,bold,bright_red,bright_cyan.invalid prompt command: /foo_0123456789_0123456789_012345678 -TUI 21,0.on_black,bold,bright_red,bright_cyan. unknown -# # check scrolling -# > /window.history.scroll up -# > /foo_0123456789_0123456789_012345678 -# 0 .!# invalid prompt command: /foo_0123456789_0123456789_012345678 unknown -# # > /foo_0123456789_0123456789_012345678 -# # TUI 21.on_black. -# # > /foo_0123456789_0123456789_012345678 -# # 0 .!# invalid prompt command: /foo_0123456789_0123456789_012345678 unknown -# # > /foo_0123456789_0123456789_012345678 -# # 0 .!# invalid prompt command: /foo_0123456789_0123456789_012345678 unknown -# # > /foo_0123456789_0123456789_012345678 -# # 0 .!# invalid prompt command: /foo_0123456789_0123456789_012345678 unknown -# # > /foo_0123456789_0123456789_012345678 -# # 0 .!# invalid prompt command: /foo_0123456789_0123456789_012345678 unknown -# # > /foo_0123456789_0123456789_012345678 -# # 0 .!# invalid prompt command: /foo_0123456789_0123456789_012345678 unknown -# # > /foo_0123456789_0123456789_012345678 -# # 0 .!# invalid prompt command: /foo_0123456789_0123456789_012345678 unknown -# # > /foo_0123456789_0123456789_012345678 -# # TUI 0.on_black. +t.20 13.on_black,bold,bright_red,bright_cyan.invalid prompt command: /foo_0123456789_0123456789_012345678 +t.21 0.on_black,bold,bright_red,bright_cyan. unknown > /quit 0 ..<