1d79a2621SBram Moolenaar" Tests for setbufline(), getbufline(), appendbufline(), deletebufline() 2b31cf2bbSBram Moolenaar 311aa62f8SBram Moolenaarsource shared.vim 429846662SBram Moolenaarsource screendump.vim 58c5a278fSBram Moolenaarsource check.vim 611aa62f8SBram Moolenaar 7b31cf2bbSBram Moolenaarfunc Test_setbufline_getbufline() 834453208SBram Moolenaar " similar to Test_set_get_bufline() 9b31cf2bbSBram Moolenaar new 10b31cf2bbSBram Moolenaar let b = bufnr('%') 11b31cf2bbSBram Moolenaar hide 12b31cf2bbSBram Moolenaar call assert_equal(0, setbufline(b, 1, ['foo', 'bar'])) 13b31cf2bbSBram Moolenaar call assert_equal(['foo'], getbufline(b, 1)) 1417aca707SBram Moolenaar call assert_equal(['bar'], getbufline(b, '$')) 15b31cf2bbSBram Moolenaar call assert_equal(['foo', 'bar'], getbufline(b, 1, 2)) 16b31cf2bbSBram Moolenaar exe "bd!" b 17b31cf2bbSBram Moolenaar call assert_equal([], getbufline(b, 1, 2)) 18b31cf2bbSBram Moolenaar 19b31cf2bbSBram Moolenaar split Xtest 20b31cf2bbSBram Moolenaar call setline(1, ['a', 'b', 'c']) 21b31cf2bbSBram Moolenaar let b = bufnr('%') 22b31cf2bbSBram Moolenaar wincmd w 23ad48e6c1SBram Moolenaar 24ad48e6c1SBram Moolenaar call assert_equal(1, setbufline(b, 5, 'x')) 25b31cf2bbSBram Moolenaar call assert_equal(1, setbufline(b, 5, ['x'])) 26ad48e6c1SBram Moolenaar call assert_equal(1, setbufline(b, 5, [])) 27ad48e6c1SBram Moolenaar call assert_equal(1, setbufline(b, 5, test_null_list())) 28ad48e6c1SBram Moolenaar 29ad48e6c1SBram Moolenaar call assert_equal(1, 'x'->setbufline(bufnr('$') + 1, 1)) 30196b4664SBram Moolenaar call assert_equal(1, ['x']->setbufline(bufnr('$') + 1, 1)) 31ad48e6c1SBram Moolenaar call assert_equal(1, []->setbufline(bufnr('$') + 1, 1)) 32ad48e6c1SBram Moolenaar call assert_equal(1, test_null_list()->setbufline(bufnr('$') + 1, 1)) 33ad48e6c1SBram Moolenaar 34ad48e6c1SBram Moolenaar call assert_equal(['a', 'b', 'c'], getbufline(b, 1, '$')) 35ad48e6c1SBram Moolenaar 36b31cf2bbSBram Moolenaar call assert_equal(0, setbufline(b, 4, ['d', 'e'])) 374c313b13SBram Moolenaar call assert_equal(['c'], b->getbufline(3)) 38b31cf2bbSBram Moolenaar call assert_equal(['d'], getbufline(b, 4)) 39b31cf2bbSBram Moolenaar call assert_equal(['e'], getbufline(b, 5)) 40b31cf2bbSBram Moolenaar call assert_equal([], getbufline(b, 6)) 4199fa7219SBram Moolenaar call assert_equal([], getbufline(b, 2, 1)) 4234453208SBram Moolenaar 4300385114SBram Moolenaar if has('job') 4434453208SBram Moolenaar call setbufline(b, 2, [function('eval'), #{key: 123}, test_null_job()]) 4534453208SBram Moolenaar call assert_equal(["function('eval')", 4634453208SBram Moolenaar \ "{'key': 123}", 4734453208SBram Moolenaar \ "no process"], 4834453208SBram Moolenaar \ getbufline(b, 2, 4)) 4900385114SBram Moolenaar endif 50b31cf2bbSBram Moolenaar exe "bwipe! " . b 51b31cf2bbSBram Moolenaarendfunc 529d954207SBram Moolenaar 530c4dc88aSBram Moolenaarfunc Test_setbufline_getbufline_fold() 540c4dc88aSBram Moolenaar split Xtest 550c4dc88aSBram Moolenaar setlocal foldmethod=expr foldexpr=0 560c4dc88aSBram Moolenaar let b = bufnr('%') 570c4dc88aSBram Moolenaar new 580c4dc88aSBram Moolenaar call assert_equal(0, setbufline(b, 1, ['foo', 'bar'])) 590c4dc88aSBram Moolenaar call assert_equal(['foo'], getbufline(b, 1)) 600c4dc88aSBram Moolenaar call assert_equal(['bar'], getbufline(b, 2)) 610c4dc88aSBram Moolenaar call assert_equal(['foo', 'bar'], getbufline(b, 1, 2)) 620c4dc88aSBram Moolenaar exe "bwipe!" b 630c4dc88aSBram Moolenaar bwipe! 640c4dc88aSBram Moolenaarendfunc 650c4dc88aSBram Moolenaar 660c4dc88aSBram Moolenaarfunc Test_setbufline_getbufline_fold_tab() 670c4dc88aSBram Moolenaar split Xtest 680c4dc88aSBram Moolenaar setlocal foldmethod=expr foldexpr=0 690c4dc88aSBram Moolenaar let b = bufnr('%') 700c4dc88aSBram Moolenaar tab new 710c4dc88aSBram Moolenaar call assert_equal(0, setbufline(b, 1, ['foo', 'bar'])) 720c4dc88aSBram Moolenaar call assert_equal(['foo'], getbufline(b, 1)) 730c4dc88aSBram Moolenaar call assert_equal(['bar'], getbufline(b, 2)) 740c4dc88aSBram Moolenaar call assert_equal(['foo', 'bar'], getbufline(b, 1, 2)) 750c4dc88aSBram Moolenaar exe "bwipe!" b 760c4dc88aSBram Moolenaar bwipe! 770c4dc88aSBram Moolenaarendfunc 780c4dc88aSBram Moolenaar 799d954207SBram Moolenaarfunc Test_setline_startup() 809d954207SBram Moolenaar let cmd = GetVimCommand('Xscript') 819d954207SBram Moolenaar if cmd == '' 829d954207SBram Moolenaar return 839d954207SBram Moolenaar endif 8411aa62f8SBram Moolenaar call writefile(['call setline(1, "Hello")', 'silent w Xtest', 'q!'], 'Xscript') 859d954207SBram Moolenaar call system(cmd) 869d954207SBram Moolenaar call assert_equal(['Hello'], readfile('Xtest')) 879d954207SBram Moolenaar 889d954207SBram Moolenaar call delete('Xscript') 899d954207SBram Moolenaar call delete('Xtest') 909d954207SBram Moolenaarendfunc 91ca851593SBram Moolenaar 92ca851593SBram Moolenaarfunc Test_appendbufline() 93ca851593SBram Moolenaar new 94ca851593SBram Moolenaar let b = bufnr('%') 95ca851593SBram Moolenaar hide 96ca851593SBram Moolenaar call assert_equal(0, appendbufline(b, 0, ['foo', 'bar'])) 97ca851593SBram Moolenaar call assert_equal(['foo'], getbufline(b, 1)) 98ca851593SBram Moolenaar call assert_equal(['bar'], getbufline(b, 2)) 99ca851593SBram Moolenaar call assert_equal(['foo', 'bar'], getbufline(b, 1, 2)) 100ca851593SBram Moolenaar exe "bd!" b 101ca851593SBram Moolenaar call assert_equal([], getbufline(b, 1, 2)) 102ca851593SBram Moolenaar 103ca851593SBram Moolenaar split Xtest 104ca851593SBram Moolenaar call setline(1, ['a', 'b', 'c']) 105ca851593SBram Moolenaar let b = bufnr('%') 106ca851593SBram Moolenaar wincmd w 107ad48e6c1SBram Moolenaar 108ad48e6c1SBram Moolenaar call assert_equal(1, appendbufline(b, -1, 'x')) 10917aca707SBram Moolenaar call assert_equal(1, appendbufline(b, -1, ['x'])) 110ad48e6c1SBram Moolenaar call assert_equal(1, appendbufline(b, -1, [])) 111ad48e6c1SBram Moolenaar call assert_equal(1, appendbufline(b, -1, test_null_list())) 112ad48e6c1SBram Moolenaar 113ad48e6c1SBram Moolenaar call assert_equal(1, appendbufline(b, 4, 'x')) 114ca851593SBram Moolenaar call assert_equal(1, appendbufline(b, 4, ['x'])) 115ad48e6c1SBram Moolenaar call assert_equal(1, appendbufline(b, 4, [])) 116ad48e6c1SBram Moolenaar call assert_equal(1, appendbufline(b, 4, test_null_list())) 117ad48e6c1SBram Moolenaar 118ad48e6c1SBram Moolenaar call assert_equal(1, appendbufline(1234, 1, 'x')) 119ca851593SBram Moolenaar call assert_equal(1, appendbufline(1234, 1, ['x'])) 120ad48e6c1SBram Moolenaar call assert_equal(1, appendbufline(1234, 1, [])) 121ad48e6c1SBram Moolenaar call assert_equal(1, appendbufline(1234, 1, test_null_list())) 122ad48e6c1SBram Moolenaar 123ad48e6c1SBram Moolenaar call assert_equal(0, appendbufline(b, 1, [])) 124ad48e6c1SBram Moolenaar call assert_equal(0, appendbufline(b, 1, test_null_list())) 125ad48e6c1SBram Moolenaar call assert_equal(1, appendbufline(b, 3, [])) 126ad48e6c1SBram Moolenaar call assert_equal(1, appendbufline(b, 3, test_null_list())) 127ad48e6c1SBram Moolenaar 128ad48e6c1SBram Moolenaar call assert_equal(['a', 'b', 'c'], getbufline(b, 1, '$')) 129ad48e6c1SBram Moolenaar 130ca851593SBram Moolenaar call assert_equal(0, appendbufline(b, 3, ['d', 'e'])) 131ca851593SBram Moolenaar call assert_equal(['c'], getbufline(b, 3)) 132ca851593SBram Moolenaar call assert_equal(['d'], getbufline(b, 4)) 133ca851593SBram Moolenaar call assert_equal(['e'], getbufline(b, 5)) 134ca851593SBram Moolenaar call assert_equal([], getbufline(b, 6)) 135ca851593SBram Moolenaar exe "bwipe! " . b 136ca851593SBram Moolenaarendfunc 137d79a2621SBram Moolenaar 1389cea87c5SBram Moolenaarfunc Test_appendbufline_no_E315() 139c79745a8SBram Moolenaar let after =<< trim [CODE] 140c79745a8SBram Moolenaar set stl=%f ls=2 141c79745a8SBram Moolenaar new 142c79745a8SBram Moolenaar let buf = bufnr("%") 143c79745a8SBram Moolenaar quit 144c79745a8SBram Moolenaar vsp 145c79745a8SBram Moolenaar exec "buffer" buf 146c79745a8SBram Moolenaar wincmd w 147c79745a8SBram Moolenaar call appendbufline(buf, 0, "abc") 148c79745a8SBram Moolenaar redraw 149c79745a8SBram Moolenaar while getbufline(buf, 1)[0] =~ "^\\s*$" 150c79745a8SBram Moolenaar sleep 10m 151c79745a8SBram Moolenaar endwhile 152c79745a8SBram Moolenaar au VimLeavePre * call writefile([v:errmsg], "Xerror") 153c79745a8SBram Moolenaar au VimLeavePre * call writefile(["done"], "Xdone") 154c79745a8SBram Moolenaar qall! 155c79745a8SBram Moolenaar [CODE] 156c79745a8SBram Moolenaar 1579cea87c5SBram Moolenaar if !RunVim([], after, '--clean') 1589cea87c5SBram Moolenaar return 1599cea87c5SBram Moolenaar endif 1609cea87c5SBram Moolenaar call assert_notmatch("^E315:", readfile("Xerror")[0]) 1619cea87c5SBram Moolenaar call assert_equal("done", readfile("Xdone")[0]) 1629cea87c5SBram Moolenaar call delete("Xerror") 1639cea87c5SBram Moolenaar call delete("Xdone") 1649cea87c5SBram Moolenaarendfunc 1659cea87c5SBram Moolenaar 166d79a2621SBram Moolenaarfunc Test_deletebufline() 167d79a2621SBram Moolenaar new 168d79a2621SBram Moolenaar let b = bufnr('%') 169d79a2621SBram Moolenaar call setline(1, ['aaa', 'bbb', 'ccc']) 170d79a2621SBram Moolenaar hide 171d79a2621SBram Moolenaar call assert_equal(0, deletebufline(b, 2)) 172d79a2621SBram Moolenaar call assert_equal(['aaa', 'ccc'], getbufline(b, 1, 2)) 173d79a2621SBram Moolenaar call assert_equal(0, deletebufline(b, 2, 8)) 174d79a2621SBram Moolenaar call assert_equal(['aaa'], getbufline(b, 1, 2)) 175d79a2621SBram Moolenaar exe "bd!" b 1761a3a8916SBram Moolenaar call assert_equal(1, b->deletebufline(1)) 177d79a2621SBram Moolenaar 17817aca707SBram Moolenaar call assert_equal(1, deletebufline(-1, 1)) 17917aca707SBram Moolenaar 180d79a2621SBram Moolenaar split Xtest 181d79a2621SBram Moolenaar call setline(1, ['a', 'b', 'c']) 18217aca707SBram Moolenaar call cursor(line('$'), 1) 183d79a2621SBram Moolenaar let b = bufnr('%') 184d79a2621SBram Moolenaar wincmd w 185d79a2621SBram Moolenaar call assert_equal(1, deletebufline(b, 4)) 186d79a2621SBram Moolenaar call assert_equal(0, deletebufline(b, 1)) 187d79a2621SBram Moolenaar call assert_equal(['b', 'c'], getbufline(b, 1, 2)) 188d79a2621SBram Moolenaar exe "bwipe! " . b 189*963ffa0aSBram Moolenaar 190*963ffa0aSBram Moolenaar edit XbufOne 191*963ffa0aSBram Moolenaar let one = bufnr() 192*963ffa0aSBram Moolenaar call setline(1, ['a', 'b', 'c']) 193*963ffa0aSBram Moolenaar setlocal nomodifiable 194*963ffa0aSBram Moolenaar split XbufTwo 195*963ffa0aSBram Moolenaar let two = bufnr() 196*963ffa0aSBram Moolenaar call assert_fails('call deletebufline(one, 1)', 'E21:') 197*963ffa0aSBram Moolenaar call assert_equal(two, bufnr()) 198*963ffa0aSBram Moolenaar bwipe! XbufTwo 199*963ffa0aSBram Moolenaar bwipe! XbufOne 200d79a2621SBram Moolenaarendfunc 20129846662SBram Moolenaar 20229846662SBram Moolenaarfunc Test_appendbufline_redraw() 2038c5a278fSBram Moolenaar CheckScreendump 2048c5a278fSBram Moolenaar 20529846662SBram Moolenaar let lines =<< trim END 20629846662SBram Moolenaar new foo 207e49fbff3SBram Moolenaar let winnr = 'foo'->bufwinnr() 20829846662SBram Moolenaar let buf = bufnr('foo') 20929846662SBram Moolenaar wincmd p 21029846662SBram Moolenaar call appendbufline(buf, '$', range(1,200)) 211e49fbff3SBram Moolenaar exe winnr .. 'wincmd w' 21229846662SBram Moolenaar norm! G 21329846662SBram Moolenaar wincmd p 21429846662SBram Moolenaar call deletebufline(buf, 1, '$') 21529846662SBram Moolenaar call appendbufline(buf, '$', 'Hello Vim world...') 21629846662SBram Moolenaar END 21729846662SBram Moolenaar call writefile(lines, 'XscriptMatchCommon') 21829846662SBram Moolenaar let buf = RunVimInTerminal('-S XscriptMatchCommon', #{rows: 10}) 2196a2c5a7dSBram Moolenaar call TermWait(buf) 22029846662SBram Moolenaar call VerifyScreenDump(buf, 'Test_appendbufline_1', {}) 22129846662SBram Moolenaar 22229846662SBram Moolenaar call StopVimInTerminal(buf) 22329846662SBram Moolenaar call delete('XscriptMatchCommon') 22429846662SBram Moolenaarendfunc 2256d91bcb4SBram Moolenaar 2266d91bcb4SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab 227