comparison src/testdir/test_vim9_script.vim @ 19283:9dc843109c97 v8.2.0200

patch 8.2.0200: Vim9 script commands not sufficiently tested Commit: https://github.com/vim/vim/commit/b283a8a6802ef8a46b17cb439f9514840c03698f Author: Bram Moolenaar <Bram@vim.org> Date: Sun Feb 2 22:24:04 2020 +0100 patch 8.2.0200: Vim9 script commands not sufficiently tested Problem: Vim9 script commands not sufficiently tested. Solution: Add more tests. Fix storing global variable. Make script variables work.
author Bram Moolenaar <Bram@vim.org>
date Sun, 02 Feb 2020 22:30:04 +0100
parents 9fcdeaa18bd1
children 86665583dc83
comparison
equal deleted inserted replaced
19282:0d513180baa1 19283:9dc843109c97
40 " let listS: list<string> = [] 40 " let listS: list<string> = []
41 " let listN: list<number> = [] 41 " let listN: list<number> = []
42 42
43 let dict1: dict<string> = #{key: 'value'} 43 let dict1: dict<string> = #{key: 'value'}
44 let dict2: dict<number> = #{one: 1, two: 2} 44 let dict2: dict<number> = #{one: 1, two: 2}
45
46 v:char = 'abc'
47 call assert_equal('abc', v:char)
48
49 $ENVVAR = 'foobar'
50 call assert_equal('foobar', $ENVVAR)
51 $ENVVAR = ''
45 enddef 52 enddef
46 53
47 func Test_assignment_failure() 54 func Test_assignment_failure()
48 call CheckDefFailure(['let var=234'], 'E1004:') 55 call CheckDefFailure(['let var=234'], 'E1004:')
49 call CheckDefFailure(['let var =234'], 'E1004:') 56 call CheckDefFailure(['let var =234'], 'E1004:')
104 Increment() 111 Increment()
105 Increment() 112 Increment()
106 Increment() 113 Increment()
107 " works with and without :call 114 " works with and without :call
108 assert_equal(4, g:counter) 115 assert_equal(4, g:counter)
109 assert_equal(4, g:counter) 116 call assert_equal(4, g:counter)
110 unlet g:counter 117 unlet g:counter
111 enddef 118 enddef
112 119
113 def MyVarargs(arg: string, ...rest: list<string>): string 120 def MyVarargs(arg: string, ...rest: list<string>): string
114 let res = arg 121 let res = arg
309 316
310 def Test_import_absolute() 317 def Test_import_absolute()
311 let import_lines = [ 318 let import_lines = [
312 \ 'vim9script', 319 \ 'vim9script',
313 \ 'import exported from "' .. escape(getcwd(), '\') .. '/Xexport_abs.vim"', 320 \ 'import exported from "' .. escape(getcwd(), '\') .. '/Xexport_abs.vim"',
314 \ 'g:imported_abs = exported', 321 \ 'def UseExported()',
322 \ ' g:imported_abs = exported',
323 \ 'enddef',
324 \ 'UseExported()',
325 \ 'g:import_disassabled = execute("disass UseExported")',
315 \ ] 326 \ ]
316 writefile(import_lines, 'Ximport_abs.vim') 327 writefile(import_lines, 'Ximport_abs.vim')
317 writefile(s:export_script_lines, 'Xexport_abs.vim') 328 writefile(s:export_script_lines, 'Xexport_abs.vim')
318 329
319 source Ximport_abs.vim 330 source Ximport_abs.vim
320 331
321 assert_equal(9876, g:imported_abs) 332 assert_equal(9876, g:imported_abs)
333 assert_match('<SNR>\d\+_UseExported.*'
334 \ .. 'g:imported_abs = exported.*'
335 \ .. '0 LOADSCRIPT exported from .*Xexport_abs.vim.*'
336 \ .. '1 STOREG g:imported_abs', g:import_disassabled)
322 unlet g:imported_abs 337 unlet g:imported_abs
338 unlet g:import_disassabled
323 339
324 delete('Ximport_abs.vim') 340 delete('Ximport_abs.vim')
325 delete('Xexport_abs.vim') 341 delete('Xexport_abs.vim')
326 enddef 342 enddef
327 343
403 endfunc 419 endfunc
404 420
405 let s:scriptvar = 4 421 let s:scriptvar = 4
406 let g:globalvar = 'g' 422 let g:globalvar = 'g'
407 423
408 def s:ScriptFunc(arg: string) 424 def s:ScriptFuncLoad(arg: string)
409 let local = 1 425 let local = 1
410 buffers 426 buffers
411 echo arg 427 echo arg
412 echo local 428 echo local
413 echo v:version 429 echo v:version
416 echo &tabstop 432 echo &tabstop
417 echo $ENVVAR 433 echo $ENVVAR
418 echo @z 434 echo @z
419 enddef 435 enddef
420 436
437 def s:ScriptFuncStore()
438 let localnr = 1
439 localnr = 2
440 let localstr = 'abc'
441 localstr = 'xyz'
442 v:char = 'abc'
443 s:scriptvar = 'sv'
444 g:globalvar = 'gv'
445 &tabstop = 8
446 $ENVVAR = 'ev'
447 @z = 'rv'
448 enddef
449
421 def Test_disassemble() 450 def Test_disassemble()
422 assert_fails('disass NoFunc', 'E1061:') 451 assert_fails('disass NoFunc', 'E1061:')
423 assert_fails('disass NotCompiled', 'E1062:') 452 assert_fails('disass NotCompiled', 'E1062:')
424 453
425 let res = execute('disass s:ScriptFunc') 454 let res = execute('disass s:ScriptFuncLoad')
426 assert_match('<SNR>\d*_ScriptFunc.*' 455 assert_match('<SNR>\d*_ScriptFuncLoad.*'
427 \ .. 'buffers.*' 456 \ .. 'buffers.*'
428 \ .. ' EXEC \+buffers.*' 457 \ .. ' EXEC \+buffers.*'
429 \ .. ' LOAD arg\[-1\].*' 458 \ .. ' LOAD arg\[-1\].*'
430 \ .. ' LOAD $0.*' 459 \ .. ' LOAD $0.*'
431 \ .. ' LOADV v:version.*' 460 \ .. ' LOADV v:version.*'
432 \ .. ' LOADS s:scriptvar from .*test_vim9_script.vim.*' 461 \ .. ' LOADS s:scriptvar from .*test_vim9_script.vim.*'
433 \ .. ' LOADG g:globalvar.*' 462 \ .. ' LOADG g:globalvar.*'
434 \ .. ' LOADENV $ENVVAR.*' 463 \ .. ' LOADENV $ENVVAR.*'
435 \ .. ' LOADREG @z.*', res) 464 \ .. ' LOADREG @z.*'
465 \, res)
466
467 " TODO:
468 " v:char =
469 " s:scriptvar =
470 res = execute('disass s:ScriptFuncStore')
471 assert_match('<SNR>\d*_ScriptFuncStore.*'
472 \ .. 'localnr = 2.*'
473 \ .. ' STORE 2 in $0.*'
474 \ .. 'localstr = ''xyz''.*'
475 \ .. ' STORE $1.*'
476 \ .. 'v:char = ''abc''.*'
477 \ .. 'STOREV v:char.*'
478 \ .. 's:scriptvar = ''sv''.*'
479 \ .. ' STORES s:scriptvar in .*test_vim9_script.vim.*'
480 \ .. 'g:globalvar = ''gv''.*'
481 \ .. ' STOREG g:globalvar.*'
482 \ .. '&tabstop = 8.*'
483 \ .. ' STOREOPT &tabstop.*'
484 \ .. '$ENVVAR = ''ev''.*'
485 \ .. ' STOREENV $ENVVAR.*'
486 \ .. '@z = ''rv''.*'
487 \ .. ' STOREREG @z.*'
488 \, res)
436 enddef 489 enddef
437 490
438 491
439 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker 492 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker