mirror of
https://github.com/neovim/neovim.git
synced 2026-01-19 03:29:29 +10:00
Adds method call support for all functions in the patch, but it cannot be fully ported due to missing tests for: - getcwd(): requires chdir() and Test_chdir_func() from v8.1.1291. Note that the method call tests for getreg() and getregtype() were removed in v8.2.1547, which has already been ported, but doesn't seem to have been replaced with a new test... This patch also makes getchangelist()'s argument optional (defaults to the current buffer). eval.txt includes a typo for gettabwinvar(), which is fixed in v8.1.1952.
156 lines
4.3 KiB
VimL
156 lines
4.3 KiB
VimL
" Tests for setbufline(), getbufline(), appendbufline(), deletebufline()
|
|
|
|
source shared.vim
|
|
source screendump.vim
|
|
|
|
func Test_setbufline_getbufline()
|
|
new
|
|
let b = bufnr('%')
|
|
hide
|
|
call assert_equal(0, setbufline(b, 1, ['foo', 'bar']))
|
|
call assert_equal(['foo'], getbufline(b, 1))
|
|
call assert_equal(['bar'], getbufline(b, '$'))
|
|
call assert_equal(['foo', 'bar'], getbufline(b, 1, 2))
|
|
exe "bd!" b
|
|
call assert_equal([], getbufline(b, 1, 2))
|
|
|
|
split Xtest
|
|
call setline(1, ['a', 'b', 'c'])
|
|
let b = bufnr('%')
|
|
wincmd w
|
|
call assert_equal(1, setbufline(b, 5, ['x']))
|
|
call assert_equal(1, setbufline(1234, 1, ['x']))
|
|
call assert_equal(0, setbufline(b, 4, ['d', 'e']))
|
|
call assert_equal(['c'], b->getbufline(3))
|
|
call assert_equal(['d'], getbufline(b, 4))
|
|
call assert_equal(['e'], getbufline(b, 5))
|
|
call assert_equal([], getbufline(b, 6))
|
|
exe "bwipe! " . b
|
|
endfunc
|
|
|
|
func Test_setbufline_getbufline_fold()
|
|
split Xtest
|
|
setlocal foldmethod=expr foldexpr=0
|
|
let b = bufnr('%')
|
|
new
|
|
call assert_equal(0, setbufline(b, 1, ['foo', 'bar']))
|
|
call assert_equal(['foo'], getbufline(b, 1))
|
|
call assert_equal(['bar'], getbufline(b, 2))
|
|
call assert_equal(['foo', 'bar'], getbufline(b, 1, 2))
|
|
exe "bwipe!" b
|
|
bwipe!
|
|
endfunc
|
|
|
|
func Test_setbufline_getbufline_fold_tab()
|
|
split Xtest
|
|
setlocal foldmethod=expr foldexpr=0
|
|
let b = bufnr('%')
|
|
tab new
|
|
call assert_equal(0, setbufline(b, 1, ['foo', 'bar']))
|
|
call assert_equal(['foo'], getbufline(b, 1))
|
|
call assert_equal(['bar'], getbufline(b, 2))
|
|
call assert_equal(['foo', 'bar'], getbufline(b, 1, 2))
|
|
exe "bwipe!" b
|
|
bwipe!
|
|
endfunc
|
|
|
|
func Test_setline_startup()
|
|
let cmd = GetVimCommand('Xscript')
|
|
if cmd == ''
|
|
return
|
|
endif
|
|
call writefile(['call setline(1, "Hello")', 'silent w Xtest', 'q!'], 'Xscript')
|
|
call system(cmd)
|
|
call assert_equal(['Hello'], readfile('Xtest'))
|
|
|
|
call delete('Xscript')
|
|
call delete('Xtest')
|
|
endfunc
|
|
|
|
func Test_appendbufline()
|
|
new
|
|
let b = bufnr('%')
|
|
hide
|
|
call assert_equal(0, appendbufline(b, 0, ['foo', 'bar']))
|
|
call assert_equal(['foo'], getbufline(b, 1))
|
|
call assert_equal(['bar'], getbufline(b, 2))
|
|
call assert_equal(['foo', 'bar'], getbufline(b, 1, 2))
|
|
exe "bd!" b
|
|
call assert_equal([], getbufline(b, 1, 2))
|
|
|
|
split Xtest
|
|
call setline(1, ['a', 'b', 'c'])
|
|
let b = bufnr('%')
|
|
wincmd w
|
|
call assert_equal(1, appendbufline(b, -1, ['x']))
|
|
call assert_equal(1, appendbufline(b, 4, ['x']))
|
|
call assert_equal(1, appendbufline(1234, 1, ['x']))
|
|
call assert_equal(0, appendbufline(b, 3, ['d', 'e']))
|
|
call assert_equal(['c'], getbufline(b, 3))
|
|
call assert_equal(['d'], getbufline(b, 4))
|
|
call assert_equal(['e'], getbufline(b, 5))
|
|
call assert_equal([], getbufline(b, 6))
|
|
exe "bwipe! " . b
|
|
endfunc
|
|
|
|
func Test_deletebufline()
|
|
new
|
|
let b = bufnr('%')
|
|
call setline(1, ['aaa', 'bbb', 'ccc'])
|
|
hide
|
|
call assert_equal(0, deletebufline(b, 2))
|
|
call assert_equal(['aaa', 'ccc'], getbufline(b, 1, 2))
|
|
call assert_equal(0, deletebufline(b, 2, 8))
|
|
call assert_equal(['aaa'], getbufline(b, 1, 2))
|
|
exe "bd!" b
|
|
call assert_equal(1, b->deletebufline(1))
|
|
|
|
call assert_equal(1, deletebufline(-1, 1))
|
|
|
|
split Xtest
|
|
call setline(1, ['a', 'b', 'c'])
|
|
call cursor(line('$'), 1)
|
|
let b = bufnr('%')
|
|
wincmd w
|
|
call assert_equal(1, deletebufline(b, 4))
|
|
call assert_equal(0, deletebufline(b, 1))
|
|
call assert_equal(['b', 'c'], getbufline(b, 1, 2))
|
|
exe "bwipe! " . b
|
|
|
|
edit XbufOne
|
|
let one = bufnr()
|
|
call setline(1, ['a', 'b', 'c'])
|
|
setlocal nomodifiable
|
|
split XbufTwo
|
|
let two = bufnr()
|
|
call assert_fails('call deletebufline(one, 1)', 'E21:')
|
|
call assert_equal(two, bufnr())
|
|
bwipe! XbufTwo
|
|
bwipe! XbufOne
|
|
endfunc
|
|
|
|
func Test_appendbufline_redraw()
|
|
if !CanRunVimInTerminal()
|
|
throw 'Skipped: cannot make screendumps'
|
|
endif
|
|
let lines =<< trim END
|
|
new foo
|
|
let winnr = 'foo'->bufwinnr()
|
|
let buf = bufnr('foo')
|
|
wincmd p
|
|
call appendbufline(buf, '$', range(1,200))
|
|
exe winnr .. 'wincmd w'
|
|
norm! G
|
|
wincmd p
|
|
call deletebufline(buf, 1, '$')
|
|
call appendbufline(buf, '$', 'Hello Vim world...')
|
|
END
|
|
call writefile(lines, 'XscriptMatchCommon')
|
|
let buf = RunVimInTerminal('-S XscriptMatchCommon', #{rows: 10})
|
|
call term_wait(buf)
|
|
call VerifyScreenDump(buf, 'Test_appendbufline_1', {})
|
|
|
|
call StopVimInTerminal(buf)
|
|
call delete('XscriptMatchCommon')
|
|
endfunc
|