Skip to content

Commit

Permalink
patch 8.2.2100: insufficient testing for function range and dict
Browse files Browse the repository at this point in the history
Problem:    Insufficient testing for function range and dict.
Solution:   Add a few tests. (Dominique Pellé, closes #7428)
  • Loading branch information
brammool committed Dec 6, 2020
1 parent 918a424 commit 67322bf
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 2 deletions.
1 change: 1 addition & 0 deletions src/testdir/test_functions.vim
Expand Up @@ -2099,6 +2099,7 @@ func Test_call()
let mydict = {'data': [0, 1, 2, 3], 'len': function("Mylen")}
eval mydict.len->call([], mydict)->assert_equal(4)
call assert_fails("call call('Mylen', [], 0)", 'E715:')
call assert_fails('call foo', 'E107:')
endfunc

func Test_char2nr()
Expand Down
5 changes: 5 additions & 0 deletions src/testdir/test_lambda.vim
Expand Up @@ -247,6 +247,11 @@ func Test_closure_counter()
call assert_equal(2, l:F())
call assert_equal(3, l:F())
call assert_equal(4, l:F())

call assert_match("^\n function <SNR>\\d\\+_bar() closure"
\ .. "\n1 let x += 1"
\ .. "\n2 return x"
\ .. "\n endfunction$", execute('func s:bar'))
endfunc

func Test_closure_unlet()
Expand Down
3 changes: 1 addition & 2 deletions src/testdir/test_signals.vim
Expand Up @@ -153,8 +153,7 @@ func Test_deadly_signal_TERM()
call assert_equal(['foo'], getline(1, '$'))

let result = readfile('XautoOut')
call assert_match('VimLeavePre triggered', result[0])
call assert_match('VimLeave triggered', result[1])
call assert_equal(["VimLeavePre triggered", "VimLeave triggered"], result)

%bwipe!
call delete('.Xsig_TERM.swp')
Expand Down
32 changes: 32 additions & 0 deletions src/testdir/test_user_func.vim
Expand Up @@ -445,4 +445,36 @@ func Test_func_arg_error()
delfunc Xfunc
endfunc

func Test_func_dict()
let mydict = {'a': 'b'}
function mydict.somefunc() dict
return len(self)
endfunc

call assert_equal("{'a': 'b', 'somefunc': function('2')}", string(mydict))
call assert_equal(2, mydict.somefunc())
call assert_match("^\n function \\d\\\+() dict"
\ .. "\n1 return len(self)"
\ .. "\n endfunction$", execute('func mydict.somefunc'))
endfunc

func Test_func_range()
new
call setline(1, range(1, 8))
func FuncRange() range
echo a:firstline
echo a:lastline
endfunc
3
call assert_equal("\n3\n3", execute('call FuncRange()'))
call assert_equal("\n4\n6", execute('4,6 call FuncRange()'))
call assert_equal("\n function FuncRange() range"
\ .. "\n1 echo a:firstline"
\ .. "\n2 echo a:lastline"
\ .. "\n endfunction",
\ execute('function FuncRange'))

bwipe!
endfunc

" vim: shiftwidth=2 sts=2 expandtab
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -750,6 +750,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
2100,
/**/
2099,
/**/
Expand Down

0 comments on commit 67322bf

Please sign in to comment.