diff src/testdir/test_buffer.vim @ 19407:2f4be7ca1b1b v8.2.0261

patch 8.2.0261: some code not covered by tests Commit: https://github.com/vim/vim/commit/f0cee1971f5258ce61f8a4e6a04d35c1e625bb01 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Feb 16 13:33:56 2020 +0100 patch 8.2.0261: some code not covered by tests Problem: Some code not covered by tests. Solution: Add test cases. (Yegappan Lakshmanan, closes https://github.com/vim/vim/issues/5645)
author Bram Moolenaar <Bram@vim.org>
date Sun, 16 Feb 2020 13:45:04 +0100
parents 02111977dd05
children 67fbe280a502
line wrap: on
line diff
--- a/src/testdir/test_buffer.vim
+++ b/src/testdir/test_buffer.vim
@@ -61,6 +61,97 @@ func Test_bunload_with_offset()
   call delete('b2')
   call delete('b3')
   call delete('b4')
+
+  call assert_fails('1,4bunload', 'E16:')
+  call assert_fails(',100bunload', 'E16:')
+
+  " Use a try-catch for this test. When assert_fails() is used for this
+  " test, the command fails with E515: instead of E90:
+  let caught_E90 = 0
+  try
+    $bunload
+  catch /E90:/
+    let caught_E90 = 1
+  endtry
+  call assert_equal(1, caught_E90)
+  call assert_fails('$bunload', 'E515:')
+endfunc
+
+" Test for :buffer, :bnext, :bprevious, :brewind, :blast and :bmodified
+" commands
+func Test_buflist_browse()
+  %bwipe!
+  call assert_fails('buffer 1000', 'E86:')
+
+  call writefile(['foo1', 'foo2', 'foo3', 'foo4'], 'Xfile1')
+  call writefile(['bar1', 'bar2', 'bar3', 'bar4'], 'Xfile2')
+  call writefile(['baz1', 'baz2', 'baz3', 'baz4'], 'Xfile3')
+  edit Xfile1
+  let b1 = bufnr()
+  edit Xfile2
+  let b2 = bufnr()
+  edit +/baz4 Xfile3
+  let b3 = bufnr()
+
+  call assert_fails('buffer ' .. b1 .. ' abc', 'E488:')
+  call assert_equal(b3, bufnr())
+  call assert_equal(4, line('.'))
+  exe 'buffer +/bar2 ' .. b2
+  call assert_equal(b2, bufnr())
+  call assert_equal(2, line('.'))
+  exe 'buffer +/bar1'
+  call assert_equal(b2, bufnr())
+  call assert_equal(1, line('.'))
+
+  brewind +/foo3
+  call assert_equal(b1, bufnr())
+  call assert_equal(3, line('.'))
+
+  blast +/baz2
+  call assert_equal(b3, bufnr())
+  call assert_equal(2, line('.'))
+
+  bprevious +/bar4
+  call assert_equal(b2, bufnr())
+  call assert_equal(4, line('.'))
+
+  bnext +/baz3
+  call assert_equal(b3, bufnr())
+  call assert_equal(3, line('.'))
+
+  call assert_fails('bmodified', 'E84:')
+  call setbufvar(b2, '&modified', 1)
+  exe 'bmodified +/bar3'
+  call assert_equal(b2, bufnr())
+  call assert_equal(3, line('.'))
+
+  " With no listed buffers in the list, :bnext and :bprev should fail
+  %bwipe!
+  set nobuflisted
+  call assert_fails('bnext', 'E85:')
+  call assert_fails('bprev', 'E85:')
+  set buflisted
+
+  call assert_fails('sandbox bnext', 'E48:')
+
+  call delete('Xfile1')
+  call delete('Xfile2')
+  call delete('Xfile3')
+  %bwipe!
+endfunc
+
+" Test for :bdelete
+func Test_bdelete_cmd()
+  %bwipe!
+  call assert_fails('bdelete 5', 'E516:')
+
+  " Deleting a unlisted and unloaded buffer
+  edit Xfile1
+  let bnr = bufnr()
+  set nobuflisted
+  enew
+  call assert_fails('bdelete ' .. bnr, 'E516:')
+  %bwipe!
 endfunc
 
 " vim: shiftwidth=2 sts=2 expandtab