blob: 9c29a05e703b17035b5dcacf74ff45a5aa616cc1 [file] [log] [blame]
Bram Moolenaard79a2622018-06-07 18:17:46 +02001" Tests for setbufline(), getbufline(), appendbufline(), deletebufline()
Bram Moolenaarb31cf2b2017-09-02 19:45:19 +02002
Bram Moolenaar660b85e2017-09-30 14:26:58 +02003source shared.vim
Bram Moolenaar11aa62f2017-09-04 22:56:01 +02004
Bram Moolenaarb31cf2b2017-09-02 19:45:19 +02005func 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))
Bram Moolenaar17aca702019-05-16 22:24:55 +020011 call assert_equal(['bar'], getbufline(b, '$'))
Bram Moolenaarb31cf2b2017-09-02 19:45:19 +020012 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']))
Bram Moolenaarabc7c7f2019-04-20 15:10:13 +020021 call assert_equal(1, setbufline(bufnr('$') + 1, 1, ['x']))
Bram Moolenaarb31cf2b2017-09-02 19:45:19 +020022 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
Bram Moolenaar9d954202017-09-04 20:34:19 +020029
Bram Moolenaar0c4dc882017-11-06 21:32:54 +010030func 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
Bram Moolenaar9d954202017-09-04 20:34:19 +020056func Test_setline_startup()
57 let cmd = GetVimCommand('Xscript')
58 if cmd == ''
59 return
60 endif
Bram Moolenaar11aa62f2017-09-04 22:56:01 +020061 call writefile(['call setline(1, "Hello")', 'silent w Xtest', 'q!'], 'Xscript')
Bram Moolenaar9d954202017-09-04 20:34:19 +020062 call system(cmd)
63 call assert_equal(['Hello'], readfile('Xtest'))
64
65 call delete('Xscript')
66 call delete('Xtest')
67endfunc
Bram Moolenaarca851592018-06-06 21:04:07 +020068
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
Bram Moolenaar17aca702019-05-16 22:24:55 +020084 call assert_equal(1, appendbufline(b, -1, ['x']))
Bram Moolenaarca851592018-06-06 21:04:07 +020085 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
Bram Moolenaard79a2622018-06-07 18:17:46 +020094
Bram Moolenaar9cea87c2018-09-21 16:59:45 +020095func 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
Bram Moolenaard79a2622018-06-07 18:17:46 +0200122func 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
Bram Moolenaar17aca702019-05-16 22:24:55 +0200134 call assert_equal(1, deletebufline(-1, 1))
135
Bram Moolenaard79a2622018-06-07 18:17:46 +0200136 split Xtest
137 call setline(1, ['a', 'b', 'c'])
Bram Moolenaar17aca702019-05-16 22:24:55 +0200138 call cursor(line('$'), 1)
Bram Moolenaard79a2622018-06-07 18:17:46 +0200139 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