mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	window: Fix matchaddpos() and enhance error reporting
This commit is contained in:
		| @@ -1,9 +1,12 @@ | ||||
| local helpers = require('test.functional.helpers')(after_each) | ||||
| local Screen = require('test.functional.ui.screen') | ||||
|  | ||||
| local eq = helpers.eq | ||||
| local clear = helpers.clear | ||||
| local funcs = helpers.funcs | ||||
| local meths = helpers.meths | ||||
| local command = helpers.command | ||||
| local exc_exec = helpers.exc_exec | ||||
|  | ||||
| before_each(clear) | ||||
|  | ||||
| @@ -59,3 +62,95 @@ describe('matchadd()', function() | ||||
|     }}, funcs.getmatches()) | ||||
|   end) | ||||
| end) | ||||
|  | ||||
| describe('matchaddpos()', function() | ||||
|   it('errors out on invalid input', function() | ||||
|     command('hi clear PreProc') | ||||
|     eq('Vim(let):E5030: Empty list at position 0', | ||||
|        exc_exec('let val = matchaddpos("PreProc", [[]])')) | ||||
|     eq('Vim(let):E5030: Empty list at position 1', | ||||
|        exc_exec('let val = matchaddpos("PreProc", [1, v:_null_list])')) | ||||
|     eq('Vim(let):E5031: List or number required at position 1', | ||||
|        exc_exec('let val = matchaddpos("PreProc", [1, v:_null_dict])')) | ||||
|   end) | ||||
|   it('works with 0 lnum', function() | ||||
|     command('hi clear PreProc') | ||||
|     eq(4, funcs.matchaddpos('PreProc', {1}, 3, 4)) | ||||
|     eq({{ | ||||
|       group='PreProc', | ||||
|       pos1 = {1}, | ||||
|       priority=3, | ||||
|       id=4, | ||||
|     }}, funcs.getmatches()) | ||||
|     funcs.matchdelete(4) | ||||
|     eq(4, funcs.matchaddpos('PreProc', {{0}, 1}, 3, 4)) | ||||
|     eq({{ | ||||
|       group='PreProc', | ||||
|       pos1 = {1}, | ||||
|       priority=3, | ||||
|       id=4, | ||||
|     }}, funcs.getmatches()) | ||||
|     funcs.matchdelete(4) | ||||
|     eq(4, funcs.matchaddpos('PreProc', {0, 1}, 3, 4)) | ||||
|     eq({{ | ||||
|       group='PreProc', | ||||
|       pos1 = {1}, | ||||
|       priority=3, | ||||
|       id=4, | ||||
|     }}, funcs.getmatches()) | ||||
|   end) | ||||
|   it('works with negative numbers', function() | ||||
|     command('hi clear PreProc') | ||||
|     eq(4, funcs.matchaddpos('PreProc', {-10, 1}, 3, 4)) | ||||
|     eq({{ | ||||
|       group='PreProc', | ||||
|       pos1 = {1}, | ||||
|       priority=3, | ||||
|       id=4, | ||||
|     }}, funcs.getmatches()) | ||||
|     funcs.matchdelete(4) | ||||
|     eq(4, funcs.matchaddpos('PreProc', {{-10}, 1}, 3, 4)) | ||||
|     eq({{ | ||||
|       group='PreProc', | ||||
|       pos1 = {1}, | ||||
|       priority=3, | ||||
|       id=4, | ||||
|     }}, funcs.getmatches()) | ||||
|     funcs.matchdelete(4) | ||||
|     eq(4, funcs.matchaddpos('PreProc', {{2, -1}, 1}, 3, 4)) | ||||
|     eq({{ | ||||
|       group='PreProc', | ||||
|       pos1 = {1}, | ||||
|       priority=3, | ||||
|       id=4, | ||||
|     }}, funcs.getmatches()) | ||||
|     funcs.matchdelete(4) | ||||
|     eq(4, funcs.matchaddpos('PreProc', {{2, 0, -1}, 1}, 3, 4)) | ||||
|     eq({{ | ||||
|       group='PreProc', | ||||
|       pos1 = {1}, | ||||
|       priority=3, | ||||
|       id=4, | ||||
|     }}, funcs.getmatches()) | ||||
|   end) | ||||
|   it('works with zero length', function() | ||||
|     local screen = Screen.new(40, 5) | ||||
|     screen:attach() | ||||
|     funcs.setline(1, 'abcdef') | ||||
|     command('hi PreProc guifg=Red') | ||||
|     eq(4, funcs.matchaddpos('PreProc', {{1, 2, 0}}, 3, 4)) | ||||
|     eq({{ | ||||
|       group='PreProc', | ||||
|       pos1 = {1, 2, 0}, | ||||
|       priority=3, | ||||
|       id=4, | ||||
|     }}, funcs.getmatches()) | ||||
|     screen:expect([[ | ||||
|       ^a{1:b}cdef                                  | | ||||
|       {2:~                                       }| | ||||
|       {2:~                                       }| | ||||
|       {2:~                                       }| | ||||
|                                               | | ||||
|     ]], {[1] = {foreground = Screen.colors.Red}, [2] = {bold = true, foreground = Screen.colors.Blue1}}) | ||||
|   end) | ||||
| end) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 ZyX
					ZyX