home · contact · privacy
In testing, restructure TUI command syntax to allow line-alternate repeats. master
authorChristian Heller <c.heller@plomlompom.de>
Thu, 16 Oct 2025 17:15:29 +0000 (19:15 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Thu, 16 Oct 2025 17:15:29 +0000 (19:15 +0200)
src/ircplom/testing.py
src/tests/tui_draw.test

index fda641b68e9832b44166211028a114d0112d1974..cce6f908442e27636f9c11f26309c44fcc926748 100644 (file)
@@ -150,9 +150,9 @@ _CHAR_SERVER_MSG = '<'
 _CHAR_RANGE = ':'
 _CHAR_RANGE_DATA_SEP = ' '
 _CHAR_WIN_ID_SEP = ','
 _CHAR_RANGE = ':'
 _CHAR_RANGE_DATA_SEP = ' '
 _CHAR_WIN_ID_SEP = ','
+_CHAR_TUI = 't'
 _TOK_REPEAT = 'repeat'
 _TOK_WAIT = 'wait'
 _TOK_REPEAT = 'repeat'
 _TOK_WAIT = 'wait'
-_TOK_TUI = 'TUI'
 
 
 class _Playbook:
 
 
 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]
             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]]
                         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):
                 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
                 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
                 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()
                 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))
             elif context == _TOK_WAIT:
                 assert msg.isdigit()
                 sleep(int(msg))
index 10e07ffbadc97918c5f15976d8870fa780562656..22fdb61326322af749cd29bbfae96f77c31c8428 100644 (file)
@@ -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
 > 
 # 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 /
 
 # 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
 
 # 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
 
 # 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
 > /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 ..< 
 > /quit
 0 ..<