| " Tests for the getbufinfo(), getwininfo() and gettabinfo() functions |
| |
| source check.vim |
| |
| func Test_getbufwintabinfo() |
| CheckFeature quickfix |
| |
| edit Xtestfile1 |
| edit Xtestfile2 |
| let buflist = getbufinfo() |
| call assert_equal(2, len(buflist)) |
| call assert_match('Xtestfile1', buflist[0].name) |
| call assert_match('Xtestfile2', getbufinfo('Xtestfile2')[0].name) |
| call assert_equal([], getbufinfo(2016)) |
| edit Xtestfile1 |
| hide edit Xtestfile2 |
| hide enew |
| call assert_equal(3, len(getbufinfo({'bufloaded':1}))) |
| |
| set tabstop&vim |
| let b:editor = 'vim' |
| let l = getbufinfo('%') |
| call assert_equal(bufnr('%'), l[0].bufnr) |
| call assert_equal('vim', l[0].variables.editor) |
| call assert_notequal(-1, index(l[0].windows, '%'->bufwinid())) |
| |
| let l = '%'->getbufinfo() |
| call assert_equal(bufnr('%'), l[0].bufnr) |
| |
| " Test for getbufinfo() with 'bufmodified' |
| call assert_equal(0, len(getbufinfo({'bufmodified' : 1}))) |
| call setbufline('Xtestfile1', 1, ["Line1"]) |
| let l = getbufinfo({'bufmodified' : 1}) |
| call assert_equal(1, len(l)) |
| call assert_equal(bufnr('Xtestfile1'), l[0].bufnr) |
| |
| if has('signs') |
| call append(0, ['Linux', 'Windows', 'Mac']) |
| sign define Mark text=>> texthl=Search |
| exe "sign place 2 line=3 name=Mark buffer=" . bufnr('%') |
| let l = getbufinfo('%') |
| call assert_equal(2, l[0].signs[0].id) |
| call assert_equal(3, l[0].signs[0].lnum) |
| call assert_equal('Mark', l[0].signs[0].name) |
| sign unplace * |
| sign undefine Mark |
| enew! |
| endif |
| call assert_notequal([], getbufinfo(test_null_dict())) |
| |
| only |
| let w1_id = win_getid() |
| setl foldcolumn=3 |
| new |
| let w2_id = win_getid() |
| tabnew | let w3_id = win_getid() |
| new | let w4_id = win_getid() |
| vert new | let w5_id = win_getid() |
| eval 'green'->setwinvar(0, 'signal') |
| tabfirst |
| let winlist = getwininfo() |
| call assert_equal(5, len(winlist)) |
| call assert_equal(winwidth(1), winlist[0].width) |
| call assert_equal(1, winlist[0].wincol) |
| " tabline adds one row in terminal, not in GUI |
| let tablineheight = winlist[0].winrow == 2 ? 1 : 0 |
| call assert_equal(tablineheight + 1, winlist[0].winrow) |
| |
| call assert_equal(winbufnr(2), winlist[1].bufnr) |
| call assert_equal(winheight(2), winlist[1].height) |
| call assert_equal(1, winlist[1].wincol) |
| call assert_equal(3, winlist[1].textoff) " foldcolumn |
| call assert_equal(tablineheight + winheight(1) + 2, winlist[1].winrow) |
| |
| call assert_equal(1, winlist[2].winnr) |
| call assert_equal(tablineheight + 1, winlist[2].winrow) |
| call assert_equal(1, winlist[2].wincol) |
| |
| call assert_equal(winlist[2].width + 2, winlist[3].wincol) |
| call assert_equal(1, winlist[4].wincol) |
| |
| call assert_equal(1, winlist[0].tabnr) |
| call assert_equal(1, winlist[1].tabnr) |
| call assert_equal(2, winlist[2].tabnr) |
| call assert_equal(2, winlist[3].tabnr) |
| call assert_equal(2, winlist[4].tabnr) |
| |
| call assert_equal('green', winlist[2].variables.signal) |
| call assert_equal(w4_id, winlist[3].winid) |
| let winfo = w5_id->getwininfo()[0] |
| call assert_equal(2, winfo.tabnr) |
| call assert_equal([], getwininfo(3)) |
| |
| call settabvar(1, 'space', 'build') |
| let tablist = gettabinfo() |
| call assert_equal(2, len(tablist)) |
| call assert_equal(3, len(tablist[1].windows)) |
| call assert_equal(2, tablist[1].tabnr) |
| call assert_equal('build', tablist[0].variables.space) |
| call assert_equal(w2_id, tablist[0].windows[0]) |
| call assert_equal([], 3->gettabinfo()) |
| |
| tabonly | only |
| |
| lexpr '' |
| lopen |
| copen |
| let winlist = getwininfo() |
| call assert_false(winlist[0].quickfix) |
| call assert_false(winlist[0].loclist) |
| call assert_true(winlist[1].quickfix) |
| call assert_true(winlist[1].loclist) |
| call assert_true(winlist[2].quickfix) |
| call assert_false(winlist[2].loclist) |
| wincmd t | only |
| endfunc |
| |
| function Test_get_buf_options() |
| let opts = bufnr()->getbufvar('&') |
| call assert_equal(v:t_dict, type(opts)) |
| call assert_equal(8, opts.tabstop) |
| endfunc |
| |
| function Test_get_win_options() |
| if has('folding') |
| set foldlevel=999 |
| endif |
| set list |
| let opts = getwinvar(1, '&') |
| call assert_equal(v:t_dict, type(opts)) |
| call assert_equal(0, opts.linebreak) |
| call assert_equal(1, opts.list) |
| if has('folding') |
| call assert_equal(999, opts.foldlevel) |
| endif |
| if has('signs') |
| call assert_equal('auto', opts.signcolumn) |
| endif |
| |
| let opts = gettabwinvar(1, 1, '&') |
| call assert_equal(v:t_dict, type(opts)) |
| call assert_equal(0, opts.linebreak) |
| call assert_equal(1, opts.list) |
| if has('signs') |
| call assert_equal('auto', opts.signcolumn) |
| endif |
| set list& |
| if has('folding') |
| set foldlevel=0 |
| endif |
| endfunc |
| |
| function Test_getbufinfo_lastused() |
| call test_settime(1234567) |
| edit Xtestfile1 |
| enew |
| call test_settime(7654321) |
| edit Xtestfile2 |
| enew |
| call assert_equal(getbufinfo('Xtestfile1')[0].lastused, 1234567) |
| call assert_equal(getbufinfo('Xtestfile2')[0].lastused, 7654321) |
| call test_settime(0) |
| endfunc |
| |
| func Test_getbufinfo_lines() |
| new Xfoo |
| call setline(1, ['a', 'bc', 'd']) |
| let bn = bufnr('%') |
| hide |
| call assert_equal(3, getbufinfo(bn)[0]["linecount"]) |
| edit Xfoo |
| bw! |
| endfunc |
| |
| func Test_getwininfo_au() |
| enew |
| call setline(1, range(1, 16)) |
| |
| let g:info = #{} |
| augroup T1 |
| au! |
| au WinEnter * let g:info = getwininfo(win_getid())[0] |
| augroup END |
| |
| 4split |
| " Check that calling getwininfo() from WinEnter returns fresh values for |
| " topline and botline. |
| call assert_equal(1, g:info.topline) |
| call assert_equal(4, g:info.botline) |
| close |
| |
| unlet g:info |
| augroup! T1 |
| bwipe! |
| endfunc |
| |
| " vim: shiftwidth=2 sts=2 expandtab |