From 33ad6b7e5b5436d9b3e2ddd7119052bf3af5f02f Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Tue, 31 Jan 2023 22:39:04 -0800 Subject: bugfix: up arrow when line above is a drawing This bug was introduced in commit 528c64d690 on 2022-09-05 :/ --- source_text_tests.lua | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) (limited to 'source_text_tests.lua') diff --git a/source_text_tests.lua b/source_text_tests.lua index b2fdcda..2385325 100644 --- a/source_text_tests.lua +++ b/source_text_tests.lua @@ -1025,6 +1025,31 @@ function test_down_arrow_moves_cursor() App.screen.check(y, 'ghi', 'screen:3') end +function test_down_arrow_skips_drawing() + -- some lines of text with a drawing intermixed + local drawing_width = 50 + App.screen.init{width=Editor_state.left+drawing_width, height=100} + Editor_state = edit.initialize_test_state() + Editor_state.lines = load_array{'abc', -- height 15 + '```lines', '```', -- height 25 + 'ghi'} + Text.redraw_all(Editor_state) + Editor_state.cursor1 = {line=1, pos=1} + Editor_state.screen_top1 = {line=1, pos=1} + Editor_state.screen_bottom1 = {} + edit.draw(Editor_state) + local y = Editor_state.top + App.screen.check(y, 'abc', 'baseline/screen:1') + y = y + Editor_state.line_height + local drawing_height = Drawing_padding_height + drawing_width/2 -- default + y = y + drawing_height + App.screen.check(y, 'ghi', 'baseline/screen:3') + check(Editor_state.cursor_x, 'baseline/cursor_x') + -- after hitting the down arrow the cursor moves down by 2 lines, skipping the drawing + edit.run_after_keychord(Editor_state, 'down') + check_eq(Editor_state.cursor1.line, 3, 'cursor') +end + function test_down_arrow_scrolls_down_by_one_line() -- display the first three lines with the cursor on the bottom line App.screen.init{width=120, height=60} @@ -1173,6 +1198,31 @@ function test_up_arrow_moves_cursor() App.screen.check(y, 'ghi', 'screen:3') end +function test_up_arrow_skips_drawing() + -- some lines of text with a drawing intermixed + local drawing_width = 50 + App.screen.init{width=Editor_state.left+drawing_width, height=100} + Editor_state = edit.initialize_test_state() + Editor_state.lines = load_array{'abc', -- height 15 + '```lines', '```', -- height 25 + 'ghi'} + Text.redraw_all(Editor_state) + Editor_state.cursor1 = {line=3, pos=1} + Editor_state.screen_top1 = {line=1, pos=1} + Editor_state.screen_bottom1 = {} + edit.draw(Editor_state) + local y = Editor_state.top + App.screen.check(y, 'abc', 'baseline/screen:1') + y = y + Editor_state.line_height + local drawing_height = Drawing_padding_height + drawing_width/2 -- default + y = y + drawing_height + App.screen.check(y, 'ghi', 'baseline/screen:3') + check(Editor_state.cursor_x, 'baseline/cursor_x') + -- after hitting the up arrow the cursor moves up by 2 lines, skipping the drawing + edit.run_after_keychord(Editor_state, 'up') + check_eq(Editor_state.cursor1.line, 1, 'cursor') +end + function test_up_arrow_scrolls_up_by_one_line() -- display the lines 2/3/4 with the cursor on line 2 App.screen.init{width=120, height=60} -- cgit 1.4.1-2-gfad0