blob: 524144d5b9a3e2358bad2bbd117ee4b24b358110 [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))
11 call assert_equal(['bar'], getbufline(b, 2))
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(1234, 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
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
84 call assert_equal(1, appendbufline(b, 4, ['x']))
85 call assert_equal(1, appendbufline(1234, 1, ['x']))
86 call assert_equal(0, appendbufline(b, 3, ['d', 'e']))
87 call assert_equal(['c'], getbufline(b, 3))
88 call assert_equal(['d'], getbufline(b, 4))
89 call assert_equal(['e'], getbufline(b, 5))
90 call assert_equal([], getbufline(b, 6))
91 exe "bwipe! " . b
92endfunc
Bram Moolenaard79a2622018-06-07 18:17:46 +020093
Bram Moolenaar9cea87c2018-09-21 16:59:45 +020094func Test_appendbufline_no_E315()
95 let after = [
96 \ 'set stl=%f ls=2',
97 \ 'new',
98 \ 'let buf = bufnr("%")',
99 \ 'quit',
100 \ 'vsp',
101 \ 'exec "buffer" buf',
102 \ 'wincmd w',
103 \ 'call appendbufline(buf, 0, "abc")',
104 \ 'redraw',
105 \ 'while getbufline(buf, 1)[0] =~ "^\\s*$"',
106 \ ' sleep 10m',
107 \ 'endwhile',
108 \ 'au VimLeavePre * call writefile([v:errmsg], "Xerror")',
109 \ 'au VimLeavePre * call writefile(["done"], "Xdone")',
110 \ 'qall!',
111 \ ]
112 if !RunVim([], after, '--clean')
113 return
114 endif
115 call assert_notmatch("^E315:", readfile("Xerror")[0])
116 call assert_equal("done", readfile("Xdone")[0])
117 call delete("Xerror")
118 call delete("Xdone")
119endfunc
120
Bram Moolenaard79a2622018-06-07 18:17:46 +0200121func Test_deletebufline()
122 new
123 let b = bufnr('%')
124 call setline(1, ['aaa', 'bbb', 'ccc'])
125 hide
126 call assert_equal(0, deletebufline(b, 2))
127 call assert_equal(['aaa', 'ccc'], getbufline(b, 1, 2))
128 call assert_equal(0, deletebufline(b, 2, 8))
129 call assert_equal(['aaa'], getbufline(b, 1, 2))
130 exe "bd!" b
131 call assert_equal(1, deletebufline(b, 1))
132
133 split Xtest
134 call setline(1, ['a', 'b', 'c'])
135 let b = bufnr('%')
136 wincmd w
137 call assert_equal(1, deletebufline(b, 4))
138 call assert_equal(0, deletebufline(b, 1))
139 call assert_equal(['b', 'c'], getbufline(b, 1, 2))
140 exe "bwipe! " . b
141endfunc