blob: 25db01288f2dfd15c89420e0f0a1a50b2431e863 [file] [log] [blame]
Bram Moolenaar94738d82020-10-21 14:25:07 +02001" Test using builtin functions in the Vim9 script language.
2
3source check.vim
4source vim9.vim
5
6" Test for passing too many or too few arguments to builtin functions
7func Test_internalfunc_arg_error()
8 let l =<< trim END
9 def! FArgErr(): float
10 return ceil(1.1, 2)
11 enddef
12 defcompile
13 END
14 call writefile(l, 'Xinvalidarg')
15 call assert_fails('so Xinvalidarg', 'E118:', '', 1, 'FArgErr')
16 let l =<< trim END
17 def! FArgErr(): float
18 return ceil()
19 enddef
20 defcompile
21 END
22 call writefile(l, 'Xinvalidarg')
23 call assert_fails('so Xinvalidarg', 'E119:', '', 1, 'FArgErr')
24 call delete('Xinvalidarg')
25endfunc
26
27" Test for builtin functions returning different types
28func Test_InternalFuncRetType()
29 let lines =<< trim END
30 def RetFloat(): float
31 return ceil(1.456)
32 enddef
33
34 def RetListAny(): list<any>
Bram Moolenaare0de1712020-12-02 17:36:54 +010035 return items({k: 'v'})
Bram Moolenaar94738d82020-10-21 14:25:07 +020036 enddef
37
38 def RetListString(): list<string>
39 return split('a:b:c', ':')
40 enddef
41
42 def RetListDictAny(): list<dict<any>>
43 return getbufinfo()
44 enddef
45
46 def RetDictNumber(): dict<number>
47 return wordcount()
48 enddef
49
50 def RetDictString(): dict<string>
51 return environ()
52 enddef
53 END
54 call writefile(lines, 'Xscript')
55 source Xscript
56
57 call RetFloat()->assert_equal(2.0)
58 call RetListAny()->assert_equal([['k', 'v']])
59 call RetListString()->assert_equal(['a', 'b', 'c'])
60 call RetListDictAny()->assert_notequal([])
61 call RetDictNumber()->assert_notequal({})
62 call RetDictString()->assert_notequal({})
63 call delete('Xscript')
64endfunc
65
66def Test_abs()
67 assert_equal(0, abs(0))
68 assert_equal(2, abs(-2))
69 assert_equal(3, abs(3))
70 CheckDefFailure(['abs("text")'], 'E1013: Argument 1: type mismatch, expected number but got string', 1)
71 if has('float')
72 assert_equal(0, abs(0))
73 assert_equal(2.0, abs(-2.0))
74 assert_equal(3.0, abs(3.0))
75 endif
76enddef
77
78def Test_add_list()
79 var l: list<number> # defaults to empty list
80 add(l, 9)
81 assert_equal([9], l)
82
83 var lines =<< trim END
84 var l: list<number>
85 add(l, "x")
86 END
87 CheckDefFailure(lines, 'E1012:', 2)
88
89 lines =<< trim END
90 var l: list<number> = test_null_list()
91 add(l, 123)
92 END
93 CheckDefExecFailure(lines, 'E1130:', 2)
94enddef
95
96def Test_add_blob()
97 var b1: blob = 0z12
98 add(b1, 0x34)
99 assert_equal(0z1234, b1)
100
101 var b2: blob # defaults to empty blob
102 add(b2, 0x67)
103 assert_equal(0z67, b2)
104
105 var lines =<< trim END
106 var b: blob
107 add(b, "x")
108 END
109 CheckDefFailure(lines, 'E1012:', 2)
110
111 lines =<< trim END
112 var b: blob = test_null_blob()
113 add(b, 123)
114 END
115 CheckDefExecFailure(lines, 'E1131:', 2)
116enddef
117
Bram Moolenaar3af15ab2021-01-17 16:16:23 +0100118def Test_append()
119 new
120 setline(1, range(3))
121 var res1: number = append(1, 'one')
122 assert_equal(0, res1)
123 var res2: bool = append(3, 'two')
124 assert_equal(false, res2)
125 assert_equal(['0', 'one', '1', 'two', '2'], getline(1, 6))
126enddef
127
Bram Moolenaarf28f2ac2021-03-22 22:21:26 +0100128def Test_browse()
129 CheckFeature browse
130
131 var lines =<< trim END
132 call browse(1, 2, 3, 4)
133 END
134 CheckDefExecAndScriptFailure(lines, 'E1174: String required for argument 2')
135 lines =<< trim END
136 call browse(1, 'title', 3, 4)
137 END
138 CheckDefExecAndScriptFailure(lines, 'E1174: String required for argument 3')
139 lines =<< trim END
140 call browse(1, 'title', 'dir', 4)
141 END
142 CheckDefExecAndScriptFailure(lines, 'E1174: String required for argument 4')
143enddef
144
Bram Moolenaar3af15ab2021-01-17 16:16:23 +0100145def Test_buflisted()
146 var res: bool = buflisted('asdf')
147 assert_equal(false, res)
148enddef
149
Bram Moolenaar94738d82020-10-21 14:25:07 +0200150def Test_bufname()
151 split SomeFile
152 bufname('%')->assert_equal('SomeFile')
153 edit OtherFile
154 bufname('#')->assert_equal('SomeFile')
155 close
156enddef
157
158def Test_bufnr()
159 var buf = bufnr()
160 bufnr('%')->assert_equal(buf)
161
162 buf = bufnr('Xdummy', true)
163 buf->assert_notequal(-1)
164 exe 'bwipe! ' .. buf
165enddef
166
167def Test_bufwinid()
168 var origwin = win_getid()
169 below split SomeFile
170 var SomeFileID = win_getid()
171 below split OtherFile
172 below split SomeFile
173 bufwinid('SomeFile')->assert_equal(SomeFileID)
174
175 win_gotoid(origwin)
176 only
177 bwipe SomeFile
178 bwipe OtherFile
179enddef
180
181def Test_call_call()
182 var l = [3, 2, 1]
183 call('reverse', [l])
184 l->assert_equal([1, 2, 3])
185enddef
186
187def Test_char2nr()
188 char2nr('あ', true)->assert_equal(12354)
189enddef
190
191def Test_col()
192 new
193 setline(1, 'asdf')
194 col([1, '$'])->assert_equal(5)
195enddef
196
197def Test_copy_return_type()
198 var l = copy([1, 2, 3])
199 var res = 0
200 for n in l
201 res += n
202 endfor
203 res->assert_equal(6)
204
205 var dl = deepcopy([1, 2, 3])
206 res = 0
207 for n in dl
208 res += n
209 endfor
210 res->assert_equal(6)
211
212 dl = deepcopy([1, 2, 3], true)
213enddef
214
215def Test_count()
216 count('ABC ABC ABC', 'b', true)->assert_equal(3)
217 count('ABC ABC ABC', 'b', false)->assert_equal(0)
218enddef
219
Bram Moolenaar9a963372020-12-21 21:58:46 +0100220def Test_cursor()
221 new
222 setline(1, range(4))
223 cursor(2, 1)
224 assert_equal(2, getcurpos()[1])
225 cursor('$', 1)
226 assert_equal(4, getcurpos()[1])
227
228 var lines =<< trim END
229 cursor('2', 1)
230 END
231 CheckDefExecAndScriptFailure(lines, 'E475:')
232enddef
233
Bram Moolenaar3af15ab2021-01-17 16:16:23 +0100234def Test_delete()
235 var res: bool = delete('doesnotexist')
236 assert_equal(true, res)
237enddef
238
Bram Moolenaar7bb4e742020-12-09 12:41:50 +0100239def Test_executable()
Bram Moolenaar2a9d5d32020-12-12 18:58:40 +0100240 assert_false(executable(""))
241 assert_false(executable(test_null_string()))
242
Bram Moolenaarf28f2ac2021-03-22 22:21:26 +0100243 CheckDefExecFailure(['echo executable(123)'], 'E1174:')
244 CheckDefExecFailure(['echo executable(true)'], 'E1174:')
Bram Moolenaar7bb4e742020-12-09 12:41:50 +0100245enddef
246
247def Test_exepath()
Bram Moolenaarf28f2ac2021-03-22 22:21:26 +0100248 CheckDefExecFailure(['echo exepath(true)'], 'E1174:')
249 CheckDefExecFailure(['echo exepath(v:null)'], 'E1174:')
Bram Moolenaarfa984412021-03-25 22:15:28 +0100250 CheckDefExecFailure(['echo exepath("")'], 'E1175:')
Bram Moolenaar7bb4e742020-12-09 12:41:50 +0100251enddef
252
Bram Moolenaar94738d82020-10-21 14:25:07 +0200253def Test_expand()
254 split SomeFile
255 expand('%', true, true)->assert_equal(['SomeFile'])
256 close
257enddef
258
Bram Moolenaarfbcbffe2020-10-31 19:33:38 +0100259def Test_extend_arg_types()
Bram Moolenaarc03f5c62021-01-31 17:48:30 +0100260 g:number_one = 1
261 g:string_keep = 'keep'
262 var lines =<< trim END
263 assert_equal([1, 2, 3], extend([1, 2], [3]))
264 assert_equal([3, 1, 2], extend([1, 2], [3], 0))
265 assert_equal([1, 3, 2], extend([1, 2], [3], 1))
266 assert_equal([1, 3, 2], extend([1, 2], [3], g:number_one))
Bram Moolenaarfbcbffe2020-10-31 19:33:38 +0100267
Bram Moolenaarc03f5c62021-01-31 17:48:30 +0100268 assert_equal({a: 1, b: 2, c: 3}, extend({a: 1, b: 2}, {c: 3}))
269 assert_equal({a: 1, b: 4}, extend({a: 1, b: 2}, {b: 4}))
270 assert_equal({a: 1, b: 2}, extend({a: 1, b: 2}, {b: 4}, 'keep'))
271 assert_equal({a: 1, b: 2}, extend({a: 1, b: 2}, {b: 4}, g:string_keep))
Bram Moolenaar193f6202020-11-16 20:08:35 +0100272
Bram Moolenaarc03f5c62021-01-31 17:48:30 +0100273 var res: list<dict<any>>
274 extend(res, mapnew([1, 2], (_, v) => ({})))
275 assert_equal([{}, {}], res)
276 END
277 CheckDefAndScriptSuccess(lines)
Bram Moolenaarfbcbffe2020-10-31 19:33:38 +0100278
279 CheckDefFailure(['extend([1, 2], 3)'], 'E1013: Argument 2: type mismatch, expected list<number> but got number')
280 CheckDefFailure(['extend([1, 2], ["x"])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>')
281 CheckDefFailure(['extend([1, 2], [3], "x")'], 'E1013: Argument 3: type mismatch, expected number but got string')
282
Bram Moolenaare0de1712020-12-02 17:36:54 +0100283 CheckDefFailure(['extend({a: 1}, 42)'], 'E1013: Argument 2: type mismatch, expected dict<number> but got number')
284 CheckDefFailure(['extend({a: 1}, {b: "x"})'], 'E1013: Argument 2: type mismatch, expected dict<number> but got dict<string>')
285 CheckDefFailure(['extend({a: 1}, {b: 2}, 1)'], 'E1013: Argument 3: type mismatch, expected string but got number')
Bram Moolenaar351ead02021-01-16 16:07:01 +0100286
287 CheckDefFailure(['extend([1], ["b"])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>')
Bram Moolenaare32e5162021-01-21 20:21:29 +0100288 CheckDefExecFailure(['extend([1], ["b", 1])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<any>')
Bram Moolenaarfbcbffe2020-10-31 19:33:38 +0100289enddef
290
Bram Moolenaarb0e6b512021-01-12 20:23:40 +0100291def Test_extendnew()
292 assert_equal([1, 2, 'a'], extendnew([1, 2], ['a']))
293 assert_equal({one: 1, two: 'a'}, extendnew({one: 1}, {two: 'a'}))
294
295 CheckDefFailure(['extendnew({a: 1}, 42)'], 'E1013: Argument 2: type mismatch, expected dict<number> but got number')
296 CheckDefFailure(['extendnew({a: 1}, [42])'], 'E1013: Argument 2: type mismatch, expected dict<number> but got list<number>')
297 CheckDefFailure(['extendnew([1, 2], "x")'], 'E1013: Argument 2: type mismatch, expected list<number> but got string')
298 CheckDefFailure(['extendnew([1, 2], {x: 1})'], 'E1013: Argument 2: type mismatch, expected list<number> but got dict<number>')
299enddef
300
Bram Moolenaar94738d82020-10-21 14:25:07 +0200301def Test_extend_return_type()
302 var l = extend([1, 2], [3])
303 var res = 0
304 for n in l
305 res += n
306 endfor
307 res->assert_equal(6)
308enddef
309
Bram Moolenaaraa210a32021-01-02 15:41:03 +0100310func g:ExtendDict(d)
311 call extend(a:d, #{xx: 'x'})
312endfunc
313
314def Test_extend_dict_item_type()
315 var lines =<< trim END
316 var d: dict<number> = {a: 1}
317 extend(d, {b: 2})
318 END
319 CheckDefAndScriptSuccess(lines)
320
321 lines =<< trim END
322 var d: dict<number> = {a: 1}
323 extend(d, {b: 'x'})
324 END
Bram Moolenaarc03f5c62021-01-31 17:48:30 +0100325 CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected dict<number> but got dict<string>', 2)
Bram Moolenaaraa210a32021-01-02 15:41:03 +0100326
327 lines =<< trim END
328 var d: dict<number> = {a: 1}
329 g:ExtendDict(d)
330 END
331 CheckDefExecFailure(lines, 'E1012: Type mismatch; expected number but got string', 0)
332 CheckScriptFailure(['vim9script'] + lines, 'E1012:', 1)
333enddef
334
335func g:ExtendList(l)
336 call extend(a:l, ['x'])
337endfunc
338
339def Test_extend_list_item_type()
340 var lines =<< trim END
341 var l: list<number> = [1]
342 extend(l, [2])
343 END
344 CheckDefAndScriptSuccess(lines)
345
346 lines =<< trim END
347 var l: list<number> = [1]
348 extend(l, ['x'])
349 END
Bram Moolenaarc03f5c62021-01-31 17:48:30 +0100350 CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>', 2)
Bram Moolenaaraa210a32021-01-02 15:41:03 +0100351
352 lines =<< trim END
353 var l: list<number> = [1]
354 g:ExtendList(l)
355 END
356 CheckDefExecFailure(lines, 'E1012: Type mismatch; expected number but got string', 0)
357 CheckScriptFailure(['vim9script'] + lines, 'E1012:', 1)
358enddef
Bram Moolenaar94738d82020-10-21 14:25:07 +0200359
Bram Moolenaar93e1cae2021-03-13 21:24:56 +0100360def Test_extend_with_error_function()
361 var lines =<< trim END
362 vim9script
363 def F()
364 {
365 var m = 10
366 }
367 echo m
368 enddef
369
370 def Test()
371 var d: dict<any> = {}
372 d->extend({A: 10, Func: function('F', [])})
373 enddef
374
375 Test()
376 END
377 CheckScriptFailure(lines, 'E1001: Variable not found: m')
378enddef
379
Bram Moolenaar64ed4d42021-01-12 21:22:31 +0100380def Test_job_info_return_type()
381 if has('job')
382 job_start(&shell)
383 var jobs = job_info()
Bram Moolenaara47e05f2021-01-12 21:49:00 +0100384 assert_equal('list<job>', typename(jobs))
385 assert_equal('dict<any>', typename(job_info(jobs[0])))
Bram Moolenaar64ed4d42021-01-12 21:22:31 +0100386 job_stop(jobs[0])
387 endif
388enddef
389
Bram Moolenaar7bb4e742020-12-09 12:41:50 +0100390def Test_filereadable()
Bram Moolenaar2a9d5d32020-12-12 18:58:40 +0100391 assert_false(filereadable(""))
392 assert_false(filereadable(test_null_string()))
393
Bram Moolenaarf28f2ac2021-03-22 22:21:26 +0100394 CheckDefExecFailure(['echo filereadable(123)'], 'E1174:')
395 CheckDefExecFailure(['echo filereadable(true)'], 'E1174:')
Bram Moolenaar7bb4e742020-12-09 12:41:50 +0100396enddef
397
398def Test_filewritable()
Bram Moolenaar2a9d5d32020-12-12 18:58:40 +0100399 assert_false(filewritable(""))
400 assert_false(filewritable(test_null_string()))
401
Bram Moolenaarf28f2ac2021-03-22 22:21:26 +0100402 CheckDefExecFailure(['echo filewritable(123)'], 'E1174:')
403 CheckDefExecFailure(['echo filewritable(true)'], 'E1174:')
Bram Moolenaar7bb4e742020-12-09 12:41:50 +0100404enddef
405
406def Test_finddir()
Bram Moolenaarf28f2ac2021-03-22 22:21:26 +0100407 CheckDefExecFailure(['echo finddir(true)'], 'E1174:')
408 CheckDefExecFailure(['echo finddir(v:null)'], 'E1174:')
Bram Moolenaarfa984412021-03-25 22:15:28 +0100409 CheckDefExecFailure(['echo finddir("")'], 'E1175:')
Bram Moolenaar7bb4e742020-12-09 12:41:50 +0100410enddef
411
412def Test_findfile()
Bram Moolenaarf28f2ac2021-03-22 22:21:26 +0100413 CheckDefExecFailure(['echo findfile(true)'], 'E1174:')
414 CheckDefExecFailure(['echo findfile(v:null)'], 'E1174:')
Bram Moolenaarfa984412021-03-25 22:15:28 +0100415 CheckDefExecFailure(['echo findfile("")'], 'E1175:')
Bram Moolenaar7bb4e742020-12-09 12:41:50 +0100416enddef
417
Bram Moolenaar3b690062021-02-01 20:14:51 +0100418def Test_flattennew()
419 var lines =<< trim END
420 var l = [1, [2, [3, 4]], 5]
421 call assert_equal([1, 2, 3, 4, 5], flattennew(l))
422 call assert_equal([1, [2, [3, 4]], 5], l)
423
424 call assert_equal([1, 2, [3, 4], 5], flattennew(l, 1))
425 call assert_equal([1, [2, [3, 4]], 5], l)
426 END
427 CheckDefAndScriptSuccess(lines)
428
429 lines =<< trim END
430 echo flatten([1, 2, 3])
431 END
432 CheckDefAndScriptFailure(lines, 'E1158:')
433enddef
434
Bram Moolenaar7bb4e742020-12-09 12:41:50 +0100435def Test_fnamemodify()
Bram Moolenaar2a9d5d32020-12-12 18:58:40 +0100436 CheckDefSuccess(['echo fnamemodify(test_null_string(), ":p")'])
437 CheckDefSuccess(['echo fnamemodify("", ":p")'])
438 CheckDefSuccess(['echo fnamemodify("file", test_null_string())'])
439 CheckDefSuccess(['echo fnamemodify("file", "")'])
440
Bram Moolenaarf28f2ac2021-03-22 22:21:26 +0100441 CheckDefExecFailure(['echo fnamemodify(true, ":p")'], 'E1174: String required for argument 1')
442 CheckDefExecFailure(['echo fnamemodify(v:null, ":p")'], 'E1174: String required for argument 1')
443 CheckDefExecFailure(['echo fnamemodify("file", true)'], 'E1174: String required for argument 2')
Bram Moolenaar7bb4e742020-12-09 12:41:50 +0100444enddef
445
Bram Moolenaar2e5910b2021-02-03 17:41:24 +0100446def Wrong_dict_key_type(items: list<number>): list<number>
447 return filter(items, (_, val) => get({[val]: 1}, 'x'))
448enddef
449
Bram Moolenaar94738d82020-10-21 14:25:07 +0200450def Test_filter_wrong_dict_key_type()
Bram Moolenaar2e5910b2021-02-03 17:41:24 +0100451 assert_fails('Wrong_dict_key_type([1, v:null, 3])', 'E1013:')
Bram Moolenaar94738d82020-10-21 14:25:07 +0200452enddef
453
454def Test_filter_return_type()
Bram Moolenaar2949cfd2020-12-31 21:28:47 +0100455 var l = filter([1, 2, 3], () => 1)
Bram Moolenaar94738d82020-10-21 14:25:07 +0200456 var res = 0
457 for n in l
458 res += n
459 endfor
460 res->assert_equal(6)
461enddef
462
Bram Moolenaarfc0e8f52020-12-25 20:24:51 +0100463def Test_filter_missing_argument()
464 var dict = {aa: [1], ab: [2], ac: [3], de: [4]}
Bram Moolenaar2949cfd2020-12-31 21:28:47 +0100465 var res = dict->filter((k) => k =~ 'a' && k !~ 'b')
Bram Moolenaarfc0e8f52020-12-25 20:24:51 +0100466 res->assert_equal({aa: [1], ac: [3]})
467enddef
Bram Moolenaar94738d82020-10-21 14:25:07 +0200468
469def Test_garbagecollect()
470 garbagecollect(true)
471enddef
472
473def Test_getbufinfo()
474 var bufinfo = getbufinfo(bufnr())
475 getbufinfo('%')->assert_equal(bufinfo)
476
477 edit Xtestfile1
478 hide edit Xtestfile2
479 hide enew
Bram Moolenaare0de1712020-12-02 17:36:54 +0100480 getbufinfo({bufloaded: true, buflisted: true, bufmodified: false})
Bram Moolenaar94738d82020-10-21 14:25:07 +0200481 ->len()->assert_equal(3)
482 bwipe Xtestfile1 Xtestfile2
483enddef
484
485def Test_getbufline()
486 e SomeFile
487 var buf = bufnr()
488 e #
489 var lines = ['aaa', 'bbb', 'ccc']
490 setbufline(buf, 1, lines)
491 getbufline('#', 1, '$')->assert_equal(lines)
Bram Moolenaare6e70a12020-10-22 18:23:38 +0200492 getbufline(-1, '$', '$')->assert_equal([])
493 getbufline(-1, 1, '$')->assert_equal([])
Bram Moolenaar94738d82020-10-21 14:25:07 +0200494
495 bwipe!
496enddef
497
498def Test_getchangelist()
499 new
500 setline(1, 'some text')
501 var changelist = bufnr()->getchangelist()
502 getchangelist('%')->assert_equal(changelist)
503 bwipe!
504enddef
505
506def Test_getchar()
507 while getchar(0)
508 endwhile
509 getchar(true)->assert_equal(0)
510enddef
511
Bram Moolenaar7ad67d12021-03-10 16:08:26 +0100512def Test_getenv()
513 if getenv('does-not_exist') == ''
514 assert_report('getenv() should return null')
515 endif
516 if getenv('does-not_exist') == null
517 else
518 assert_report('getenv() should return null')
519 endif
520 $SOMEENVVAR = 'some'
521 assert_equal('some', getenv('SOMEENVVAR'))
522 unlet $SOMEENVVAR
523enddef
524
Bram Moolenaar94738d82020-10-21 14:25:07 +0200525def Test_getcompletion()
526 set wildignore=*.vim,*~
527 var l = getcompletion('run', 'file', true)
528 l->assert_equal([])
529 set wildignore&
530enddef
531
532def Test_getloclist_return_type()
533 var l = getloclist(1)
534 l->assert_equal([])
535
Bram Moolenaare0de1712020-12-02 17:36:54 +0100536 var d = getloclist(1, {items: 0})
537 d->assert_equal({items: []})
Bram Moolenaar94738d82020-10-21 14:25:07 +0200538enddef
539
Bram Moolenaar7bb4e742020-12-09 12:41:50 +0100540def Test_getfperm()
Bram Moolenaar2a9d5d32020-12-12 18:58:40 +0100541 assert_equal('', getfperm(""))
542 assert_equal('', getfperm(test_null_string()))
543
Bram Moolenaarf28f2ac2021-03-22 22:21:26 +0100544 CheckDefExecFailure(['echo getfperm(true)'], 'E1174:')
545 CheckDefExecFailure(['echo getfperm(v:null)'], 'E1174:')
Bram Moolenaar7bb4e742020-12-09 12:41:50 +0100546enddef
547
548def Test_getfsize()
Bram Moolenaar2a9d5d32020-12-12 18:58:40 +0100549 assert_equal(-1, getfsize(""))
550 assert_equal(-1, getfsize(test_null_string()))
551
Bram Moolenaarf28f2ac2021-03-22 22:21:26 +0100552 CheckDefExecFailure(['echo getfsize(true)'], 'E1174:')
553 CheckDefExecFailure(['echo getfsize(v:null)'], 'E1174:')
Bram Moolenaar7bb4e742020-12-09 12:41:50 +0100554enddef
555
556def Test_getftime()
Bram Moolenaar2a9d5d32020-12-12 18:58:40 +0100557 assert_equal(-1, getftime(""))
558 assert_equal(-1, getftime(test_null_string()))
559
Bram Moolenaarf28f2ac2021-03-22 22:21:26 +0100560 CheckDefExecFailure(['echo getftime(true)'], 'E1174:')
561 CheckDefExecFailure(['echo getftime(v:null)'], 'E1174:')
Bram Moolenaar7bb4e742020-12-09 12:41:50 +0100562enddef
563
564def Test_getftype()
Bram Moolenaar2a9d5d32020-12-12 18:58:40 +0100565 assert_equal('', getftype(""))
566 assert_equal('', getftype(test_null_string()))
567
Bram Moolenaarf28f2ac2021-03-22 22:21:26 +0100568 CheckDefExecFailure(['echo getftype(true)'], 'E1174:')
569 CheckDefExecFailure(['echo getftype(v:null)'], 'E1174:')
Bram Moolenaar7bb4e742020-12-09 12:41:50 +0100570enddef
571
Bram Moolenaar94738d82020-10-21 14:25:07 +0200572def Test_getqflist_return_type()
573 var l = getqflist()
574 l->assert_equal([])
575
Bram Moolenaare0de1712020-12-02 17:36:54 +0100576 var d = getqflist({items: 0})
577 d->assert_equal({items: []})
Bram Moolenaar94738d82020-10-21 14:25:07 +0200578enddef
579
580def Test_getreg()
581 var lines = ['aaa', 'bbb', 'ccc']
582 setreg('a', lines)
583 getreg('a', true, true)->assert_equal(lines)
Bram Moolenaar418a29f2021-02-10 22:23:41 +0100584 assert_fails('getreg("ab")', 'E1162:')
Bram Moolenaar94738d82020-10-21 14:25:07 +0200585enddef
586
587def Test_getreg_return_type()
588 var s1: string = getreg('"')
589 var s2: string = getreg('"', 1)
590 var s3: list<string> = getreg('"', 1, 1)
591enddef
592
Bram Moolenaar418a29f2021-02-10 22:23:41 +0100593def Test_getreginfo()
594 var text = 'abc'
595 setreg('a', text)
596 getreginfo('a')->assert_equal({regcontents: [text], regtype: 'v', isunnamed: false})
597 assert_fails('getreginfo("ab")', 'E1162:')
598enddef
599
600def Test_getregtype()
601 var lines = ['aaa', 'bbb', 'ccc']
602 setreg('a', lines)
603 getregtype('a')->assert_equal('V')
604 assert_fails('getregtype("ab")', 'E1162:')
605enddef
606
Bram Moolenaar94738d82020-10-21 14:25:07 +0200607def Test_glob()
608 glob('runtest.vim', true, true, true)->assert_equal(['runtest.vim'])
609enddef
610
611def Test_globpath()
612 globpath('.', 'runtest.vim', true, true, true)->assert_equal(['./runtest.vim'])
613enddef
614
615def Test_has()
616 has('eval', true)->assert_equal(1)
617enddef
618
619def Test_hasmapto()
620 hasmapto('foobar', 'i', true)->assert_equal(0)
621 iabbrev foo foobar
622 hasmapto('foobar', 'i', true)->assert_equal(1)
623 iunabbrev foo
624enddef
625
626def Test_index()
627 index(['a', 'b', 'a', 'B'], 'b', 2, true)->assert_equal(3)
628enddef
629
Bram Moolenaar193f6202020-11-16 20:08:35 +0100630let s:number_one = 1
631let s:number_two = 2
632let s:string_keep = 'keep'
633
Bram Moolenaarca174532020-10-21 16:42:22 +0200634def Test_insert()
Bram Moolenaar94738d82020-10-21 14:25:07 +0200635 var l = insert([2, 1], 3)
636 var res = 0
637 for n in l
638 res += n
639 endfor
640 res->assert_equal(6)
Bram Moolenaarca174532020-10-21 16:42:22 +0200641
642 assert_equal([1, 2, 3], insert([2, 3], 1))
Bram Moolenaar193f6202020-11-16 20:08:35 +0100643 assert_equal([1, 2, 3], insert([2, 3], s:number_one))
Bram Moolenaarca174532020-10-21 16:42:22 +0200644 assert_equal([1, 2, 3], insert([1, 2], 3, 2))
Bram Moolenaar193f6202020-11-16 20:08:35 +0100645 assert_equal([1, 2, 3], insert([1, 2], 3, s:number_two))
Bram Moolenaarca174532020-10-21 16:42:22 +0200646 assert_equal(['a', 'b', 'c'], insert(['b', 'c'], 'a'))
647 assert_equal(0z1234, insert(0z34, 0x12))
Bram Moolenaar193f6202020-11-16 20:08:35 +0100648
Bram Moolenaarca174532020-10-21 16:42:22 +0200649 CheckDefFailure(['insert([2, 3], "a")'], 'E1013: Argument 2: type mismatch, expected number but got string', 1)
650 CheckDefFailure(['insert([2, 3], 1, "x")'], 'E1013: Argument 3: type mismatch, expected number but got string', 1)
Bram Moolenaar94738d82020-10-21 14:25:07 +0200651enddef
652
653def Test_keys_return_type()
Bram Moolenaare0de1712020-12-02 17:36:54 +0100654 const var: list<string> = {a: 1, b: 2}->keys()
Bram Moolenaar94738d82020-10-21 14:25:07 +0200655 var->assert_equal(['a', 'b'])
656enddef
657
658def Test_list2str_str2list_utf8()
659 var s = "\u3042\u3044"
660 var l = [0x3042, 0x3044]
661 str2list(s, true)->assert_equal(l)
662 list2str(l, true)->assert_equal(s)
663enddef
664
665def SID(): number
666 return expand('<SID>')
667 ->matchstr('<SNR>\zs\d\+\ze_$')
668 ->str2nr()
669enddef
670
Bram Moolenaar70250fb2021-01-16 19:01:53 +0100671def Test_map_function_arg()
672 var lines =<< trim END
673 def MapOne(i: number, v: string): string
674 return i .. ':' .. v
675 enddef
676 var l = ['a', 'b', 'c']
677 map(l, MapOne)
678 assert_equal(['0:a', '1:b', '2:c'], l)
679 END
680 CheckDefAndScriptSuccess(lines)
681enddef
682
683def Test_map_item_type()
684 var lines =<< trim END
685 var l = ['a', 'b', 'c']
686 map(l, (k, v) => k .. '/' .. v )
687 assert_equal(['0/a', '1/b', '2/c'], l)
688 END
689 CheckDefAndScriptSuccess(lines)
690
691 lines =<< trim END
692 var l: list<number> = [0]
693 echo map(l, (_, v) => [])
694 END
695 CheckDefExecAndScriptFailure(lines, 'E1012: Type mismatch; expected number but got list<unknown>', 2)
696
697 lines =<< trim END
698 var l: list<number> = range(2)
699 echo map(l, (_, v) => [])
700 END
701 CheckDefExecAndScriptFailure(lines, 'E1012: Type mismatch; expected number but got list<unknown>', 2)
702
703 lines =<< trim END
704 var d: dict<number> = {key: 0}
705 echo map(d, (_, v) => [])
706 END
707 CheckDefExecAndScriptFailure(lines, 'E1012: Type mismatch; expected number but got list<unknown>', 2)
708enddef
709
Bram Moolenaar94738d82020-10-21 14:25:07 +0200710def Test_maparg()
711 var lnum = str2nr(expand('<sflnum>'))
712 map foo bar
Bram Moolenaare0de1712020-12-02 17:36:54 +0100713 maparg('foo', '', false, true)->assert_equal({
Bram Moolenaar94738d82020-10-21 14:25:07 +0200714 lnum: lnum + 1,
715 script: 0,
716 mode: ' ',
717 silent: 0,
718 noremap: 0,
719 lhs: 'foo',
720 lhsraw: 'foo',
721 nowait: 0,
722 expr: 0,
723 sid: SID(),
724 rhs: 'bar',
725 buffer: 0})
726 unmap foo
727enddef
728
729def Test_mapcheck()
730 iabbrev foo foobar
731 mapcheck('foo', 'i', true)->assert_equal('foobar')
732 iunabbrev foo
733enddef
734
735def Test_maparg_mapset()
736 nnoremap <F3> :echo "hit F3"<CR>
737 var mapsave = maparg('<F3>', 'n', false, true)
738 mapset('n', false, mapsave)
739
740 nunmap <F3>
741enddef
742
Bram Moolenaar027c4ab2021-02-21 16:20:18 +0100743def Test_map_failure()
744 CheckFeature job
745
746 var lines =<< trim END
747 vim9script
748 writefile([], 'Xtmpfile')
749 silent e Xtmpfile
750 var d = {[bufnr('%')]: {a: 0}}
751 au BufReadPost * Func()
752 def Func()
753 if d->has_key('')
754 endif
755 eval d[expand('<abuf>')]->mapnew((_, v: dict<job>) => 0)
756 enddef
757 e
758 END
759 CheckScriptFailure(lines, 'E1013:')
760 au! BufReadPost
761 delete('Xtmpfile')
762enddef
763
Bram Moolenaar9ae37052021-01-22 22:31:10 +0100764def Test_max()
765 g:flag = true
766 var l1: list<number> = g:flag
767 ? [1, max([2, 3])]
768 : [4, 5]
769 assert_equal([1, 3], l1)
770
771 g:flag = false
772 var l2: list<number> = g:flag
773 ? [1, max([2, 3])]
774 : [4, 5]
775 assert_equal([4, 5], l2)
776enddef
777
778def Test_min()
779 g:flag = true
780 var l1: list<number> = g:flag
781 ? [1, min([2, 3])]
782 : [4, 5]
783 assert_equal([1, 2], l1)
784
785 g:flag = false
786 var l2: list<number> = g:flag
787 ? [1, min([2, 3])]
788 : [4, 5]
789 assert_equal([4, 5], l2)
790enddef
791
Bram Moolenaar94738d82020-10-21 14:25:07 +0200792def Test_nr2char()
793 nr2char(97, true)->assert_equal('a')
794enddef
795
796def Test_readdir()
Bram Moolenaar2949cfd2020-12-31 21:28:47 +0100797 eval expand('sautest')->readdir((e) => e[0] !=# '.')
798 eval expand('sautest')->readdirex((e) => e.name[0] !=# '.')
Bram Moolenaar94738d82020-10-21 14:25:07 +0200799enddef
800
Bram Moolenaarc423ad72021-01-13 20:38:03 +0100801def Test_readblob()
802 var blob = 0z12341234
803 writefile(blob, 'Xreadblob')
804 var read: blob = readblob('Xreadblob')
805 assert_equal(blob, read)
806
807 var lines =<< trim END
808 var read: list<string> = readblob('Xreadblob')
809 END
810 CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected list<string> but got blob', 1)
811 delete('Xreadblob')
812enddef
813
814def Test_readfile()
815 var text = ['aaa', 'bbb', 'ccc']
816 writefile(text, 'Xreadfile')
817 var read: list<string> = readfile('Xreadfile')
818 assert_equal(text, read)
819
820 var lines =<< trim END
821 var read: dict<string> = readfile('Xreadfile')
822 END
823 CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected dict<string> but got list<string>', 1)
824 delete('Xreadfile')
825enddef
826
Bram Moolenaar94738d82020-10-21 14:25:07 +0200827def Test_remove_return_type()
Bram Moolenaare0de1712020-12-02 17:36:54 +0100828 var l = remove({one: [1, 2], two: [3, 4]}, 'one')
Bram Moolenaar94738d82020-10-21 14:25:07 +0200829 var res = 0
830 for n in l
831 res += n
832 endfor
833 res->assert_equal(3)
834enddef
835
836def Test_reverse_return_type()
837 var l = reverse([1, 2, 3])
838 var res = 0
839 for n in l
840 res += n
841 endfor
842 res->assert_equal(6)
843enddef
844
845def Test_search()
846 new
847 setline(1, ['foo', 'bar'])
848 var val = 0
849 # skip expr returns boolean
Bram Moolenaar2949cfd2020-12-31 21:28:47 +0100850 search('bar', 'W', 0, 0, () => val == 1)->assert_equal(2)
Bram Moolenaar94738d82020-10-21 14:25:07 +0200851 :1
Bram Moolenaar2949cfd2020-12-31 21:28:47 +0100852 search('bar', 'W', 0, 0, () => val == 0)->assert_equal(0)
Bram Moolenaar94738d82020-10-21 14:25:07 +0200853 # skip expr returns number, only 0 and 1 are accepted
854 :1
Bram Moolenaar2949cfd2020-12-31 21:28:47 +0100855 search('bar', 'W', 0, 0, () => 0)->assert_equal(2)
Bram Moolenaar94738d82020-10-21 14:25:07 +0200856 :1
Bram Moolenaar2949cfd2020-12-31 21:28:47 +0100857 search('bar', 'W', 0, 0, () => 1)->assert_equal(0)
858 assert_fails("search('bar', '', 0, 0, () => -1)", 'E1023:')
859 assert_fails("search('bar', '', 0, 0, () => -1)", 'E1023:')
Bram Moolenaar94738d82020-10-21 14:25:07 +0200860enddef
861
862def Test_searchcount()
863 new
864 setline(1, "foo bar")
865 :/foo
Bram Moolenaare0de1712020-12-02 17:36:54 +0100866 searchcount({recompute: true})
867 ->assert_equal({
Bram Moolenaar94738d82020-10-21 14:25:07 +0200868 exact_match: 1,
869 current: 1,
870 total: 1,
871 maxcount: 99,
872 incomplete: 0})
873 bwipe!
874enddef
875
Bram Moolenaar34453202021-01-31 13:08:38 +0100876def Test_set_get_bufline()
877 # similar to Test_setbufline_getbufline()
878 var lines =<< trim END
879 new
880 var b = bufnr('%')
881 hide
882 assert_equal(0, setbufline(b, 1, ['foo', 'bar']))
883 assert_equal(['foo'], getbufline(b, 1))
884 assert_equal(['bar'], getbufline(b, '$'))
885 assert_equal(['foo', 'bar'], getbufline(b, 1, 2))
886 exe "bd!" b
887 assert_equal([], getbufline(b, 1, 2))
888
889 split Xtest
890 setline(1, ['a', 'b', 'c'])
891 b = bufnr('%')
892 wincmd w
893
894 assert_equal(1, setbufline(b, 5, 'x'))
895 assert_equal(1, setbufline(b, 5, ['x']))
896 assert_equal(1, setbufline(b, 5, []))
897 assert_equal(1, setbufline(b, 5, test_null_list()))
898
899 assert_equal(1, 'x'->setbufline(bufnr('$') + 1, 1))
900 assert_equal(1, ['x']->setbufline(bufnr('$') + 1, 1))
901 assert_equal(1, []->setbufline(bufnr('$') + 1, 1))
902 assert_equal(1, test_null_list()->setbufline(bufnr('$') + 1, 1))
903
904 assert_equal(['a', 'b', 'c'], getbufline(b, 1, '$'))
905
906 assert_equal(0, setbufline(b, 4, ['d', 'e']))
907 assert_equal(['c'], b->getbufline(3))
908 assert_equal(['d'], getbufline(b, 4))
909 assert_equal(['e'], getbufline(b, 5))
910 assert_equal([], getbufline(b, 6))
911 assert_equal([], getbufline(b, 2, 1))
912
Bram Moolenaar00385112021-02-07 14:31:06 +0100913 if has('job')
914 setbufline(b, 2, [function('eval'), {key: 123}, test_null_job()])
915 assert_equal(["function('eval')",
916 "{'key': 123}",
917 "no process"],
918 getbufline(b, 2, 4))
919 endif
Bram Moolenaar34453202021-01-31 13:08:38 +0100920
921 exe 'bwipe! ' .. b
922 END
923 CheckDefAndScriptSuccess(lines)
924enddef
925
Bram Moolenaar94738d82020-10-21 14:25:07 +0200926def Test_searchdecl()
927 searchdecl('blah', true, true)->assert_equal(1)
928enddef
929
930def Test_setbufvar()
931 setbufvar(bufnr('%'), '&syntax', 'vim')
932 &syntax->assert_equal('vim')
933 setbufvar(bufnr('%'), '&ts', 16)
934 &ts->assert_equal(16)
Bram Moolenaar31a201a2021-01-03 14:47:25 +0100935 setbufvar(bufnr('%'), '&ai', true)
936 &ai->assert_equal(true)
937 setbufvar(bufnr('%'), '&ft', 'filetype')
938 &ft->assert_equal('filetype')
939
Bram Moolenaar94738d82020-10-21 14:25:07 +0200940 settabwinvar(1, 1, '&syntax', 'vam')
941 &syntax->assert_equal('vam')
942 settabwinvar(1, 1, '&ts', 15)
943 &ts->assert_equal(15)
944 setlocal ts=8
Bram Moolenaarb0d81822021-01-03 15:55:10 +0100945 settabwinvar(1, 1, '&list', false)
946 &list->assert_equal(false)
Bram Moolenaar31a201a2021-01-03 14:47:25 +0100947 settabwinvar(1, 1, '&list', true)
948 &list->assert_equal(true)
949 setlocal list&
Bram Moolenaar94738d82020-10-21 14:25:07 +0200950
951 setbufvar('%', 'myvar', 123)
952 getbufvar('%', 'myvar')->assert_equal(123)
953enddef
954
955def Test_setloclist()
Bram Moolenaare0de1712020-12-02 17:36:54 +0100956 var items = [{filename: '/tmp/file', lnum: 1, valid: true}]
957 var what = {items: items}
Bram Moolenaar94738d82020-10-21 14:25:07 +0200958 setqflist([], ' ', what)
959 setloclist(0, [], ' ', what)
960enddef
961
962def Test_setreg()
963 setreg('a', ['aaa', 'bbb', 'ccc'])
964 var reginfo = getreginfo('a')
965 setreg('a', reginfo)
966 getreginfo('a')->assert_equal(reginfo)
Bram Moolenaar418a29f2021-02-10 22:23:41 +0100967 assert_fails('setreg("ab", 0)', 'E1162:')
Bram Moolenaar94738d82020-10-21 14:25:07 +0200968enddef
969
Bram Moolenaar6601b622021-01-13 21:47:15 +0100970def Test_slice()
971 assert_equal('12345', slice('012345', 1))
972 assert_equal('123', slice('012345', 1, 4))
973 assert_equal('1234', slice('012345', 1, -1))
974 assert_equal('1', slice('012345', 1, -4))
975 assert_equal('', slice('012345', 1, -5))
976 assert_equal('', slice('012345', 1, -6))
977
978 assert_equal([1, 2, 3, 4, 5], slice(range(6), 1))
979 assert_equal([1, 2, 3], slice(range(6), 1, 4))
980 assert_equal([1, 2, 3, 4], slice(range(6), 1, -1))
981 assert_equal([1], slice(range(6), 1, -4))
982 assert_equal([], slice(range(6), 1, -5))
983 assert_equal([], slice(range(6), 1, -6))
984
985 assert_equal(0z1122334455, slice(0z001122334455, 1))
986 assert_equal(0z112233, slice(0z001122334455, 1, 4))
987 assert_equal(0z11223344, slice(0z001122334455, 1, -1))
988 assert_equal(0z11, slice(0z001122334455, 1, -4))
989 assert_equal(0z, slice(0z001122334455, 1, -5))
990 assert_equal(0z, slice(0z001122334455, 1, -6))
991enddef
992
Bram Moolenaar94738d82020-10-21 14:25:07 +0200993def Test_spellsuggest()
994 if !has('spell')
995 MissingFeature 'spell'
996 else
997 spellsuggest('marrch', 1, true)->assert_equal(['March'])
998 endif
999enddef
1000
1001def Test_sort_return_type()
1002 var res: list<number>
1003 res = [1, 2, 3]->sort()
1004enddef
1005
1006def Test_sort_argument()
Bram Moolenaar08cf0c02020-12-05 21:47:06 +01001007 var lines =<< trim END
1008 var res = ['b', 'a', 'c']->sort('i')
1009 res->assert_equal(['a', 'b', 'c'])
1010
1011 def Compare(a: number, b: number): number
1012 return a - b
1013 enddef
1014 var l = [3, 6, 7, 1, 8, 2, 4, 5]
1015 sort(l, Compare)
1016 assert_equal([1, 2, 3, 4, 5, 6, 7, 8], l)
1017 END
1018 CheckDefAndScriptSuccess(lines)
Bram Moolenaar94738d82020-10-21 14:25:07 +02001019enddef
1020
1021def Test_split()
1022 split(' aa bb ', '\W\+', true)->assert_equal(['', 'aa', 'bb', ''])
1023enddef
1024
Bram Moolenaar80ad3e22021-01-31 20:48:58 +01001025def Run_str2float()
1026 if !has('float')
1027 MissingFeature 'float'
1028 endif
1029 str2float("1.00")->assert_equal(1.00)
1030 str2float("2e-2")->assert_equal(0.02)
1031
1032 CheckDefFailure(['echo str2float(123)'], 'E1013:')
1033 CheckScriptFailure(['vim9script', 'echo str2float(123)'], 'E1024:')
1034 endif
1035enddef
1036
Bram Moolenaar94738d82020-10-21 14:25:07 +02001037def Test_str2nr()
1038 str2nr("1'000'000", 10, true)->assert_equal(1000000)
Bram Moolenaarf2b26bc2021-01-30 23:05:11 +01001039
1040 CheckDefFailure(['echo str2nr(123)'], 'E1013:')
1041 CheckScriptFailure(['vim9script', 'echo str2nr(123)'], 'E1024:')
1042 CheckDefFailure(['echo str2nr("123", "x")'], 'E1013:')
1043 CheckScriptFailure(['vim9script', 'echo str2nr("123", "x")'], 'E1030:')
1044 CheckDefFailure(['echo str2nr("123", 10, "x")'], 'E1013:')
1045 CheckScriptFailure(['vim9script', 'echo str2nr("123", 10, "x")'], 'E1135:')
Bram Moolenaar94738d82020-10-21 14:25:07 +02001046enddef
1047
1048def Test_strchars()
1049 strchars("A\u20dd", true)->assert_equal(1)
1050enddef
1051
1052def Test_submatch()
1053 var pat = 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'
Bram Moolenaar75ab91f2021-01-10 22:42:50 +01001054 var Rep = () => range(10)->mapnew((_, v) => submatch(v, true))->string()
Bram Moolenaar94738d82020-10-21 14:25:07 +02001055 var actual = substitute('A123456789', pat, Rep, '')
1056 var expected = "[['A123456789'], ['1'], ['2'], ['3'], ['4'], ['5'], ['6'], ['7'], ['8'], ['9']]"
1057 actual->assert_equal(expected)
1058enddef
1059
1060def Test_synID()
1061 new
1062 setline(1, "text")
1063 synID(1, 1, true)->assert_equal(0)
1064 bwipe!
1065enddef
1066
1067def Test_term_gettty()
1068 if !has('terminal')
1069 MissingFeature 'terminal'
1070 else
1071 var buf = Run_shell_in_terminal({})
1072 term_gettty(buf, true)->assert_notequal('')
1073 StopShellInTerminal(buf)
1074 endif
1075enddef
1076
1077def Test_term_start()
1078 if !has('terminal')
1079 MissingFeature 'terminal'
1080 else
1081 botright new
1082 var winnr = winnr()
Bram Moolenaare0de1712020-12-02 17:36:54 +01001083 term_start(&shell, {curwin: true})
Bram Moolenaar94738d82020-10-21 14:25:07 +02001084 winnr()->assert_equal(winnr)
1085 bwipe!
1086 endif
1087enddef
1088
1089def Test_timer_paused()
Bram Moolenaar2949cfd2020-12-31 21:28:47 +01001090 var id = timer_start(50, () => 0)
Bram Moolenaar94738d82020-10-21 14:25:07 +02001091 timer_pause(id, true)
1092 var info = timer_info(id)
1093 info[0]['paused']->assert_equal(1)
1094 timer_stop(id)
1095enddef
1096
Bram Moolenaar37487e12021-01-12 22:08:53 +01001097def Test_win_execute()
1098 assert_equal("\n" .. winnr(), win_execute(win_getid(), 'echo winnr()'))
1099 assert_equal('', win_execute(342343, 'echo winnr()'))
1100enddef
1101
Bram Moolenaar94738d82020-10-21 14:25:07 +02001102def Test_win_splitmove()
1103 split
Bram Moolenaare0de1712020-12-02 17:36:54 +01001104 win_splitmove(1, 2, {vertical: true, rightbelow: true})
Bram Moolenaar94738d82020-10-21 14:25:07 +02001105 close
1106enddef
1107
Bram Moolenaar285b15f2020-12-29 20:25:19 +01001108def Test_winrestcmd()
1109 split
1110 var cmd = winrestcmd()
1111 wincmd _
1112 exe cmd
1113 assert_equal(cmd, winrestcmd())
1114 close
1115enddef
1116
Bram Moolenaar43b69b32021-01-07 20:23:33 +01001117def Test_winsaveview()
1118 var view: dict<number> = winsaveview()
1119
1120 var lines =<< trim END
1121 var view: list<number> = winsaveview()
1122 END
1123 CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected list<number> but got dict<number>', 1)
1124enddef
1125
1126
Bram Moolenaar285b15f2020-12-29 20:25:19 +01001127
Bram Moolenaar94738d82020-10-21 14:25:07 +02001128
1129" vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker