xref: /vim-8.2.3635/src/testdir/test_buffer.vim (revision f0cee197)
19f6277bdSBram Moolenaar" Tests for Vim buffer
29f6277bdSBram Moolenaar
39f6277bdSBram Moolenaar" Test for the :bunload command with an offset
49f6277bdSBram Moolenaarfunc Test_bunload_with_offset()
59f6277bdSBram Moolenaar  %bwipe!
69f6277bdSBram Moolenaar  call writefile(['B1'], 'b1')
79f6277bdSBram Moolenaar  call writefile(['B2'], 'b2')
89f6277bdSBram Moolenaar  call writefile(['B3'], 'b3')
99f6277bdSBram Moolenaar  call writefile(['B4'], 'b4')
109f6277bdSBram Moolenaar
119f6277bdSBram Moolenaar  " Load four buffers. Unload the second and third buffers and then
129f6277bdSBram Moolenaar  " execute .+3bunload to unload the last buffer.
139f6277bdSBram Moolenaar  edit b1
149f6277bdSBram Moolenaar  new b2
159f6277bdSBram Moolenaar  new b3
169f6277bdSBram Moolenaar  new b4
179f6277bdSBram Moolenaar
189f6277bdSBram Moolenaar  bunload b2
199f6277bdSBram Moolenaar  bunload b3
209f6277bdSBram Moolenaar  exe bufwinnr('b1') . 'wincmd w'
219f6277bdSBram Moolenaar  .+3bunload
229f6277bdSBram Moolenaar  call assert_equal(0, getbufinfo('b4')[0].loaded)
239f6277bdSBram Moolenaar  call assert_equal('b1',
249f6277bdSBram Moolenaar        \ fnamemodify(getbufinfo({'bufloaded' : 1})[0].name, ':t'))
259f6277bdSBram Moolenaar
269f6277bdSBram Moolenaar  " Load four buffers. Unload the third and fourth buffers. Execute .+3bunload
279f6277bdSBram Moolenaar  " and check whether the second buffer is unloaded.
289f6277bdSBram Moolenaar  ball
299f6277bdSBram Moolenaar  bunload b3
309f6277bdSBram Moolenaar  bunload b4
319f6277bdSBram Moolenaar  exe bufwinnr('b1') . 'wincmd w'
329f6277bdSBram Moolenaar  .+3bunload
339f6277bdSBram Moolenaar  call assert_equal(0, getbufinfo('b2')[0].loaded)
349f6277bdSBram Moolenaar  call assert_equal('b1',
359f6277bdSBram Moolenaar        \ fnamemodify(getbufinfo({'bufloaded' : 1})[0].name, ':t'))
369f6277bdSBram Moolenaar
379f6277bdSBram Moolenaar  " Load four buffers. Unload the second and third buffers and from the last
389f6277bdSBram Moolenaar  " buffer execute .-3bunload to unload the first buffer.
399f6277bdSBram Moolenaar  ball
409f6277bdSBram Moolenaar  bunload b2
419f6277bdSBram Moolenaar  bunload b3
429f6277bdSBram Moolenaar  exe bufwinnr('b4') . 'wincmd w'
439f6277bdSBram Moolenaar  .-3bunload
449f6277bdSBram Moolenaar  call assert_equal(0, getbufinfo('b1')[0].loaded)
459f6277bdSBram Moolenaar  call assert_equal('b4',
469f6277bdSBram Moolenaar        \ fnamemodify(getbufinfo({'bufloaded' : 1})[0].name, ':t'))
479f6277bdSBram Moolenaar
489f6277bdSBram Moolenaar  " Load four buffers. Unload the first and second buffers. Execute .-3bunload
499f6277bdSBram Moolenaar  " from the last buffer and check whether the third buffer is unloaded.
509f6277bdSBram Moolenaar  ball
519f6277bdSBram Moolenaar  bunload b1
529f6277bdSBram Moolenaar  bunload b2
539f6277bdSBram Moolenaar  exe bufwinnr('b4') . 'wincmd w'
549f6277bdSBram Moolenaar  .-3bunload
559f6277bdSBram Moolenaar  call assert_equal(0, getbufinfo('b3')[0].loaded)
569f6277bdSBram Moolenaar  call assert_equal('b4',
579f6277bdSBram Moolenaar        \ fnamemodify(getbufinfo({'bufloaded' : 1})[0].name, ':t'))
589f6277bdSBram Moolenaar
599f6277bdSBram Moolenaar  %bwipe!
609f6277bdSBram Moolenaar  call delete('b1')
619f6277bdSBram Moolenaar  call delete('b2')
629f6277bdSBram Moolenaar  call delete('b3')
639f6277bdSBram Moolenaar  call delete('b4')
64*f0cee197SBram Moolenaar
65*f0cee197SBram Moolenaar  call assert_fails('1,4bunload', 'E16:')
66*f0cee197SBram Moolenaar  call assert_fails(',100bunload', 'E16:')
67*f0cee197SBram Moolenaar
68*f0cee197SBram Moolenaar  " Use a try-catch for this test. When assert_fails() is used for this
69*f0cee197SBram Moolenaar  " test, the command fails with E515: instead of E90:
70*f0cee197SBram Moolenaar  let caught_E90 = 0
71*f0cee197SBram Moolenaar  try
72*f0cee197SBram Moolenaar    $bunload
73*f0cee197SBram Moolenaar  catch /E90:/
74*f0cee197SBram Moolenaar    let caught_E90 = 1
75*f0cee197SBram Moolenaar  endtry
76*f0cee197SBram Moolenaar  call assert_equal(1, caught_E90)
77*f0cee197SBram Moolenaar  call assert_fails('$bunload', 'E515:')
78*f0cee197SBram Moolenaarendfunc
79*f0cee197SBram Moolenaar
80*f0cee197SBram Moolenaar" Test for :buffer, :bnext, :bprevious, :brewind, :blast and :bmodified
81*f0cee197SBram Moolenaar" commands
82*f0cee197SBram Moolenaarfunc Test_buflist_browse()
83*f0cee197SBram Moolenaar  %bwipe!
84*f0cee197SBram Moolenaar  call assert_fails('buffer 1000', 'E86:')
85*f0cee197SBram Moolenaar
86*f0cee197SBram Moolenaar  call writefile(['foo1', 'foo2', 'foo3', 'foo4'], 'Xfile1')
87*f0cee197SBram Moolenaar  call writefile(['bar1', 'bar2', 'bar3', 'bar4'], 'Xfile2')
88*f0cee197SBram Moolenaar  call writefile(['baz1', 'baz2', 'baz3', 'baz4'], 'Xfile3')
89*f0cee197SBram Moolenaar  edit Xfile1
90*f0cee197SBram Moolenaar  let b1 = bufnr()
91*f0cee197SBram Moolenaar  edit Xfile2
92*f0cee197SBram Moolenaar  let b2 = bufnr()
93*f0cee197SBram Moolenaar  edit +/baz4 Xfile3
94*f0cee197SBram Moolenaar  let b3 = bufnr()
95*f0cee197SBram Moolenaar
96*f0cee197SBram Moolenaar  call assert_fails('buffer ' .. b1 .. ' abc', 'E488:')
97*f0cee197SBram Moolenaar  call assert_equal(b3, bufnr())
98*f0cee197SBram Moolenaar  call assert_equal(4, line('.'))
99*f0cee197SBram Moolenaar  exe 'buffer +/bar2 ' .. b2
100*f0cee197SBram Moolenaar  call assert_equal(b2, bufnr())
101*f0cee197SBram Moolenaar  call assert_equal(2, line('.'))
102*f0cee197SBram Moolenaar  exe 'buffer +/bar1'
103*f0cee197SBram Moolenaar  call assert_equal(b2, bufnr())
104*f0cee197SBram Moolenaar  call assert_equal(1, line('.'))
105*f0cee197SBram Moolenaar
106*f0cee197SBram Moolenaar  brewind +/foo3
107*f0cee197SBram Moolenaar  call assert_equal(b1, bufnr())
108*f0cee197SBram Moolenaar  call assert_equal(3, line('.'))
109*f0cee197SBram Moolenaar
110*f0cee197SBram Moolenaar  blast +/baz2
111*f0cee197SBram Moolenaar  call assert_equal(b3, bufnr())
112*f0cee197SBram Moolenaar  call assert_equal(2, line('.'))
113*f0cee197SBram Moolenaar
114*f0cee197SBram Moolenaar  bprevious +/bar4
115*f0cee197SBram Moolenaar  call assert_equal(b2, bufnr())
116*f0cee197SBram Moolenaar  call assert_equal(4, line('.'))
117*f0cee197SBram Moolenaar
118*f0cee197SBram Moolenaar  bnext +/baz3
119*f0cee197SBram Moolenaar  call assert_equal(b3, bufnr())
120*f0cee197SBram Moolenaar  call assert_equal(3, line('.'))
121*f0cee197SBram Moolenaar
122*f0cee197SBram Moolenaar  call assert_fails('bmodified', 'E84:')
123*f0cee197SBram Moolenaar  call setbufvar(b2, '&modified', 1)
124*f0cee197SBram Moolenaar  exe 'bmodified +/bar3'
125*f0cee197SBram Moolenaar  call assert_equal(b2, bufnr())
126*f0cee197SBram Moolenaar  call assert_equal(3, line('.'))
127*f0cee197SBram Moolenaar
128*f0cee197SBram Moolenaar  " With no listed buffers in the list, :bnext and :bprev should fail
129*f0cee197SBram Moolenaar  %bwipe!
130*f0cee197SBram Moolenaar  set nobuflisted
131*f0cee197SBram Moolenaar  call assert_fails('bnext', 'E85:')
132*f0cee197SBram Moolenaar  call assert_fails('bprev', 'E85:')
133*f0cee197SBram Moolenaar  set buflisted
134*f0cee197SBram Moolenaar
135*f0cee197SBram Moolenaar  call assert_fails('sandbox bnext', 'E48:')
136*f0cee197SBram Moolenaar
137*f0cee197SBram Moolenaar  call delete('Xfile1')
138*f0cee197SBram Moolenaar  call delete('Xfile2')
139*f0cee197SBram Moolenaar  call delete('Xfile3')
140*f0cee197SBram Moolenaar  %bwipe!
141*f0cee197SBram Moolenaarendfunc
142*f0cee197SBram Moolenaar
143*f0cee197SBram Moolenaar" Test for :bdelete
144*f0cee197SBram Moolenaarfunc Test_bdelete_cmd()
145*f0cee197SBram Moolenaar  %bwipe!
146*f0cee197SBram Moolenaar  call assert_fails('bdelete 5', 'E516:')
147*f0cee197SBram Moolenaar
148*f0cee197SBram Moolenaar  " Deleting a unlisted and unloaded buffer
149*f0cee197SBram Moolenaar  edit Xfile1
150*f0cee197SBram Moolenaar  let bnr = bufnr()
151*f0cee197SBram Moolenaar  set nobuflisted
152*f0cee197SBram Moolenaar  enew
153*f0cee197SBram Moolenaar  call assert_fails('bdelete ' .. bnr, 'E516:')
154*f0cee197SBram Moolenaar  %bwipe!
1559f6277bdSBram Moolenaarendfunc
1569f6277bdSBram Moolenaar
1579f6277bdSBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab
158