blob: 403b98a365352ef4f442e43620ffeedf89064fcf [file] [log] [blame]
Bram Moolenaarb5ae48e2016-08-12 22:23:25 +02001" Tests for the getbufinfo(), getwininfo() and gettabinfo() functions
Bram Moolenaar6d91bcb2020-08-12 18:50:36 +02002
Bram Moolenaar5a4c3082019-12-01 15:23:11 +01003source check.vim
Bram Moolenaarb5ae48e2016-08-12 22:23:25 +02004
Bram Moolenaar5a4c3082019-12-01 15:23:11 +01005func Test_getbufwintabinfo()
6 CheckFeature quickfix
Bram Moolenaarb5ae48e2016-08-12 22:23:25 +02007
Bram Moolenaar5a4c3082019-12-01 15:23:11 +01008 edit Xtestfile1
9 edit Xtestfile2
10 let buflist = getbufinfo()
11 call assert_equal(2, len(buflist))
12 call assert_match('Xtestfile1', buflist[0].name)
13 call assert_match('Xtestfile2', getbufinfo('Xtestfile2')[0].name)
14 call assert_equal([], getbufinfo(2016))
15 edit Xtestfile1
16 hide edit Xtestfile2
17 hide enew
18 call assert_equal(3, len(getbufinfo({'bufloaded':1})))
19
20 set tabstop&vim
21 let b:editor = 'vim'
22 let l = getbufinfo('%')
23 call assert_equal(bufnr('%'), l[0].bufnr)
24 call assert_equal('vim', l[0].variables.editor)
25 call assert_notequal(-1, index(l[0].windows, '%'->bufwinid()))
26
Bram Moolenaar6434fc52020-07-18 22:24:22 +020027 let l = '%'->getbufinfo()
28 call assert_equal(bufnr('%'), l[0].bufnr)
29
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010030 " Test for getbufinfo() with 'bufmodified'
31 call assert_equal(0, len(getbufinfo({'bufmodified' : 1})))
32 call setbufline('Xtestfile1', 1, ["Line1"])
33 let l = getbufinfo({'bufmodified' : 1})
34 call assert_equal(1, len(l))
35 call assert_equal(bufnr('Xtestfile1'), l[0].bufnr)
36
37 if has('signs')
38 call append(0, ['Linux', 'Windows', 'Mac'])
39 sign define Mark text=>> texthl=Search
40 exe "sign place 2 line=3 name=Mark buffer=" . bufnr('%')
Bram Moolenaar386600f2016-08-15 22:16:25 +020041 let l = getbufinfo('%')
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010042 call assert_equal(2, l[0].signs[0].id)
43 call assert_equal(3, l[0].signs[0].lnum)
44 call assert_equal('Mark', l[0].signs[0].name)
45 sign unplace *
46 sign undefine Mark
47 enew!
48 endif
Bram Moolenaar92b83cc2020-04-25 15:24:44 +020049 call assert_notequal([], getbufinfo(test_null_dict()))
Bram Moolenaar386600f2016-08-15 22:16:25 +020050
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010051 only
52 let w1_id = win_getid()
Bram Moolenaarcdf5fdb2021-11-20 11:14:24 +000053 setl foldcolumn=3
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010054 new
55 let w2_id = win_getid()
56 tabnew | let w3_id = win_getid()
57 new | let w4_id = win_getid()
58 vert new | let w5_id = win_getid()
59 eval 'green'->setwinvar(0, 'signal')
60 tabfirst
61 let winlist = getwininfo()
62 call assert_equal(5, len(winlist))
63 call assert_equal(winwidth(1), winlist[0].width)
64 call assert_equal(1, winlist[0].wincol)
65 " tabline adds one row in terminal, not in GUI
66 let tablineheight = winlist[0].winrow == 2 ? 1 : 0
67 call assert_equal(tablineheight + 1, winlist[0].winrow)
Bram Moolenaar8e6a31d2017-12-10 21:06:22 +010068
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010069 call assert_equal(winbufnr(2), winlist[1].bufnr)
70 call assert_equal(winheight(2), winlist[1].height)
71 call assert_equal(1, winlist[1].wincol)
Bram Moolenaarcdf5fdb2021-11-20 11:14:24 +000072 call assert_equal(3, winlist[1].textoff) " foldcolumn
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010073 call assert_equal(tablineheight + winheight(1) + 2, winlist[1].winrow)
Bram Moolenaar386600f2016-08-15 22:16:25 +020074
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010075 call assert_equal(1, winlist[2].winnr)
76 call assert_equal(tablineheight + 1, winlist[2].winrow)
77 call assert_equal(1, winlist[2].wincol)
Bram Moolenaarb6959a82018-07-14 21:41:44 +020078
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010079 call assert_equal(winlist[2].width + 2, winlist[3].wincol)
80 call assert_equal(1, winlist[4].wincol)
Bram Moolenaarb6959a82018-07-14 21:41:44 +020081
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010082 call assert_equal(1, winlist[0].tabnr)
83 call assert_equal(1, winlist[1].tabnr)
84 call assert_equal(2, winlist[2].tabnr)
85 call assert_equal(2, winlist[3].tabnr)
86 call assert_equal(2, winlist[4].tabnr)
Bram Moolenaarb6959a82018-07-14 21:41:44 +020087
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010088 call assert_equal('green', winlist[2].variables.signal)
89 call assert_equal(w4_id, winlist[3].winid)
90 let winfo = w5_id->getwininfo()[0]
91 call assert_equal(2, winfo.tabnr)
92 call assert_equal([], getwininfo(3))
Bram Moolenaarb6959a82018-07-14 21:41:44 +020093
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010094 call settabvar(1, 'space', 'build')
95 let tablist = gettabinfo()
96 call assert_equal(2, len(tablist))
97 call assert_equal(3, len(tablist[1].windows))
98 call assert_equal(2, tablist[1].tabnr)
99 call assert_equal('build', tablist[0].variables.space)
100 call assert_equal(w2_id, tablist[0].windows[0])
101 call assert_equal([], 3->gettabinfo())
Bram Moolenaarb6959a82018-07-14 21:41:44 +0200102
Bram Moolenaar5a4c3082019-12-01 15:23:11 +0100103 tabonly | only
Bram Moolenaarb5ae48e2016-08-12 22:23:25 +0200104
Bram Moolenaar5a4c3082019-12-01 15:23:11 +0100105 lexpr ''
106 lopen
107 copen
108 let winlist = getwininfo()
109 call assert_false(winlist[0].quickfix)
110 call assert_false(winlist[0].loclist)
111 call assert_true(winlist[1].quickfix)
112 call assert_true(winlist[1].loclist)
113 call assert_true(winlist[2].quickfix)
114 call assert_false(winlist[2].loclist)
115 wincmd t | only
116endfunc
Bram Moolenaar30567352016-08-27 21:25:44 +0200117
118function Test_get_buf_options()
Bram Moolenaar4c313b12019-08-24 22:58:31 +0200119 let opts = bufnr()->getbufvar('&')
Bram Moolenaar30567352016-08-27 21:25:44 +0200120 call assert_equal(v:t_dict, type(opts))
121 call assert_equal(8, opts.tabstop)
122endfunc
123
124function Test_get_win_options()
Bram Moolenaar789a5c02016-09-12 19:51:11 +0200125 if has('folding')
126 set foldlevel=999
127 endif
128 set list
Bram Moolenaar30567352016-08-27 21:25:44 +0200129 let opts = getwinvar(1, '&')
130 call assert_equal(v:t_dict, type(opts))
131 call assert_equal(0, opts.linebreak)
Bram Moolenaar789a5c02016-09-12 19:51:11 +0200132 call assert_equal(1, opts.list)
133 if has('folding')
134 call assert_equal(999, opts.foldlevel)
135 endif
Bram Moolenaar30567352016-08-27 21:25:44 +0200136 if has('signs')
137 call assert_equal('auto', opts.signcolumn)
138 endif
139
140 let opts = gettabwinvar(1, 1, '&')
141 call assert_equal(v:t_dict, type(opts))
142 call assert_equal(0, opts.linebreak)
Bram Moolenaar789a5c02016-09-12 19:51:11 +0200143 call assert_equal(1, opts.list)
Bram Moolenaar30567352016-08-27 21:25:44 +0200144 if has('signs')
145 call assert_equal('auto', opts.signcolumn)
146 endif
Bram Moolenaar789a5c02016-09-12 19:51:11 +0200147 set list&
148 if has('folding')
149 set foldlevel=0
150 endif
Bram Moolenaar30567352016-08-27 21:25:44 +0200151endfunc
Bram Moolenaar52410572019-10-27 05:12:45 +0100152
153function Test_getbufinfo_lastused()
154 call test_settime(1234567)
155 edit Xtestfile1
156 enew
157 call test_settime(7654321)
158 edit Xtestfile2
159 enew
160 call assert_equal(getbufinfo('Xtestfile1')[0].lastused, 1234567)
161 call assert_equal(getbufinfo('Xtestfile2')[0].lastused, 7654321)
162 call test_settime(0)
163endfunc
Bram Moolenaara9e96792019-12-17 22:40:15 +0100164
165func Test_getbufinfo_lines()
166 new Xfoo
167 call setline(1, ['a', 'bc', 'd'])
168 let bn = bufnr('%')
169 hide
170 call assert_equal(3, getbufinfo(bn)[0]["linecount"])
171 edit Xfoo
172 bw!
173endfunc
Bram Moolenaar6d91bcb2020-08-12 18:50:36 +0200174
LemonBoy8530b412022-04-20 19:00:36 +0100175func Test_getwininfo_au()
176 enew
177 call setline(1, range(1, 16))
178
179 let g:info = #{}
180 augroup T1
181 au!
182 au WinEnter * let g:info = getwininfo(win_getid())[0]
183 augroup END
184
185 4split
186 " Check that calling getwininfo() from WinEnter returns fresh values for
187 " topline and botline.
188 call assert_equal(1, g:info.topline)
189 call assert_equal(4, g:info.botline)
190 close
191
192 unlet g:info
193 augroup! T1
194 bwipe!
195endfunc
196
Bram Moolenaar6d91bcb2020-08-12 18:50:36 +0200197" vim: shiftwidth=2 sts=2 expandtab