mirror of
https://github.com/neovim/neovim.git
synced 2025-12-15 19:05:40 +00:00
tests: short form screen:except(func) expects condition only. #6440
- Use this to properly test cursor shape events. - tests: update screen_basic_spec to use `screen:expect` short form. Clearer than using `screen:wait` directy.
This commit is contained in:
committed by
Justin M. Keyes
parent
4566f7c7cd
commit
3b558e5d7b
@@ -3,7 +3,6 @@ local Screen = require('test.functional.ui.screen')
|
||||
local clear, meths = helpers.clear, helpers.meths
|
||||
local eq = helpers.eq
|
||||
local command = helpers.command
|
||||
local wait = helpers.wait
|
||||
|
||||
describe('ui/cursor', function()
|
||||
local screen
|
||||
@@ -19,8 +18,6 @@ describe('ui/cursor', function()
|
||||
end)
|
||||
|
||||
it("'guicursor' is published as a UI event", function()
|
||||
wait()
|
||||
screen:expect('', nil, nil, nil, true) -- Tickle the event-loop.
|
||||
local expected_cursor_style = {
|
||||
cmdline_hover = {
|
||||
mouse_shape = 0,
|
||||
@@ -142,44 +139,54 @@ describe('ui/cursor', function()
|
||||
vsep_hover = {
|
||||
mouse_shape = 0,
|
||||
short_name = 'vs' }
|
||||
}
|
||||
-- Default 'guicursor' published on startup.
|
||||
eq(expected_cursor_style, screen._cursor_style)
|
||||
eq(true, screen._cursor_style_enabled)
|
||||
eq('normal', screen.mode)
|
||||
}
|
||||
|
||||
screen:expect(function()
|
||||
-- Default 'guicursor' published on startup.
|
||||
eq(expected_cursor_style, screen._cursor_style)
|
||||
eq(true, screen._cursor_style_enabled)
|
||||
eq('normal', screen.mode)
|
||||
end)
|
||||
|
||||
-- Event is published ONLY if the cursor style changed.
|
||||
screen._cursor_style = nil
|
||||
wait()
|
||||
screen:expect('', nil, nil, nil, true) -- Tickle the event-loop.
|
||||
eq(nil, screen._cursor_style)
|
||||
command("echo 'test'")
|
||||
screen:expect([[
|
||||
^ |
|
||||
~ |
|
||||
~ |
|
||||
~ |
|
||||
test |
|
||||
]], nil, nil, function()
|
||||
eq(nil, screen._cursor_style)
|
||||
end)
|
||||
|
||||
-- Change the cursor style.
|
||||
meths.set_option('guicursor', 'n-v-c:ver35-blinkwait171-blinkoff172-blinkon173,ve:hor35,o:ver50,i-ci:block,r-cr:hor90,sm:ver42')
|
||||
wait()
|
||||
screen:expect('', nil, nil, nil, true) -- Tickle the event-loop.
|
||||
eq('vertical', screen._cursor_style.normal.cursor_shape)
|
||||
eq('horizontal', screen._cursor_style.visual_select.cursor_shape)
|
||||
eq('vertical', screen._cursor_style.operator.cursor_shape)
|
||||
eq('block', screen._cursor_style.insert.cursor_shape)
|
||||
eq('vertical', screen._cursor_style.showmatch.cursor_shape)
|
||||
eq(171, screen._cursor_style.normal.blinkwait)
|
||||
eq(172, screen._cursor_style.normal.blinkoff)
|
||||
eq(173, screen._cursor_style.normal.blinkon)
|
||||
screen:expect(function()
|
||||
eq('vertical', screen._cursor_style.normal.cursor_shape)
|
||||
eq('horizontal', screen._cursor_style.visual_select.cursor_shape)
|
||||
eq('vertical', screen._cursor_style.operator.cursor_shape)
|
||||
eq('block', screen._cursor_style.insert.cursor_shape)
|
||||
eq('vertical', screen._cursor_style.showmatch.cursor_shape)
|
||||
eq(171, screen._cursor_style.normal.blinkwait)
|
||||
eq(172, screen._cursor_style.normal.blinkoff)
|
||||
eq(173, screen._cursor_style.normal.blinkon)
|
||||
end)
|
||||
end)
|
||||
|
||||
it("empty 'guicursor' sets cursor_shape=block in all modes", function()
|
||||
meths.set_option('guicursor', '')
|
||||
command('redraw')
|
||||
screen:expect('', nil, nil, nil, true) -- Tickle the event-loop.
|
||||
-- Empty 'guicursor' sets enabled=false.
|
||||
eq(false, screen._cursor_style_enabled)
|
||||
for _, m in ipairs({ 'cmdline_insert', 'cmdline_normal', 'cmdline_replace', 'insert',
|
||||
'showmatch', 'normal', 'replace', 'visual',
|
||||
'visual_select', }) do
|
||||
eq('block', screen._cursor_style[m].cursor_shape)
|
||||
eq(0, screen._cursor_style[m].blinkon)
|
||||
end
|
||||
screen:expect(function()
|
||||
-- Empty 'guicursor' sets enabled=false.
|
||||
eq(false, screen._cursor_style_enabled)
|
||||
for _, m in ipairs({ 'cmdline_insert', 'cmdline_normal', 'cmdline_replace', 'insert',
|
||||
'showmatch', 'normal', 'replace', 'visual',
|
||||
'visual_select', }) do
|
||||
eq('block', screen._cursor_style[m].cursor_shape)
|
||||
eq(0, screen._cursor_style[m].blinkon)
|
||||
end
|
||||
end)
|
||||
end)
|
||||
|
||||
end)
|
||||
|
||||
Reference in New Issue
Block a user