blob: d61670b6701a0af0cd9a1129dcc7506f34defb49 [file] [log] [blame]
Bram Moolenaarb5ae48e2016-08-12 22:23:25 +02001" Tests for the getbufinfo(), getwininfo() and gettabinfo() functions
Bram Moolenaar5a4c3082019-12-01 15:23:11 +01002source check.vim
Bram Moolenaarb5ae48e2016-08-12 22:23:25 +02003
Bram Moolenaar5a4c3082019-12-01 15:23:11 +01004func Test_getbufwintabinfo()
5 CheckFeature quickfix
Bram Moolenaarb5ae48e2016-08-12 22:23:25 +02006
Bram Moolenaar5a4c3082019-12-01 15:23:11 +01007 edit Xtestfile1
8 edit Xtestfile2
9 let buflist = getbufinfo()
10 call assert_equal(2, len(buflist))
11 call assert_match('Xtestfile1', buflist[0].name)
12 call assert_match('Xtestfile2', getbufinfo('Xtestfile2')[0].name)
13 call assert_equal([], getbufinfo(2016))
14 edit Xtestfile1
15 hide edit Xtestfile2
16 hide enew
17 call assert_equal(3, len(getbufinfo({'bufloaded':1})))
18
19 set tabstop&vim
20 let b:editor = 'vim'
21 let l = getbufinfo('%')
22 call assert_equal(bufnr('%'), l[0].bufnr)
23 call assert_equal('vim', l[0].variables.editor)
24 call assert_notequal(-1, index(l[0].windows, '%'->bufwinid()))
25
26 " Test for getbufinfo() with 'bufmodified'
27 call assert_equal(0, len(getbufinfo({'bufmodified' : 1})))
28 call setbufline('Xtestfile1', 1, ["Line1"])
29 let l = getbufinfo({'bufmodified' : 1})
30 call assert_equal(1, len(l))
31 call assert_equal(bufnr('Xtestfile1'), l[0].bufnr)
32
33 if has('signs')
34 call append(0, ['Linux', 'Windows', 'Mac'])
35 sign define Mark text=>> texthl=Search
36 exe "sign place 2 line=3 name=Mark buffer=" . bufnr('%')
Bram Moolenaar386600f2016-08-15 22:16:25 +020037 let l = getbufinfo('%')
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010038 call assert_equal(2, l[0].signs[0].id)
39 call assert_equal(3, l[0].signs[0].lnum)
40 call assert_equal('Mark', l[0].signs[0].name)
41 sign unplace *
42 sign undefine Mark
43 enew!
44 endif
Bram Moolenaar386600f2016-08-15 22:16:25 +020045
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010046 only
47 let w1_id = win_getid()
48 new
49 let w2_id = win_getid()
50 tabnew | let w3_id = win_getid()
51 new | let w4_id = win_getid()
52 vert new | let w5_id = win_getid()
53 eval 'green'->setwinvar(0, 'signal')
54 tabfirst
55 let winlist = getwininfo()
56 call assert_equal(5, len(winlist))
57 call assert_equal(winwidth(1), winlist[0].width)
58 call assert_equal(1, winlist[0].wincol)
59 " tabline adds one row in terminal, not in GUI
60 let tablineheight = winlist[0].winrow == 2 ? 1 : 0
61 call assert_equal(tablineheight + 1, winlist[0].winrow)
Bram Moolenaar8e6a31d2017-12-10 21:06:22 +010062
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010063 call assert_equal(winbufnr(2), winlist[1].bufnr)
64 call assert_equal(winheight(2), winlist[1].height)
65 call assert_equal(1, winlist[1].wincol)
66 call assert_equal(tablineheight + winheight(1) + 2, winlist[1].winrow)
Bram Moolenaar386600f2016-08-15 22:16:25 +020067
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010068 call assert_equal(1, winlist[2].winnr)
69 call assert_equal(tablineheight + 1, winlist[2].winrow)
70 call assert_equal(1, winlist[2].wincol)
Bram Moolenaarb6959a82018-07-14 21:41:44 +020071
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010072 call assert_equal(winlist[2].width + 2, winlist[3].wincol)
73 call assert_equal(1, winlist[4].wincol)
Bram Moolenaarb6959a82018-07-14 21:41:44 +020074
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010075 call assert_equal(1, winlist[0].tabnr)
76 call assert_equal(1, winlist[1].tabnr)
77 call assert_equal(2, winlist[2].tabnr)
78 call assert_equal(2, winlist[3].tabnr)
79 call assert_equal(2, winlist[4].tabnr)
Bram Moolenaarb6959a82018-07-14 21:41:44 +020080
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010081 call assert_equal('green', winlist[2].variables.signal)
82 call assert_equal(w4_id, winlist[3].winid)
83 let winfo = w5_id->getwininfo()[0]
84 call assert_equal(2, winfo.tabnr)
85 call assert_equal([], getwininfo(3))
Bram Moolenaarb6959a82018-07-14 21:41:44 +020086
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010087 call settabvar(1, 'space', 'build')
88 let tablist = gettabinfo()
89 call assert_equal(2, len(tablist))
90 call assert_equal(3, len(tablist[1].windows))
91 call assert_equal(2, tablist[1].tabnr)
92 call assert_equal('build', tablist[0].variables.space)
93 call assert_equal(w2_id, tablist[0].windows[0])
94 call assert_equal([], 3->gettabinfo())
Bram Moolenaarb6959a82018-07-14 21:41:44 +020095
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010096 tabonly | only
Bram Moolenaarb5ae48e2016-08-12 22:23:25 +020097
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010098 lexpr ''
99 lopen
100 copen
101 let winlist = getwininfo()
102 call assert_false(winlist[0].quickfix)
103 call assert_false(winlist[0].loclist)
104 call assert_true(winlist[1].quickfix)
105 call assert_true(winlist[1].loclist)
106 call assert_true(winlist[2].quickfix)
107 call assert_false(winlist[2].loclist)
108 wincmd t | only
109endfunc
Bram Moolenaar30567352016-08-27 21:25:44 +0200110
111function Test_get_buf_options()
Bram Moolenaar4c313b12019-08-24 22:58:31 +0200112 let opts = bufnr()->getbufvar('&')
Bram Moolenaar30567352016-08-27 21:25:44 +0200113 call assert_equal(v:t_dict, type(opts))
114 call assert_equal(8, opts.tabstop)
115endfunc
116
117function Test_get_win_options()
Bram Moolenaar789a5c02016-09-12 19:51:11 +0200118 if has('folding')
119 set foldlevel=999
120 endif
121 set list
Bram Moolenaar30567352016-08-27 21:25:44 +0200122 let opts = getwinvar(1, '&')
123 call assert_equal(v:t_dict, type(opts))
124 call assert_equal(0, opts.linebreak)
Bram Moolenaar789a5c02016-09-12 19:51:11 +0200125 call assert_equal(1, opts.list)
126 if has('folding')
127 call assert_equal(999, opts.foldlevel)
128 endif
Bram Moolenaar30567352016-08-27 21:25:44 +0200129 if has('signs')
130 call assert_equal('auto', opts.signcolumn)
131 endif
132
133 let opts = gettabwinvar(1, 1, '&')
134 call assert_equal(v:t_dict, type(opts))
135 call assert_equal(0, opts.linebreak)
Bram Moolenaar789a5c02016-09-12 19:51:11 +0200136 call assert_equal(1, opts.list)
Bram Moolenaar30567352016-08-27 21:25:44 +0200137 if has('signs')
138 call assert_equal('auto', opts.signcolumn)
139 endif
Bram Moolenaar789a5c02016-09-12 19:51:11 +0200140 set list&
141 if has('folding')
142 set foldlevel=0
143 endif
Bram Moolenaar30567352016-08-27 21:25:44 +0200144endfunc
Bram Moolenaar52410572019-10-27 05:12:45 +0100145
146function Test_getbufinfo_lastused()
147 call test_settime(1234567)
148 edit Xtestfile1
149 enew
150 call test_settime(7654321)
151 edit Xtestfile2
152 enew
153 call assert_equal(getbufinfo('Xtestfile1')[0].lastused, 1234567)
154 call assert_equal(getbufinfo('Xtestfile2')[0].lastused, 7654321)
155 call test_settime(0)
156endfunc
Bram Moolenaara9e96792019-12-17 22:40:15 +0100157
158func Test_getbufinfo_lines()
159 new Xfoo
160 call setline(1, ['a', 'bc', 'd'])
161 let bn = bufnr('%')
162 hide
163 call assert_equal(3, getbufinfo(bn)[0]["linecount"])
164 edit Xfoo
165 bw!
166endfunc