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