mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			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)
 | 
