about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--main.lua4
-rw-r--r--text.lua72
2 files changed, 68 insertions, 8 deletions
diff --git a/main.lua b/main.lua
index ca69be6..c191fc4 100644
--- a/main.lua
+++ b/main.lua
@@ -122,10 +122,10 @@ function App.draw()
   local y = 15
   if Debug_main then print('== draw') end
   for line_index,line in ipairs(Lines) do
-    print(y, line_index, line)
+--?     print(y, line_index, line)
     if Debug_main then print('draw:', line_index, y) end
     if y + math.floor(15*Zoom) > App.screen.height then break end
-    print('a')
+--?     print('a')
     if line_index >= Screen_top1.line then
       Screen_bottom1.line = line_index
       if line.mode == 'text' and line.data == '' then
diff --git a/text.lua b/text.lua
index 51d69db..58fe09a 100644
--- a/text.lua
+++ b/text.lua
@@ -124,15 +124,15 @@ function test_pagedown()
   App.screen.check(y, 'ghi', 'F - test_pagedown/screen:2')
 end
 
-function test_pagedown_skip_drawings()
-  print('test_pagedown_skip_drawings')
+function test_pagedown_skips_drawings()
+  print('test_pagedown_skips_drawings')
   -- some lines of text with a drawing intermixed
   App.screen.init{width=50, height=80}
   Lines = load_array{'abc',               -- height 15
                      '```lines', '```',   -- height 25
                      'def',               -- height 15
                      'ghi'}               -- height 15
-  check_eq(Lines[2].mode, 'drawing', 'F - test_pagedown_skip_drawings/baseline/lines')
+  check_eq(Lines[2].mode, 'drawing', 'F - test_pagedown_skips_drawings/baseline/lines')
   Line_width = App.screen.width
   Cursor1 = {line=1, pos=1}
   Screen_top1 = {line=1, pos=1}
@@ -145,13 +145,73 @@ function test_pagedown_skip_drawings()
   -- 15px margin + 15px line1 + 10px margin + 25px drawing + 10px margin = 75px < screen height 80px
   App.draw()
   local y = screen_top_margin
-  App.screen.check(y, 'abc', 'F - test_pagedown_skip_drawings/baseline/screen:1')
+  App.screen.check(y, 'abc', 'F - test_pagedown_skips_drawings/baseline/screen:1')
   -- after pagedown the screen draws the screen up top
   -- 15px margin + 10px margin + 25px drawing + 10px margin + 15px line3 = 75px < screen height 80px
   App.run_after_keychord('pagedown')
-  print('test: top:', Screen_top1.line)
+--?   print('test: top:', Screen_top1.line)
   y = screen_top_margin + drawing_height
-  App.screen.check(y, 'def', 'F - test_pagedown_skip_drawings/screen:1')
+  App.screen.check(y, 'def', 'F - test_pagedown_skips_drawings/screen:1')
+end
+
+function test_down_arrow_moves_cursor()
+  print('test_down_arrow_moves_cursor')
+  App.screen.init{width=120, height=60}
+  Lines = load_array{'abc', 'def', 'ghi', 'jkl'}
+  Line_width = 120
+  Cursor1 = {line=1, pos=1}
+  Screen_top1 = {line=1, pos=1}
+  Screen_bottom1 = {}
+  Zoom = 1
+  local screen_top_margin = 15  -- pixels
+  local line_height = math.floor(15*Zoom)  -- pixels
+  -- initially the first three lines are displayed
+  App.draw()
+  local y = screen_top_margin
+  App.screen.check(y, 'abc', 'F - test_down_arrow_moves_cursor/baseline/screen:1')
+  y = y + line_height
+  App.screen.check(y, 'def', 'F - test_down_arrow_moves_cursor/baseline/screen:2')
+  y = y + line_height
+  App.screen.check(y, 'ghi', 'F - test_down_arrow_moves_cursor/baseline/screen:3')
+  -- after hitting the down arrow the screen is unchanged
+  App.run_after_keychord('down')
+  y = screen_top_margin
+  App.screen.check(y, 'abc', 'F - test_down_arrow_moves_cursor/screen:1')
+  y = y + line_height
+  App.screen.check(y, 'def', 'F - test_down_arrow_moves_cursor/screen:2')
+  y = y + line_height
+  App.screen.check(y, 'ghi', 'F - test_down_arrow_moves_cursor/screen:3')
+  -- but the cursor moves down by 1 line
+  check_eq(Cursor1.line, 2, 'F - test_down_arrow_moves_cursor/cursor')
+end
+
+function test_down_arrow_scrolls_down_by_one_line()
+  print('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}
+  Lines = load_array{'abc', 'def', 'ghi', 'jkl'}
+  Line_width = 120
+  Cursor1 = {line=3, pos=1}
+  Screen_top1 = {line=1, pos=1}
+  Screen_bottom1 = {}
+  Zoom = 1
+  local screen_top_margin = 15  -- pixels
+  local line_height = math.floor(15*Zoom)  -- pixels
+  App.draw()
+  local y = screen_top_margin
+  App.screen.check(y, 'abc', 'F - test_down_arrow_scrolls_down_by_one_line/baseline/screen:1')
+  y = y + line_height
+  App.screen.check(y, 'def', 'F - test_down_arrow_scrolls_down_by_one_line/baseline/screen:2')
+  y = y + line_height
+  App.screen.check(y, 'ghi', 'F - test_down_arrow_scrolls_down_by_one_line/baseline/screen:3')
+  -- after hitting the down arrow the screen scrolls down by one line
+  App.run_after_keychord('down')
+  y = screen_top_margin
+  App.screen.check(y, 'def', 'F - test_down_arrow_scrolls_down_by_one_line/screen:1')
+  y = y + line_height
+  App.screen.check(y, 'ghi', 'F - test_down_arrow_scrolls_down_by_one_line/screen:2')
+  y = y + line_height
+  App.screen.check(y, 'jkl', 'F - test_down_arrow_scrolls_down_by_one_line/screen:3')
 end
 
 function Text.compute_fragments(line, line_width)