xref: /vim-8.2.3635/src/testdir/test_buffer.vim (revision bc2b71d4)
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')
64f0cee197SBram Moolenaar
65f0cee197SBram Moolenaar  call assert_fails('1,4bunload', 'E16:')
66f0cee197SBram Moolenaar  call assert_fails(',100bunload', 'E16:')
67f0cee197SBram Moolenaar
68f0cee197SBram Moolenaar  " Use a try-catch for this test. When assert_fails() is used for this
69f0cee197SBram Moolenaar  " test, the command fails with E515: instead of E90:
70f0cee197SBram Moolenaar  let caught_E90 = 0
71f0cee197SBram Moolenaar  try
72f0cee197SBram Moolenaar    $bunload
73f0cee197SBram Moolenaar  catch /E90:/
74f0cee197SBram Moolenaar    let caught_E90 = 1
75f0cee197SBram Moolenaar  endtry
76f0cee197SBram Moolenaar  call assert_equal(1, caught_E90)
77f0cee197SBram Moolenaar  call assert_fails('$bunload', 'E515:')
78f0cee197SBram Moolenaarendfunc
79f0cee197SBram Moolenaar
80f0cee197SBram Moolenaar" Test for :buffer, :bnext, :bprevious, :brewind, :blast and :bmodified
81f0cee197SBram Moolenaar" commands
82f0cee197SBram Moolenaarfunc Test_buflist_browse()
83f0cee197SBram Moolenaar  %bwipe!
84f0cee197SBram Moolenaar  call assert_fails('buffer 1000', 'E86:')
85f0cee197SBram Moolenaar
86f0cee197SBram Moolenaar  call writefile(['foo1', 'foo2', 'foo3', 'foo4'], 'Xfile1')
87f0cee197SBram Moolenaar  call writefile(['bar1', 'bar2', 'bar3', 'bar4'], 'Xfile2')
88f0cee197SBram Moolenaar  call writefile(['baz1', 'baz2', 'baz3', 'baz4'], 'Xfile3')
89f0cee197SBram Moolenaar  edit Xfile1
90f0cee197SBram Moolenaar  let b1 = bufnr()
91f0cee197SBram Moolenaar  edit Xfile2
92f0cee197SBram Moolenaar  let b2 = bufnr()
93f0cee197SBram Moolenaar  edit +/baz4 Xfile3
94f0cee197SBram Moolenaar  let b3 = bufnr()
95f0cee197SBram Moolenaar
96f0cee197SBram Moolenaar  call assert_fails('buffer ' .. b1 .. ' abc', 'E488:')
97f0cee197SBram Moolenaar  call assert_equal(b3, bufnr())
98f0cee197SBram Moolenaar  call assert_equal(4, line('.'))
99f0cee197SBram Moolenaar  exe 'buffer +/bar2 ' .. b2
100f0cee197SBram Moolenaar  call assert_equal(b2, bufnr())
101f0cee197SBram Moolenaar  call assert_equal(2, line('.'))
102f0cee197SBram Moolenaar  exe 'buffer +/bar1'
103f0cee197SBram Moolenaar  call assert_equal(b2, bufnr())
104f0cee197SBram Moolenaar  call assert_equal(1, line('.'))
105f0cee197SBram Moolenaar
106*bc2b71d4SBram Moolenaar  brewind +
107f0cee197SBram Moolenaar  call assert_equal(b1, bufnr())
108*bc2b71d4SBram Moolenaar  call assert_equal(4, line('.'))
109f0cee197SBram Moolenaar
110f0cee197SBram Moolenaar  blast +/baz2
111f0cee197SBram Moolenaar  call assert_equal(b3, bufnr())
112f0cee197SBram Moolenaar  call assert_equal(2, line('.'))
113f0cee197SBram Moolenaar
114f0cee197SBram Moolenaar  bprevious +/bar4
115f0cee197SBram Moolenaar  call assert_equal(b2, bufnr())
116f0cee197SBram Moolenaar  call assert_equal(4, line('.'))
117f0cee197SBram Moolenaar
118f0cee197SBram Moolenaar  bnext +/baz3
119f0cee197SBram Moolenaar  call assert_equal(b3, bufnr())
120f0cee197SBram Moolenaar  call assert_equal(3, line('.'))
121f0cee197SBram Moolenaar
122f0cee197SBram Moolenaar  call assert_fails('bmodified', 'E84:')
123f0cee197SBram Moolenaar  call setbufvar(b2, '&modified', 1)
124f0cee197SBram Moolenaar  exe 'bmodified +/bar3'
125f0cee197SBram Moolenaar  call assert_equal(b2, bufnr())
126f0cee197SBram Moolenaar  call assert_equal(3, line('.'))
127f0cee197SBram Moolenaar
128f0cee197SBram Moolenaar  " With no listed buffers in the list, :bnext and :bprev should fail
129f0cee197SBram Moolenaar  %bwipe!
130f0cee197SBram Moolenaar  set nobuflisted
131f0cee197SBram Moolenaar  call assert_fails('bnext', 'E85:')
132f0cee197SBram Moolenaar  call assert_fails('bprev', 'E85:')
133f0cee197SBram Moolenaar  set buflisted
134f0cee197SBram Moolenaar
135f0cee197SBram Moolenaar  call assert_fails('sandbox bnext', 'E48:')
136f0cee197SBram Moolenaar
137f0cee197SBram Moolenaar  call delete('Xfile1')
138f0cee197SBram Moolenaar  call delete('Xfile2')
139f0cee197SBram Moolenaar  call delete('Xfile3')
140f0cee197SBram Moolenaar  %bwipe!
141f0cee197SBram Moolenaarendfunc
142f0cee197SBram Moolenaar
143f0cee197SBram Moolenaar" Test for :bdelete
144f0cee197SBram Moolenaarfunc Test_bdelete_cmd()
145f0cee197SBram Moolenaar  %bwipe!
146f0cee197SBram Moolenaar  call assert_fails('bdelete 5', 'E516:')
147f0cee197SBram Moolenaar
148f0cee197SBram Moolenaar  " Deleting a unlisted and unloaded buffer
149f0cee197SBram Moolenaar  edit Xfile1
150f0cee197SBram Moolenaar  let bnr = bufnr()
151f0cee197SBram Moolenaar  set nobuflisted
152f0cee197SBram Moolenaar  enew
153f0cee197SBram Moolenaar  call assert_fails('bdelete ' .. bnr, 'E516:')
154f0cee197SBram Moolenaar  %bwipe!
1559f6277bdSBram Moolenaarendfunc
1569f6277bdSBram Moolenaar
1579f6277bdSBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab
158