1b5ae48e9SBram Moolenaar" Tests for the getbufinfo(), getwininfo() and gettabinfo() functions 25a4c3082SBram Moolenaarsource check.vim 3b5ae48e9SBram Moolenaar 45a4c3082SBram Moolenaarfunc Test_getbufwintabinfo() 55a4c3082SBram Moolenaar CheckFeature quickfix 65a4c3082SBram Moolenaar 7b5ae48e9SBram Moolenaar edit Xtestfile1 8b5ae48e9SBram Moolenaar edit Xtestfile2 9b5ae48e9SBram Moolenaar let buflist = getbufinfo() 10b5ae48e9SBram Moolenaar call assert_equal(2, len(buflist)) 11b5ae48e9SBram Moolenaar call assert_match('Xtestfile1', buflist[0].name) 12b5ae48e9SBram Moolenaar call assert_match('Xtestfile2', getbufinfo('Xtestfile2')[0].name) 13b5ae48e9SBram Moolenaar call assert_equal([], getbufinfo(2016)) 14b5ae48e9SBram Moolenaar edit Xtestfile1 15b5ae48e9SBram Moolenaar hide edit Xtestfile2 16b5ae48e9SBram Moolenaar hide enew 17b5ae48e9SBram Moolenaar call assert_equal(3, len(getbufinfo({'bufloaded':1}))) 18b5ae48e9SBram Moolenaar 19386600f0SBram Moolenaar set tabstop&vim 20386600f0SBram Moolenaar let b:editor = 'vim' 21386600f0SBram Moolenaar let l = getbufinfo('%') 2233928837SBram Moolenaar call assert_equal(bufnr('%'), l[0].bufnr) 23386600f0SBram Moolenaar call assert_equal('vim', l[0].variables.editor) 24e49fbff3SBram Moolenaar call assert_notequal(-1, index(l[0].windows, '%'->bufwinid())) 25386600f0SBram Moolenaar 268e6a31dfSBram Moolenaar " Test for getbufinfo() with 'bufmodified' 278e6a31dfSBram Moolenaar call assert_equal(0, len(getbufinfo({'bufmodified' : 1}))) 288e6a31dfSBram Moolenaar call setbufline('Xtestfile1', 1, ["Line1"]) 298e6a31dfSBram Moolenaar let l = getbufinfo({'bufmodified' : 1}) 308e6a31dfSBram Moolenaar call assert_equal(1, len(l)) 318e6a31dfSBram Moolenaar call assert_equal(bufnr('Xtestfile1'), l[0].bufnr) 328e6a31dfSBram Moolenaar 33386600f0SBram Moolenaar if has('signs') 34386600f0SBram Moolenaar call append(0, ['Linux', 'Windows', 'Mac']) 35386600f0SBram Moolenaar sign define Mark text=>> texthl=Search 36386600f0SBram Moolenaar exe "sign place 2 line=3 name=Mark buffer=" . bufnr('%') 37386600f0SBram Moolenaar let l = getbufinfo('%') 38386600f0SBram Moolenaar call assert_equal(2, l[0].signs[0].id) 39386600f0SBram Moolenaar call assert_equal(3, l[0].signs[0].lnum) 40386600f0SBram Moolenaar call assert_equal('Mark', l[0].signs[0].name) 41386600f0SBram Moolenaar sign unplace * 42386600f0SBram Moolenaar sign undefine Mark 43386600f0SBram Moolenaar enew! 44386600f0SBram Moolenaar endif 45386600f0SBram Moolenaar 46b5ae48e9SBram Moolenaar only 47b5ae48e9SBram Moolenaar let w1_id = win_getid() 48b5ae48e9SBram Moolenaar new 49b5ae48e9SBram Moolenaar let w2_id = win_getid() 50b5ae48e9SBram Moolenaar tabnew | let w3_id = win_getid() 51b5ae48e9SBram Moolenaar new | let w4_id = win_getid() 52b6959a8eSBram Moolenaar vert new | let w5_id = win_getid() 53aad222c9SBram Moolenaar eval 'green'->setwinvar(0, 'signal') 54b5ae48e9SBram Moolenaar tabfirst 55b5ae48e9SBram Moolenaar let winlist = getwininfo() 56b5ae48e9SBram Moolenaar call assert_equal(5, len(winlist)) 57b6959a8eSBram Moolenaar call assert_equal(winwidth(1), winlist[0].width) 587132ddc1SBram Moolenaar call assert_equal(1, winlist[0].wincol) 597132ddc1SBram Moolenaar " tabline adds one row in terminal, not in GUI 607132ddc1SBram Moolenaar let tablineheight = winlist[0].winrow == 2 ? 1 : 0 617132ddc1SBram Moolenaar call assert_equal(tablineheight + 1, winlist[0].winrow) 62b6959a8eSBram Moolenaar 6333928837SBram Moolenaar call assert_equal(winbufnr(2), winlist[1].bufnr) 64386600f0SBram Moolenaar call assert_equal(winheight(2), winlist[1].height) 657132ddc1SBram Moolenaar call assert_equal(1, winlist[1].wincol) 667132ddc1SBram Moolenaar call assert_equal(tablineheight + winheight(1) + 2, winlist[1].winrow) 67b6959a8eSBram Moolenaar 6833928837SBram Moolenaar call assert_equal(1, winlist[2].winnr) 697132ddc1SBram Moolenaar call assert_equal(tablineheight + 1, winlist[2].winrow) 707132ddc1SBram Moolenaar call assert_equal(1, winlist[2].wincol) 71b6959a8eSBram Moolenaar 727132ddc1SBram Moolenaar call assert_equal(winlist[2].width + 2, winlist[3].wincol) 737132ddc1SBram Moolenaar call assert_equal(1, winlist[4].wincol) 74b6959a8eSBram Moolenaar 75b6959a8eSBram Moolenaar call assert_equal(1, winlist[0].tabnr) 76b6959a8eSBram Moolenaar call assert_equal(1, winlist[1].tabnr) 77b6959a8eSBram Moolenaar call assert_equal(2, winlist[2].tabnr) 7833928837SBram Moolenaar call assert_equal(2, winlist[3].tabnr) 79b6959a8eSBram Moolenaar call assert_equal(2, winlist[4].tabnr) 80b6959a8eSBram Moolenaar 81386600f0SBram Moolenaar call assert_equal('green', winlist[2].variables.signal) 82386600f0SBram Moolenaar call assert_equal(w4_id, winlist[3].winid) 835d69fdb7SBram Moolenaar let winfo = w5_id->getwininfo()[0] 8433928837SBram Moolenaar call assert_equal(2, winfo.tabnr) 85b5ae48e9SBram Moolenaar call assert_equal([], getwininfo(3)) 86b5ae48e9SBram Moolenaar 87386600f0SBram Moolenaar call settabvar(1, 'space', 'build') 88b5ae48e9SBram Moolenaar let tablist = gettabinfo() 89b5ae48e9SBram Moolenaar call assert_equal(2, len(tablist)) 90b5ae48e9SBram Moolenaar call assert_equal(3, len(tablist[1].windows)) 9133928837SBram Moolenaar call assert_equal(2, tablist[1].tabnr) 92386600f0SBram Moolenaar call assert_equal('build', tablist[0].variables.space) 93386600f0SBram Moolenaar call assert_equal(w2_id, tablist[0].windows[0]) 944c313b13SBram Moolenaar call assert_equal([], 3->gettabinfo()) 95b5ae48e9SBram Moolenaar 96b5ae48e9SBram Moolenaar tabonly | only 97386600f0SBram Moolenaar 98386600f0SBram Moolenaar lexpr '' 99386600f0SBram Moolenaar lopen 100386600f0SBram Moolenaar copen 101386600f0SBram Moolenaar let winlist = getwininfo() 102386600f0SBram Moolenaar call assert_false(winlist[0].quickfix) 103386600f0SBram Moolenaar call assert_false(winlist[0].loclist) 104386600f0SBram Moolenaar call assert_true(winlist[1].quickfix) 105386600f0SBram Moolenaar call assert_true(winlist[1].loclist) 106386600f0SBram Moolenaar call assert_true(winlist[2].quickfix) 107386600f0SBram Moolenaar call assert_false(winlist[2].loclist) 108386600f0SBram Moolenaar wincmd t | only 1095a4c3082SBram Moolenaarendfunc 1103056735aSBram Moolenaar 1113056735aSBram Moolenaarfunction Test_get_buf_options() 1124c313b13SBram Moolenaar let opts = bufnr()->getbufvar('&') 1133056735aSBram Moolenaar call assert_equal(v:t_dict, type(opts)) 1143056735aSBram Moolenaar call assert_equal(8, opts.tabstop) 1153056735aSBram Moolenaarendfunc 1163056735aSBram Moolenaar 1173056735aSBram Moolenaarfunction Test_get_win_options() 118789a5c0eSBram Moolenaar if has('folding') 119789a5c0eSBram Moolenaar set foldlevel=999 120789a5c0eSBram Moolenaar endif 121789a5c0eSBram Moolenaar set list 1223056735aSBram Moolenaar let opts = getwinvar(1, '&') 1233056735aSBram Moolenaar call assert_equal(v:t_dict, type(opts)) 1243056735aSBram Moolenaar call assert_equal(0, opts.linebreak) 125789a5c0eSBram Moolenaar call assert_equal(1, opts.list) 126789a5c0eSBram Moolenaar if has('folding') 127789a5c0eSBram Moolenaar call assert_equal(999, opts.foldlevel) 128789a5c0eSBram Moolenaar endif 1293056735aSBram Moolenaar if has('signs') 1303056735aSBram Moolenaar call assert_equal('auto', opts.signcolumn) 1313056735aSBram Moolenaar endif 1323056735aSBram Moolenaar 1333056735aSBram Moolenaar let opts = gettabwinvar(1, 1, '&') 1343056735aSBram Moolenaar call assert_equal(v:t_dict, type(opts)) 1353056735aSBram Moolenaar call assert_equal(0, opts.linebreak) 136789a5c0eSBram Moolenaar call assert_equal(1, opts.list) 1373056735aSBram Moolenaar if has('signs') 1383056735aSBram Moolenaar call assert_equal('auto', opts.signcolumn) 1393056735aSBram Moolenaar endif 140789a5c0eSBram Moolenaar set list& 141789a5c0eSBram Moolenaar if has('folding') 142789a5c0eSBram Moolenaar set foldlevel=0 143789a5c0eSBram Moolenaar endif 1443056735aSBram Moolenaarendfunc 14552410575SBram Moolenaar 14652410575SBram Moolenaarfunction Test_getbufinfo_lastused() 14752410575SBram Moolenaar call test_settime(1234567) 14852410575SBram Moolenaar edit Xtestfile1 14952410575SBram Moolenaar enew 15052410575SBram Moolenaar call test_settime(7654321) 15152410575SBram Moolenaar edit Xtestfile2 15252410575SBram Moolenaar enew 15352410575SBram Moolenaar call assert_equal(getbufinfo('Xtestfile1')[0].lastused, 1234567) 15452410575SBram Moolenaar call assert_equal(getbufinfo('Xtestfile2')[0].lastused, 7654321) 15552410575SBram Moolenaar call test_settime(0) 15652410575SBram Moolenaarendfunc 157*a9e9679dSBram Moolenaar 158*a9e9679dSBram Moolenaarfunc Test_getbufinfo_lines() 159*a9e9679dSBram Moolenaar new Xfoo 160*a9e9679dSBram Moolenaar call setline(1, ['a', 'bc', 'd']) 161*a9e9679dSBram Moolenaar let bn = bufnr('%') 162*a9e9679dSBram Moolenaar hide 163*a9e9679dSBram Moolenaar call assert_equal(3, getbufinfo(bn)[0]["linecount"]) 164*a9e9679dSBram Moolenaar edit Xfoo 165*a9e9679dSBram Moolenaar bw! 166*a9e9679dSBram Moolenaarendfunc 167