2020-02-11 22:04:02 +01:00
|
|
|
" Tests for Vim buffer
|
|
|
|
|
|
|
|
" Test for the :bunload command with an offset
|
|
|
|
func Test_bunload_with_offset()
|
|
|
|
%bwipe!
|
|
|
|
call writefile(['B1'], 'b1')
|
|
|
|
call writefile(['B2'], 'b2')
|
|
|
|
call writefile(['B3'], 'b3')
|
|
|
|
call writefile(['B4'], 'b4')
|
|
|
|
|
|
|
|
" Load four buffers. Unload the second and third buffers and then
|
|
|
|
" execute .+3bunload to unload the last buffer.
|
|
|
|
edit b1
|
|
|
|
new b2
|
|
|
|
new b3
|
|
|
|
new b4
|
|
|
|
|
|
|
|
bunload b2
|
|
|
|
bunload b3
|
|
|
|
exe bufwinnr('b1') . 'wincmd w'
|
|
|
|
.+3bunload
|
|
|
|
call assert_equal(0, getbufinfo('b4')[0].loaded)
|
|
|
|
call assert_equal('b1',
|
|
|
|
\ fnamemodify(getbufinfo({'bufloaded' : 1})[0].name, ':t'))
|
|
|
|
|
|
|
|
" Load four buffers. Unload the third and fourth buffers. Execute .+3bunload
|
|
|
|
" and check whether the second buffer is unloaded.
|
|
|
|
ball
|
|
|
|
bunload b3
|
|
|
|
bunload b4
|
|
|
|
exe bufwinnr('b1') . 'wincmd w'
|
|
|
|
.+3bunload
|
|
|
|
call assert_equal(0, getbufinfo('b2')[0].loaded)
|
|
|
|
call assert_equal('b1',
|
|
|
|
\ fnamemodify(getbufinfo({'bufloaded' : 1})[0].name, ':t'))
|
|
|
|
|
|
|
|
" Load four buffers. Unload the second and third buffers and from the last
|
|
|
|
" buffer execute .-3bunload to unload the first buffer.
|
|
|
|
ball
|
|
|
|
bunload b2
|
|
|
|
bunload b3
|
|
|
|
exe bufwinnr('b4') . 'wincmd w'
|
|
|
|
.-3bunload
|
|
|
|
call assert_equal(0, getbufinfo('b1')[0].loaded)
|
|
|
|
call assert_equal('b4',
|
|
|
|
\ fnamemodify(getbufinfo({'bufloaded' : 1})[0].name, ':t'))
|
|
|
|
|
|
|
|
" Load four buffers. Unload the first and second buffers. Execute .-3bunload
|
|
|
|
" from the last buffer and check whether the third buffer is unloaded.
|
|
|
|
ball
|
|
|
|
bunload b1
|
|
|
|
bunload b2
|
|
|
|
exe bufwinnr('b4') . 'wincmd w'
|
|
|
|
.-3bunload
|
|
|
|
call assert_equal(0, getbufinfo('b3')[0].loaded)
|
|
|
|
call assert_equal('b4',
|
|
|
|
\ fnamemodify(getbufinfo({'bufloaded' : 1})[0].name, ':t'))
|
|
|
|
|
|
|
|
%bwipe!
|
|
|
|
call delete('b1')
|
|
|
|
call delete('b2')
|
|
|
|
call delete('b3')
|
|
|
|
call delete('b4')
|
2020-02-16 13:33:56 +01:00
|
|
|
|
|
|
|
call assert_fails('1,4bunload', 'E16:')
|
|
|
|
call assert_fails(',100bunload', 'E16:')
|
|
|
|
|
|
|
|
" Use a try-catch for this test. When assert_fails() is used for this
|
|
|
|
" test, the command fails with E515: instead of E90:
|
|
|
|
let caught_E90 = 0
|
|
|
|
try
|
|
|
|
$bunload
|
|
|
|
catch /E90:/
|
|
|
|
let caught_E90 = 1
|
|
|
|
endtry
|
|
|
|
call assert_equal(1, caught_E90)
|
|
|
|
call assert_fails('$bunload', 'E515:')
|
|
|
|
endfunc
|
|
|
|
|
|
|
|
" Test for :buffer, :bnext, :bprevious, :brewind, :blast and :bmodified
|
|
|
|
" commands
|
|
|
|
func Test_buflist_browse()
|
|
|
|
%bwipe!
|
|
|
|
call assert_fails('buffer 1000', 'E86:')
|
|
|
|
|
|
|
|
call writefile(['foo1', 'foo2', 'foo3', 'foo4'], 'Xfile1')
|
|
|
|
call writefile(['bar1', 'bar2', 'bar3', 'bar4'], 'Xfile2')
|
|
|
|
call writefile(['baz1', 'baz2', 'baz3', 'baz4'], 'Xfile3')
|
|
|
|
edit Xfile1
|
|
|
|
let b1 = bufnr()
|
|
|
|
edit Xfile2
|
|
|
|
let b2 = bufnr()
|
|
|
|
edit +/baz4 Xfile3
|
|
|
|
let b3 = bufnr()
|
|
|
|
|
|
|
|
call assert_fails('buffer ' .. b1 .. ' abc', 'E488:')
|
|
|
|
call assert_equal(b3, bufnr())
|
|
|
|
call assert_equal(4, line('.'))
|
|
|
|
exe 'buffer +/bar2 ' .. b2
|
|
|
|
call assert_equal(b2, bufnr())
|
|
|
|
call assert_equal(2, line('.'))
|
|
|
|
exe 'buffer +/bar1'
|
|
|
|
call assert_equal(b2, bufnr())
|
|
|
|
call assert_equal(1, line('.'))
|
|
|
|
|
|
|
|
brewind +/foo3
|
|
|
|
call assert_equal(b1, bufnr())
|
|
|
|
call assert_equal(3, line('.'))
|
|
|
|
|
|
|
|
blast +/baz2
|
|
|
|
call assert_equal(b3, bufnr())
|
|
|
|
call assert_equal(2, line('.'))
|
|
|
|
|
|
|
|
bprevious +/bar4
|
|
|
|
call assert_equal(b2, bufnr())
|
|
|
|
call assert_equal(4, line('.'))
|
|
|
|
|
|
|
|
bnext +/baz3
|
|
|
|
call assert_equal(b3, bufnr())
|
|
|
|
call assert_equal(3, line('.'))
|
|
|
|
|
|
|
|
call assert_fails('bmodified', 'E84:')
|
|
|
|
call setbufvar(b2, '&modified', 1)
|
|
|
|
exe 'bmodified +/bar3'
|
|
|
|
call assert_equal(b2, bufnr())
|
|
|
|
call assert_equal(3, line('.'))
|
|
|
|
|
|
|
|
" With no listed buffers in the list, :bnext and :bprev should fail
|
|
|
|
%bwipe!
|
|
|
|
set nobuflisted
|
|
|
|
call assert_fails('bnext', 'E85:')
|
|
|
|
call assert_fails('bprev', 'E85:')
|
|
|
|
set buflisted
|
|
|
|
|
|
|
|
call assert_fails('sandbox bnext', 'E48:')
|
|
|
|
|
|
|
|
call delete('Xfile1')
|
|
|
|
call delete('Xfile2')
|
|
|
|
call delete('Xfile3')
|
|
|
|
%bwipe!
|
|
|
|
endfunc
|
|
|
|
|
|
|
|
" Test for :bdelete
|
|
|
|
func Test_bdelete_cmd()
|
|
|
|
%bwipe!
|
|
|
|
call assert_fails('bdelete 5', 'E516:')
|
|
|
|
|
|
|
|
" Deleting a unlisted and unloaded buffer
|
|
|
|
edit Xfile1
|
|
|
|
let bnr = bufnr()
|
|
|
|
set nobuflisted
|
|
|
|
enew
|
|
|
|
call assert_fails('bdelete ' .. bnr, 'E516:')
|
|
|
|
%bwipe!
|
2020-02-11 22:04:02 +01:00
|
|
|
endfunc
|
|
|
|
|
|
|
|
" vim: shiftwidth=2 sts=2 expandtab
|