mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:8.2.0448: various functions not properly tested (#20926)
Problem: Various functions not properly tested.
Solution: Add more tests, especially for failures. (Yegappan Lakshmanan,
closes vim/vim#5843)
0e05de4622
Cherry-pick test changes from patch 8.2.0427 and skip Test_has().
Cherry-pick Test_complete_wildmenu() change from patch 8.2.4339.
This commit is contained in:
parent
04fbb1de44
commit
24fa5f70ed
@ -7261,6 +7261,7 @@ setqflist({list} [, {action} [, {what}]]) *setqflist()*
|
||||
*setreg()*
|
||||
setreg({regname}, {value} [, {options}])
|
||||
Set the register {regname} to {value}.
|
||||
If {regname} is "" or "@", the unnamed register '"' is used.
|
||||
The {regname} argument is a string.
|
||||
|
||||
{value} may be any value returned by |getreg()| or
|
||||
|
@ -4,6 +4,9 @@ source term_util.vim
|
||||
" Command to check for the presence of a feature.
|
||||
command -nargs=1 CheckFeature call CheckFeature(<f-args>)
|
||||
func CheckFeature(name)
|
||||
" if !has(a:name, 1)
|
||||
" throw 'Checking for non-existent feature ' .. a:name
|
||||
" endif
|
||||
if !has(a:name)
|
||||
throw 'Skipped: ' .. a:name .. ' feature missing'
|
||||
endif
|
||||
|
@ -300,6 +300,8 @@ func Test_blob_index()
|
||||
call assert_equal(3, 0z11110111->index(0x11, 2))
|
||||
call assert_equal(2, index(0z11111111, 0x11, -2))
|
||||
call assert_equal(3, index(0z11110111, 0x11, -2))
|
||||
call assert_equal(0, index(0z11110111, 0x11, -10))
|
||||
call assert_fails("echo index(0z11110111, 0x11, [])", 'E745:')
|
||||
|
||||
call assert_fails('call index("asdf", 0)', 'E897:')
|
||||
endfunc
|
||||
|
@ -421,6 +421,7 @@ func Test_breakindent11()
|
||||
let width = strlen(text[1:]) + indent(2) + strlen(&sbr) * 3 " text wraps 3 times
|
||||
call assert_equal(width, strdisplaywidth(text))
|
||||
call s:close_windows('set sbr=')
|
||||
call assert_equal(4, strdisplaywidth("\t", 4))
|
||||
endfunc
|
||||
|
||||
func Test_breakindent11_vartabs()
|
||||
|
@ -89,6 +89,13 @@ func Test_complete_wildmenu()
|
||||
call assert_equal('"e Xtestfile3 Xtestfile4', @:)
|
||||
cd -
|
||||
|
||||
cnoremap <expr> <F2> wildmenumode()
|
||||
call feedkeys(":cd Xdir\<Tab>\<F2>\<C-B>\"\<CR>", 'tx')
|
||||
call assert_equal('"cd Xdir1/0', @:)
|
||||
call feedkeys(":e Xdir1/\<Tab>\<F2>\<C-B>\"\<CR>", 'tx')
|
||||
call assert_equal('"e Xdir1/Xdir2/1', @:)
|
||||
cunmap <F2>
|
||||
|
||||
" cleanup
|
||||
%bwipe
|
||||
call delete('Xdir1/Xdir2/Xtestfile4')
|
||||
|
@ -68,6 +68,10 @@ func Test_exists()
|
||||
" Existing environment variable
|
||||
let $EDITOR_NAME = 'Vim Editor'
|
||||
call assert_equal(1, exists('$EDITOR_NAME'))
|
||||
if has('unix')
|
||||
" ${name} environment variables are supported only on Unix-like systems
|
||||
call assert_equal(1, exists('${VIM}'))
|
||||
endif
|
||||
" Non-existing environment variable
|
||||
call assert_equal(0, exists('$NON_ENV_VAR'))
|
||||
|
||||
@ -323,3 +327,5 @@ endfunc
|
||||
func Test_exists_funcarg()
|
||||
call FuncArg_Tests("arg1", "arg2")
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab
|
||||
|
@ -139,6 +139,7 @@ func Test_expand_wildignore()
|
||||
call assert_equal('test_expand_func.vim', expand('test_expand_func.vim', 1))
|
||||
call assert_equal(['test_expand_func.vim'],
|
||||
\ expand('test_expand_func.vim', 1, 1))
|
||||
call assert_fails("call expand('*', [])", 'E745:')
|
||||
set wildignore&
|
||||
endfunc
|
||||
|
||||
|
@ -65,6 +65,8 @@ func Test_strgetchar()
|
||||
call assert_equal(-1, strgetchar('axb', -1))
|
||||
call assert_equal(-1, strgetchar('axb', 3))
|
||||
call assert_equal(-1, strgetchar('', 0))
|
||||
call assert_fails("let c=strgetchar([], 1)", 'E730:')
|
||||
call assert_fails("let c=strgetchar('axb', [])", 'E745:')
|
||||
endfunc
|
||||
|
||||
func Test_strcharpart()
|
||||
@ -502,6 +504,9 @@ func Test_substitute_expr()
|
||||
endfunc
|
||||
" recursive call works
|
||||
call assert_equal('-y-x-', substitute('xxx', 'x\(.\)x', {-> '-' . Recurse() . '-' . submatch(1) . '-'}, ''))
|
||||
|
||||
call assert_fails("let s=submatch([])", 'E745:')
|
||||
call assert_fails("let s=submatch(2, [])", 'E745:')
|
||||
endfunc
|
||||
|
||||
func Test_invalid_submatch()
|
||||
|
@ -19,6 +19,25 @@ func Test_00_bufexists()
|
||||
call assert_equal(0, bufexists('Xfoo'))
|
||||
endfunc
|
||||
|
||||
func Test_has()
|
||||
throw 'Skipped: Nvim has removed some features'
|
||||
call assert_equal(1, has('eval'))
|
||||
call assert_equal(1, has('eval', 1))
|
||||
|
||||
if has('unix')
|
||||
call assert_equal(1, or(has('ttyin'), 1))
|
||||
call assert_equal(0, and(has('ttyout'), 0))
|
||||
call assert_equal(1, has('multi_byte_encoding'))
|
||||
endif
|
||||
|
||||
call assert_equal(0, has('nonexistent'))
|
||||
call assert_equal(0, has('nonexistent', 1))
|
||||
|
||||
" Will we ever have patch 9999?
|
||||
let ver = 'patch-' .. v:version / 100 .. '.' .. v:version % 100 .. '.9999'
|
||||
call assert_equal(0, has(ver))
|
||||
endfunc
|
||||
|
||||
func Test_empty()
|
||||
call assert_equal(1, empty(''))
|
||||
call assert_equal(0, empty('a'))
|
||||
@ -383,6 +402,8 @@ func Test_strpart()
|
||||
call assert_equal('abcdefg', 'abcdefg'->strpart(-2))
|
||||
call assert_equal('fg', strpart('abcdefg', 5, 4))
|
||||
call assert_equal('defg', strpart('abcdefg', 3))
|
||||
call assert_equal('', strpart('abcdefg', 10))
|
||||
call assert_fails("let s=strpart('abcdef', [])", 'E745:')
|
||||
|
||||
call assert_equal('lép', strpart('éléphant', 2, 4))
|
||||
call assert_equal('léphant', strpart('éléphant', 2))
|
||||
@ -552,6 +573,15 @@ endfunc
|
||||
func Test_tr()
|
||||
call assert_equal('foo', tr('bar', 'bar', 'foo'))
|
||||
call assert_equal('zxy', 'cab'->tr('abc', 'xyz'))
|
||||
call assert_fails("let s=tr([], 'abc', 'def')", 'E730:')
|
||||
call assert_fails("let s=tr('abc', [], 'def')", 'E730:')
|
||||
call assert_fails("let s=tr('abc', 'abc', [])", 'E730:')
|
||||
call assert_fails("let s=tr('abcd', 'abcd', 'def')", 'E475:')
|
||||
" set encoding=latin1
|
||||
call assert_fails("let s=tr('abcd', 'abcd', 'def')", 'E475:')
|
||||
call assert_equal('hEllO', tr('hello', 'eo', 'EO'))
|
||||
call assert_equal('hello', tr('hello', 'xy', 'ab'))
|
||||
set encoding=utf8
|
||||
endfunc
|
||||
|
||||
" Tests for the mode() function
|
||||
@ -851,6 +881,8 @@ func Test_stridx()
|
||||
call assert_equal(-1, stridx('hello', 'l', 10))
|
||||
call assert_equal(2, stridx('hello', 'll'))
|
||||
call assert_equal(-1, stridx('hello', 'hello world'))
|
||||
call assert_fails("let n=stridx('hello', [])", 'E730:')
|
||||
call assert_fails("let n=stridx([], 'l')", 'E730:')
|
||||
endfunc
|
||||
|
||||
func Test_strridx()
|
||||
@ -867,6 +899,8 @@ func Test_strridx()
|
||||
call assert_equal(-1, strridx('hello', 'l', -1))
|
||||
call assert_equal(2, strridx('hello', 'll'))
|
||||
call assert_equal(-1, strridx('hello', 'hello world'))
|
||||
call assert_fails("let n=strridx('hello', [])", 'E730:')
|
||||
call assert_fails("let n=strridx([], 'l')", 'E730:')
|
||||
endfunc
|
||||
|
||||
func Test_match_func()
|
||||
@ -876,6 +910,11 @@ func Test_match_func()
|
||||
call assert_equal(-1, match('testing', 'ing', 8))
|
||||
call assert_equal(1, match(['vim', 'testing', 'execute'], 'ing'))
|
||||
call assert_equal(-1, match(['vim', 'testing', 'execute'], 'img'))
|
||||
call assert_fails("let x=match('vim', [])", 'E730:')
|
||||
call assert_equal(3, match(['a', 'b', 'c', 'a'], 'a', 1))
|
||||
call assert_equal(-1, match(['a', 'b', 'c', 'a'], 'a', 5))
|
||||
call assert_equal(4, match('testing', 'ing', -1))
|
||||
call assert_fails("let x=match('testing', 'ing', 0, [])", 'E745:')
|
||||
endfunc
|
||||
|
||||
func Test_matchend()
|
||||
@ -982,6 +1021,7 @@ func Test_byte2line_line2byte()
|
||||
bw!
|
||||
endfunc
|
||||
|
||||
" Test for byteidx() and byteidxcomp() functions
|
||||
func Test_byteidx()
|
||||
let a = '.é.' " one char of two bytes
|
||||
call assert_equal(0, byteidx(a, 0))
|
||||
@ -1001,6 +1041,7 @@ func Test_byteidx()
|
||||
call assert_equal(4, b->byteidx(2))
|
||||
call assert_equal(5, b->byteidx(3))
|
||||
call assert_equal(-1, b->byteidx(4))
|
||||
call assert_fails("call byteidx([], 0)", 'E730:')
|
||||
|
||||
call assert_equal(0, b->byteidxcomp(0))
|
||||
call assert_equal(1, b->byteidxcomp(1))
|
||||
@ -1008,6 +1049,7 @@ func Test_byteidx()
|
||||
call assert_equal(4, b->byteidxcomp(3))
|
||||
call assert_equal(5, b->byteidxcomp(4))
|
||||
call assert_equal(-1, b->byteidxcomp(5))
|
||||
call assert_fails("call byteidxcomp([], 0)", 'E730:')
|
||||
endfunc
|
||||
|
||||
" Test for charidx()
|
||||
@ -1230,6 +1272,22 @@ func Test_col()
|
||||
xunmap <F2>
|
||||
delfunc T
|
||||
|
||||
" Test for the visual line start and end marks '< and '>
|
||||
call setline(1, ['one', 'one two', 'one two three'])
|
||||
"normal! ggVG
|
||||
call feedkeys("ggVG\<Esc>", 'xt')
|
||||
call assert_equal(1, col("'<"))
|
||||
call assert_equal(14, col("'>"))
|
||||
" Delete the last line of the visually selected region
|
||||
$d
|
||||
call assert_notequal(14, col("'>"))
|
||||
|
||||
" Test with 'virtualedit'
|
||||
set virtualedit=all
|
||||
call cursor(1, 10)
|
||||
call assert_equal(4, col('.'))
|
||||
set virtualedit&
|
||||
|
||||
bw!
|
||||
endfunc
|
||||
|
||||
@ -1763,7 +1821,7 @@ func Test_confirm()
|
||||
call assert_equal(2, a)
|
||||
|
||||
" confirm() should return 0 when pressing CTRL-C.
|
||||
call feedkeys("\<C-c>", 'L')
|
||||
call feedkeys("\<C-C>", 'L')
|
||||
let a = confirm('Are you sure?', "&Yes\n&No")
|
||||
call assert_equal(0, a)
|
||||
|
||||
@ -1871,6 +1929,9 @@ endfunc
|
||||
func Test_char2nr()
|
||||
call assert_equal(12354, char2nr('あ', 1))
|
||||
call assert_equal(120, 'x'->char2nr())
|
||||
" set encoding=latin1
|
||||
call assert_equal(120, 'x'->char2nr())
|
||||
set encoding=utf-8
|
||||
endfunc
|
||||
|
||||
func Test_charclass()
|
||||
@ -2043,6 +2104,7 @@ func Test_range()
|
||||
|
||||
" index()
|
||||
call assert_equal(1, index(range(1, 5), 2))
|
||||
call assert_fails("echo index([1, 2], 1, [])", 'E745:')
|
||||
|
||||
" inputlist()
|
||||
call feedkeys(":let result = inputlist(range(10))\<CR>1\<CR>", 'x')
|
||||
@ -2204,6 +2266,11 @@ func Test_range()
|
||||
|
||||
" uniq()
|
||||
call assert_equal([0, 1, 2, 3, 4], uniq(range(5)))
|
||||
|
||||
" errors
|
||||
call assert_fails('let x=range(2, 8, 0)', 'E726:')
|
||||
call assert_fails('let x=range(3, 1)', 'E727:')
|
||||
call assert_fails('let x=range(1, 3, -2)', 'E727:')
|
||||
endfunc
|
||||
|
||||
func Test_garbagecollect_now_fails()
|
||||
@ -2255,6 +2322,13 @@ func Test_nr2char()
|
||||
call assert_equal("\x80\xfc\b" .. nr2char(0x40000000), eval('"\<M-' .. nr2char(0x40000000) .. '>"'))
|
||||
endfunc
|
||||
|
||||
" Test for screenattr(), screenchar() and screenchars() functions
|
||||
func Test_screen_functions()
|
||||
call assert_equal(-1, screenattr(-1, -1))
|
||||
call assert_equal(-1, screenchar(-1, -1))
|
||||
call assert_equal([], screenchars(-1, -1))
|
||||
endfunc
|
||||
|
||||
" Test for getcurpos() and setpos()
|
||||
func Test_getcurpos_setpos()
|
||||
new
|
||||
|
@ -341,6 +341,7 @@ func Test_dict_deepcopy()
|
||||
let l[1] = l2
|
||||
let l3 = deepcopy(l2)
|
||||
call assert_true(l3[1] is l3[2])
|
||||
call assert_fails("call deepcopy([1, 2], 2)", 'E474:')
|
||||
endfunc
|
||||
|
||||
" Locked variables
|
||||
@ -420,6 +421,11 @@ func Test_list_locked_var()
|
||||
call assert_equal(expected[depth][u][1], ps)
|
||||
endfor
|
||||
endfor
|
||||
call assert_fails("let x=islocked('a b')", 'E488:')
|
||||
let mylist = [1, 2, 3]
|
||||
call assert_fails("let x = islocked('mylist[1:2]')", 'E786:')
|
||||
let mydict = {'k' : 'v'}
|
||||
call assert_fails("let x = islocked('mydict.a')", 'E716:')
|
||||
endfunc
|
||||
|
||||
" Unletting locked variables
|
||||
@ -736,6 +742,8 @@ func Test_str_split()
|
||||
call assert_equal(['aa', '', 'bb', 'cc', ''], split('aa,,bb, cc,', ',\s*', 1))
|
||||
call assert_equal(['a', 'b', 'c'], split('abc', '\zs'))
|
||||
call assert_equal(['', 'a', '', 'b', '', 'c', ''], split('abc', '\zs', 1))
|
||||
call assert_fails("call split('abc', [])", 'E730:')
|
||||
call assert_fails("call split('abc', 'b', [])", 'E745:')
|
||||
endfunc
|
||||
|
||||
" compare recursively linked list and dict
|
||||
|
@ -100,6 +100,8 @@ func Test_setpos()
|
||||
call setpos('.', [0, 1, -1, 0])
|
||||
call assert_equal([2, 2], [line('.'), col('.')])
|
||||
|
||||
call assert_fails("call setpos('ab', [0, 1, 1, 0])", 'E474:')
|
||||
|
||||
bwipe!
|
||||
call win_gotoid(twowin)
|
||||
bwipe!
|
||||
|
@ -82,6 +82,9 @@ func Test_partial_dict()
|
||||
|
||||
let dict = {"tr": function('tr', ['hello', 'h', 'H'])}
|
||||
call assert_equal("Hello", dict.tr())
|
||||
|
||||
call assert_fails("let F=function('setloclist', 10)", "E923:")
|
||||
call assert_fails("let F=function('setloclist', [], [])", "E922:")
|
||||
endfunc
|
||||
|
||||
func Test_partial_implicit()
|
||||
@ -354,3 +357,5 @@ func Test_compare_partials()
|
||||
call assert_true(F1 isnot# F1d1) " Partial /= non-partial
|
||||
call assert_true(d1.f1 isnot# d1.f1) " handle_subscript creates new partial each time
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab
|
||||
|
@ -263,8 +263,16 @@ func Test_get_register()
|
||||
call assert_equal('', getreg("\<C-F>"))
|
||||
call assert_equal('', getreg("\<C-W>"))
|
||||
call assert_equal('', getreg("\<C-L>"))
|
||||
" Change the last used register to '"' for the next test
|
||||
normal! ""yy
|
||||
let @" = 'happy'
|
||||
call assert_equal('happy', getreg())
|
||||
call assert_equal('happy', getreg(''))
|
||||
|
||||
call assert_equal('', getregtype('!'))
|
||||
call assert_fails('echo getregtype([])', 'E730:')
|
||||
call assert_equal('v', getregtype())
|
||||
call assert_equal('v', getregtype(''))
|
||||
|
||||
" Test for inserting an invalid register content
|
||||
call assert_beeps('exe "normal i\<C-R>!"')
|
||||
@ -349,6 +357,12 @@ func Test_set_register()
|
||||
normal 0".gP
|
||||
call assert_equal('abcabcabc', getline(1))
|
||||
|
||||
let @"=''
|
||||
call setreg('', '1')
|
||||
call assert_equal('1', @")
|
||||
call setreg('@', '2')
|
||||
call assert_equal('2', @")
|
||||
|
||||
enew!
|
||||
endfunc
|
||||
|
||||
|
@ -1430,3 +1430,5 @@ let g:test_data_aff_sal = [
|
||||
\"SAL ZZ- _",
|
||||
\"SAL Z S",
|
||||
\ ]
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab
|
||||
|
@ -453,6 +453,11 @@ func Test_substitute_errors()
|
||||
setl nomodifiable
|
||||
call assert_fails('s/foo/bar/', 'E21:')
|
||||
|
||||
call assert_fails("let s=substitute([], 'a', 'A', 'g')", 'E730:')
|
||||
call assert_fails("let s=substitute('abcda', [], 'A', 'g')", 'E730:')
|
||||
call assert_fails("let s=substitute('abcda', 'a', [], 'g')", 'E730:')
|
||||
call assert_fails("let s=substitute('abcda', 'a', 'A', [])", 'E730:')
|
||||
|
||||
bwipe!
|
||||
endfunc
|
||||
|
||||
|
@ -623,6 +623,8 @@ func Test_synstack_synIDtrans()
|
||||
call assert_equal(['cComment', 'cTodo'], map(synstack(line("."), col(".")), 'synIDattr(v:val, "name")'))
|
||||
call assert_equal(['Comment', 'Todo'], map(synstack(line("."), col(".")), 'synIDattr(synIDtrans(v:val), "name")'))
|
||||
|
||||
call assert_fails("let n=synIDtrans([])", 'E745:')
|
||||
|
||||
syn clear
|
||||
bw!
|
||||
endfunc
|
||||
|
@ -36,6 +36,8 @@ func Test_taglist()
|
||||
call assert_equal('d', cmd[0]['kind'])
|
||||
call assert_equal('call cursor(3, 4)', cmd[0]['cmd'])
|
||||
|
||||
call assert_fails("let l=taglist([])", 'E730:')
|
||||
|
||||
call delete('Xtags')
|
||||
set tags&
|
||||
bwipe
|
||||
|
@ -21,6 +21,8 @@ func Test_strchars()
|
||||
call assert_equal(exp[i][1], inp[i]->strchars(0))
|
||||
call assert_equal(exp[i][2], strchars(inp[i], 1))
|
||||
endfor
|
||||
call assert_fails("let v=strchars('abc', [])", 'E474:')
|
||||
call assert_fails("let v=strchars('abc', 2)", 'E474:')
|
||||
endfunc
|
||||
|
||||
" Test for customlist completion
|
||||
|
@ -379,6 +379,8 @@ func Test_vartabs_shiftwidth()
|
||||
let lines = ScreenLines([1, 3], winwidth(0))
|
||||
call s:compare_lines(expect4, lines)
|
||||
|
||||
call assert_fails('call shiftwidth([])', 'E745:')
|
||||
|
||||
" cleanup
|
||||
bw!
|
||||
bw!
|
||||
|
@ -542,6 +542,7 @@ func Test_window_newtab()
|
||||
call assert_equal(2, tabpagenr('$'))
|
||||
call assert_equal(['Xb', 'Xa'], map(tabpagebuflist(1), 'bufname(v:val)'))
|
||||
call assert_equal(['Xc' ], map(2->tabpagebuflist(), 'bufname(v:val)'))
|
||||
call assert_equal(['Xc' ], map(tabpagebuflist(), 'bufname(v:val)'))
|
||||
|
||||
%bw!
|
||||
endfunc
|
||||
|
Loading…
Reference in New Issue
Block a user