diff options
Diffstat (limited to 'test/functional/eval/match_functions_spec.lua')
| -rw-r--r-- | test/functional/eval/match_functions_spec.lua | 94 | 
1 files changed, 94 insertions, 0 deletions
| diff --git a/test/functional/eval/match_functions_spec.lua b/test/functional/eval/match_functions_spec.lua index 3150d89f62..7989b22b5e 100644 --- a/test/functional/eval/match_functions_spec.lua +++ b/test/functional/eval/match_functions_spec.lua @@ -1,9 +1,11 @@  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 command = helpers.command +local exc_exec = helpers.exc_exec  before_each(clear) @@ -59,3 +61,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) | 
