1b5ae48e9SBram Moolenaar" Tests for the getbufinfo(), getwininfo() and gettabinfo() functions 2b5ae48e9SBram Moolenaar 3b5ae48e9SBram Moolenaarfunction Test_getbufwintabinfo() 4b5ae48e9SBram Moolenaar edit Xtestfile1 5b5ae48e9SBram Moolenaar edit Xtestfile2 6b5ae48e9SBram Moolenaar let buflist = getbufinfo() 7b5ae48e9SBram Moolenaar call assert_equal(2, len(buflist)) 8b5ae48e9SBram Moolenaar call assert_match('Xtestfile1', buflist[0].name) 9b5ae48e9SBram Moolenaar call assert_match('Xtestfile2', getbufinfo('Xtestfile2')[0].name) 10b5ae48e9SBram Moolenaar call assert_equal([], getbufinfo(2016)) 11b5ae48e9SBram Moolenaar edit Xtestfile1 12b5ae48e9SBram Moolenaar hide edit Xtestfile2 13b5ae48e9SBram Moolenaar hide enew 14b5ae48e9SBram Moolenaar call assert_equal(3, len(getbufinfo({'bufloaded':1}))) 15b5ae48e9SBram Moolenaar 16386600f0SBram Moolenaar set tabstop&vim 17386600f0SBram Moolenaar let b:editor = 'vim' 18386600f0SBram Moolenaar let l = getbufinfo('%') 1933928837SBram Moolenaar call assert_equal(bufnr('%'), l[0].bufnr) 20386600f0SBram Moolenaar call assert_equal('vim', l[0].variables.editor) 21e49fbff3SBram Moolenaar call assert_notequal(-1, index(l[0].windows, '%'->bufwinid())) 22386600f0SBram Moolenaar 238e6a31dfSBram Moolenaar " Test for getbufinfo() with 'bufmodified' 248e6a31dfSBram Moolenaar call assert_equal(0, len(getbufinfo({'bufmodified' : 1}))) 258e6a31dfSBram Moolenaar call setbufline('Xtestfile1', 1, ["Line1"]) 268e6a31dfSBram Moolenaar let l = getbufinfo({'bufmodified' : 1}) 278e6a31dfSBram Moolenaar call assert_equal(1, len(l)) 288e6a31dfSBram Moolenaar call assert_equal(bufnr('Xtestfile1'), l[0].bufnr) 298e6a31dfSBram Moolenaar 30386600f0SBram Moolenaar if has('signs') 31386600f0SBram Moolenaar call append(0, ['Linux', 'Windows', 'Mac']) 32386600f0SBram Moolenaar sign define Mark text=>> texthl=Search 33386600f0SBram Moolenaar exe "sign place 2 line=3 name=Mark buffer=" . bufnr('%') 34386600f0SBram Moolenaar let l = getbufinfo('%') 35386600f0SBram Moolenaar call assert_equal(2, l[0].signs[0].id) 36386600f0SBram Moolenaar call assert_equal(3, l[0].signs[0].lnum) 37386600f0SBram Moolenaar call assert_equal('Mark', l[0].signs[0].name) 38386600f0SBram Moolenaar sign unplace * 39386600f0SBram Moolenaar sign undefine Mark 40386600f0SBram Moolenaar enew! 41386600f0SBram Moolenaar endif 42386600f0SBram Moolenaar 43b5ae48e9SBram Moolenaar only 44b5ae48e9SBram Moolenaar let w1_id = win_getid() 45b5ae48e9SBram Moolenaar new 46b5ae48e9SBram Moolenaar let w2_id = win_getid() 47b5ae48e9SBram Moolenaar tabnew | let w3_id = win_getid() 48b5ae48e9SBram Moolenaar new | let w4_id = win_getid() 49b6959a8eSBram Moolenaar vert new | let w5_id = win_getid() 50*aad222c9SBram Moolenaar eval 'green'->setwinvar(0, 'signal') 51b5ae48e9SBram Moolenaar tabfirst 52b5ae48e9SBram Moolenaar let winlist = getwininfo() 53b5ae48e9SBram Moolenaar call assert_equal(5, len(winlist)) 54b6959a8eSBram Moolenaar call assert_equal(winwidth(1), winlist[0].width) 557132ddc1SBram Moolenaar call assert_equal(1, winlist[0].wincol) 567132ddc1SBram Moolenaar " tabline adds one row in terminal, not in GUI 577132ddc1SBram Moolenaar let tablineheight = winlist[0].winrow == 2 ? 1 : 0 587132ddc1SBram Moolenaar call assert_equal(tablineheight + 1, winlist[0].winrow) 59b6959a8eSBram Moolenaar 6033928837SBram Moolenaar call assert_equal(winbufnr(2), winlist[1].bufnr) 61386600f0SBram Moolenaar call assert_equal(winheight(2), winlist[1].height) 627132ddc1SBram Moolenaar call assert_equal(1, winlist[1].wincol) 637132ddc1SBram Moolenaar call assert_equal(tablineheight + winheight(1) + 2, winlist[1].winrow) 64b6959a8eSBram Moolenaar 6533928837SBram Moolenaar call assert_equal(1, winlist[2].winnr) 667132ddc1SBram Moolenaar call assert_equal(tablineheight + 1, winlist[2].winrow) 677132ddc1SBram Moolenaar call assert_equal(1, winlist[2].wincol) 68b6959a8eSBram Moolenaar 697132ddc1SBram Moolenaar call assert_equal(winlist[2].width + 2, winlist[3].wincol) 707132ddc1SBram Moolenaar call assert_equal(1, winlist[4].wincol) 71b6959a8eSBram Moolenaar 72b6959a8eSBram Moolenaar call assert_equal(1, winlist[0].tabnr) 73b6959a8eSBram Moolenaar call assert_equal(1, winlist[1].tabnr) 74b6959a8eSBram Moolenaar call assert_equal(2, winlist[2].tabnr) 7533928837SBram Moolenaar call assert_equal(2, winlist[3].tabnr) 76b6959a8eSBram Moolenaar call assert_equal(2, winlist[4].tabnr) 77b6959a8eSBram Moolenaar 78386600f0SBram Moolenaar call assert_equal('green', winlist[2].variables.signal) 79386600f0SBram Moolenaar call assert_equal(w4_id, winlist[3].winid) 805d69fdb7SBram Moolenaar let winfo = w5_id->getwininfo()[0] 8133928837SBram Moolenaar call assert_equal(2, winfo.tabnr) 82b5ae48e9SBram Moolenaar call assert_equal([], getwininfo(3)) 83b5ae48e9SBram Moolenaar 84386600f0SBram Moolenaar call settabvar(1, 'space', 'build') 85b5ae48e9SBram Moolenaar let tablist = gettabinfo() 86b5ae48e9SBram Moolenaar call assert_equal(2, len(tablist)) 87b5ae48e9SBram Moolenaar call assert_equal(3, len(tablist[1].windows)) 8833928837SBram Moolenaar call assert_equal(2, tablist[1].tabnr) 89386600f0SBram Moolenaar call assert_equal('build', tablist[0].variables.space) 90386600f0SBram Moolenaar call assert_equal(w2_id, tablist[0].windows[0]) 914c313b13SBram Moolenaar call assert_equal([], 3->gettabinfo()) 92b5ae48e9SBram Moolenaar 93b5ae48e9SBram Moolenaar tabonly | only 94386600f0SBram Moolenaar 95386600f0SBram Moolenaar lexpr '' 96386600f0SBram Moolenaar lopen 97386600f0SBram Moolenaar copen 98386600f0SBram Moolenaar let winlist = getwininfo() 99386600f0SBram Moolenaar call assert_false(winlist[0].quickfix) 100386600f0SBram Moolenaar call assert_false(winlist[0].loclist) 101386600f0SBram Moolenaar call assert_true(winlist[1].quickfix) 102386600f0SBram Moolenaar call assert_true(winlist[1].loclist) 103386600f0SBram Moolenaar call assert_true(winlist[2].quickfix) 104386600f0SBram Moolenaar call assert_false(winlist[2].loclist) 105386600f0SBram Moolenaar wincmd t | only 106b5ae48e9SBram Moolenaarendfunction 1073056735aSBram Moolenaar 1083056735aSBram Moolenaarfunction Test_get_buf_options() 1094c313b13SBram Moolenaar let opts = bufnr()->getbufvar('&') 1103056735aSBram Moolenaar call assert_equal(v:t_dict, type(opts)) 1113056735aSBram Moolenaar call assert_equal(8, opts.tabstop) 1123056735aSBram Moolenaarendfunc 1133056735aSBram Moolenaar 1143056735aSBram Moolenaarfunction Test_get_win_options() 115789a5c0eSBram Moolenaar if has('folding') 116789a5c0eSBram Moolenaar set foldlevel=999 117789a5c0eSBram Moolenaar endif 118789a5c0eSBram Moolenaar set list 1193056735aSBram Moolenaar let opts = getwinvar(1, '&') 1203056735aSBram Moolenaar call assert_equal(v:t_dict, type(opts)) 1213056735aSBram Moolenaar call assert_equal(0, opts.linebreak) 122789a5c0eSBram Moolenaar call assert_equal(1, opts.list) 123789a5c0eSBram Moolenaar if has('folding') 124789a5c0eSBram Moolenaar call assert_equal(999, opts.foldlevel) 125789a5c0eSBram Moolenaar endif 1263056735aSBram Moolenaar if has('signs') 1273056735aSBram Moolenaar call assert_equal('auto', opts.signcolumn) 1283056735aSBram Moolenaar endif 1293056735aSBram Moolenaar 1303056735aSBram Moolenaar let opts = gettabwinvar(1, 1, '&') 1313056735aSBram Moolenaar call assert_equal(v:t_dict, type(opts)) 1323056735aSBram Moolenaar call assert_equal(0, opts.linebreak) 133789a5c0eSBram Moolenaar call assert_equal(1, opts.list) 1343056735aSBram Moolenaar if has('signs') 1353056735aSBram Moolenaar call assert_equal('auto', opts.signcolumn) 1363056735aSBram Moolenaar endif 137789a5c0eSBram Moolenaar set list& 138789a5c0eSBram Moolenaar if has('folding') 139789a5c0eSBram Moolenaar set foldlevel=0 140789a5c0eSBram Moolenaar endif 1413056735aSBram Moolenaarendfunc 142