xref: /vim-8.2.3635/src/testdir/test_bufline.vim (revision 963ffa0a)
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