mirror of
https://github.com/vim/vim.git
synced 2025-09-26 04:04:07 -04:00
patch 8.2.0448: various functions not properly tested
Problem: Various functions not properly tested. Solution: Add more tests, especially for failures. (Yegappan Lakshmanan, closes #5843)
This commit is contained in:
@@ -24,8 +24,18 @@ func Test_has()
|
||||
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()
|
||||
@@ -476,6 +486,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))
|
||||
@@ -629,6 +641,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
|
||||
@@ -840,6 +861,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()
|
||||
@@ -856,6 +879,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()
|
||||
@@ -865,6 +890,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()
|
||||
@@ -971,6 +1001,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))
|
||||
@@ -990,6 +1021,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))
|
||||
@@ -997,6 +1029,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
|
||||
|
||||
func Test_count()
|
||||
@@ -1177,6 +1210,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
|
||||
|
||||
@@ -1343,6 +1392,8 @@ func Test_trim()
|
||||
|
||||
let chars = join(map(range(1, 0x20) + [0xa0], {n -> n->nr2char()}), '')
|
||||
call assert_equal("x", trim(chars . "x" . chars))
|
||||
|
||||
call assert_fails('let c=trim([])', 'E730:')
|
||||
endfunc
|
||||
|
||||
" Test for reg_recording() and reg_executing()
|
||||
@@ -1726,6 +1777,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_eventhandler()
|
||||
@@ -1931,6 +1985,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')
|
||||
@@ -2089,6 +2144,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_echoraw()
|
||||
@@ -2107,4 +2167,25 @@ func Test_echoraw()
|
||||
call delete('XTest_echoraw')
|
||||
endfunc
|
||||
|
||||
" Test for the eval() function
|
||||
func Test_eval()
|
||||
call assert_fails("call eval('5 a')", 'E488:')
|
||||
endfunc
|
||||
|
||||
" Test for the nr2char() function
|
||||
func Test_nr2char()
|
||||
set encoding=latin1
|
||||
call assert_equal('@', nr2char(64))
|
||||
set encoding=utf8
|
||||
call assert_equal('a', nr2char(97, 1))
|
||||
call assert_equal('a', nr2char(97, 0))
|
||||
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
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab
|
||||
|
Reference in New Issue
Block a user