-- 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('iline1line2') -- 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)