Mercurial > vim
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 |