xref: /vim-8.2.3635/src/testdir/test_buffer.vim (revision 7b7a118e)
19f6277bdSBram Moolenaar" Tests for Vim buffer
29f6277bdSBram Moolenaar
3b7e24836SBram Moolenaarsource check.vim
4b7e24836SBram Moolenaar
59f6277bdSBram Moolenaar" Test for the :bunload command with an offset
69f6277bdSBram Moolenaarfunc Test_bunload_with_offset()
79f6277bdSBram Moolenaar  %bwipe!
89f6277bdSBram Moolenaar  call writefile(['B1'], 'b1')
99f6277bdSBram Moolenaar  call writefile(['B2'], 'b2')
109f6277bdSBram Moolenaar  call writefile(['B3'], 'b3')
119f6277bdSBram Moolenaar  call writefile(['B4'], 'b4')
129f6277bdSBram Moolenaar
139f6277bdSBram Moolenaar  " Load four buffers. Unload the second and third buffers and then
149f6277bdSBram Moolenaar  " execute .+3bunload to unload the last buffer.
159f6277bdSBram Moolenaar  edit b1
169f6277bdSBram Moolenaar  new b2
179f6277bdSBram Moolenaar  new b3
189f6277bdSBram Moolenaar  new b4
199f6277bdSBram Moolenaar
209f6277bdSBram Moolenaar  bunload b2
219f6277bdSBram Moolenaar  bunload b3
229f6277bdSBram Moolenaar  exe bufwinnr('b1') . 'wincmd w'
239f6277bdSBram Moolenaar  .+3bunload
249f6277bdSBram Moolenaar  call assert_equal(0, getbufinfo('b4')[0].loaded)
259f6277bdSBram Moolenaar  call assert_equal('b1',
269f6277bdSBram Moolenaar        \ fnamemodify(getbufinfo({'bufloaded' : 1})[0].name, ':t'))
279f6277bdSBram Moolenaar
289f6277bdSBram Moolenaar  " Load four buffers. Unload the third and fourth buffers. Execute .+3bunload
299f6277bdSBram Moolenaar  " and check whether the second buffer is unloaded.
309f6277bdSBram Moolenaar  ball
319f6277bdSBram Moolenaar  bunload b3
329f6277bdSBram Moolenaar  bunload b4
339f6277bdSBram Moolenaar  exe bufwinnr('b1') . 'wincmd w'
349f6277bdSBram Moolenaar  .+3bunload
359f6277bdSBram Moolenaar  call assert_equal(0, getbufinfo('b2')[0].loaded)
369f6277bdSBram Moolenaar  call assert_equal('b1',
379f6277bdSBram Moolenaar        \ fnamemodify(getbufinfo({'bufloaded' : 1})[0].name, ':t'))
389f6277bdSBram Moolenaar
399f6277bdSBram Moolenaar  " Load four buffers. Unload the second and third buffers and from the last
409f6277bdSBram Moolenaar  " buffer execute .-3bunload to unload the first buffer.
419f6277bdSBram Moolenaar  ball
429f6277bdSBram Moolenaar  bunload b2
439f6277bdSBram Moolenaar  bunload b3
449f6277bdSBram Moolenaar  exe bufwinnr('b4') . 'wincmd w'
459f6277bdSBram Moolenaar  .-3bunload
469f6277bdSBram Moolenaar  call assert_equal(0, getbufinfo('b1')[0].loaded)
479f6277bdSBram Moolenaar  call assert_equal('b4',
489f6277bdSBram Moolenaar        \ fnamemodify(getbufinfo({'bufloaded' : 1})[0].name, ':t'))
499f6277bdSBram Moolenaar
509f6277bdSBram Moolenaar  " Load four buffers. Unload the first and second buffers. Execute .-3bunload
519f6277bdSBram Moolenaar  " from the last buffer and check whether the third buffer is unloaded.
529f6277bdSBram Moolenaar  ball
539f6277bdSBram Moolenaar  bunload b1
549f6277bdSBram Moolenaar  bunload b2
559f6277bdSBram Moolenaar  exe bufwinnr('b4') . 'wincmd w'
569f6277bdSBram Moolenaar  .-3bunload
579f6277bdSBram Moolenaar  call assert_equal(0, getbufinfo('b3')[0].loaded)
589f6277bdSBram Moolenaar  call assert_equal('b4',
599f6277bdSBram Moolenaar        \ fnamemodify(getbufinfo({'bufloaded' : 1})[0].name, ':t'))
609f6277bdSBram Moolenaar
619f6277bdSBram Moolenaar  %bwipe!
629f6277bdSBram Moolenaar  call delete('b1')
639f6277bdSBram Moolenaar  call delete('b2')
649f6277bdSBram Moolenaar  call delete('b3')
659f6277bdSBram Moolenaar  call delete('b4')
66f0cee197SBram Moolenaar
67f0cee197SBram Moolenaar  call assert_fails('1,4bunload', 'E16:')
68f0cee197SBram Moolenaar  call assert_fails(',100bunload', 'E16:')
69f0cee197SBram Moolenaar
709b7bf9e9SBram Moolenaar  call assert_fails('$bunload', 'E90:')
71f0cee197SBram Moolenaarendfunc
72f0cee197SBram Moolenaar
73f0cee197SBram Moolenaar" Test for :buffer, :bnext, :bprevious, :brewind, :blast and :bmodified
74f0cee197SBram Moolenaar" commands
75f0cee197SBram Moolenaarfunc Test_buflist_browse()
76f0cee197SBram Moolenaar  %bwipe!
77f0cee197SBram Moolenaar  call assert_fails('buffer 1000', 'E86:')
78f0cee197SBram Moolenaar
79f0cee197SBram Moolenaar  call writefile(['foo1', 'foo2', 'foo3', 'foo4'], 'Xfile1')
80f0cee197SBram Moolenaar  call writefile(['bar1', 'bar2', 'bar3', 'bar4'], 'Xfile2')
81f0cee197SBram Moolenaar  call writefile(['baz1', 'baz2', 'baz3', 'baz4'], 'Xfile3')
82f0cee197SBram Moolenaar  edit Xfile1
83f0cee197SBram Moolenaar  let b1 = bufnr()
84f0cee197SBram Moolenaar  edit Xfile2
85f0cee197SBram Moolenaar  let b2 = bufnr()
86f0cee197SBram Moolenaar  edit +/baz4 Xfile3
87f0cee197SBram Moolenaar  let b3 = bufnr()
88f0cee197SBram Moolenaar
89f0cee197SBram Moolenaar  call assert_fails('buffer ' .. b1 .. ' abc', 'E488:')
90f0cee197SBram Moolenaar  call assert_equal(b3, bufnr())
91f0cee197SBram Moolenaar  call assert_equal(4, line('.'))
92f0cee197SBram Moolenaar  exe 'buffer +/bar2 ' .. b2
93f0cee197SBram Moolenaar  call assert_equal(b2, bufnr())
94f0cee197SBram Moolenaar  call assert_equal(2, line('.'))
95f0cee197SBram Moolenaar  exe 'buffer +/bar1'
96f0cee197SBram Moolenaar  call assert_equal(b2, bufnr())
97f0cee197SBram Moolenaar  call assert_equal(1, line('.'))
98f0cee197SBram Moolenaar
99bc2b71d4SBram Moolenaar  brewind +
100f0cee197SBram Moolenaar  call assert_equal(b1, bufnr())
101bc2b71d4SBram Moolenaar  call assert_equal(4, line('.'))
102f0cee197SBram Moolenaar
103f0cee197SBram Moolenaar  blast +/baz2
104f0cee197SBram Moolenaar  call assert_equal(b3, bufnr())
105f0cee197SBram Moolenaar  call assert_equal(2, line('.'))
106f0cee197SBram Moolenaar
107f0cee197SBram Moolenaar  bprevious +/bar4
108f0cee197SBram Moolenaar  call assert_equal(b2, bufnr())
109f0cee197SBram Moolenaar  call assert_equal(4, line('.'))
110f0cee197SBram Moolenaar
111f0cee197SBram Moolenaar  bnext +/baz3
112f0cee197SBram Moolenaar  call assert_equal(b3, bufnr())
113f0cee197SBram Moolenaar  call assert_equal(3, line('.'))
114f0cee197SBram Moolenaar
115f0cee197SBram Moolenaar  call assert_fails('bmodified', 'E84:')
116f0cee197SBram Moolenaar  call setbufvar(b2, '&modified', 1)
117f0cee197SBram Moolenaar  exe 'bmodified +/bar3'
118f0cee197SBram Moolenaar  call assert_equal(b2, bufnr())
119f0cee197SBram Moolenaar  call assert_equal(3, line('.'))
120f0cee197SBram Moolenaar
121f0cee197SBram Moolenaar  " With no listed buffers in the list, :bnext and :bprev should fail
122f0cee197SBram Moolenaar  %bwipe!
123f0cee197SBram Moolenaar  set nobuflisted
124f0cee197SBram Moolenaar  call assert_fails('bnext', 'E85:')
125f0cee197SBram Moolenaar  call assert_fails('bprev', 'E85:')
126f0cee197SBram Moolenaar  set buflisted
127f0cee197SBram Moolenaar
128f0cee197SBram Moolenaar  call assert_fails('sandbox bnext', 'E48:')
129f0cee197SBram Moolenaar
130f0cee197SBram Moolenaar  call delete('Xfile1')
131f0cee197SBram Moolenaar  call delete('Xfile2')
132f0cee197SBram Moolenaar  call delete('Xfile3')
133f0cee197SBram Moolenaar  %bwipe!
134f0cee197SBram Moolenaarendfunc
135f0cee197SBram Moolenaar
136f0cee197SBram Moolenaar" Test for :bdelete
137f0cee197SBram Moolenaarfunc Test_bdelete_cmd()
138f0cee197SBram Moolenaar  %bwipe!
139f0cee197SBram Moolenaar  call assert_fails('bdelete 5', 'E516:')
1409b9be007SBram Moolenaar  call assert_fails('1,1bdelete 1 2', 'E488:')
141531be47aSBram Moolenaar  call assert_fails('bdelete \)', 'E55:')
142f0cee197SBram Moolenaar
143f0cee197SBram Moolenaar  " Deleting a unlisted and unloaded buffer
144f0cee197SBram Moolenaar  edit Xfile1
145f0cee197SBram Moolenaar  let bnr = bufnr()
146f0cee197SBram Moolenaar  set nobuflisted
147f0cee197SBram Moolenaar  enew
148f0cee197SBram Moolenaar  call assert_fails('bdelete ' .. bnr, 'E516:')
149b7e24836SBram Moolenaar
150b7e24836SBram Moolenaar  " Deleting more than one buffer
151b7e24836SBram Moolenaar  new Xbuf1
152b7e24836SBram Moolenaar  new Xbuf2
153b7e24836SBram Moolenaar  exe 'bdel ' .. bufnr('Xbuf2') .. ' ' .. bufnr('Xbuf1')
154b7e24836SBram Moolenaar  call assert_equal(1, winnr('$'))
155b7e24836SBram Moolenaar  call assert_equal(0, getbufinfo('Xbuf1')[0].loaded)
156b7e24836SBram Moolenaar  call assert_equal(0, getbufinfo('Xbuf2')[0].loaded)
157b7e24836SBram Moolenaar
158b7e24836SBram Moolenaar  " Deleting more than one buffer and an invalid buffer
159b7e24836SBram Moolenaar  new Xbuf1
160b7e24836SBram Moolenaar  new Xbuf2
161b7e24836SBram Moolenaar  let cmd = "exe 'bdel ' .. bufnr('Xbuf2') .. ' xxx ' .. bufnr('Xbuf1')"
162b7e24836SBram Moolenaar  call assert_fails(cmd, 'E94:')
163b7e24836SBram Moolenaar  call assert_equal(2, winnr('$'))
164b7e24836SBram Moolenaar  call assert_equal(1, getbufinfo('Xbuf1')[0].loaded)
165b7e24836SBram Moolenaar  call assert_equal(0, getbufinfo('Xbuf2')[0].loaded)
166b7e24836SBram Moolenaar
167f0cee197SBram Moolenaar  %bwipe!
1689f6277bdSBram Moolenaarendfunc
1699f6277bdSBram Moolenaar
170067297e1SBram Moolenaarfunc Test_buffer_error()
171067297e1SBram Moolenaar  new foo1
172067297e1SBram Moolenaar  new foo2
173067297e1SBram Moolenaar
174067297e1SBram Moolenaar  call assert_fails('buffer foo', 'E93:')
175067297e1SBram Moolenaar  call assert_fails('buffer bar', 'E94:')
176067297e1SBram Moolenaar  call assert_fails('buffer 0', 'E939:')
177067297e1SBram Moolenaar
178067297e1SBram Moolenaar  %bwipe
179067297e1SBram Moolenaarendfunc
180067297e1SBram Moolenaar
181b7e24836SBram Moolenaar" Test for the status messages displayed when unloading, deleting or wiping
182b7e24836SBram Moolenaar" out buffers
183b7e24836SBram Moolenaarfunc Test_buffer_statusmsg()
184b7e24836SBram Moolenaar  CheckEnglish
185b7e24836SBram Moolenaar  set report=1
186b7e24836SBram Moolenaar  new Xbuf1
187b7e24836SBram Moolenaar  new Xbuf2
188b7e24836SBram Moolenaar  let bnr = bufnr()
189b7e24836SBram Moolenaar  exe "normal 2\<C-G>"
190b7e24836SBram Moolenaar  call assert_match('buf ' .. bnr .. ':', v:statusmsg)
191b7e24836SBram Moolenaar  bunload Xbuf1 Xbuf2
192b7e24836SBram Moolenaar  call assert_equal('2 buffers unloaded', v:statusmsg)
193b7e24836SBram Moolenaar  bdel Xbuf1 Xbuf2
194b7e24836SBram Moolenaar  call assert_equal('2 buffers deleted', v:statusmsg)
195b7e24836SBram Moolenaar  bwipe Xbuf1 Xbuf2
196b7e24836SBram Moolenaar  call assert_equal('2 buffers wiped out', v:statusmsg)
197b7e24836SBram Moolenaar  set report&
198b7e24836SBram Moolenaarendfunc
199b7e24836SBram Moolenaar
200b7e24836SBram Moolenaar" Test for quitting the 'swapfile exists' dialog with the split buffer
201b7e24836SBram Moolenaar" command.
202b7e24836SBram Moolenaarfunc Test_buffer_sbuf_cleanup()
203b7e24836SBram Moolenaar  call writefile([], 'Xfile')
204b7e24836SBram Moolenaar  " first open the file in a buffer
205b7e24836SBram Moolenaar  new Xfile
206b7e24836SBram Moolenaar  let bnr = bufnr()
207b7e24836SBram Moolenaar  close
208b7e24836SBram Moolenaar  " create the swap file
209b7e24836SBram Moolenaar  call writefile([], '.Xfile.swp')
210b7e24836SBram Moolenaar  " Remove the catch-all that runtest.vim adds
211b7e24836SBram Moolenaar  au! SwapExists
212b7e24836SBram Moolenaar  augroup BufTest
213b7e24836SBram Moolenaar    au!
214b7e24836SBram Moolenaar    autocmd SwapExists Xfile let v:swapchoice='q'
215b7e24836SBram Moolenaar  augroup END
216b7e24836SBram Moolenaar  exe 'sbuf ' . bnr
217b7e24836SBram Moolenaar  call assert_equal(1, winnr('$'))
218b7e24836SBram Moolenaar  call assert_equal(0, getbufinfo('Xfile')[0].loaded)
219b7e24836SBram Moolenaar
220b7e24836SBram Moolenaar  " test for :sball
221b7e24836SBram Moolenaar  sball
222b7e24836SBram Moolenaar  call assert_equal(1, winnr('$'))
223b7e24836SBram Moolenaar  call assert_equal(0, getbufinfo('Xfile')[0].loaded)
224b7e24836SBram Moolenaar
225b7e24836SBram Moolenaar  %bw!
226b7e24836SBram Moolenaar  set shortmess+=F
227b7e24836SBram Moolenaar  let v:statusmsg = ''
228b7e24836SBram Moolenaar  edit Xfile
229b7e24836SBram Moolenaar  call assert_equal('', v:statusmsg)
230b7e24836SBram Moolenaar  call assert_equal(1, winnr('$'))
231b7e24836SBram Moolenaar  call assert_equal(0, getbufinfo('Xfile')[0].loaded)
232b7e24836SBram Moolenaar  set shortmess&
233b7e24836SBram Moolenaar
234b7e24836SBram Moolenaar  call delete('Xfile')
235b7e24836SBram Moolenaar  call delete('.Xfile.swp')
236b7e24836SBram Moolenaar  augroup BufTest
237b7e24836SBram Moolenaar    au!
238b7e24836SBram Moolenaar  augroup END
239b7e24836SBram Moolenaar  augroup! BufTest
240b7e24836SBram Moolenaarendfunc
241b7e24836SBram Moolenaar
242b7e24836SBram Moolenaar" Test for deleting a modified buffer with :confirm
243b7e24836SBram Moolenaarfunc Test_bdel_with_confirm()
244b7e24836SBram Moolenaar  CheckUnix
245b7e24836SBram Moolenaar  CheckNotGui
246b7e24836SBram Moolenaar  CheckFeature dialog_con
247b7e24836SBram Moolenaar  new
248b7e24836SBram Moolenaar  call setline(1, 'test')
249b7e24836SBram Moolenaar  call assert_fails('bdel', 'E89:')
250b7e24836SBram Moolenaar  call feedkeys('c', 'L')
251b7e24836SBram Moolenaar  confirm bdel
252b7e24836SBram Moolenaar  call assert_equal(2, winnr('$'))
253b7e24836SBram Moolenaar  call assert_equal(1, &modified)
254b7e24836SBram Moolenaar  call feedkeys('n', 'L')
255b7e24836SBram Moolenaar  confirm bdel
256b7e24836SBram Moolenaar  call assert_equal(1, winnr('$'))
257b7e24836SBram Moolenaarendfunc
258b7e24836SBram Moolenaar
259b7e24836SBram Moolenaar" Test for editing another buffer from a modified buffer with :confirm
260b7e24836SBram Moolenaarfunc Test_goto_buf_with_confirm()
261b7e24836SBram Moolenaar  CheckUnix
262b7e24836SBram Moolenaar  CheckNotGui
263b7e24836SBram Moolenaar  CheckFeature dialog_con
264b7e24836SBram Moolenaar  new Xfile
265b7e24836SBram Moolenaar  enew
266b7e24836SBram Moolenaar  call setline(1, 'test')
267b7e24836SBram Moolenaar  call assert_fails('b Xfile', 'E37:')
268b7e24836SBram Moolenaar  call feedkeys('c', 'L')
269b7e24836SBram Moolenaar  call assert_fails('confirm b Xfile', 'E37:')
270b7e24836SBram Moolenaar  call assert_equal(1, &modified)
271b7e24836SBram Moolenaar  call assert_equal('', @%)
272b7e24836SBram Moolenaar  call feedkeys('y', 'L')
2739b7bf9e9SBram Moolenaar  call assert_fails('confirm b Xfile', ['', 'E37:'])
274b7e24836SBram Moolenaar  call assert_equal(1, &modified)
275b7e24836SBram Moolenaar  call assert_equal('', @%)
276b7e24836SBram Moolenaar  call feedkeys('n', 'L')
277b7e24836SBram Moolenaar  confirm b Xfile
278b7e24836SBram Moolenaar  call assert_equal('Xfile', @%)
279b7e24836SBram Moolenaar  close!
280b7e24836SBram Moolenaarendfunc
281b7e24836SBram Moolenaar
282b7e24836SBram Moolenaar" Test for splitting buffer with 'switchbuf'
283b7e24836SBram Moolenaarfunc Test_buffer_switchbuf()
284b7e24836SBram Moolenaar  new Xfile
285b7e24836SBram Moolenaar  wincmd w
286b7e24836SBram Moolenaar  set switchbuf=useopen
287b7e24836SBram Moolenaar  sbuf Xfile
288b7e24836SBram Moolenaar  call assert_equal(1, winnr())
289b7e24836SBram Moolenaar  call assert_equal(2, winnr('$'))
290b7e24836SBram Moolenaar  set switchbuf=usetab
291b7e24836SBram Moolenaar  tabnew
292b7e24836SBram Moolenaar  sbuf Xfile
293b7e24836SBram Moolenaar  call assert_equal(1, tabpagenr())
294b7e24836SBram Moolenaar  call assert_equal(2, tabpagenr('$'))
295b7e24836SBram Moolenaar  set switchbuf&
296b7e24836SBram Moolenaar  %bw
297b7e24836SBram Moolenaarendfunc
298b7e24836SBram Moolenaar
299b7e24836SBram Moolenaar" Test for BufAdd autocommand wiping out the buffer
300b7e24836SBram Moolenaarfunc Test_bufadd_autocmd_bwipe()
301b7e24836SBram Moolenaar  %bw!
302b7e24836SBram Moolenaar  augroup BufAdd_Wipe
303b7e24836SBram Moolenaar    au!
304b7e24836SBram Moolenaar    autocmd BufAdd Xfile %bw!
305b7e24836SBram Moolenaar  augroup END
306b7e24836SBram Moolenaar  edit Xfile
307b7e24836SBram Moolenaar  call assert_equal('', @%)
308b7e24836SBram Moolenaar  call assert_equal(0, bufexists('Xfile'))
309b7e24836SBram Moolenaar  augroup BufAdd_Wipe
310b7e24836SBram Moolenaar    au!
311b7e24836SBram Moolenaar  augroup END
312b7e24836SBram Moolenaar  augroup! BufAdd_Wipe
313b7e24836SBram Moolenaarendfunc
314b7e24836SBram Moolenaar
315b7e24836SBram Moolenaar" Test for trying to load a buffer with text locked
316b7e24836SBram Moolenaar" <C-\>e in the command line is used to lock the text
317b7e24836SBram Moolenaarfunc Test_load_buf_with_text_locked()
318b7e24836SBram Moolenaar  new Xfile1
319b7e24836SBram Moolenaar  edit Xfile2
320b7e24836SBram Moolenaar  let cmd = ":\<C-\>eexecute(\"normal \<C-O>\")\<CR>\<C-C>"
321b7e24836SBram Moolenaar  call assert_fails("call feedkeys(cmd, 'xt')", 'E565:')
322b7e24836SBram Moolenaar  %bw!
323b7e24836SBram Moolenaarendfunc
324b7e24836SBram Moolenaar
325b7e24836SBram Moolenaar" Test for using CTRL-^ to edit the alternative file keeping the cursor
326b7e24836SBram Moolenaar" position with 'nostartofline'. Also test using the 'buf' command.
327b7e24836SBram Moolenaarfunc Test_buffer_edit_altfile()
328b7e24836SBram Moolenaar  call writefile(repeat(['one two'], 50), 'Xfile1')
329b7e24836SBram Moolenaar  call writefile(repeat(['five six'], 50), 'Xfile2')
330b7e24836SBram Moolenaar  set nosol
331b7e24836SBram Moolenaar  edit Xfile1
332b7e24836SBram Moolenaar  call cursor(25, 5)
333b7e24836SBram Moolenaar  edit Xfile2
334b7e24836SBram Moolenaar  call cursor(30, 4)
335b7e24836SBram Moolenaar  exe "normal \<C-^>"
336b7e24836SBram Moolenaar  call assert_equal([0, 25, 5, 0], getpos('.'))
337b7e24836SBram Moolenaar  exe "normal \<C-^>"
338b7e24836SBram Moolenaar  call assert_equal([0, 30, 4, 0], getpos('.'))
339b7e24836SBram Moolenaar  buf Xfile1
340b7e24836SBram Moolenaar  call assert_equal([0, 25, 5, 0], getpos('.'))
341b7e24836SBram Moolenaar  buf Xfile2
342b7e24836SBram Moolenaar  call assert_equal([0, 30, 4, 0], getpos('.'))
343b7e24836SBram Moolenaar  set sol&
344b7e24836SBram Moolenaar  call delete('Xfile1')
345b7e24836SBram Moolenaar  call delete('Xfile2')
346b7e24836SBram Moolenaarendfunc
347b7e24836SBram Moolenaar
348b7e24836SBram Moolenaar" Test for running the :sball command with a maximum window count and a
349b7e24836SBram Moolenaar" modified buffer
350b7e24836SBram Moolenaarfunc Test_sball_with_count()
351b7e24836SBram Moolenaar  %bw!
352b7e24836SBram Moolenaar  edit Xfile1
353b7e24836SBram Moolenaar  call setline(1, ['abc'])
354b7e24836SBram Moolenaar  new Xfile2
355b7e24836SBram Moolenaar  new Xfile3
356b7e24836SBram Moolenaar  new Xfile4
357b7e24836SBram Moolenaar  2sball
358b7e24836SBram Moolenaar  call assert_equal(bufnr('Xfile4'), winbufnr(1))
359b7e24836SBram Moolenaar  call assert_equal(bufnr('Xfile1'), winbufnr(2))
360b7e24836SBram Moolenaar  call assert_equal(0, getbufinfo('Xfile2')[0].loaded)
361b7e24836SBram Moolenaar  call assert_equal(0, getbufinfo('Xfile3')[0].loaded)
362b7e24836SBram Moolenaar  %bw!
363b7e24836SBram Moolenaarendfunc
364b7e24836SBram Moolenaar
365e974fa7bSBram Moolenaarfunc Test_badd_options()
366e974fa7bSBram Moolenaar  new SomeNewBuffer
36737e4e03cSBram Moolenaar  setlocal numberwidth=3
368e974fa7bSBram Moolenaar  wincmd p
36989b693e5SBram Moolenaar  badd +1 SomeNewBuffer
370e974fa7bSBram Moolenaar  new SomeNewBuffer
37137e4e03cSBram Moolenaar  call assert_equal(3, &numberwidth)
372e974fa7bSBram Moolenaar  close
373e974fa7bSBram Moolenaar  close
374e974fa7bSBram Moolenaar  bwipe! SomeNewBuffer
375e974fa7bSBram Moolenaarendfunc
376e974fa7bSBram Moolenaar
37759d8e56eSBram Moolenaarfunc Test_balt()
37859d8e56eSBram Moolenaar  new SomeNewBuffer
37959d8e56eSBram Moolenaar  balt +3 OtherBuffer
38059d8e56eSBram Moolenaar  e #
38159d8e56eSBram Moolenaar  call assert_equal('OtherBuffer', bufname())
38259d8e56eSBram Moolenaarendfunc
38359d8e56eSBram Moolenaar
384*7b7a118eSTsuyoshi CHO" Test for buffer match URL(scheme) check
385*7b7a118eSTsuyoshi CHO" scheme is alpha and inner hyphen only.
386*7b7a118eSTsuyoshi CHOfunc Test_buffer_scheme()
387*7b7a118eSTsuyoshi CHO  CheckMSWindows
388*7b7a118eSTsuyoshi CHO
389*7b7a118eSTsuyoshi CHO  set noshellslash
390*7b7a118eSTsuyoshi CHO  %bwipe!
391*7b7a118eSTsuyoshi CHO  let bufnames = [
392*7b7a118eSTsuyoshi CHO    \ #{id: 'b0', name: 'test://xyz/foo/b0'    , match: 1},
393*7b7a118eSTsuyoshi CHO    \ #{id: 'b1', name: 'test+abc://xyz/foo/b1', match: 0},
394*7b7a118eSTsuyoshi CHO    \ #{id: 'b2', name: 'test_abc://xyz/foo/b2', match: 0},
395*7b7a118eSTsuyoshi CHO    \ #{id: 'b3', name: 'test-abc://xyz/foo/b3', match: 1},
396*7b7a118eSTsuyoshi CHO    \ #{id: 'b4', name: '-test://xyz/foo/b4'   , match: 0},
397*7b7a118eSTsuyoshi CHO    \ #{id: 'b5', name: 'test-://xyz/foo/b5'   , match: 0},
398*7b7a118eSTsuyoshi CHO    \]
399*7b7a118eSTsuyoshi CHO  for buf in bufnames
400*7b7a118eSTsuyoshi CHO    new `=buf.name`
401*7b7a118eSTsuyoshi CHO    if buf.match
402*7b7a118eSTsuyoshi CHO      call assert_equal(buf.name,    getbufinfo(buf.id)[0].name)
403*7b7a118eSTsuyoshi CHO    else
404*7b7a118eSTsuyoshi CHO      " slashes will have become backslashes
405*7b7a118eSTsuyoshi CHO      call assert_notequal(buf.name, getbufinfo(buf.id)[0].name)
406*7b7a118eSTsuyoshi CHO    endif
407*7b7a118eSTsuyoshi CHO    bwipe
408*7b7a118eSTsuyoshi CHO  endfor
409*7b7a118eSTsuyoshi CHO
410*7b7a118eSTsuyoshi CHO  set shellslash&
411*7b7a118eSTsuyoshi CHOendfunc
412*7b7a118eSTsuyoshi CHO
41346aa6f93SYegappan Lakshmanan" Test for the 'maxmem' and 'maxmemtot' options
41446aa6f93SYegappan Lakshmananfunc Test_buffer_maxmem()
41546aa6f93SYegappan Lakshmanan  " use 1KB per buffer and 2KB for all the buffers
41646aa6f93SYegappan Lakshmanan  set maxmem=1 maxmemtot=2
41746aa6f93SYegappan Lakshmanan  new
41846aa6f93SYegappan Lakshmanan  let v:errmsg = ''
41946aa6f93SYegappan Lakshmanan  " try opening some files
42046aa6f93SYegappan Lakshmanan  edit test_arglist.vim
42146aa6f93SYegappan Lakshmanan  call assert_equal('test_arglist.vim', bufname())
42246aa6f93SYegappan Lakshmanan  edit test_eval_stuff.vim
42346aa6f93SYegappan Lakshmanan  call assert_equal('test_eval_stuff.vim', bufname())
42446aa6f93SYegappan Lakshmanan  b test_arglist.vim
42546aa6f93SYegappan Lakshmanan  call assert_equal('test_arglist.vim', bufname())
42646aa6f93SYegappan Lakshmanan  b test_eval_stuff.vim
42746aa6f93SYegappan Lakshmanan  call assert_equal('test_eval_stuff.vim', bufname())
42846aa6f93SYegappan Lakshmanan  close
42946aa6f93SYegappan Lakshmanan  call assert_equal('', v:errmsg)
43046aa6f93SYegappan Lakshmanan  set maxmem& maxmemtot&
43146aa6f93SYegappan Lakshmananendfunc
43246aa6f93SYegappan Lakshmanan
4339f6277bdSBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab
434