blob: 43d0473a141ec031561d6105a0d6f5db7e308798 [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 Moolenaar92b83cc2020-04-25 15:24:44 +020045 call assert_notequal([], getbufinfo(test_null_dict()))
Bram Moolenaar386600f2016-08-15 22:16:25 +020046
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010047 only
48 let w1_id = win_getid()
49 new
50 let w2_id = win_getid()
51 tabnew | let w3_id = win_getid()
52 new | let w4_id = win_getid()
53 vert new | let w5_id = win_getid()
54 eval 'green'->setwinvar(0, 'signal')
55 tabfirst
56 let winlist = getwininfo()
57 call assert_equal(5, len(winlist))
58 call assert_equal(winwidth(1), winlist[0].width)
59 call assert_equal(1, winlist[0].wincol)
60 " tabline adds one row in terminal, not in GUI
61 let tablineheight = winlist[0].winrow == 2 ? 1 : 0
62 call assert_equal(tablineheight + 1, winlist[0].winrow)
Bram Moolenaar8e6a31d2017-12-10 21:06:22 +010063
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010064 call assert_equal(winbufnr(2), winlist[1].bufnr)
65 call assert_equal(winheight(2), winlist[1].height)
66 call assert_equal(1, winlist[1].wincol)
67 call assert_equal(tablineheight + winheight(1) + 2, winlist[1].winrow)
Bram Moolenaar386600f2016-08-15 22:16:25 +020068
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010069 call assert_equal(1, winlist[2].winnr)
70 call assert_equal(tablineheight + 1, winlist[2].winrow)
71 call assert_equal(1, winlist[2].wincol)
Bram Moolenaarb6959a82018-07-14 21:41:44 +020072
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010073 call assert_equal(winlist[2].width + 2, winlist[3].wincol)
74 call assert_equal(1, winlist[4].wincol)
Bram Moolenaarb6959a82018-07-14 21:41:44 +020075
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010076 call assert_equal(1, winlist[0].tabnr)
77 call assert_equal(1, winlist[1].tabnr)
78 call assert_equal(2, winlist[2].tabnr)
79 call assert_equal(2, winlist[3].tabnr)
80 call assert_equal(2, winlist[4].tabnr)
Bram Moolenaarb6959a82018-07-14 21:41:44 +020081
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010082 call assert_equal('green', winlist[2].variables.signal)
83 call assert_equal(w4_id, winlist[3].winid)
84 let winfo = w5_id->getwininfo()[0]
85 call assert_equal(2, winfo.tabnr)
86 call assert_equal([], getwininfo(3))
Bram Moolenaarb6959a82018-07-14 21:41:44 +020087
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010088 call settabvar(1, 'space', 'build')
89 let tablist = gettabinfo()
90 call assert_equal(2, len(tablist))
91 call assert_equal(3, len(tablist[1].windows))
92 call assert_equal(2, tablist[1].tabnr)
93 call assert_equal('build', tablist[0].variables.space)
94 call assert_equal(w2_id, tablist[0].windows[0])
95 call assert_equal([], 3->gettabinfo())
Bram Moolenaarb6959a82018-07-14 21:41:44 +020096
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010097 tabonly | only
Bram Moolenaarb5ae48e2016-08-12 22:23:25 +020098
Bram Moolenaar5a4c3082019-12-01 15:23:11 +010099 lexpr ''
100 lopen
101 copen
102 let winlist = getwininfo()
103 call assert_false(winlist[0].quickfix)
104 call assert_false(winlist[0].loclist)
105 call assert_true(winlist[1].quickfix)
106 call assert_true(winlist[1].loclist)
107 call assert_true(winlist[2].quickfix)
108 call assert_false(winlist[2].loclist)
109 wincmd t | only
110endfunc
Bram Moolenaar30567352016-08-27 21:25:44 +0200111
112function Test_get_buf_options()
Bram Moolenaar4c313b12019-08-24 22:58:31 +0200113 let opts = bufnr()->getbufvar('&')
Bram Moolenaar30567352016-08-27 21:25:44 +0200114 call assert_equal(v:t_dict, type(opts))
115 call assert_equal(8, opts.tabstop)
116endfunc
117
118function Test_get_win_options()
Bram Moolenaar789a5c02016-09-12 19:51:11 +0200119 if has('folding')
120 set foldlevel=999
121 endif
122 set list
Bram Moolenaar30567352016-08-27 21:25:44 +0200123 let opts = getwinvar(1, '&')
124 call assert_equal(v:t_dict, type(opts))
125 call assert_equal(0, opts.linebreak)
Bram Moolenaar789a5c02016-09-12 19:51:11 +0200126 call assert_equal(1, opts.list)
127 if has('folding')
128 call assert_equal(999, opts.foldlevel)
129 endif
Bram Moolenaar30567352016-08-27 21:25:44 +0200130 if has('signs')
131 call assert_equal('auto', opts.signcolumn)
132 endif
133
134 let opts = gettabwinvar(1, 1, '&')
135 call assert_equal(v:t_dict, type(opts))
136 call assert_equal(0, opts.linebreak)
Bram Moolenaar789a5c02016-09-12 19:51:11 +0200137 call assert_equal(1, opts.list)
Bram Moolenaar30567352016-08-27 21:25:44 +0200138 if has('signs')
139 call assert_equal('auto', opts.signcolumn)
140 endif
Bram Moolenaar789a5c02016-09-12 19:51:11 +0200141 set list&
142 if has('folding')
143 set foldlevel=0
144 endif
Bram Moolenaar30567352016-08-27 21:25:44 +0200145endfunc
Bram Moolenaar52410572019-10-27 05:12:45 +0100146
147function Test_getbufinfo_lastused()
148 call test_settime(1234567)
149 edit Xtestfile1
150 enew
151 call test_settime(7654321)
152 edit Xtestfile2
153 enew
154 call assert_equal(getbufinfo('Xtestfile1')[0].lastused, 1234567)
155 call assert_equal(getbufinfo('Xtestfile2')[0].lastused, 7654321)
156 call test_settime(0)
157endfunc
Bram Moolenaara9e96792019-12-17 22:40:15 +0100158
159func Test_getbufinfo_lines()
160 new Xfoo
161 call setline(1, ['a', 'bc', 'd'])
162 let bn = bufnr('%')
163 hide
164 call assert_equal(3, getbufinfo(bn)[0]["linecount"])
165 edit Xfoo
166 bw!
167endfunc