blob: dbcd2e0fd63e7b13dc9f8df29d4d511a25282514 [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()
Bram Moolenaarc79745a2019-05-20 22:12:34 +020096 let after =<< trim [CODE]
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 [CODE]
113
Bram Moolenaar9cea87c2018-09-21 16:59:45 +0200114 if !RunVim([], after, '--clean')
115 return
116 endif
117 call assert_notmatch("^E315:", readfile("Xerror")[0])
118 call assert_equal("done", readfile("Xdone")[0])
119 call delete("Xerror")
120 call delete("Xdone")
121endfunc
122
Bram Moolenaard79a2622018-06-07 18:17:46 +0200123func Test_deletebufline()
124 new
125 let b = bufnr('%')
126 call setline(1, ['aaa', 'bbb', 'ccc'])
127 hide
128 call assert_equal(0, deletebufline(b, 2))
129 call assert_equal(['aaa', 'ccc'], getbufline(b, 1, 2))
130 call assert_equal(0, deletebufline(b, 2, 8))
131 call assert_equal(['aaa'], getbufline(b, 1, 2))
132 exe "bd!" b
133 call assert_equal(1, deletebufline(b, 1))
134
Bram Moolenaar17aca702019-05-16 22:24:55 +0200135 call assert_equal(1, deletebufline(-1, 1))
136
Bram Moolenaard79a2622018-06-07 18:17:46 +0200137 split Xtest
138 call setline(1, ['a', 'b', 'c'])
Bram Moolenaar17aca702019-05-16 22:24:55 +0200139 call cursor(line('$'), 1)
Bram Moolenaard79a2622018-06-07 18:17:46 +0200140 let b = bufnr('%')
141 wincmd w
142 call assert_equal(1, deletebufline(b, 4))
143 call assert_equal(0, deletebufline(b, 1))
144 call assert_equal(['b', 'c'], getbufline(b, 1, 2))
145 exe "bwipe! " . b
146endfunc