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 26*6434fc57SBram Moolenaar let l = '%'->getbufinfo() 27*6434fc57SBram Moolenaar call assert_equal(bufnr('%'), l[0].bufnr) 28*6434fc57SBram Moolenaar 298e6a31dfSBram Moolenaar " Test for getbufinfo() with 'bufmodified' 308e6a31dfSBram Moolenaar call assert_equal(0, len(getbufinfo({'bufmodified' : 1}))) 318e6a31dfSBram Moolenaar call setbufline('Xtestfile1', 1, ["Line1"]) 328e6a31dfSBram Moolenaar let l = getbufinfo({'bufmodified' : 1}) 338e6a31dfSBram Moolenaar call assert_equal(1, len(l)) 348e6a31dfSBram Moolenaar call assert_equal(bufnr('Xtestfile1'), l[0].bufnr) 358e6a31dfSBram Moolenaar 36386600f0SBram Moolenaar if has('signs') 37386600f0SBram Moolenaar call append(0, ['Linux', 'Windows', 'Mac']) 38386600f0SBram Moolenaar sign define Mark text=>> texthl=Search 39386600f0SBram Moolenaar exe "sign place 2 line=3 name=Mark buffer=" . bufnr('%') 40386600f0SBram Moolenaar let l = getbufinfo('%') 41386600f0SBram Moolenaar call assert_equal(2, l[0].signs[0].id) 42386600f0SBram Moolenaar call assert_equal(3, l[0].signs[0].lnum) 43386600f0SBram Moolenaar call assert_equal('Mark', l[0].signs[0].name) 44386600f0SBram Moolenaar sign unplace * 45386600f0SBram Moolenaar sign undefine Mark 46386600f0SBram Moolenaar enew! 47386600f0SBram Moolenaar endif 4892b83ccfSBram Moolenaar call assert_notequal([], getbufinfo(test_null_dict())) 49386600f0SBram Moolenaar 50b5ae48e9SBram Moolenaar only 51b5ae48e9SBram Moolenaar let w1_id = win_getid() 52b5ae48e9SBram Moolenaar new 53b5ae48e9SBram Moolenaar let w2_id = win_getid() 54b5ae48e9SBram Moolenaar tabnew | let w3_id = win_getid() 55b5ae48e9SBram Moolenaar new | let w4_id = win_getid() 56b6959a8eSBram Moolenaar vert new | let w5_id = win_getid() 57aad222c9SBram Moolenaar eval 'green'->setwinvar(0, 'signal') 58b5ae48e9SBram Moolenaar tabfirst 59b5ae48e9SBram Moolenaar let winlist = getwininfo() 60b5ae48e9SBram Moolenaar call assert_equal(5, len(winlist)) 61b6959a8eSBram Moolenaar call assert_equal(winwidth(1), winlist[0].width) 627132ddc1SBram Moolenaar call assert_equal(1, winlist[0].wincol) 637132ddc1SBram Moolenaar " tabline adds one row in terminal, not in GUI 647132ddc1SBram Moolenaar let tablineheight = winlist[0].winrow == 2 ? 1 : 0 657132ddc1SBram Moolenaar call assert_equal(tablineheight + 1, winlist[0].winrow) 66b6959a8eSBram Moolenaar 6733928837SBram Moolenaar call assert_equal(winbufnr(2), winlist[1].bufnr) 68386600f0SBram Moolenaar call assert_equal(winheight(2), winlist[1].height) 697132ddc1SBram Moolenaar call assert_equal(1, winlist[1].wincol) 707132ddc1SBram Moolenaar call assert_equal(tablineheight + winheight(1) + 2, winlist[1].winrow) 71b6959a8eSBram Moolenaar 7233928837SBram Moolenaar call assert_equal(1, winlist[2].winnr) 737132ddc1SBram Moolenaar call assert_equal(tablineheight + 1, winlist[2].winrow) 747132ddc1SBram Moolenaar call assert_equal(1, winlist[2].wincol) 75b6959a8eSBram Moolenaar 767132ddc1SBram Moolenaar call assert_equal(winlist[2].width + 2, winlist[3].wincol) 777132ddc1SBram Moolenaar call assert_equal(1, winlist[4].wincol) 78b6959a8eSBram Moolenaar 79b6959a8eSBram Moolenaar call assert_equal(1, winlist[0].tabnr) 80b6959a8eSBram Moolenaar call assert_equal(1, winlist[1].tabnr) 81b6959a8eSBram Moolenaar call assert_equal(2, winlist[2].tabnr) 8233928837SBram Moolenaar call assert_equal(2, winlist[3].tabnr) 83b6959a8eSBram Moolenaar call assert_equal(2, winlist[4].tabnr) 84b6959a8eSBram Moolenaar 85386600f0SBram Moolenaar call assert_equal('green', winlist[2].variables.signal) 86386600f0SBram Moolenaar call assert_equal(w4_id, winlist[3].winid) 875d69fdb7SBram Moolenaar let winfo = w5_id->getwininfo()[0] 8833928837SBram Moolenaar call assert_equal(2, winfo.tabnr) 89b5ae48e9SBram Moolenaar call assert_equal([], getwininfo(3)) 90b5ae48e9SBram Moolenaar 91386600f0SBram Moolenaar call settabvar(1, 'space', 'build') 92b5ae48e9SBram Moolenaar let tablist = gettabinfo() 93b5ae48e9SBram Moolenaar call assert_equal(2, len(tablist)) 94b5ae48e9SBram Moolenaar call assert_equal(3, len(tablist[1].windows)) 9533928837SBram Moolenaar call assert_equal(2, tablist[1].tabnr) 96386600f0SBram Moolenaar call assert_equal('build', tablist[0].variables.space) 97386600f0SBram Moolenaar call assert_equal(w2_id, tablist[0].windows[0]) 984c313b13SBram Moolenaar call assert_equal([], 3->gettabinfo()) 99b5ae48e9SBram Moolenaar 100b5ae48e9SBram Moolenaar tabonly | only 101386600f0SBram Moolenaar 102386600f0SBram Moolenaar lexpr '' 103386600f0SBram Moolenaar lopen 104386600f0SBram Moolenaar copen 105386600f0SBram Moolenaar let winlist = getwininfo() 106386600f0SBram Moolenaar call assert_false(winlist[0].quickfix) 107386600f0SBram Moolenaar call assert_false(winlist[0].loclist) 108386600f0SBram Moolenaar call assert_true(winlist[1].quickfix) 109386600f0SBram Moolenaar call assert_true(winlist[1].loclist) 110386600f0SBram Moolenaar call assert_true(winlist[2].quickfix) 111386600f0SBram Moolenaar call assert_false(winlist[2].loclist) 112386600f0SBram Moolenaar wincmd t | only 1135a4c3082SBram Moolenaarendfunc 1143056735aSBram Moolenaar 1153056735aSBram Moolenaarfunction Test_get_buf_options() 1164c313b13SBram Moolenaar let opts = bufnr()->getbufvar('&') 1173056735aSBram Moolenaar call assert_equal(v:t_dict, type(opts)) 1183056735aSBram Moolenaar call assert_equal(8, opts.tabstop) 1193056735aSBram Moolenaarendfunc 1203056735aSBram Moolenaar 1213056735aSBram Moolenaarfunction Test_get_win_options() 122789a5c0eSBram Moolenaar if has('folding') 123789a5c0eSBram Moolenaar set foldlevel=999 124789a5c0eSBram Moolenaar endif 125789a5c0eSBram Moolenaar set list 1263056735aSBram Moolenaar let opts = getwinvar(1, '&') 1273056735aSBram Moolenaar call assert_equal(v:t_dict, type(opts)) 1283056735aSBram Moolenaar call assert_equal(0, opts.linebreak) 129789a5c0eSBram Moolenaar call assert_equal(1, opts.list) 130789a5c0eSBram Moolenaar if has('folding') 131789a5c0eSBram Moolenaar call assert_equal(999, opts.foldlevel) 132789a5c0eSBram Moolenaar endif 1333056735aSBram Moolenaar if has('signs') 1343056735aSBram Moolenaar call assert_equal('auto', opts.signcolumn) 1353056735aSBram Moolenaar endif 1363056735aSBram Moolenaar 1373056735aSBram Moolenaar let opts = gettabwinvar(1, 1, '&') 1383056735aSBram Moolenaar call assert_equal(v:t_dict, type(opts)) 1393056735aSBram Moolenaar call assert_equal(0, opts.linebreak) 140789a5c0eSBram Moolenaar call assert_equal(1, opts.list) 1413056735aSBram Moolenaar if has('signs') 1423056735aSBram Moolenaar call assert_equal('auto', opts.signcolumn) 1433056735aSBram Moolenaar endif 144789a5c0eSBram Moolenaar set list& 145789a5c0eSBram Moolenaar if has('folding') 146789a5c0eSBram Moolenaar set foldlevel=0 147789a5c0eSBram Moolenaar endif 1483056735aSBram Moolenaarendfunc 14952410575SBram Moolenaar 15052410575SBram Moolenaarfunction Test_getbufinfo_lastused() 15152410575SBram Moolenaar call test_settime(1234567) 15252410575SBram Moolenaar edit Xtestfile1 15352410575SBram Moolenaar enew 15452410575SBram Moolenaar call test_settime(7654321) 15552410575SBram Moolenaar edit Xtestfile2 15652410575SBram Moolenaar enew 15752410575SBram Moolenaar call assert_equal(getbufinfo('Xtestfile1')[0].lastused, 1234567) 15852410575SBram Moolenaar call assert_equal(getbufinfo('Xtestfile2')[0].lastused, 7654321) 15952410575SBram Moolenaar call test_settime(0) 16052410575SBram Moolenaarendfunc 161a9e9679dSBram Moolenaar 162a9e9679dSBram Moolenaarfunc Test_getbufinfo_lines() 163a9e9679dSBram Moolenaar new Xfoo 164a9e9679dSBram Moolenaar call setline(1, ['a', 'bc', 'd']) 165a9e9679dSBram Moolenaar let bn = bufnr('%') 166a9e9679dSBram Moolenaar hide 167a9e9679dSBram Moolenaar call assert_equal(3, getbufinfo(bn)[0]["linecount"]) 168a9e9679dSBram Moolenaar edit Xfoo 169a9e9679dSBram Moolenaar bw! 170a9e9679dSBram Moolenaarendfunc 171