1b5ae48e9SBram Moolenaar" Tests for the getbufinfo(), getwininfo() and gettabinfo() functions 2*6d91bcb4SBram Moolenaar 35a4c3082SBram Moolenaarsource check.vim 4b5ae48e9SBram Moolenaar 55a4c3082SBram Moolenaarfunc Test_getbufwintabinfo() 65a4c3082SBram Moolenaar CheckFeature quickfix 75a4c3082SBram Moolenaar 8b5ae48e9SBram Moolenaar edit Xtestfile1 9b5ae48e9SBram Moolenaar edit Xtestfile2 10b5ae48e9SBram Moolenaar let buflist = getbufinfo() 11b5ae48e9SBram Moolenaar call assert_equal(2, len(buflist)) 12b5ae48e9SBram Moolenaar call assert_match('Xtestfile1', buflist[0].name) 13b5ae48e9SBram Moolenaar call assert_match('Xtestfile2', getbufinfo('Xtestfile2')[0].name) 14b5ae48e9SBram Moolenaar call assert_equal([], getbufinfo(2016)) 15b5ae48e9SBram Moolenaar edit Xtestfile1 16b5ae48e9SBram Moolenaar hide edit Xtestfile2 17b5ae48e9SBram Moolenaar hide enew 18b5ae48e9SBram Moolenaar call assert_equal(3, len(getbufinfo({'bufloaded':1}))) 19b5ae48e9SBram Moolenaar 20386600f0SBram Moolenaar set tabstop&vim 21386600f0SBram Moolenaar let b:editor = 'vim' 22386600f0SBram Moolenaar let l = getbufinfo('%') 2333928837SBram Moolenaar call assert_equal(bufnr('%'), l[0].bufnr) 24386600f0SBram Moolenaar call assert_equal('vim', l[0].variables.editor) 25e49fbff3SBram Moolenaar call assert_notequal(-1, index(l[0].windows, '%'->bufwinid())) 26386600f0SBram Moolenaar 276434fc57SBram Moolenaar let l = '%'->getbufinfo() 286434fc57SBram Moolenaar call assert_equal(bufnr('%'), l[0].bufnr) 296434fc57SBram Moolenaar 308e6a31dfSBram Moolenaar " Test for getbufinfo() with 'bufmodified' 318e6a31dfSBram Moolenaar call assert_equal(0, len(getbufinfo({'bufmodified' : 1}))) 328e6a31dfSBram Moolenaar call setbufline('Xtestfile1', 1, ["Line1"]) 338e6a31dfSBram Moolenaar let l = getbufinfo({'bufmodified' : 1}) 348e6a31dfSBram Moolenaar call assert_equal(1, len(l)) 358e6a31dfSBram Moolenaar call assert_equal(bufnr('Xtestfile1'), l[0].bufnr) 368e6a31dfSBram Moolenaar 37386600f0SBram Moolenaar if has('signs') 38386600f0SBram Moolenaar call append(0, ['Linux', 'Windows', 'Mac']) 39386600f0SBram Moolenaar sign define Mark text=>> texthl=Search 40386600f0SBram Moolenaar exe "sign place 2 line=3 name=Mark buffer=" . bufnr('%') 41386600f0SBram Moolenaar let l = getbufinfo('%') 42386600f0SBram Moolenaar call assert_equal(2, l[0].signs[0].id) 43386600f0SBram Moolenaar call assert_equal(3, l[0].signs[0].lnum) 44386600f0SBram Moolenaar call assert_equal('Mark', l[0].signs[0].name) 45386600f0SBram Moolenaar sign unplace * 46386600f0SBram Moolenaar sign undefine Mark 47386600f0SBram Moolenaar enew! 48386600f0SBram Moolenaar endif 4992b83ccfSBram Moolenaar call assert_notequal([], getbufinfo(test_null_dict())) 50386600f0SBram Moolenaar 51b5ae48e9SBram Moolenaar only 52b5ae48e9SBram Moolenaar let w1_id = win_getid() 53b5ae48e9SBram Moolenaar new 54b5ae48e9SBram Moolenaar let w2_id = win_getid() 55b5ae48e9SBram Moolenaar tabnew | let w3_id = win_getid() 56b5ae48e9SBram Moolenaar new | let w4_id = win_getid() 57b6959a8eSBram Moolenaar vert new | let w5_id = win_getid() 58aad222c9SBram Moolenaar eval 'green'->setwinvar(0, 'signal') 59b5ae48e9SBram Moolenaar tabfirst 60b5ae48e9SBram Moolenaar let winlist = getwininfo() 61b5ae48e9SBram Moolenaar call assert_equal(5, len(winlist)) 62b6959a8eSBram Moolenaar call assert_equal(winwidth(1), winlist[0].width) 637132ddc1SBram Moolenaar call assert_equal(1, winlist[0].wincol) 647132ddc1SBram Moolenaar " tabline adds one row in terminal, not in GUI 657132ddc1SBram Moolenaar let tablineheight = winlist[0].winrow == 2 ? 1 : 0 667132ddc1SBram Moolenaar call assert_equal(tablineheight + 1, winlist[0].winrow) 67b6959a8eSBram Moolenaar 6833928837SBram Moolenaar call assert_equal(winbufnr(2), winlist[1].bufnr) 69386600f0SBram Moolenaar call assert_equal(winheight(2), winlist[1].height) 707132ddc1SBram Moolenaar call assert_equal(1, winlist[1].wincol) 717132ddc1SBram Moolenaar call assert_equal(tablineheight + winheight(1) + 2, winlist[1].winrow) 72b6959a8eSBram Moolenaar 7333928837SBram Moolenaar call assert_equal(1, winlist[2].winnr) 747132ddc1SBram Moolenaar call assert_equal(tablineheight + 1, winlist[2].winrow) 757132ddc1SBram Moolenaar call assert_equal(1, winlist[2].wincol) 76b6959a8eSBram Moolenaar 777132ddc1SBram Moolenaar call assert_equal(winlist[2].width + 2, winlist[3].wincol) 787132ddc1SBram Moolenaar call assert_equal(1, winlist[4].wincol) 79b6959a8eSBram Moolenaar 80b6959a8eSBram Moolenaar call assert_equal(1, winlist[0].tabnr) 81b6959a8eSBram Moolenaar call assert_equal(1, winlist[1].tabnr) 82b6959a8eSBram Moolenaar call assert_equal(2, winlist[2].tabnr) 8333928837SBram Moolenaar call assert_equal(2, winlist[3].tabnr) 84b6959a8eSBram Moolenaar call assert_equal(2, winlist[4].tabnr) 85b6959a8eSBram Moolenaar 86386600f0SBram Moolenaar call assert_equal('green', winlist[2].variables.signal) 87386600f0SBram Moolenaar call assert_equal(w4_id, winlist[3].winid) 885d69fdb7SBram Moolenaar let winfo = w5_id->getwininfo()[0] 8933928837SBram Moolenaar call assert_equal(2, winfo.tabnr) 90b5ae48e9SBram Moolenaar call assert_equal([], getwininfo(3)) 91b5ae48e9SBram Moolenaar 92386600f0SBram Moolenaar call settabvar(1, 'space', 'build') 93b5ae48e9SBram Moolenaar let tablist = gettabinfo() 94b5ae48e9SBram Moolenaar call assert_equal(2, len(tablist)) 95b5ae48e9SBram Moolenaar call assert_equal(3, len(tablist[1].windows)) 9633928837SBram Moolenaar call assert_equal(2, tablist[1].tabnr) 97386600f0SBram Moolenaar call assert_equal('build', tablist[0].variables.space) 98386600f0SBram Moolenaar call assert_equal(w2_id, tablist[0].windows[0]) 994c313b13SBram Moolenaar call assert_equal([], 3->gettabinfo()) 100b5ae48e9SBram Moolenaar 101b5ae48e9SBram Moolenaar tabonly | only 102386600f0SBram Moolenaar 103386600f0SBram Moolenaar lexpr '' 104386600f0SBram Moolenaar lopen 105386600f0SBram Moolenaar copen 106386600f0SBram Moolenaar let winlist = getwininfo() 107386600f0SBram Moolenaar call assert_false(winlist[0].quickfix) 108386600f0SBram Moolenaar call assert_false(winlist[0].loclist) 109386600f0SBram Moolenaar call assert_true(winlist[1].quickfix) 110386600f0SBram Moolenaar call assert_true(winlist[1].loclist) 111386600f0SBram Moolenaar call assert_true(winlist[2].quickfix) 112386600f0SBram Moolenaar call assert_false(winlist[2].loclist) 113386600f0SBram Moolenaar wincmd t | only 1145a4c3082SBram Moolenaarendfunc 1153056735aSBram Moolenaar 1163056735aSBram Moolenaarfunction Test_get_buf_options() 1174c313b13SBram Moolenaar let opts = bufnr()->getbufvar('&') 1183056735aSBram Moolenaar call assert_equal(v:t_dict, type(opts)) 1193056735aSBram Moolenaar call assert_equal(8, opts.tabstop) 1203056735aSBram Moolenaarendfunc 1213056735aSBram Moolenaar 1223056735aSBram Moolenaarfunction Test_get_win_options() 123789a5c0eSBram Moolenaar if has('folding') 124789a5c0eSBram Moolenaar set foldlevel=999 125789a5c0eSBram Moolenaar endif 126789a5c0eSBram Moolenaar set list 1273056735aSBram Moolenaar let opts = getwinvar(1, '&') 1283056735aSBram Moolenaar call assert_equal(v:t_dict, type(opts)) 1293056735aSBram Moolenaar call assert_equal(0, opts.linebreak) 130789a5c0eSBram Moolenaar call assert_equal(1, opts.list) 131789a5c0eSBram Moolenaar if has('folding') 132789a5c0eSBram Moolenaar call assert_equal(999, opts.foldlevel) 133789a5c0eSBram Moolenaar endif 1343056735aSBram Moolenaar if has('signs') 1353056735aSBram Moolenaar call assert_equal('auto', opts.signcolumn) 1363056735aSBram Moolenaar endif 1373056735aSBram Moolenaar 1383056735aSBram Moolenaar let opts = gettabwinvar(1, 1, '&') 1393056735aSBram Moolenaar call assert_equal(v:t_dict, type(opts)) 1403056735aSBram Moolenaar call assert_equal(0, opts.linebreak) 141789a5c0eSBram Moolenaar call assert_equal(1, opts.list) 1423056735aSBram Moolenaar if has('signs') 1433056735aSBram Moolenaar call assert_equal('auto', opts.signcolumn) 1443056735aSBram Moolenaar endif 145789a5c0eSBram Moolenaar set list& 146789a5c0eSBram Moolenaar if has('folding') 147789a5c0eSBram Moolenaar set foldlevel=0 148789a5c0eSBram Moolenaar endif 1493056735aSBram Moolenaarendfunc 15052410575SBram Moolenaar 15152410575SBram Moolenaarfunction Test_getbufinfo_lastused() 15252410575SBram Moolenaar call test_settime(1234567) 15352410575SBram Moolenaar edit Xtestfile1 15452410575SBram Moolenaar enew 15552410575SBram Moolenaar call test_settime(7654321) 15652410575SBram Moolenaar edit Xtestfile2 15752410575SBram Moolenaar enew 15852410575SBram Moolenaar call assert_equal(getbufinfo('Xtestfile1')[0].lastused, 1234567) 15952410575SBram Moolenaar call assert_equal(getbufinfo('Xtestfile2')[0].lastused, 7654321) 16052410575SBram Moolenaar call test_settime(0) 16152410575SBram Moolenaarendfunc 162a9e9679dSBram Moolenaar 163a9e9679dSBram Moolenaarfunc Test_getbufinfo_lines() 164a9e9679dSBram Moolenaar new Xfoo 165a9e9679dSBram Moolenaar call setline(1, ['a', 'bc', 'd']) 166a9e9679dSBram Moolenaar let bn = bufnr('%') 167a9e9679dSBram Moolenaar hide 168a9e9679dSBram Moolenaar call assert_equal(3, getbufinfo(bn)[0]["linecount"]) 169a9e9679dSBram Moolenaar edit Xfoo 170a9e9679dSBram Moolenaar bw! 171a9e9679dSBram Moolenaarendfunc 172*6d91bcb4SBram Moolenaar 173*6d91bcb4SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab 174