blob: 33c57fd0528092e9ed286fa6f1b76e86b4850a1d [file] [log] [blame]
Bram Moolenaarfabaf752017-12-23 17:26:11 +01001" Tests for various eval things.
2
3function s:foo() abort
4 try
5 return [] == 0
6 catch
7 return 1
8 endtry
9endfunction
10
11func Test_catch_return_with_error()
12 call assert_equal(1, s:foo())
13endfunc
Bram Moolenaar2be57332018-02-13 18:05:18 +010014
15func Test_nocatch_restore_silent_emsg()
16 silent! try
17 throw 1
18 catch
19 endtry
20 echoerr 'wrong'
21 let c1 = nr2char(screenchar(&lines, 1))
22 let c2 = nr2char(screenchar(&lines, 2))
23 let c3 = nr2char(screenchar(&lines, 3))
24 let c4 = nr2char(screenchar(&lines, 4))
25 let c5 = nr2char(screenchar(&lines, 5))
26 call assert_equal('wrong', c1 . c2 . c3 . c4 . c5)
27endfunc
Bram Moolenaar78a16b02018-04-14 13:51:55 +020028
29func Test_mkdir_p()
30 call mkdir('Xmkdir/nested', 'p')
31 call assert_true(isdirectory('Xmkdir/nested'))
32 try
33 " Trying to make existing directories doesn't error
34 call mkdir('Xmkdir', 'p')
35 call mkdir('Xmkdir/nested', 'p')
36 catch /E739:/
37 call assert_report('mkdir(..., "p") failed for an existing directory')
38 endtry
39 " 'p' doesn't suppress real errors
40 call writefile([], 'Xfile')
41 call assert_fails('call mkdir("Xfile", "p")', 'E739')
42 call delete('Xfile')
43 call delete('Xmkdir', 'rf')
Bram Moolenaar92b83cc2020-04-25 15:24:44 +020044 call assert_equal(0, mkdir(test_null_string()))
45 call assert_fails('call mkdir([])', 'E730')
46 call assert_fails('call mkdir("abc", [], [])', 'E745')
Bram Moolenaar78a16b02018-04-14 13:51:55 +020047endfunc
Bram Moolenaar67f8ab82018-09-11 22:37:29 +020048
49func Test_line_continuation()
50 let array = [5,
51 "\ ignore this
52 \ 6,
53 "\ more to ignore
54 "\ more moreto ignore
55 \ ]
56 "\ and some more
57 call assert_equal([5, 6], array)
58endfunc
Bram Moolenaar88b53fd2018-12-05 18:43:28 +010059
60func Test_E963()
61 " These commands used to cause an internal error prior to vim 8.1.0563
62 let v_e = v:errors
63 let v_o = v:oldfiles
64 call assert_fails("let v:errors=''", 'E963:')
65 call assert_equal(v_e, v:errors)
66 call assert_fails("let v:oldfiles=''", 'E963:')
67 call assert_equal(v_o, v:oldfiles)
68endfunc
Bram Moolenaarc0f5a782019-01-13 15:16:13 +010069
70func Test_for_invalid()
71 call assert_fails("for x in 99", 'E714:')
72 call assert_fails("for x in 'asdf'", 'E714:')
73 call assert_fails("for x in {'a': 9}", 'E714:')
74endfunc
Bram Moolenaar05500ec2019-01-13 19:10:33 +010075
76func Test_readfile_binary()
77 new
78 call setline(1, ['one', 'two', 'three'])
79 setlocal ff=dos
Bram Moolenaar60a8de22019-09-15 14:33:22 +020080 silent write XReadfile
Bram Moolenaara0d1fef2019-09-04 22:29:14 +020081 let lines = 'XReadfile'->readfile()
Bram Moolenaar05500ec2019-01-13 19:10:33 +010082 call assert_equal(['one', 'two', 'three'], lines)
83 let lines = readfile('XReadfile', '', 2)
84 call assert_equal(['one', 'two'], lines)
85 let lines = readfile('XReadfile', 'b')
86 call assert_equal(["one\r", "two\r", "three\r", ""], lines)
87 let lines = readfile('XReadfile', 'b', 2)
88 call assert_equal(["one\r", "two\r"], lines)
89
90 bwipe!
91 call delete('XReadfile')
92endfunc
Bram Moolenaar4b9e91f2019-01-24 13:58:11 +010093
94func Test_let_errmsg()
95 call assert_fails('let v:errmsg = []', 'E730:')
96 let v:errmsg = ''
97 call assert_fails('let v:errmsg = []', 'E730:')
98 let v:errmsg = ''
99endfunc
Bram Moolenaar0f248b02019-04-04 15:36:05 +0200100
101func Test_string_concatenation()
102 call assert_equal('ab', 'a'.'b')
103 call assert_equal('ab', 'a' .'b')
104 call assert_equal('ab', 'a'. 'b')
105 call assert_equal('ab', 'a' . 'b')
106
107 call assert_equal('ab', 'a'..'b')
108 call assert_equal('ab', 'a' ..'b')
109 call assert_equal('ab', 'a'.. 'b')
110 call assert_equal('ab', 'a' .. 'b')
111
112 let a = 'a'
113 let b = 'b'
114 let a .= b
115 call assert_equal('ab', a)
116
117 let a = 'a'
118 let a.=b
119 call assert_equal('ab', a)
120
121 let a = 'a'
122 let a ..= b
123 call assert_equal('ab', a)
124
125 let a = 'a'
126 let a..=b
127 call assert_equal('ab', a)
128endfunc
Bram Moolenaar558ca4a2019-04-04 18:15:38 +0200129
Bram Moolenaar60a8de22019-09-15 14:33:22 +0200130" Test fix for issue #4507
131func Test_skip_after_throw()
132 try
133 throw 'something'
134 let x = wincol() || &ts
135 catch /something/
136 endtry
137endfunc
138
Bram Moolenaar558ca4a2019-04-04 18:15:38 +0200139scriptversion 2
140func Test_string_concat_scriptversion2()
Bram Moolenaar93a48792019-04-20 21:54:28 +0200141 call assert_true(has('vimscript-2'))
Bram Moolenaar558ca4a2019-04-04 18:15:38 +0200142 let a = 'a'
143 let b = 'b'
144
145 call assert_fails('echo a . b', 'E15:')
146 call assert_fails('let a .= b', 'E985:')
147 call assert_fails('let vers = 1.2.3', 'E15:')
148
149 if has('float')
150 let f = .5
151 call assert_equal(0.5, f)
152 endif
153endfunc
154
155scriptversion 1
156func Test_string_concat_scriptversion1()
Bram Moolenaar93a48792019-04-20 21:54:28 +0200157 call assert_true(has('vimscript-1'))
Bram Moolenaar558ca4a2019-04-04 18:15:38 +0200158 let a = 'a'
159 let b = 'b'
160
161 echo a . b
162 let a .= b
163 let vers = 1.2.3
164 call assert_equal('123', vers)
165
166 if has('float')
167 call assert_fails('let f = .5', 'E15:')
168 endif
169endfunc
170
Bram Moolenaard2e716e2019-04-20 14:39:52 +0200171scriptversion 3
172func Test_vvar_scriptversion3()
Bram Moolenaar93a48792019-04-20 21:54:28 +0200173 call assert_true(has('vimscript-3'))
Bram Moolenaard2e716e2019-04-20 14:39:52 +0200174 call assert_fails('echo version', 'E121:')
175 call assert_false(exists('version'))
176 let version = 1
177 call assert_equal(1, version)
178endfunc
179
180scriptversion 2
181func Test_vvar_scriptversion2()
182 call assert_true(exists('version'))
183 echo version
184 call assert_fails('let version = 1', 'E46:')
185 call assert_equal(v:version, version)
Bram Moolenaar37df9a42019-06-14 14:39:51 +0200186
187 call assert_equal(v:version, v:versionlong / 10000)
188 call assert_true(v:versionlong > 8011525)
Bram Moolenaard2e716e2019-04-20 14:39:52 +0200189endfunc
190
Bram Moolenaar61343f02019-07-20 21:11:13 +0200191func Test_dict_access_scriptversion2()
192 let l:x = {'foo': 1}
193
194 call assert_false(0 && l:x.foo)
195 call assert_true(1 && l:x.foo)
196endfunc
197
Bram Moolenaar60a8de22019-09-15 14:33:22 +0200198scriptversion 4
199func Test_vvar_scriptversion4()
Bram Moolenaaraf914382019-09-15 17:49:10 +0200200 call assert_true(has('vimscript-4'))
Bram Moolenaar60a8de22019-09-15 14:33:22 +0200201 call assert_equal(17, 017)
Bram Moolenaarc17e66c2020-06-02 21:38:22 +0200202 call assert_equal(15, 0o17)
203 call assert_equal(15, 0O17)
Bram Moolenaar60a8de22019-09-15 14:33:22 +0200204 call assert_equal(18, 018)
205 call assert_equal(64, 0b1'00'00'00)
206 call assert_equal(1048576, 0x10'00'00)
Bram Moolenaarc17e66c2020-06-02 21:38:22 +0200207 call assert_equal(32768, 0o10'00'00)
Bram Moolenaar60a8de22019-09-15 14:33:22 +0200208 call assert_equal(1000000, 1'000'000)
Bram Moolenaarea8dcf82019-09-15 21:12:22 +0200209 call assert_equal("1234", execute("echo 1'234")->trim())
210 call assert_equal('1 234', execute("echo 1''234")->trim())
211 call assert_fails("echo 1'''234", 'E115:')
Bram Moolenaar60a8de22019-09-15 14:33:22 +0200212endfunc
213
214scriptversion 1
215func Test_vvar_scriptversion1()
216 call assert_equal(15, 017)
Bram Moolenaarc17e66c2020-06-02 21:38:22 +0200217 call assert_equal(15, 0o17)
218 call assert_equal(15, 0O17)
Bram Moolenaar60a8de22019-09-15 14:33:22 +0200219 call assert_equal(18, 018)
220endfunc
221
222func Test_scriptversion_fail()
Bram Moolenaar558ca4a2019-04-04 18:15:38 +0200223 call writefile(['scriptversion 9'], 'Xversionscript')
224 call assert_fails('source Xversionscript', 'E999:')
225 call delete('Xversionscript')
226endfunc
Bram Moolenaarb6625912020-01-08 20:09:01 +0100227
Bram Moolenaar9d8d0b52020-04-24 22:47:31 +0200228func Test_execute_cmd_with_null()
Bram Moolenaarb6625912020-01-08 20:09:01 +0100229 call assert_fails('execute test_null_list()', 'E730:')
230 call assert_fails('execute test_null_dict()', 'E731:')
231 call assert_fails('execute test_null_blob()', 'E976:')
232 execute test_null_string()
233 call assert_fails('execute test_null_partial()', 'E729:')
Bram Moolenaar92b83cc2020-04-25 15:24:44 +0200234 call assert_fails('execute test_unknown()', 'E908:')
Bram Moolenaarb6625912020-01-08 20:09:01 +0100235 if has('job')
236 call assert_fails('execute test_null_job()', 'E908:')
237 call assert_fails('execute test_null_channel()', 'E908:')
238 endif
239endfunc
Bram Moolenaarf9706e92020-02-22 14:27:04 +0100240
241func Test_numbersize()
242 " This will fail on systems without 64 bit int support or when not configured
243 " correctly.
244 call assert_equal(64, v:numbersize)
245endfunc
Bram Moolenaar8b633132020-03-20 18:20:51 +0100246
Bram Moolenaar90455cf2020-04-18 21:56:38 +0200247func Assert_reg(name, type, value, valuestr, expr, exprstr)
248 call assert_equal(a:type, getregtype(a:name))
249 call assert_equal(a:value, getreg(a:name))
250 call assert_equal(a:valuestr, string(getreg(a:name, 0, 1)))
251 call assert_equal(a:expr, getreg(a:name, 1))
252 call assert_equal(a:exprstr, string(getreg(a:name, 1, 1)))
253endfunc
254
255func Test_let_register()
256 let @" = 'abc'
257 call Assert_reg('"', 'v', "abc", "['abc']", "abc", "['abc']")
258 let @" = "abc\n"
259 call Assert_reg('"', 'V', "abc\n", "['abc']", "abc\n", "['abc']")
260 let @" = "abc\<C-m>"
261 call Assert_reg('"', 'V', "abc\r\n", "['abc\r']", "abc\r\n", "['abc\r']")
262 let @= = '"abc"'
263 call Assert_reg('=', 'v', "abc", "['abc']", '"abc"', "['\"abc\"']")
264endfunc
265
266func Assert_regput(name, result)
267 new
268 execute "silent normal! o==\n==\e\"" . a:name . "P"
269 call assert_equal(a:result, getline(2, line('$')))
Bram Moolenaar61fbb332020-04-18 23:20:37 +0200270 bwipe!
Bram Moolenaar90455cf2020-04-18 21:56:38 +0200271endfunc
272
Bram Moolenaar90455cf2020-04-18 21:56:38 +0200273func Test_setreg_basic()
274 call setreg('a', 'abcA', 'c')
275 call Assert_reg('a', 'v', "abcA", "['abcA']", "abcA", "['abcA']")
276 call Assert_regput('a', ['==', '=abcA='])
277
278 call setreg('A', 'abcAc', 'c')
279 call Assert_reg('A', 'v', "abcAabcAc", "['abcAabcAc']", "abcAabcAc", "['abcAabcAc']")
280 call Assert_regput('a', ['==', '=abcAabcAc='])
281
282 call setreg('A', 'abcAl', 'l')
283 call Assert_reg('A', 'V', "abcAabcAcabcAl\n", "['abcAabcAcabcAl']", "abcAabcAcabcAl\n", "['abcAabcAcabcAl']")
284 call Assert_regput('a', ['==', 'abcAabcAcabcAl', '=='])
285
286 call setreg('A', 'abcAc2','c')
287 call Assert_reg('A', 'v', "abcAabcAcabcAl\nabcAc2", "['abcAabcAcabcAl', 'abcAc2']", "abcAabcAcabcAl\nabcAc2", "['abcAabcAcabcAl', 'abcAc2']")
288 call Assert_regput('a', ['==', '=abcAabcAcabcAl', 'abcAc2='])
289
290 call setreg('b', 'abcB', 'v')
291 call Assert_reg('b', 'v', "abcB", "['abcB']", "abcB", "['abcB']")
292 call Assert_regput('b', ['==', '=abcB='])
293
294 call setreg('b', 'abcBc', 'ca')
295 call Assert_reg('b', 'v', "abcBabcBc", "['abcBabcBc']", "abcBabcBc", "['abcBabcBc']")
296 call Assert_regput('b', ['==', '=abcBabcBc='])
297
298 call setreg('b', 'abcBb', 'ba')
299 call Assert_reg('b', "\<C-V>5", "abcBabcBcabcBb", "['abcBabcBcabcBb']", "abcBabcBcabcBb", "['abcBabcBcabcBb']")
300 call Assert_regput('b', ['==', '=abcBabcBcabcBb='])
301
302 call setreg('b', 'abcBc2','ca')
303 call Assert_reg('b', "v", "abcBabcBcabcBb\nabcBc2", "['abcBabcBcabcBb', 'abcBc2']", "abcBabcBcabcBb\nabcBc2", "['abcBabcBcabcBb', 'abcBc2']")
304 call Assert_regput('b', ['==', '=abcBabcBcabcBb', 'abcBc2='])
305
306 call setreg('b', 'abcBb2','b50a')
307 call Assert_reg('b', "\<C-V>50", "abcBabcBcabcBb\nabcBc2abcBb2", "['abcBabcBcabcBb', 'abcBc2abcBb2']", "abcBabcBcabcBb\nabcBc2abcBb2", "['abcBabcBcabcBb', 'abcBc2abcBb2']")
308 call Assert_regput('b', ['==', '=abcBabcBcabcBb =', ' abcBc2abcBb2'])
309
310 call setreg('c', 'abcC', 'l')
311 call Assert_reg('c', 'V', "abcC\n", "['abcC']", "abcC\n", "['abcC']")
312 call Assert_regput('c', ['==', 'abcC', '=='])
313
314 call setreg('C', 'abcCl', 'l')
315 call Assert_reg('C', 'V', "abcC\nabcCl\n", "['abcC', 'abcCl']", "abcC\nabcCl\n", "['abcC', 'abcCl']")
316 call Assert_regput('c', ['==', 'abcC', 'abcCl', '=='])
317
318 call setreg('C', 'abcCc', 'c')
319 call Assert_reg('C', 'v', "abcC\nabcCl\nabcCc", "['abcC', 'abcCl', 'abcCc']", "abcC\nabcCl\nabcCc", "['abcC', 'abcCl', 'abcCc']")
320 call Assert_regput('c', ['==', '=abcC', 'abcCl', 'abcCc='])
321
322 call setreg('d', 'abcD', 'V')
323 call Assert_reg('d', 'V', "abcD\n", "['abcD']", "abcD\n", "['abcD']")
324 call Assert_regput('d', ['==', 'abcD', '=='])
325
326 call setreg('D', 'abcDb', 'b')
327 call Assert_reg('d', "\<C-V>5", "abcD\nabcDb", "['abcD', 'abcDb']", "abcD\nabcDb", "['abcD', 'abcDb']")
328 call Assert_regput('d', ['==', '=abcD =', ' abcDb'])
329
330 call setreg('e', 'abcE', 'b')
331 call Assert_reg('e', "\<C-V>4", "abcE", "['abcE']", "abcE", "['abcE']")
332 call Assert_regput('e', ['==', '=abcE='])
333
334 call setreg('E', 'abcEb', 'b')
335 call Assert_reg('E', "\<C-V>5", "abcE\nabcEb", "['abcE', 'abcEb']", "abcE\nabcEb", "['abcE', 'abcEb']")
336 call Assert_regput('e', ['==', '=abcE =', ' abcEb'])
337
338 call setreg('E', 'abcEl', 'l')
339 call Assert_reg('E', "V", "abcE\nabcEb\nabcEl\n", "['abcE', 'abcEb', 'abcEl']", "abcE\nabcEb\nabcEl\n", "['abcE', 'abcEb', 'abcEl']")
340 call Assert_regput('e', ['==', 'abcE', 'abcEb', 'abcEl', '=='])
341
342 call setreg('f', 'abcF', "\<C-v>")
343 call Assert_reg('f', "\<C-V>4", "abcF", "['abcF']", "abcF", "['abcF']")
344 call Assert_regput('f', ['==', '=abcF='])
345
346 call setreg('F', 'abcFc', 'c')
347 call Assert_reg('F', "v", "abcF\nabcFc", "['abcF', 'abcFc']", "abcF\nabcFc", "['abcF', 'abcFc']")
348 call Assert_regput('f', ['==', '=abcF', 'abcFc='])
349
350 call setreg('g', 'abcG', 'b10')
351 call Assert_reg('g', "\<C-V>10", "abcG", "['abcG']", "abcG", "['abcG']")
352 call Assert_regput('g', ['==', '=abcG ='])
353
354 call setreg('h', 'abcH', "\<C-v>10")
355 call Assert_reg('h', "\<C-V>10", "abcH", "['abcH']", "abcH", "['abcH']")
356 call Assert_regput('h', ['==', '=abcH ='])
357
358 call setreg('I', 'abcI')
359 call Assert_reg('I', "v", "abcI", "['abcI']", "abcI", "['abcI']")
360 call Assert_regput('I', ['==', '=abcI='])
Bram Moolenaar90455cf2020-04-18 21:56:38 +0200361
Bram Moolenaar339d60c2020-04-29 22:01:21 +0200362 " Appending NL with setreg()
363 call setreg('a', 'abcA2', 'c')
364 call setreg('b', 'abcB2', 'v')
365 call setreg('c', 'abcC2', 'l')
366 call setreg('d', 'abcD2', 'V')
367 call setreg('e', 'abcE2', 'b')
368 call setreg('f', 'abcF2', "\<C-v>")
369 call setreg('g', 'abcG2', 'b10')
370 call setreg('h', 'abcH2', "\<C-v>10")
371 call setreg('I', 'abcI2')
372
373 call setreg('A', "\n")
374 call Assert_reg('A', 'V', "abcA2\n", "['abcA2']", "abcA2\n", "['abcA2']")
375 call Assert_regput('A', ['==', 'abcA2', '=='])
376
377 call setreg('B', "\n", 'c')
378 call Assert_reg('B', 'v', "abcB2\n", "['abcB2', '']", "abcB2\n", "['abcB2', '']")
379 call Assert_regput('B', ['==', '=abcB2', '='])
380
381 call setreg('C', "\n")
382 call Assert_reg('C', 'V', "abcC2\n\n", "['abcC2', '']", "abcC2\n\n", "['abcC2', '']")
383 call Assert_regput('C', ['==', 'abcC2', '', '=='])
384
385 call setreg('D', "\n", 'l')
386 call Assert_reg('D', 'V', "abcD2\n\n", "['abcD2', '']", "abcD2\n\n", "['abcD2', '']")
387 call Assert_regput('D', ['==', 'abcD2', '', '=='])
388
389 call setreg('E', "\n")
390 call Assert_reg('E', 'V', "abcE2\n\n", "['abcE2', '']", "abcE2\n\n", "['abcE2', '']")
391 call Assert_regput('E', ['==', 'abcE2', '', '=='])
392
393 call setreg('F', "\n", 'b')
394 call Assert_reg('F', "\<C-V>0", "abcF2\n", "['abcF2', '']", "abcF2\n", "['abcF2', '']")
395 call Assert_regput('F', ['==', '=abcF2=', ' '])
396
397 " Setting lists with setreg()
398 call setreg('a', ['abcA3'], 'c')
399 call Assert_reg('a', 'v', "abcA3", "['abcA3']", "abcA3", "['abcA3']")
400 call Assert_regput('a', ['==', '=abcA3='])
401
402 call setreg('b', ['abcB3'], 'l')
403 call Assert_reg('b', 'V', "abcB3\n", "['abcB3']", "abcB3\n", "['abcB3']")
404 call Assert_regput('b', ['==', 'abcB3', '=='])
405
406 call setreg('c', ['abcC3'], 'b')
407 call Assert_reg('c', "\<C-V>5", "abcC3", "['abcC3']", "abcC3", "['abcC3']")
408 call Assert_regput('c', ['==', '=abcC3='])
409
410 call setreg('d', ['abcD3'])
411 call Assert_reg('d', 'V', "abcD3\n", "['abcD3']", "abcD3\n", "['abcD3']")
412 call Assert_regput('d', ['==', 'abcD3', '=='])
413
414 call setreg('e', [1, 2, 'abc', 3])
415 call Assert_reg('e', 'V', "1\n2\nabc\n3\n", "['1', '2', 'abc', '3']", "1\n2\nabc\n3\n", "['1', '2', 'abc', '3']")
416 call Assert_regput('e', ['==', '1', '2', 'abc', '3', '=='])
417
418 call setreg('f', [1, 2, 3])
419 call Assert_reg('f', 'V', "1\n2\n3\n", "['1', '2', '3']", "1\n2\n3\n", "['1', '2', '3']")
420 call Assert_regput('f', ['==', '1', '2', '3', '=='])
421
422 " Appending lists with setreg()
423 call setreg('A', ['abcA3c'], 'c')
424 call Assert_reg('A', 'v', "abcA3\nabcA3c", "['abcA3', 'abcA3c']", "abcA3\nabcA3c", "['abcA3', 'abcA3c']")
425 call Assert_regput('A', ['==', '=abcA3', 'abcA3c='])
426
427 call setreg('b', ['abcB3l'], 'la')
428 call Assert_reg('b', 'V', "abcB3\nabcB3l\n", "['abcB3', 'abcB3l']", "abcB3\nabcB3l\n", "['abcB3', 'abcB3l']")
429 call Assert_regput('b', ['==', 'abcB3', 'abcB3l', '=='])
430
431 call setreg('C', ['abcC3b'], 'lb')
432 call Assert_reg('C', "\<C-V>6", "abcC3\nabcC3b", "['abcC3', 'abcC3b']", "abcC3\nabcC3b", "['abcC3', 'abcC3b']")
433 call Assert_regput('C', ['==', '=abcC3 =', ' abcC3b'])
434
435 call setreg('D', ['abcD32'])
436 call Assert_reg('D', 'V', "abcD3\nabcD32\n", "['abcD3', 'abcD32']", "abcD3\nabcD32\n", "['abcD3', 'abcD32']")
437 call Assert_regput('D', ['==', 'abcD3', 'abcD32', '=='])
438
439 call setreg('A', ['abcA32'])
440 call Assert_reg('A', 'V', "abcA3\nabcA3c\nabcA32\n", "['abcA3', 'abcA3c', 'abcA32']", "abcA3\nabcA3c\nabcA32\n", "['abcA3', 'abcA3c', 'abcA32']")
441 call Assert_regput('A', ['==', 'abcA3', 'abcA3c', 'abcA32', '=='])
442
443 call setreg('B', ['abcB3c'], 'c')
444 call Assert_reg('B', 'v', "abcB3\nabcB3l\nabcB3c", "['abcB3', 'abcB3l', 'abcB3c']", "abcB3\nabcB3l\nabcB3c", "['abcB3', 'abcB3l', 'abcB3c']")
445 call Assert_regput('B', ['==', '=abcB3', 'abcB3l', 'abcB3c='])
446
447 call setreg('C', ['abcC3l'], 'l')
448 call Assert_reg('C', 'V', "abcC3\nabcC3b\nabcC3l\n", "['abcC3', 'abcC3b', 'abcC3l']", "abcC3\nabcC3b\nabcC3l\n", "['abcC3', 'abcC3b', 'abcC3l']")
449 call Assert_regput('C', ['==', 'abcC3', 'abcC3b', 'abcC3l', '=='])
450
451 call setreg('D', ['abcD3b'], 'b')
452 call Assert_reg('D', "\<C-V>6", "abcD3\nabcD32\nabcD3b", "['abcD3', 'abcD32', 'abcD3b']", "abcD3\nabcD32\nabcD3b", "['abcD3', 'abcD32', 'abcD3b']")
453 call Assert_regput('D', ['==', '=abcD3 =', ' abcD32', ' abcD3b'])
454
455 " Appending lists with NL with setreg()
456 call setreg('A', ["\n", 'abcA3l2'], 'l')
457 call Assert_reg('A', "V", "abcA3\nabcA3c\nabcA32\n\n\nabcA3l2\n", "['abcA3', 'abcA3c', 'abcA32', '\n', 'abcA3l2']", "abcA3\nabcA3c\nabcA32\n\n\nabcA3l2\n", "['abcA3', 'abcA3c', 'abcA32', '\n', 'abcA3l2']")
458 call Assert_regput('A', ['==', 'abcA3', 'abcA3c', 'abcA32', "\n", 'abcA3l2', '=='])
459
460 call setreg('B', ["\n", 'abcB3c2'], 'c')
461 call Assert_reg('B', "v", "abcB3\nabcB3l\nabcB3c\n\n\nabcB3c2", "['abcB3', 'abcB3l', 'abcB3c', '\n', 'abcB3c2']", "abcB3\nabcB3l\nabcB3c\n\n\nabcB3c2", "['abcB3', 'abcB3l', 'abcB3c', '\n', 'abcB3c2']")
462 call Assert_regput('B', ['==', '=abcB3', 'abcB3l', 'abcB3c', "\n", 'abcB3c2='])
463
464 call setreg('C', ["\n", 'abcC3b2'], 'b')
465 call Assert_reg('C', "7", "abcC3\nabcC3b\nabcC3l\n\n\nabcC3b2", "['abcC3', 'abcC3b', 'abcC3l', '\n', 'abcC3b2']", "abcC3\nabcC3b\nabcC3l\n\n\nabcC3b2", "['abcC3', 'abcC3b', 'abcC3l', '\n', 'abcC3b2']")
466 call Assert_regput('C', ['==', '=abcC3 =', ' abcC3b', ' abcC3l', " \n", ' abcC3b2'])
467
468 call setreg('D', ["\n", 'abcD3b50'],'b50')
469 call Assert_reg('D', "50", "abcD3\nabcD32\nabcD3b\n\n\nabcD3b50", "['abcD3', 'abcD32', 'abcD3b', '\n', 'abcD3b50']", "abcD3\nabcD32\nabcD3b\n\n\nabcD3b50", "['abcD3', 'abcD32', 'abcD3b', '\n', 'abcD3b50']")
470 call Assert_regput('D', ['==', '=abcD3 =', ' abcD32', ' abcD3b', " \n", ' abcD3b50'])
471
472 " Setting lists with NLs with setreg()
473 call setreg('a', ['abcA4-0', "\n", "abcA4-2\n", "\nabcA4-3", "abcA4-4\nabcA4-4-2"])
474 call Assert_reg('a', "V", "abcA4-0\n\n\nabcA4-2\n\n\nabcA4-3\nabcA4-4\nabcA4-4-2\n", "['abcA4-0', '\n', 'abcA4-2\n', '\nabcA4-3', 'abcA4-4\nabcA4-4-2']", "abcA4-0\n\n\nabcA4-2\n\n\nabcA4-3\nabcA4-4\nabcA4-4-2\n", "['abcA4-0', '\n', 'abcA4-2\n', '\nabcA4-3', 'abcA4-4\nabcA4-4-2']")
475 call Assert_regput('a', ['==', 'abcA4-0', "\n", "abcA4-2\n", "\nabcA4-3", "abcA4-4\nabcA4-4-2", '=='])
476
477 call setreg('b', ['abcB4c-0', "\n", "abcB4c-2\n", "\nabcB4c-3", "abcB4c-4\nabcB4c-4-2"], 'c')
478 call Assert_reg('b', "v", "abcB4c-0\n\n\nabcB4c-2\n\n\nabcB4c-3\nabcB4c-4\nabcB4c-4-2", "['abcB4c-0', '\n', 'abcB4c-2\n', '\nabcB4c-3', 'abcB4c-4\nabcB4c-4-2']", "abcB4c-0\n\n\nabcB4c-2\n\n\nabcB4c-3\nabcB4c-4\nabcB4c-4-2", "['abcB4c-0', '\n', 'abcB4c-2\n', '\nabcB4c-3', 'abcB4c-4\nabcB4c-4-2']")
479 call Assert_regput('b', ['==', '=abcB4c-0', "\n", "abcB4c-2\n", "\nabcB4c-3", "abcB4c-4\nabcB4c-4-2="])
480
481 call setreg('c', ['abcC4l-0', "\n", "abcC4l-2\n", "\nabcC4l-3", "abcC4l-4\nabcC4l-4-2"], 'l')
482 call Assert_reg('c', "V", "abcC4l-0\n\n\nabcC4l-2\n\n\nabcC4l-3\nabcC4l-4\nabcC4l-4-2\n", "['abcC4l-0', '\n', 'abcC4l-2\n', '\nabcC4l-3', 'abcC4l-4\nabcC4l-4-2']", "abcC4l-0\n\n\nabcC4l-2\n\n\nabcC4l-3\nabcC4l-4\nabcC4l-4-2\n", "['abcC4l-0', '\n', 'abcC4l-2\n', '\nabcC4l-3', 'abcC4l-4\nabcC4l-4-2']")
483 call Assert_regput('c', ['==', 'abcC4l-0', "\n", "abcC4l-2\n", "\nabcC4l-3", "abcC4l-4\nabcC4l-4-2", '=='])
484
485 call setreg('d', ['abcD4b-0', "\n", "abcD4b-2\n", "\nabcD4b-3", "abcD4b-4\nabcD4b-4-2"], 'b')
486 call Assert_reg('d', "19", "abcD4b-0\n\n\nabcD4b-2\n\n\nabcD4b-3\nabcD4b-4\nabcD4b-4-2", "['abcD4b-0', '\n', 'abcD4b-2\n', '\nabcD4b-3', 'abcD4b-4\nabcD4b-4-2']", "abcD4b-0\n\n\nabcD4b-2\n\n\nabcD4b-3\nabcD4b-4\nabcD4b-4-2", "['abcD4b-0', '\n', 'abcD4b-2\n', '\nabcD4b-3', 'abcD4b-4\nabcD4b-4-2']")
487 call Assert_regput('d', ['==', '=abcD4b-0 =', " \n", " abcD4b-2\n", " \nabcD4b-3", " abcD4b-4\nabcD4b-4-2"])
488
489 call setreg('e', ['abcE4b10-0', "\n", "abcE4b10-2\n", "\nabcE4b10-3", "abcE4b10-4\nabcE4b10-4-2"], 'b10')
490 call Assert_reg('e', "10", "abcE4b10-0\n\n\nabcE4b10-2\n\n\nabcE4b10-3\nabcE4b10-4\nabcE4b10-4-2", "['abcE4b10-0', '\n', 'abcE4b10-2\n', '\nabcE4b10-3', 'abcE4b10-4\nabcE4b10-4-2']", "abcE4b10-0\n\n\nabcE4b10-2\n\n\nabcE4b10-3\nabcE4b10-4\nabcE4b10-4-2", "['abcE4b10-0', '\n', 'abcE4b10-2\n', '\nabcE4b10-3', 'abcE4b10-4\nabcE4b10-4-2']")
491 call Assert_regput('e', ['==', '=abcE4b10-0=', " \n", " abcE4b10-2\n", " \nabcE4b10-3", " abcE4b10-4\nabcE4b10-4-2"])
492
493 " Search and expressions
494 call setreg('/', ['abc/'])
495 call Assert_reg('/', 'v', "abc/", "['abc/']", "abc/", "['abc/']")
496 call Assert_regput('/', ['==', '=abc/='])
497
498 call setreg('/', ["abc/\n"])
499 call Assert_reg('/', 'v', "abc/\n", "['abc/\n']", "abc/\n", "['abc/\n']")
500 call Assert_regput('/', ['==', "=abc/\n="])
501
502 call setreg('=', ['"abc/"'])
503 call Assert_reg('=', 'v', "abc/", "['abc/']", '"abc/"', "['\"abc/\"']")
504
505 call setreg('=', ["\"abc/\n\""])
506 call Assert_reg('=', 'v', "abc/\n", "['abc/\n']", "\"abc/\n\"", "['\"abc/\n\"']")
507
508 " System clipboard
509 if has('clipboard')
510 new | only!
511 call setline(1, ['clipboard contents', 'something else'])
512 " Save and restore system clipboard.
513 " If no connection to X-Server is possible, test should succeed.
514 let _clipreg = ['*', getreg('*'), getregtype('*')]
515 let _clipopt = &cb
516 let &cb='unnamed'
517 1y
518 call Assert_reg('*', 'V', "clipboard contents\n", "['clipboard contents']", "clipboard contents\n", "['clipboard contents']")
519 tabdo :windo :echo "hi"
520 2y
521 call Assert_reg('*', 'V', "something else\n", "['something else']", "something else\n", "['something else']")
522 let &cb=_clipopt
523 call call('setreg', _clipreg)
524 enew!
525 endif
526
Bram Moolenaar08f41572020-04-20 16:50:00 +0200527 " Error cases
528 call assert_fails('call setreg()', 'E119:')
529 call assert_fails('call setreg(1)', 'E119:')
530 call assert_fails('call setreg(1, 2, 3, 4)', 'E118:')
531 call assert_fails('call setreg([], 2)', 'E730:')
532 call assert_fails('call setreg(1, {})', 'E731:')
533 call assert_fails('call setreg(1, 2, [])', 'E730:')
534 call assert_fails('call setreg("/", ["1", "2"])', 'E883:')
535 call assert_fails('call setreg("=", ["1", "2"])', 'E883:')
536 call assert_fails('call setreg(1, ["", "", [], ""])', 'E730:')
537endfunc
Bram Moolenaar90455cf2020-04-18 21:56:38 +0200538
Bram Moolenaar8b633132020-03-20 18:20:51 +0100539" vim: shiftwidth=2 sts=2 expandtab