aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/functional/ui/popupmenu_spec.lua121
1 files changed, 121 insertions, 0 deletions
diff --git a/test/functional/ui/popupmenu_spec.lua b/test/functional/ui/popupmenu_spec.lua
index 1db6a5150e..3b4b281c81 100644
--- a/test/functional/ui/popupmenu_spec.lua
+++ b/test/functional/ui/popupmenu_spec.lua
@@ -7,6 +7,8 @@ local meths = helpers.meths
local command = helpers.command
local funcs = helpers.funcs
local get_pathsep = helpers.get_pathsep
+local eq = helpers.eq
+local matches = helpers.matches
describe('ui/ext_popupmenu', function()
local screen
@@ -368,6 +370,125 @@ describe('ui/ext_popupmenu', function()
]])
end)
+ local function source_complete_month()
+ source([[
+ function! TestCompleteMonth() abort
+ call complete(1, ['January', 'February', 'March', 'April',
+ \ 'May', 'June', 'July', 'August',
+ \ 'September', 'October', 'November', 'December'])
+ return ''
+ endfunction
+ ]])
+ end
+
+ describe('pum_set_height', function()
+ it('can be set pum height', function()
+ source_complete_month()
+ local month_expected = {
+ {'January', '', '', ''},
+ {'February', '', '', ''},
+ {'March', '', '', ''},
+ {'April', '', '', ''},
+ {'May', '', '', ''},
+ {'June', '', '', ''},
+ {'July', '', '', ''},
+ {'August', '', '', ''},
+ {'September', '', '', ''},
+ {'October', '', '', ''},
+ {'November', '', '', ''},
+ {'December', '', '', ''},
+ }
+ local pum_height = 6
+ feed('o<C-r>=TestCompleteMonth()<CR>')
+ meths.ui_pum_set_height(pum_height)
+ feed('<PageDown>')
+ -- pos becomes pum_height-2 because it is subtracting 2 to keep some
+ -- context in ins_compl_key2count()
+ screen:expect{grid=[[
+ |
+ January^ |
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {2:-- INSERT --} |
+ ]], popupmenu={
+ items=month_expected,
+ pos=pum_height-2,
+ anchor={1,1,0},
+ }}
+ end)
+
+ it('an error occurs if set 0 or less', function()
+ local ok, err, _
+ ok, _ = pcall(meths.ui_pum_set_height, 1)
+ eq(ok, true)
+ ok, err = pcall(meths.ui_pum_set_height, 0)
+ eq(ok, false)
+ matches('.*: Expected pum height > 0', err)
+ end)
+
+ it('an error occurs when ext_popupmenu is false', function()
+ local ok, err, _
+ ok, _ = pcall(meths.ui_pum_set_height, 1)
+ eq(ok, true)
+ screen:set_option('ext_popupmenu', false)
+ ok, err = pcall(meths.ui_pum_set_height, 1)
+ eq(ok, false)
+ matches('.*: It must support the ext_popupmenu option', err)
+ end)
+ end)
+
+ it('<PageUP>, <PageDown> works without ui_pum_set_height', function()
+ source_complete_month()
+ local month_expected = {
+ {'January', '', '', ''},
+ {'February', '', '', ''},
+ {'March', '', '', ''},
+ {'April', '', '', ''},
+ {'May', '', '', ''},
+ {'June', '', '', ''},
+ {'July', '', '', ''},
+ {'August', '', '', ''},
+ {'September', '', '', ''},
+ {'October', '', '', ''},
+ {'November', '', '', ''},
+ {'December', '', '', ''},
+ }
+ feed('o<C-r>=TestCompleteMonth()<CR>')
+ feed('<PageDown>')
+ screen:expect{grid=[[
+ |
+ January^ |
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {2:-- INSERT --} |
+ ]], popupmenu={
+ items=month_expected,
+ pos=3,
+ anchor={1,1,0},
+ }}
+ feed('<PageUp>')
+ screen:expect{grid=[[
+ |
+ January^ |
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {2:-- INSERT --} |
+ ]], popupmenu={
+ items=month_expected,
+ pos=0,
+ anchor={1,1,0},
+ }}
+ end)
+
it('works with wildoptions=pum', function()
screen:try_resize(32,10)
command('set wildmenu')