mirror of
https://github.com/neovim/neovim.git
synced 2024-12-19 18:55:14 -07:00
a17ccb0d24
Tests can redefine the handlers, so we don't need this extra hook.
73 lines
2.0 KiB
Lua
73 lines
2.0 KiB
Lua
-- To run this test:
|
|
-- TEST_FILE=test/functional/example_spec.lua make functionaltest
|
|
|
|
local helpers = require('test.functional.helpers')(after_each)
|
|
local Screen = require('test.functional.ui.screen')
|
|
local clear = helpers.clear
|
|
local command = helpers.command
|
|
local eq = helpers.eq
|
|
local feed = helpers.feed
|
|
|
|
describe('example', function()
|
|
local screen
|
|
before_each(function()
|
|
clear()
|
|
screen = Screen.new(20,5)
|
|
screen:attach()
|
|
screen:set_default_attr_ids( {
|
|
[0] = {bold=true, foreground=Screen.colors.Blue},
|
|
[1] = {bold=true, foreground=Screen.colors.Brown}
|
|
} )
|
|
end)
|
|
|
|
it('screen test', function()
|
|
-- Do some stuff.
|
|
feed('iline1<cr>line2<esc>')
|
|
|
|
-- For debugging only: prints the current screen.
|
|
-- screen:snapshot_util()
|
|
|
|
-- Assert the expected state.
|
|
screen:expect([[
|
|
line1 |
|
|
line^2 |
|
|
{0:~ }|
|
|
{0:~ }|
|
|
|
|
|
]])
|
|
end)
|
|
|
|
it('override UI event-handler', function()
|
|
-- Example: override the "tabline_update" UI event handler.
|
|
--
|
|
-- screen.lua defines default handlers for UI events, but tests
|
|
-- may sometimes want to override a handler.
|
|
|
|
-- The UI must declare that it wants to handle the UI events.
|
|
-- For this example, we enable `ext_tabline`:
|
|
screen:detach()
|
|
screen = Screen.new(25, 5)
|
|
screen:attach({rgb=true, ext_tabline=true})
|
|
|
|
-- From ":help ui" we find that `tabline_update` receives `curtab` and
|
|
-- `tabs` objects. So we declare the UI handler like this:
|
|
local event_tabs, event_curtab
|
|
function screen:_handle_tabline_update(curtab, tabs)
|
|
event_curtab, event_tabs = curtab, tabs
|
|
end
|
|
|
|
-- Create a tabpage...
|
|
command('tabedit foo')
|
|
|
|
-- Use screen:expect{condition=…} to check the result.
|
|
screen:expect{condition=function()
|
|
eq({ id = 2 }, event_curtab)
|
|
eq({
|
|
{tab = { id = 1 }, name = '[No Name]'},
|
|
{tab = { id = 2 }, name = 'foo'},
|
|
},
|
|
event_tabs)
|
|
end}
|
|
end)
|
|
end)
|