diff options
author | luukvbaal <luukvbaal@gmail.com> | 2024-03-29 14:22:16 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-29 21:22:16 +0800 |
commit | 3d554b755b8090b8a991fc4720cb564c8e92e2b7 (patch) | |
tree | a5f5071aa421c8b6db84722b2872e7df077aa70c | |
parent | f29c41d665fde8e03848db12093219466deceda2 (diff) | |
download | rneovim-3d554b755b8090b8a991fc4720cb564c8e92e2b7.tar.gz rneovim-3d554b755b8090b8a991fc4720cb564c8e92e2b7.tar.bz2 rneovim-3d554b755b8090b8a991fc4720cb564c8e92e2b7.zip |
test(normal): port legacy normal test for page scrolling (#28100)
-rw-r--r-- | test/functional/legacy/normal_spec.lua | 93 |
1 files changed, 82 insertions, 11 deletions
diff --git a/test/functional/legacy/normal_spec.lua b/test/functional/legacy/normal_spec.lua index 8b7acccc2c..3dac1da14a 100644 --- a/test/functional/legacy/normal_spec.lua +++ b/test/functional/legacy/normal_spec.lua @@ -2,22 +2,28 @@ local helpers = require('test.functional.helpers')(after_each) local Screen = require('test.functional.ui.screen') local clear = helpers.clear local exec = helpers.exec - -before_each(clear) +local feed = helpers.feed +local api = helpers.api +local eq = helpers.eq +local fn = helpers.fn describe('normal', function() + local screen + + before_each(function() + clear() + screen = Screen.new(40, 19) + screen:attach() + end) + -- oldtest: Test_normal_j_below_botline() - it( - [["j" does not skip lines when scrolling below botline and 'foldmethod' is not "manual"]], - function() - local screen = Screen.new(40, 19) - screen:attach() - exec([[ + it([[no skipped lines with "j" scrolling below botline and 'foldmethod' not "manual"]], function() + exec([[ set number foldmethod=diff scrolloff=0 call setline(1, map(range(1, 9), 'repeat(v:val, 200)')) norm Lj ]]) - screen:expect([[ + screen:expect([[ {8: 2 }222222222222222222222222222222222222| {8: }222222222222222222222222222222222222|*4 {8: }22222222222222222222 | @@ -29,6 +35,71 @@ describe('normal', function() {8: }44444444444444444444 | | ]]) - end - ) + end) + + -- oldtest: Test_single_line_scroll() + it('(Half)-page scroll up or down reveals virtual lines #19605, #27967', function() + fn.setline(1, 'foobar one two three') + exec('set smoothscroll') + local ns = api.nvim_create_namespace('') + api.nvim_buf_set_extmark(0, ns, 0, 0, { + virt_lines = { { { '---', 'IncSearch' } } }, + virt_lines_above = true, + }) + -- Nvim: not actually necessary to scroll down to hide the virtual line. + -- Check topfill instead of skipcol and show the screen state. + feed('<C-E>') + eq(0, fn.winsaveview().topfill) + local s1 = [[ + ^foobar one two three | + {1:~ }|*17 + | + ]] + screen:expect(s1) + feed('<C-B>') + eq(1, fn.winsaveview().topfill) + local s2 = [[ + {2:---} | + ^foobar one two three | + {1:~ }|*16 + | + ]] + screen:expect(s2) + feed('<C-E>') + eq(0, fn.winsaveview().topfill) + screen:expect(s1) + feed('<C-U>') + eq(1, fn.winsaveview().topfill) + screen:expect(s2) + + -- Nvim: also test virt_lines below the last line + feed('yy100pG<C-L>') + api.nvim_buf_set_extmark(0, ns, 100, 0, { virt_lines = { { { '---', 'IncSearch' } } } }) + screen:expect({ + grid = [[ + foobar one two three |*17 + ^foobar one two three | + | + ]], + }) + feed('<C-F>') + screen:expect({ + grid = [[ + ^foobar one two three | + {2:---} | + {1:~ }|*16 + | + ]], + }) + feed('ggG<C-D>') + screen:expect({ + grid = [[ + foobar one two three |*8 + ^foobar one two three | + {2:---} | + {1:~ }|*8 + | + ]], + }) + end) end) |