blob: f7318ff55ab8d41c21709688bb8054372ac81529 [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 +01003func Test_getbufwintabinfo()
4 CheckFeature quickfix
Bram Moolenaarb5ae48e2016-08-12 22:23:25 +02005
Bram Moolenaar5a4c3082019-12-01 15:23:11 +01006 edit Xtestfile1
7 edit Xtestfile2
8 let buflist = getbufinfo()
9 call assert_equal(2, len(buflist))
10 call assert_match('Xtestfile1', buflist[0].name)
11 call assert_match('Xtestfile2', getbufinfo('Xtestfile2')[0].name)
12 call assert_equal([], getbufinfo(2016))
13 edit Xtestfile1
14 hide edit Xtestfile2
15 hide enew
16 call assert_equal(3, len(getbufinfo({'bufloaded':1})))
17
18 set tabstop&vim
19 let b:editor = 'vim'
20 let l = getbufinfo('%')
21 call assert_equal(bufnr('%'), l[0].bufnr)
22 call assert_equal('vim', l[0].variables.editor)
23 call assert_notequal(-1, index(l[0].windows, '%'->bufwinid()))
24
Bram Moolenaar6434fc52020-07-18 22:24:22 +020025 let l = '%'->getbufinfo()
26 call assert_equal(bufnr('%'), l[0].bufnr)
27
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010028 " Test for getbufinfo() with 'bufmodified'
29 call assert_equal(0, len(getbufinfo({'bufmodified' : 1})))
30 call setbufline('Xtestfile1', 1, ["Line1"])
31 let l = getbufinfo({'bufmodified' : 1})
32 call assert_equal(1, len(l))
33 call assert_equal(bufnr('Xtestfile1'), l[0].bufnr)
34
35 if has('signs')
36 call append(0, ['Linux', 'Windows', 'Mac'])
37 sign define Mark text=>> texthl=Search
38 exe "sign place 2 line=3 name=Mark buffer=" . bufnr('%')
Bram Moolenaar386600f2016-08-15 22:16:25 +020039 let l = getbufinfo('%')
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010040 call assert_equal(2, l[0].signs[0].id)
41 call assert_equal(3, l[0].signs[0].lnum)
42 call assert_equal('Mark', l[0].signs[0].name)
43 sign unplace *
44 sign undefine Mark
45 enew!
46 endif
Bram Moolenaar92b83cc2020-04-25 15:24:44 +020047 call assert_notequal([], getbufinfo(test_null_dict()))
Bram Moolenaar386600f2016-08-15 22:16:25 +020048
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010049 only
50 let w1_id = win_getid()
Bram Moolenaarcdf5fdb2021-11-20 11:14:24 +000051 setl foldcolumn=3
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010052 new
53 let w2_id = win_getid()
54 tabnew | let w3_id = win_getid()
55 new | let w4_id = win_getid()
56 vert new | let w5_id = win_getid()
57 eval 'green'->setwinvar(0, 'signal')
58 tabfirst
59 let winlist = getwininfo()
60 call assert_equal(5, len(winlist))
61 call assert_equal(winwidth(1), winlist[0].width)
62 call assert_equal(1, winlist[0].wincol)
63 " tabline adds one row in terminal, not in GUI
64 let tablineheight = winlist[0].winrow == 2 ? 1 : 0
65 call assert_equal(tablineheight + 1, winlist[0].winrow)
Bram Moolenaar8e6a31d2017-12-10 21:06:22 +010066
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010067 call assert_equal(winbufnr(2), winlist[1].bufnr)
68 call assert_equal(winheight(2), winlist[1].height)
69 call assert_equal(1, winlist[1].wincol)
Bram Moolenaarcdf5fdb2021-11-20 11:14:24 +000070 call assert_equal(3, winlist[1].textoff) " foldcolumn
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010071 call assert_equal(tablineheight + winheight(1) + 2, winlist[1].winrow)
Bram Moolenaar386600f2016-08-15 22:16:25 +020072
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010073 call assert_equal(1, winlist[2].winnr)
74 call assert_equal(tablineheight + 1, winlist[2].winrow)
75 call assert_equal(1, winlist[2].wincol)
Bram Moolenaarb6959a82018-07-14 21:41:44 +020076
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010077 call assert_equal(winlist[2].width + 2, winlist[3].wincol)
78 call assert_equal(1, winlist[4].wincol)
Bram Moolenaarb6959a82018-07-14 21:41:44 +020079
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010080 call assert_equal(1, winlist[0].tabnr)
81 call assert_equal(1, winlist[1].tabnr)
82 call assert_equal(2, winlist[2].tabnr)
83 call assert_equal(2, winlist[3].tabnr)
84 call assert_equal(2, winlist[4].tabnr)
Bram Moolenaarb6959a82018-07-14 21:41:44 +020085
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010086 call assert_equal('green', winlist[2].variables.signal)
87 call assert_equal(w4_id, winlist[3].winid)
88 let winfo = w5_id->getwininfo()[0]
89 call assert_equal(2, winfo.tabnr)
90 call assert_equal([], getwininfo(3))
Bram Moolenaarb6959a82018-07-14 21:41:44 +020091
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010092 call settabvar(1, 'space', 'build')
93 let tablist = gettabinfo()
94 call assert_equal(2, len(tablist))
95 call assert_equal(3, len(tablist[1].windows))
96 call assert_equal(2, tablist[1].tabnr)
97 call assert_equal('build', tablist[0].variables.space)
98 call assert_equal(w2_id, tablist[0].windows[0])
99 call assert_equal([], 3->gettabinfo())
Bram Moolenaarb6959a82018-07-14 21:41:44 +0200100
Bram Moolenaar5a4c3082019-12-01 15:23:11 +0100101 tabonly | only
Bram Moolenaarb5ae48e2016-08-12 22:23:25 +0200102
Bram Moolenaar5a4c3082019-12-01 15:23:11 +0100103 lexpr ''
104 lopen
105 copen
106 let winlist = getwininfo()
107 call assert_false(winlist[0].quickfix)
108 call assert_false(winlist[0].loclist)
109 call assert_true(winlist[1].quickfix)
110 call assert_true(winlist[1].loclist)
111 call assert_true(winlist[2].quickfix)
112 call assert_false(winlist[2].loclist)
113 wincmd t | only
114endfunc
Bram Moolenaar30567352016-08-27 21:25:44 +0200115
glepnir0a850672024-11-25 19:39:04 +0100116function Test_get_wininfo_leftcol()
117 set nowrap
118 set winwidth=10
119 vsp
120 call setline(1, ['abcdefghijklmnopqrstuvwxyz'])
121 norm! 5zl
122 call assert_equal(5, getwininfo()[0].leftcol)
123 bwipe!
124 set wrap&
125 set winwidth&
126endfunc
127
Bram Moolenaar30567352016-08-27 21:25:44 +0200128function Test_get_buf_options()
Bram Moolenaar4c313b12019-08-24 22:58:31 +0200129 let opts = bufnr()->getbufvar('&')
Bram Moolenaar30567352016-08-27 21:25:44 +0200130 call assert_equal(v:t_dict, type(opts))
131 call assert_equal(8, opts.tabstop)
132endfunc
133
134function Test_get_win_options()
Bram Moolenaar789a5c02016-09-12 19:51:11 +0200135 if has('folding')
136 set foldlevel=999
137 endif
138 set list
Bram Moolenaar30567352016-08-27 21:25:44 +0200139 let opts = getwinvar(1, '&')
140 call assert_equal(v:t_dict, type(opts))
141 call assert_equal(0, opts.linebreak)
Bram Moolenaar789a5c02016-09-12 19:51:11 +0200142 call assert_equal(1, opts.list)
143 if has('folding')
144 call assert_equal(999, opts.foldlevel)
145 endif
Bram Moolenaar30567352016-08-27 21:25:44 +0200146 if has('signs')
147 call assert_equal('auto', opts.signcolumn)
148 endif
149
150 let opts = gettabwinvar(1, 1, '&')
151 call assert_equal(v:t_dict, type(opts))
152 call assert_equal(0, opts.linebreak)
Bram Moolenaar789a5c02016-09-12 19:51:11 +0200153 call assert_equal(1, opts.list)
Bram Moolenaar30567352016-08-27 21:25:44 +0200154 if has('signs')
155 call assert_equal('auto', opts.signcolumn)
156 endif
Bram Moolenaar789a5c02016-09-12 19:51:11 +0200157 set list&
158 if has('folding')
159 set foldlevel=0
160 endif
Bram Moolenaar30567352016-08-27 21:25:44 +0200161endfunc
Bram Moolenaar52410572019-10-27 05:12:45 +0100162
163function Test_getbufinfo_lastused()
164 call test_settime(1234567)
165 edit Xtestfile1
166 enew
167 call test_settime(7654321)
168 edit Xtestfile2
169 enew
170 call assert_equal(getbufinfo('Xtestfile1')[0].lastused, 1234567)
171 call assert_equal(getbufinfo('Xtestfile2')[0].lastused, 7654321)
172 call test_settime(0)
173endfunc
Bram Moolenaara9e96792019-12-17 22:40:15 +0100174
175func Test_getbufinfo_lines()
176 new Xfoo
177 call setline(1, ['a', 'bc', 'd'])
178 let bn = bufnr('%')
179 hide
180 call assert_equal(3, getbufinfo(bn)[0]["linecount"])
181 edit Xfoo
182 bw!
183endfunc
Bram Moolenaar6d91bcb2020-08-12 18:50:36 +0200184
LemonBoy8530b412022-04-20 19:00:36 +0100185func Test_getwininfo_au()
186 enew
187 call setline(1, range(1, 16))
188
189 let g:info = #{}
190 augroup T1
191 au!
192 au WinEnter * let g:info = getwininfo(win_getid())[0]
193 augroup END
194
195 4split
196 " Check that calling getwininfo() from WinEnter returns fresh values for
197 " topline and botline.
198 call assert_equal(1, g:info.topline)
199 call assert_equal(4, g:info.botline)
200 close
201
202 unlet g:info
203 augroup! T1
204 bwipe!
205endfunc
206
Bram Moolenaar6d91bcb2020-08-12 18:50:36 +0200207" vim: shiftwidth=2 sts=2 expandtab