1" Tests for setbufline(), getbufline(), appendbufline(), deletebufline() 2 3source shared.vim 4 5func Test_setbufline_getbufline() 6 new 7 let b = bufnr('%') 8 hide 9 call assert_equal(0, setbufline(b, 1, ['foo', 'bar'])) 10 call assert_equal(['foo'], getbufline(b, 1)) 11 call assert_equal(['bar'], getbufline(b, '$')) 12 call assert_equal(['foo', 'bar'], getbufline(b, 1, 2)) 13 exe "bd!" b 14 call assert_equal([], getbufline(b, 1, 2)) 15 16 split Xtest 17 call setline(1, ['a', 'b', 'c']) 18 let b = bufnr('%') 19 wincmd w 20 call assert_equal(1, setbufline(b, 5, ['x'])) 21 call assert_equal(1, setbufline(bufnr('$') + 1, 1, ['x'])) 22 call assert_equal(0, setbufline(b, 4, ['d', 'e'])) 23 call assert_equal(['c'], getbufline(b, 3)) 24 call assert_equal(['d'], getbufline(b, 4)) 25 call assert_equal(['e'], getbufline(b, 5)) 26 call assert_equal([], getbufline(b, 6)) 27 exe "bwipe! " . b 28endfunc 29 30func Test_setbufline_getbufline_fold() 31 split Xtest 32 setlocal foldmethod=expr foldexpr=0 33 let b = bufnr('%') 34 new 35 call assert_equal(0, setbufline(b, 1, ['foo', 'bar'])) 36 call assert_equal(['foo'], getbufline(b, 1)) 37 call assert_equal(['bar'], getbufline(b, 2)) 38 call assert_equal(['foo', 'bar'], getbufline(b, 1, 2)) 39 exe "bwipe!" b 40 bwipe! 41endfunc 42 43func Test_setbufline_getbufline_fold_tab() 44 split Xtest 45 setlocal foldmethod=expr foldexpr=0 46 let b = bufnr('%') 47 tab new 48 call assert_equal(0, setbufline(b, 1, ['foo', 'bar'])) 49 call assert_equal(['foo'], getbufline(b, 1)) 50 call assert_equal(['bar'], getbufline(b, 2)) 51 call assert_equal(['foo', 'bar'], getbufline(b, 1, 2)) 52 exe "bwipe!" b 53 bwipe! 54endfunc 55 56func Test_setline_startup() 57 let cmd = GetVimCommand('Xscript') 58 if cmd == '' 59 return 60 endif 61 call writefile(['call setline(1, "Hello")', 'silent w Xtest', 'q!'], 'Xscript') 62 call system(cmd) 63 call assert_equal(['Hello'], readfile('Xtest')) 64 65 call delete('Xscript') 66 call delete('Xtest') 67endfunc 68 69func Test_appendbufline() 70 new 71 let b = bufnr('%') 72 hide 73 call assert_equal(0, appendbufline(b, 0, ['foo', 'bar'])) 74 call assert_equal(['foo'], getbufline(b, 1)) 75 call assert_equal(['bar'], getbufline(b, 2)) 76 call assert_equal(['foo', 'bar'], getbufline(b, 1, 2)) 77 exe "bd!" b 78 call assert_equal([], getbufline(b, 1, 2)) 79 80 split Xtest 81 call setline(1, ['a', 'b', 'c']) 82 let b = bufnr('%') 83 wincmd w 84 call assert_equal(1, appendbufline(b, -1, ['x'])) 85 call assert_equal(1, appendbufline(b, 4, ['x'])) 86 call assert_equal(1, appendbufline(1234, 1, ['x'])) 87 call assert_equal(0, appendbufline(b, 3, ['d', 'e'])) 88 call assert_equal(['c'], getbufline(b, 3)) 89 call assert_equal(['d'], getbufline(b, 4)) 90 call assert_equal(['e'], getbufline(b, 5)) 91 call assert_equal([], getbufline(b, 6)) 92 exe "bwipe! " . b 93endfunc 94 95func Test_appendbufline_no_E315() 96 let after = [ 97 \ 'set stl=%f ls=2', 98 \ 'new', 99 \ 'let buf = bufnr("%")', 100 \ 'quit', 101 \ 'vsp', 102 \ 'exec "buffer" buf', 103 \ 'wincmd w', 104 \ 'call appendbufline(buf, 0, "abc")', 105 \ 'redraw', 106 \ 'while getbufline(buf, 1)[0] =~ "^\\s*$"', 107 \ ' sleep 10m', 108 \ 'endwhile', 109 \ 'au VimLeavePre * call writefile([v:errmsg], "Xerror")', 110 \ 'au VimLeavePre * call writefile(["done"], "Xdone")', 111 \ 'qall!', 112 \ ] 113 if !RunVim([], after, '--clean') 114 return 115 endif 116 call assert_notmatch("^E315:", readfile("Xerror")[0]) 117 call assert_equal("done", readfile("Xdone")[0]) 118 call delete("Xerror") 119 call delete("Xdone") 120endfunc 121 122func Test_deletebufline() 123 new 124 let b = bufnr('%') 125 call setline(1, ['aaa', 'bbb', 'ccc']) 126 hide 127 call assert_equal(0, deletebufline(b, 2)) 128 call assert_equal(['aaa', 'ccc'], getbufline(b, 1, 2)) 129 call assert_equal(0, deletebufline(b, 2, 8)) 130 call assert_equal(['aaa'], getbufline(b, 1, 2)) 131 exe "bd!" b 132 call assert_equal(1, deletebufline(b, 1)) 133 134 call assert_equal(1, deletebufline(-1, 1)) 135 136 split Xtest 137 call setline(1, ['a', 'b', 'c']) 138 call cursor(line('$'), 1) 139 let b = bufnr('%') 140 wincmd w 141 call assert_equal(1, deletebufline(b, 4)) 142 call assert_equal(0, deletebufline(b, 1)) 143 call assert_equal(['b', 'c'], getbufline(b, 1, 2)) 144 exe "bwipe! " . b 145endfunc 146