2020-10-21 14:25:07 +02:00
" Test using builtin functions in the Vim9 script language.
source check .vim
source vim9 .vim
" Test for passing too many or too few arguments to builtin functions
func Test_internalfunc_arg_error ( )
let l = < < trim END
def ! FArgErr ( ) : float
return ceil ( 1 .1 , 2 )
enddef
defcompile
END
call writefile ( l , 'Xinvalidarg' )
call assert_fails ( 'so Xinvalidarg' , 'E118:' , '' , 1 , 'FArgErr' )
let l = < < trim END
def ! FArgErr ( ) : float
return ceil ( )
enddef
defcompile
END
call writefile ( l , 'Xinvalidarg' )
call assert_fails ( 'so Xinvalidarg' , 'E119:' , '' , 1 , 'FArgErr' )
call delete ( 'Xinvalidarg' )
endfunc
" Test for builtin functions returning different types
func Test_InternalFuncRetType ( )
let lines = < < trim END
def RetFloat ( ) : float
return ceil ( 1 .456 )
enddef
def RetListAny ( ) : list < any >
2020-12-02 17:36:54 +01:00
return items ( {k : 'v' })
2020-10-21 14:25:07 +02:00
enddef
def RetListString ( ) : list < string >
return split ( 'a:b:c' , ':' )
enddef
def RetListDictAny ( ) : list < dict < any > >
return getbufinfo ( )
enddef
def RetDictNumber ( ) : dict < number >
return wordcount ( )
enddef
def RetDictString ( ) : dict < string >
return environ ( )
enddef
END
call writefile ( lines , 'Xscript' )
source Xscript
call RetFloat ( ) - > assert_equal ( 2 .0 )
call RetListAny ( ) - > assert_equal ( [['k' , 'v' ]])
call RetListString ( ) - > assert_equal ( ['a' , 'b' , 'c' ])
call RetListDictAny ( ) - > assert_notequal ( [])
call RetDictNumber ( ) - > assert_notequal ( {})
call RetDictString ( ) - > assert_notequal ( {})
call delete ( 'Xscript' )
endfunc
def Test_abs ( )
assert_equal ( 0 , abs ( 0 ) )
assert_equal ( 2 , abs ( -2 ) )
assert_equal ( 3 , abs ( 3 ) )
CheckDefFailure ( ['abs("text")' ], 'E1013: Argument 1: type mismatch, expected number but got string' , 1 )
if has ( 'float' )
assert_equal ( 0 , abs ( 0 ) )
assert_equal ( 2 .0 , abs ( -2 .0 ) )
assert_equal ( 3 .0 , abs ( 3 .0 ) )
endif
enddef
def Test_add_list ( )
var l : list < number > # defaults to empty list
add ( l , 9 )
assert_equal ( [9 ], l )
var lines = < < trim END
var l : list < number >
add ( l , "x" )
END
CheckDefFailure ( lines , 'E1012:' , 2 )
2021-04-18 14:12:31 +02:00
lines = < < trim END
add ( test_null_list ( ) , 123 )
END
CheckDefExecAndScriptFailure ( lines , 'E1130:' , 1 )
2020-10-21 14:25:07 +02:00
lines = < < trim END
var l : list < number > = test_null_list ( )
add ( l , 123 )
END
CheckDefExecFailure ( lines , 'E1130:' , 2 )
2021-04-18 14:12:31 +02:00
# Getting variable with NULL list allocates a new list at script level
lines = < < trim END
vim9script
var l : list < number > = test_null_list ( )
add ( l , 123 )
END
CheckScriptSuccess ( lines )
2021-07-08 20:53:40 +02:00
lines = < < trim END
vim9script
var l : list < string > = ['a' ]
l - > add ( 123 )
2021-07-08 20:57:24 +02:00
END
CheckScriptFailure ( lines , 'E1012: Type mismatch; expected string but got number' , 3 )
lines = < < trim END
vim9script
var l : list < string >
l - > add ( 123 )
2021-07-08 20:53:40 +02:00
END
CheckScriptFailure ( lines , 'E1012: Type mismatch; expected string but got number' , 3 )
2020-10-21 14:25:07 +02:00
enddef
def Test_add_blob ( )
var b1 : blob = 0 z12
add ( b1 , 0 x34 )
assert_equal ( 0 z1234 , b1 )
var b2 : blob # defaults to empty blob
add ( b2 , 0 x67 )
assert_equal ( 0 z67 , b2 )
var lines = < < trim END
var b : blob
add ( b , "x" )
END
CheckDefFailure ( lines , 'E1012:' , 2 )
2021-04-18 14:12:31 +02:00
lines = < < trim END
add ( test_null_blob ( ) , 123 )
END
CheckDefExecAndScriptFailure ( lines , 'E1131:' , 1 )
2020-10-21 14:25:07 +02:00
lines = < < trim END
var b : blob = test_null_blob ( )
add ( b , 123 )
END
CheckDefExecFailure ( lines , 'E1131:' , 2 )
2021-04-18 14:12:31 +02:00
# Getting variable with NULL blob allocates a new blob at script level
lines = < < trim END
vim9script
var b : blob = test_null_blob ( )
add ( b , 123 )
END
CheckScriptSuccess ( lines )
2020-10-21 14:25:07 +02:00
enddef
2021-06-22 19:52:27 +02:00
def Test_and ( )
2021-07-10 13:15:41 +02:00
CheckDefAndScriptFailure2 ( ['and("x", 0x2)' ], 'E1013: Argument 1: type mismatch, expected number but got string' , 'E1030: Using a String as a Number' )
CheckDefAndScriptFailure2 ( ['and(0x1, "x")' ], 'E1013: Argument 2: type mismatch, expected number but got string' , 'E1030: Using a String as a Number' )
2021-06-22 19:52:27 +02:00
enddef
2021-01-17 16:16:23 +01:00
def Test_append ( )
new
setline ( 1 , range ( 3 ) )
var res1 : number = append ( 1 , 'one' )
assert_equal ( 0 , res1 )
var res2 : bool = append ( 3 , 'two' )
assert_equal ( false , res2 )
assert_equal ( ['0' , 'one' , '1' , 'two' , '2' ], getline ( 1 , 6 ) )
2021-03-28 15:46:16 +02:00
append ( 0 , 'zero' )
assert_equal ( 'zero' , getline ( 1 ) )
bwipe !
2021-01-17 16:16:23 +01:00
enddef
2021-06-22 19:52:27 +02:00
def Test_argc ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['argc("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
enddef
def Test_arglistid ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['arglistid("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
CheckDefFailure ( ['arglistid(1, "y")' ], 'E1013: Argument 2: type mismatch, expected number but got string' )
CheckDefFailure ( ['arglistid("x", "y")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
enddef
def Test_argv ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['argv("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
CheckDefFailure ( ['argv(1, "x")' ], 'E1013: Argument 2: type mismatch, expected number but got string' )
CheckDefFailure ( ['argv("x", "y")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
enddef
def Test_assert_equalfile ( )
CheckDefFailure ( ['assert_equalfile(1, "f2")' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
CheckDefFailure ( ['assert_equalfile("f1", true)' ], 'E1013: Argument 2: type mismatch, expected string but got bool' )
CheckDefFailure ( ['assert_equalfile("f1", "f2", ["a"])' ], 'E1013: Argument 3: type mismatch, expected string but got list<string>' )
enddef
def Test_assert_exception ( )
CheckDefFailure ( ['assert_exception({})' ], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>' )
CheckDefFailure ( ['assert_exception("E1:", v:null)' ], 'E1013: Argument 2: type mismatch, expected string but got special' )
enddef
def Test_assert_match ( )
CheckDefFailure ( ['assert_match({}, "b")' ], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>' )
CheckDefFailure ( ['assert_match("a", 1)' ], 'E1013: Argument 2: type mismatch, expected string but got number' )
CheckDefFailure ( ['assert_match("a", "b", null)' ], 'E1013: Argument 3: type mismatch, expected string but got special' )
enddef
def Test_assert_notmatch ( )
CheckDefFailure ( ['assert_notmatch({}, "b")' ], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>' )
CheckDefFailure ( ['assert_notmatch("a", 1)' ], 'E1013: Argument 2: type mismatch, expected string but got number' )
CheckDefFailure ( ['assert_notmatch("a", "b", null)' ], 'E1013: Argument 3: type mismatch, expected string but got special' )
2021-06-22 19:52:27 +02:00
enddef
2021-03-27 18:59:25 +01:00
def Test_balloon_show ( )
CheckGui
CheckFeature balloon_eval
2021-07-03 11:58:12 +02:00
assert_fails ( 'balloon_show(10)' , 'E1174:' )
2021-03-27 18:59:25 +01:00
assert_fails ( 'balloon_show(true)' , 'E1174:' )
enddef
def Test_balloon_split ( )
2021-03-27 19:09:02 +01:00
CheckFeature balloon_eval_term
2021-03-27 18:59:25 +01:00
2021-07-03 11:58:12 +02:00
assert_fails ( 'balloon_split([])' , 'E1174:' )
2021-03-27 18:59:25 +01:00
assert_fails ( 'balloon_split(true)' , 'E1174:' )
enddef
2021-03-22 22:21:26 +01:00
def Test_browse ( )
CheckFeature browse
var lines = < < trim END
2021-03-27 22:20:21 +01:00
browse ( 1 , 2 , 3 , 4 )
2021-03-22 22:21:26 +01:00
END
CheckDefExecAndScriptFailure ( lines , 'E1174: String required for argument 2' )
lines = < < trim END
2021-03-27 22:20:21 +01:00
browse ( 1 , 'title' , 3 , 4 )
2021-03-22 22:21:26 +01:00
END
CheckDefExecAndScriptFailure ( lines , 'E1174: String required for argument 3' )
lines = < < trim END
2021-03-27 22:20:21 +01:00
browse ( 1 , 'title' , 'dir' , 4 )
2021-03-22 22:21:26 +01:00
END
CheckDefExecAndScriptFailure ( lines , 'E1174: String required for argument 4' )
enddef
2021-07-10 13:15:41 +02:00
def Test_browsedir ( )
CheckDefFailure ( ['browsedir({}, "b")' ], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>' )
CheckDefFailure ( ['browsedir("a", [])' ], 'E1013: Argument 2: type mismatch, expected string but got list<unknown>' )
enddef
2021-07-03 11:58:12 +02:00
def Test_bufadd ( )
assert_fails ( 'bufadd([])' , 'E730:' )
enddef
2021-03-27 18:59:25 +01:00
def Test_bufexists ( )
2021-07-03 11:58:12 +02:00
assert_fails ( 'bufexists(true)' , 'E1174:' )
2021-03-27 18:59:25 +01:00
enddef
2021-01-17 16:16:23 +01:00
def Test_buflisted ( )
var res : bool = buflisted ( 'asdf' )
assert_equal ( false , res )
2021-07-03 11:58:12 +02:00
assert_fails ( 'buflisted(true)' , 'E1174:' )
assert_fails ( 'buflisted([])' , 'E1174:' )
enddef
def Test_bufload ( )
assert_fails ( 'bufload([])' , 'E730:' )
enddef
def Test_bufloaded ( )
assert_fails ( 'bufloaded(true)' , 'E1174:' )
assert_fails ( 'bufloaded([])' , 'E1174:' )
2021-01-17 16:16:23 +01:00
enddef
2020-10-21 14:25:07 +02:00
def Test_bufname ( )
split SomeFile
bufname ( '%' ) - > assert_equal ( 'SomeFile' )
edit OtherFile
bufname ( '#' ) - > assert_equal ( 'SomeFile' )
close
2021-07-03 11:58:12 +02:00
assert_fails ( 'bufname(true)' , 'E1138:' )
assert_fails ( 'bufname([])' , 'E745:' )
2020-10-21 14:25:07 +02:00
enddef
def Test_bufnr ( )
var buf = bufnr ( )
bufnr ( '%' ) - > assert_equal ( buf )
buf = bufnr ( 'Xdummy' , true )
buf - > assert_notequal ( -1 )
exe 'bwipe! ' .. buf
enddef
def Test_bufwinid ( )
var origwin = win_getid ( )
below split SomeFile
var SomeFileID = win_getid ( )
below split OtherFile
below split SomeFile
bufwinid ( 'SomeFile' ) - > assert_equal ( SomeFileID )
win_gotoid ( origwin )
only
bwipe SomeFile
bwipe OtherFile
2021-03-27 18:59:25 +01:00
2021-07-03 11:58:12 +02:00
assert_fails ( 'bufwinid(true)' , 'E1138:' )
assert_fails ( 'bufwinid([])' , 'E745:' )
enddef
def Test_bufwinnr ( )
assert_fails ( 'bufwinnr(true)' , 'E1138:' )
assert_fails ( 'bufwinnr([])' , 'E745:' )
enddef
def Test_byte2line ( )
CheckDefFailure ( ['byte2line("1")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
CheckDefFailure ( ['byte2line([])' ], 'E1013: Argument 1: type mismatch, expected number but got list<unknown>' )
assert_equal ( -1 , byte2line ( 0 ) )
2020-10-21 14:25:07 +02:00
enddef
def Test_call_call ( )
var l = [3 , 2 , 1 ]
call ( 'reverse' , [l ])
l - > assert_equal ( [1 , 2 , 3 ])
enddef
2021-07-10 13:15:41 +02:00
def Test_ch_canread ( )
if ! has ( 'channel' )
CheckFeature channel
endif
CheckDefFailure ( ['ch_canread(10)' ], 'E1013: Argument 1: type mismatch, expected channel but got number' )
enddef
def Test_ch_close ( )
if ! has ( 'channel' )
CheckFeature channel
endif
CheckDefFailure ( ['ch_close("c")' ], 'E1013: Argument 1: type mismatch, expected channel but got string' )
enddef
def Test_ch_close_in ( )
if ! has ( 'channel' )
CheckFeature channel
endif
CheckDefFailure ( ['ch_close_in(true)' ], 'E1013: Argument 1: type mismatch, expected channel but got bool' )
enddef
def Test_ch_info ( )
if ! has ( 'channel' )
CheckFeature channel
endif
CheckDefFailure ( ['ch_info([1])' ], 'E1013: Argument 1: type mismatch, expected channel but got list<number>' )
enddef
2021-03-27 21:23:30 +01:00
def Test_ch_logfile ( )
2021-04-05 13:36:34 +02:00
if ! has ( 'channel' )
CheckFeature channel
endif
2021-07-03 11:58:12 +02:00
assert_fails ( 'ch_logfile(true)' , 'E1174:' )
assert_fails ( 'ch_logfile("foo", true)' , 'E1174:' )
2021-07-10 13:15:41 +02:00
CheckDefAndScriptFailure2 ( ['ch_logfile(1)' ], 'E1013: Argument 1: type mismatch, expected string but got number' , 'E1174: String required for argument 1' )
CheckDefAndScriptFailure2 ( ['ch_logfile("a", true)' ], 'E1013: Argument 2: type mismatch, expected string but got bool' , 'E1174: String required for argument 2' )
enddef
def Test_ch_open ( )
if ! has ( 'channel' )
CheckFeature channel
endif
CheckDefAndScriptFailure2 ( ['ch_open({"a": 10}, "a")' ], 'E1013: Argument 1: type mismatch, expected string but got dict<number>' , 'E1174: String required for argument 1' )
CheckDefAndScriptFailure2 ( ['ch_open("a", [1])' ], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<number>' , 'E1206: Dictionary required for argument 2' )
2021-03-27 21:23:30 +01:00
enddef
2020-10-21 14:25:07 +02:00
def Test_char2nr ( )
char2nr ( 'あ' , true ) - > assert_equal ( 12354 )
2021-03-27 21:23:30 +01:00
2021-07-03 11:58:12 +02:00
assert_fails ( 'char2nr(true)' , 'E1174:' )
2021-03-27 21:23:30 +01:00
enddef
def Test_charclass ( )
2021-07-03 11:58:12 +02:00
assert_fails ( 'charclass(true)' , 'E1174:' )
2021-03-27 21:23:30 +01:00
enddef
2021-07-10 13:15:41 +02:00
def Test_charcol ( )
CheckDefFailure ( ['charcol(10)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
CheckDefFailure ( ['charcol({a: 10})' ], 'E1013: Argument 1: type mismatch, expected string but got dict<number>' )
enddef
def Test_charidx ( )
CheckDefFailure ( ['charidx("a", "b")' ], 'E1013: Argument 2: type mismatch, expected number but got string' )
CheckDefFailure ( ['charidx(0z10, 1)' ], 'E1013: Argument 1: type mismatch, expected string but got blob' )
CheckDefFailure ( ['charidx("a", 1, "")' ], 'E1013: Argument 3: type mismatch, expected bool but got string' )
enddef
2021-03-27 21:23:30 +01:00
def Test_chdir ( )
2021-07-03 11:58:12 +02:00
assert_fails ( 'chdir(true)' , 'E1174:' )
enddef
def Test_cindent ( )
CheckDefFailure ( ['cindent([])' ], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>' )
CheckDefFailure ( ['cindent(null)' ], 'E1013: Argument 1: type mismatch, expected string but got special' )
assert_equal ( -1 , cindent ( 0 ) )
assert_equal ( 0 , cindent ( '.' ) )
2020-10-21 14:25:07 +02:00
enddef
2021-06-22 19:52:27 +02:00
def Test_clearmatches ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['clearmatches("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
enddef
2020-10-21 14:25:07 +02:00
def Test_col ( )
new
setline ( 1 , 'asdf' )
col ( [1 , '$' ]) - > assert_equal ( 5 )
2021-03-27 21:23:30 +01:00
2021-07-03 11:58:12 +02:00
assert_fails ( 'col(true)' , 'E1174:' )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['col(10)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
CheckDefFailure ( ['col({a: 10})' ], 'E1013: Argument 1: type mismatch, expected string but got dict<number>' )
CheckDefFailure ( ['col(true)' ], 'E1013: Argument 1: type mismatch, expected string but got bool' )
bw !
2021-03-27 21:23:30 +01:00
enddef
def Test_confirm ( )
if ! has ( 'dialog_con' ) && ! has ( 'dialog_gui' )
CheckFeature dialog_con
endif
2021-07-03 11:58:12 +02:00
assert_fails ( 'confirm(true)' , 'E1174:' )
assert_fails ( 'confirm("yes", true)' , 'E1174:' )
assert_fails ( 'confirm("yes", "maybe", 2, true)' , 'E1174:' )
enddef
def Test_complete_info ( )
CheckDefFailure ( ['complete_info("")' ], 'E1013: Argument 1: type mismatch, expected list<string> but got string' )
CheckDefFailure ( ['complete_info({})' ], 'E1013: Argument 1: type mismatch, expected list<string> but got dict<unknown>' )
assert_equal ( {'pum_visible' : 0 , 'mode' : '' , 'selected' : -1 , 'items' : []}, complete_info ( ) )
assert_equal ( {'mode' : '' , 'items' : []}, complete_info ( ['mode' , 'items' ]) )
2020-10-21 14:25:07 +02:00
enddef
def Test_copy_return_type ( )
var l = copy ( [1 , 2 , 3 ])
var res = 0
for n in l
res + = n
endfor
res - > assert_equal ( 6 )
var dl = deepcopy ( [1 , 2 , 3 ])
res = 0
for n in dl
res + = n
endfor
res - > assert_equal ( 6 )
dl = deepcopy ( [1 , 2 , 3 ], true )
enddef
def Test_count ( )
count ( 'ABC ABC ABC' , 'b' , true ) - > assert_equal ( 3 )
count ( 'ABC ABC ABC' , 'b' , false ) - > assert_equal ( 0 )
enddef
2020-12-21 21:58:46 +01:00
def Test_cursor ( )
new
setline ( 1 , range ( 4 ) )
cursor ( 2 , 1 )
assert_equal ( 2 , getcurpos ( ) [1 ])
cursor ( '$' , 1 )
assert_equal ( 4 , getcurpos ( ) [1 ])
var lines = < < trim END
cursor ( '2' , 1 )
END
2021-07-11 16:01:58 +02:00
CheckDefExecAndScriptFailure ( lines , 'E1209:' )
2020-12-21 21:58:46 +01:00
enddef
2021-06-22 19:52:27 +02:00
def Test_debugbreak ( )
CheckMSWindows
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['debugbreak("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
enddef
2021-01-17 16:16:23 +01:00
def Test_delete ( )
var res : bool = delete ( 'doesnotexist' )
assert_equal ( true , res )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['delete(10)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
CheckDefFailure ( ['delete("a", 10)' ], 'E1013: Argument 2: type mismatch, expected string but got number' )
2021-01-17 16:16:23 +01:00
enddef
2021-07-03 11:58:12 +02:00
def Test_diff_filler ( )
CheckDefFailure ( ['diff_filler([])' ], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>' )
CheckDefFailure ( ['diff_filler(true)' ], 'E1013: Argument 1: type mismatch, expected string but got bool' )
assert_equal ( 0 , diff_filler ( 1 ) )
assert_equal ( 0 , diff_filler ( '.' ) )
enddef
def Test_escape ( )
CheckDefFailure ( ['escape("a", 10)' ], 'E1013: Argument 2: type mismatch, expected string but got number' )
CheckDefFailure ( ['escape(10, " ")' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
CheckDefFailure ( ['escape(true, false)' ], 'E1013: Argument 1: type mismatch, expected string but got bool' )
assert_equal ( 'a\:b' , escape ( "a:b" , ":" ) )
enddef
def Test_eval ( )
CheckDefFailure ( ['eval(10)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
CheckDefFailure ( ['eval(null)' ], 'E1013: Argument 1: type mismatch, expected string but got special' )
assert_equal ( 2 , eval ( '1 + 1' ) )
enddef
2020-12-09 12:41:50 +01:00
def Test_executable ( )
2020-12-12 18:58:40 +01:00
assert_false ( executable ( "" ) )
assert_false ( executable ( test_null_string ( ) ) )
2021-07-03 11:58:12 +02:00
CheckDefExecFailure ( ['echo executable(123)' ], 'E1013:' )
CheckDefExecFailure ( ['echo executable(true)' ], 'E1013:' )
2020-12-09 12:41:50 +01:00
enddef
2021-06-20 14:41:01 +02:00
def Test_execute ( )
var res = execute ( "echo 'hello'" )
assert_equal ( "\nhello" , res )
res = execute ( ["echo 'here'" , "echo 'there'" ])
assert_equal ( "\nhere\nthere" , res )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['execute(123)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
CheckDefFailure ( ['execute([123])' ], 'E1013: Argument 1: type mismatch, expected list<string> but got list<number>' )
2021-06-20 14:41:01 +02:00
CheckDefExecFailure ( ['echo execute(["xx", 123])' ], 'E492' )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['execute("xx", 123)' ], 'E1013: Argument 2: type mismatch, expected string but got number' )
2021-06-20 14:41:01 +02:00
enddef
2020-12-09 12:41:50 +01:00
def Test_exepath ( )
2021-07-03 11:58:12 +02:00
CheckDefExecFailure ( ['echo exepath(true)' ], 'E1013:' )
CheckDefExecFailure ( ['echo exepath(v:null)' ], 'E1013:' )
2021-03-25 22:15:28 +01:00
CheckDefExecFailure ( ['echo exepath("")' ], 'E1175:' )
2020-12-09 12:41:50 +01:00
enddef
2021-07-03 11:58:12 +02:00
def Test_exists ( )
CheckDefFailure ( ['exists(10)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
call assert_equal ( 1 , exists ( '&tabstop' ) )
enddef
2020-10-21 14:25:07 +02:00
def Test_expand ( )
split SomeFile
expand ( '%' , true , true ) - > assert_equal ( ['SomeFile' ])
close
enddef
2021-05-03 21:40:26 +02:00
def Test_expandcmd ( )
$FOO = "blue"
assert_equal ( "blue sky" , expandcmd ( "`=$FOO .. ' sky'`" ) )
assert_equal ( "yes" , expandcmd ( "`={a: 'yes'}['a']`" ) )
enddef
2020-10-31 19:33:38 +01:00
def Test_extend_arg_types ( )
2021-01-31 17:48:30 +01:00
g :number_one = 1
g :string_keep = 'keep'
var lines = < < trim END
assert_equal ( [1 , 2 , 3 ], extend ( [1 , 2 ], [3 ]) )
assert_equal ( [3 , 1 , 2 ], extend ( [1 , 2 ], [3 ], 0 ) )
assert_equal ( [1 , 3 , 2 ], extend ( [1 , 2 ], [3 ], 1 ) )
assert_equal ( [1 , 3 , 2 ], extend ( [1 , 2 ], [3 ], g :number_one ) )
assert_equal ( {a : 1 , b : 2 , c : 3 }, extend ( {a : 1 , b : 2 }, {c : 3 }) )
assert_equal ( {a : 1 , b : 4 }, extend ( {a : 1 , b : 2 }, {b : 4 }) )
assert_equal ( {a : 1 , b : 2 }, extend ( {a : 1 , b : 2 }, {b : 4 }, 'keep' ) )
assert_equal ( {a : 1 , b : 2 }, extend ( {a : 1 , b : 2 }, {b : 4 }, g :string_keep ) )
var res : list < dict < any > >
extend ( res , mapnew ( [1 , 2 ], ( _ , v ) = > ( {}) ) )
assert_equal ( [{}, {}], res )
END
CheckDefAndScriptSuccess ( lines )
2020-10-31 19:33:38 +01:00
2021-05-25 20:14:00 +02:00
CheckDefFailure ( ['extend("a", 1)' ], 'E1013: Argument 1: type mismatch, expected list<any> but got string' )
2020-10-31 19:33:38 +01:00
CheckDefFailure ( ['extend([1, 2], 3)' ], 'E1013: Argument 2: type mismatch, expected list<number> but got number' )
CheckDefFailure ( ['extend([1, 2], ["x"])' ], 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>' )
CheckDefFailure ( ['extend([1, 2], [3], "x")' ], 'E1013: Argument 3: type mismatch, expected number but got string' )
2020-12-02 17:36:54 +01:00
CheckDefFailure ( ['extend({a: 1}, 42)' ], 'E1013: Argument 2: type mismatch, expected dict<number> but got number' )
CheckDefFailure ( ['extend({a: 1}, {b: "x"})' ], 'E1013: Argument 2: type mismatch, expected dict<number> but got dict<string>' )
CheckDefFailure ( ['extend({a: 1}, {b: 2}, 1)' ], 'E1013: Argument 3: type mismatch, expected string but got number' )
2021-01-16 16:07:01 +01:00
CheckDefFailure ( ['extend([1], ["b"])' ], 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>' )
2021-01-21 20:21:29 +01:00
CheckDefExecFailure ( ['extend([1], ["b", 1])' ], 'E1013: Argument 2: type mismatch, expected list<number> but got list<any>' )
2020-10-31 19:33:38 +01:00
enddef
2021-01-12 20:23:40 +01:00
def Test_extendnew ( )
assert_equal ( [1 , 2 , 'a' ], extendnew ( [1 , 2 ], ['a' ]) )
assert_equal ( {one : 1 , two : 'a' }, extendnew ( {one : 1 }, {two : 'a' }) )
CheckDefFailure ( ['extendnew({a: 1}, 42)' ], 'E1013: Argument 2: type mismatch, expected dict<number> but got number' )
CheckDefFailure ( ['extendnew({a: 1}, [42])' ], 'E1013: Argument 2: type mismatch, expected dict<number> but got list<number>' )
CheckDefFailure ( ['extendnew([1, 2], "x")' ], 'E1013: Argument 2: type mismatch, expected list<number> but got string' )
CheckDefFailure ( ['extendnew([1, 2], {x: 1})' ], 'E1013: Argument 2: type mismatch, expected list<number> but got dict<number>' )
enddef
2020-10-21 14:25:07 +02:00
def Test_extend_return_type ( )
var l = extend ( [1 , 2 ], [3 ])
var res = 0
for n in l
res + = n
endfor
res - > assert_equal ( 6 )
enddef
2021-01-02 15:41:03 +01:00
func g :ExtendDict ( d )
call extend ( a :d , #{xx : 'x' })
endfunc
def Test_extend_dict_item_type ( )
var lines = < < trim END
var d : dict < number > = {a : 1 }
extend ( d , {b : 2 })
END
CheckDefAndScriptSuccess ( lines )
lines = < < trim END
var d : dict < number > = {a : 1 }
extend ( d , {b : 'x' })
END
2021-01-31 17:48:30 +01:00
CheckDefAndScriptFailure ( lines , 'E1013: Argument 2: type mismatch, expected dict<number> but got dict<string>' , 2 )
2021-01-02 15:41:03 +01:00
lines = < < trim END
var d : dict < number > = {a : 1 }
g :ExtendDict ( d )
END
CheckDefExecFailure ( lines , 'E1012: Type mismatch; expected number but got string' , 0 )
CheckScriptFailure ( ['vim9script' ] + lines , 'E1012:' , 1 )
enddef
func g :ExtendList ( l )
call extend ( a :l , ['x' ])
endfunc
def Test_extend_list_item_type ( )
var lines = < < trim END
var l : list < number > = [1 ]
extend ( l , [2 ])
END
CheckDefAndScriptSuccess ( lines )
lines = < < trim END
var l : list < number > = [1 ]
extend ( l , ['x' ])
END
2021-01-31 17:48:30 +01:00
CheckDefAndScriptFailure ( lines , 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>' , 2 )
2021-01-02 15:41:03 +01:00
lines = < < trim END
var l : list < number > = [1 ]
g :ExtendList ( l )
END
CheckDefExecFailure ( lines , 'E1012: Type mismatch; expected number but got string' , 0 )
CheckScriptFailure ( ['vim9script' ] + lines , 'E1012:' , 1 )
enddef
2020-10-21 14:25:07 +02:00
2021-03-13 21:24:56 +01:00
def Test_extend_with_error_function ( )
var lines = < < trim END
vim9script
def F ( )
{
var m = 10
}
echo m
enddef
def Test ( )
var d : dict < any > = {}
d - > extend ( {A : 10 , Func : function ( 'F' , []) })
enddef
Test ( )
END
CheckScriptFailure ( lines , 'E1001: Variable not found: m' )
enddef
2021-07-03 11:58:12 +02:00
def Test_feedkeys ( )
CheckDefFailure ( ['feedkeys(10)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
CheckDefFailure ( ['feedkeys("x", 10)' ], 'E1013: Argument 2: type mismatch, expected string but got number' )
CheckDefFailure ( ['feedkeys([], {})' ], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>' )
g :TestVar = 1
feedkeys ( ":g:TestVar = 789\n" , 'xt' )
assert_equal ( 789 , g :TestVar )
unlet g :TestVar
enddef
2021-07-10 13:15:41 +02:00
def Test_indent ( )
CheckDefAndScriptFailure2 ( ['indent([1])' ], 'E1013: Argument 1: type mismatch, expected string but got list<number>' , 'E745: Using a List as a Number' )
CheckDefAndScriptFailure2 ( ['indent(true)' ], 'E1013: Argument 1: type mismatch, expected string but got bool' , 'E1138: Using a Bool as a Number' )
assert_equal ( 0 , indent ( 1 ) )
enddef
def Test_input ( )
CheckDefFailure ( ['input(5)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
CheckDefAndScriptFailure2 ( ['input(["a"])' ], 'E1013: Argument 1: type mismatch, expected string but got list<string>' , 'E730: Using a List as a String' )
CheckDefFailure ( ['input("p", 10)' ], 'E1013: Argument 2: type mismatch, expected string but got number' )
CheckDefAndScriptFailure2 ( ['input("p", "q", 20)' ], 'E1013: Argument 3: type mismatch, expected string but got number' , 'E180: Invalid complete value' )
enddef
def Test_inputdialog ( )
CheckDefFailure ( ['inputdialog(5)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
CheckDefAndScriptFailure2 ( ['inputdialog(["a"])' ], 'E1013: Argument 1: type mismatch, expected string but got list<string>' , 'E730: Using a List as a String' )
CheckDefFailure ( ['inputdialog("p", 10)' ], 'E1013: Argument 2: type mismatch, expected string but got number' )
CheckDefFailure ( ['inputdialog("p", "q", 20)' ], 'E1013: Argument 3: type mismatch, expected string but got number' )
enddef
2021-01-12 21:22:31 +01:00
def Test_job_info_return_type ( )
if has ( 'job' )
job_start ( &shell )
var jobs = job_info ( )
2021-01-12 21:49:00 +01:00
assert_equal ( 'list<job>' , typename ( jobs ) )
assert_equal ( 'dict<any>' , typename ( job_info ( jobs [0 ]) ) )
2021-01-12 21:22:31 +01:00
job_stop ( jobs [0 ])
endif
enddef
2020-12-09 12:41:50 +01:00
def Test_filereadable ( )
2020-12-12 18:58:40 +01:00
assert_false ( filereadable ( "" ) )
assert_false ( filereadable ( test_null_string ( ) ) )
2021-07-03 11:58:12 +02:00
CheckDefExecFailure ( ['echo filereadable(123)' ], 'E1013:' )
CheckDefExecFailure ( ['echo filereadable(true)' ], 'E1013:' )
2020-12-09 12:41:50 +01:00
enddef
def Test_filewritable ( )
2020-12-12 18:58:40 +01:00
assert_false ( filewritable ( "" ) )
assert_false ( filewritable ( test_null_string ( ) ) )
2021-07-03 11:58:12 +02:00
CheckDefExecFailure ( ['echo filewritable(123)' ], 'E1013:' )
CheckDefExecFailure ( ['echo filewritable(true)' ], 'E1013:' )
2020-12-09 12:41:50 +01:00
enddef
def Test_finddir ( )
2021-07-10 13:15:41 +02:00
CheckDefAndScriptFailure2 ( ['finddir(true)' ], 'E1013: Argument 1: type mismatch, expected string but got bool' , 'E1174: String required for argument 1' )
CheckDefAndScriptFailure2 ( ['finddir(v:null)' ], 'E1013: Argument 1: type mismatch, expected string but got special' , 'E1174: String required for argument 1' )
2021-03-25 22:15:28 +01:00
CheckDefExecFailure ( ['echo finddir("")' ], 'E1175:' )
2021-07-10 13:15:41 +02:00
CheckDefAndScriptFailure2 ( ['finddir("a", [])' ], 'E1013: Argument 2: type mismatch, expected string but got list<unknown>' , 'E730: Using a List as a String' )
CheckDefAndScriptFailure2 ( ['finddir("a", "b", "c")' ], 'E1013: Argument 3: type mismatch, expected number but got string' , 'E1030: Using a String as a Number' )
2020-12-09 12:41:50 +01:00
enddef
def Test_findfile ( )
2021-07-10 13:15:41 +02:00
CheckDefExecFailure ( ['findfile(true)' ], 'E1013: Argument 1: type mismatch, expected string but got bool' )
CheckDefExecFailure ( ['findfile(v:null)' ], 'E1013: Argument 1: type mismatch, expected string but got special' )
CheckDefExecFailure ( ['findfile("")' ], 'E1175:' )
CheckDefAndScriptFailure2 ( ['findfile("a", [])' ], 'E1013: Argument 2: type mismatch, expected string but got list<unknown>' , 'E730: Using a List as a String' )
CheckDefAndScriptFailure2 ( ['findfile("a", "b", "c")' ], 'E1013: Argument 3: type mismatch, expected number but got string' , 'E1030: Using a String as a Number' )
2020-12-09 12:41:50 +01:00
enddef
2021-02-01 20:14:51 +01:00
def Test_flattennew ( )
var lines = < < trim END
var l = [1 , [2 , [3 , 4 ]], 5 ]
call assert_equal ( [1 , 2 , 3 , 4 , 5 ], flattennew ( l ) )
call assert_equal ( [1 , [2 , [3 , 4 ]], 5 ], l )
call assert_equal ( [1 , 2 , [3 , 4 ], 5 ], flattennew ( l , 1 ) )
call assert_equal ( [1 , [2 , [3 , 4 ]], 5 ], l )
END
CheckDefAndScriptSuccess ( lines )
lines = < < trim END
echo flatten ( [1 , 2 , 3 ])
END
CheckDefAndScriptFailure ( lines , 'E1158:' )
enddef
2021-06-22 19:52:27 +02:00
" Test for float functions argument type
def Test_float_funcs_args ( )
CheckFeature float
# acos ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['acos("a")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
# asin ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['asin("a")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
# atan ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['atan("a")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
# atan2 ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['atan2("a", 1.1)' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
CheckDefFailure ( ['atan2(1.2, "a")' ], 'E1013: Argument 2: type mismatch, expected number but got string' )
CheckDefFailure ( ['atan2(1.2)' ], 'E119:' )
2021-06-22 19:52:27 +02:00
# ceil ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['ceil("a")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
# cos ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['cos("a")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
# cosh ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['cosh("a")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
# exp ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['exp("a")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
# float2nr ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['float2nr("a")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
# floor ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['floor("a")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
# fmod ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['fmod(1.1, "a")' ], 'E1013: Argument 2: type mismatch, expected number but got string' )
CheckDefFailure ( ['fmod("a", 1.1)' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
CheckDefFailure ( ['fmod(1.1)' ], 'E119:' )
2021-06-22 19:52:27 +02:00
# isinf ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['isinf("a")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
# isnan ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['isnan("a")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
# log ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['log("a")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
# log10 ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['log10("a")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
# pow ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['pow("a", 1.1)' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
CheckDefFailure ( ['pow(1.1, "a")' ], 'E1013: Argument 2: type mismatch, expected number but got string' )
CheckDefFailure ( ['pow(1.1)' ], 'E119:' )
2021-06-22 19:52:27 +02:00
# round ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['round("a")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
# sin ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['sin("a")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
# sinh ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['sinh("a")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
# sqrt ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['sqrt("a")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
# tan ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['tan("a")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
# tanh ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['tanh("a")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
# trunc ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['trunc("a")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
enddef
2021-07-03 11:58:12 +02:00
def Test_fnameescape ( )
CheckDefFailure ( ['fnameescape(10)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
assert_equal ( '\+a\%b\|' , fnameescape ( '+a%b|' ) )
enddef
2020-12-09 12:41:50 +01:00
def Test_fnamemodify ( )
2020-12-12 18:58:40 +01:00
CheckDefSuccess ( ['echo fnamemodify(test_null_string(), ":p")' ])
CheckDefSuccess ( ['echo fnamemodify("", ":p")' ])
CheckDefSuccess ( ['echo fnamemodify("file", test_null_string())' ])
CheckDefSuccess ( ['echo fnamemodify("file", "")' ])
2021-07-03 11:58:12 +02:00
CheckDefExecFailure ( ['echo fnamemodify(true, ":p")' ], 'E1013: Argument 1: type mismatch, expected string but got bool' )
CheckDefExecFailure ( ['echo fnamemodify(v:null, ":p")' ], 'E1013: Argument 1: type mismatch, expected string but got special' )
CheckDefExecFailure ( ['echo fnamemodify("file", true)' ], 'E1013: Argument 2: type mismatch, expected string but got bool' )
2020-12-09 12:41:50 +01:00
enddef
2021-02-03 17:41:24 +01:00
def Wrong_dict_key_type ( items : list < number > ) : list < number >
return filter ( items , ( _ , val ) = > get ( {[val ]: 1 }, 'x' ) )
enddef
2020-10-21 14:25:07 +02:00
def Test_filter_wrong_dict_key_type ( )
2021-02-03 17:41:24 +01:00
assert_fails ( 'Wrong_dict_key_type([1, v:null, 3])' , 'E1013:' )
2020-10-21 14:25:07 +02:00
enddef
def Test_filter_return_type ( )
2021-04-10 20:10:26 +02:00
var l = filter ( [1 , 2 , 3 ], ( _ , _ ) = > 1 )
2020-10-21 14:25:07 +02:00
var res = 0
for n in l
res + = n
endfor
res - > assert_equal ( 6 )
enddef
2020-12-25 20:24:51 +01:00
def Test_filter_missing_argument ( )
var dict = {aa : [1 ], ab : [2 ], ac : [3 ], de : [4 ]}
2021-04-10 20:10:26 +02:00
var res = dict - > filter ( ( k , _ ) = > k = ~ 'a' && k ! ~ 'b' )
2020-12-25 20:24:51 +01:00
res - > assert_equal ( {aa : [1 ], ac : [3 ]})
enddef
2020-10-21 14:25:07 +02:00
2021-07-03 11:58:12 +02:00
def Test_foldclosed ( )
CheckDefFailure ( ['foldclosed(function("min"))' ], 'E1013: Argument 1: type mismatch, expected string but got func(...): any' )
assert_equal ( -1 , foldclosed ( 1 ) )
assert_equal ( -1 , foldclosed ( '$' ) )
enddef
def Test_foldclosedend ( )
CheckDefFailure ( ['foldclosedend(true)' ], 'E1013: Argument 1: type mismatch, expected string but got bool' )
assert_equal ( -1 , foldclosedend ( 1 ) )
assert_equal ( -1 , foldclosedend ( 'w0' ) )
enddef
def Test_foldlevel ( )
CheckDefFailure ( ['foldlevel(0z10)' ], 'E1013: Argument 1: type mismatch, expected string but got blob' )
assert_equal ( 0 , foldlevel ( 1 ) )
assert_equal ( 0 , foldlevel ( '.' ) )
enddef
def Test_foldtextresult ( )
CheckDefFailure ( ['foldtextresult(1.1)' ], 'E1013: Argument 1: type mismatch, expected string but got float' )
assert_equal ( '' , foldtextresult ( 1 ) )
assert_equal ( '' , foldtextresult ( '.' ) )
enddef
2021-05-26 21:10:11 +02:00
def Test_fullcommand ( )
assert_equal ( 'next' , fullcommand ( 'n' ) )
assert_equal ( 'noremap' , fullcommand ( 'no' ) )
assert_equal ( 'noremap' , fullcommand ( 'nor' ) )
assert_equal ( 'normal' , fullcommand ( 'norm' ) )
assert_equal ( '' , fullcommand ( 'k' ) )
assert_equal ( 'keepmarks' , fullcommand ( 'ke' ) )
assert_equal ( 'keepmarks' , fullcommand ( 'kee' ) )
assert_equal ( 'keepmarks' , fullcommand ( 'keep' ) )
assert_equal ( 'keepjumps' , fullcommand ( 'keepj' ) )
assert_equal ( 'dlist' , fullcommand ( 'dl' ) )
assert_equal ( '' , fullcommand ( 'dp' ) )
assert_equal ( 'delete' , fullcommand ( 'del' ) )
assert_equal ( '' , fullcommand ( 'dell' ) )
assert_equal ( '' , fullcommand ( 'delp' ) )
assert_equal ( 'srewind' , fullcommand ( 'sre' ) )
assert_equal ( 'scriptnames' , fullcommand ( 'scr' ) )
assert_equal ( '' , fullcommand ( 'scg' ) )
enddef
2020-10-21 14:25:07 +02:00
def Test_garbagecollect ( )
garbagecollect ( true )
enddef
def Test_getbufinfo ( )
var bufinfo = getbufinfo ( bufnr ( ) )
getbufinfo ( '%' ) - > assert_equal ( bufinfo )
edit Xtestfile1
hide edit Xtestfile2
hide enew
2020-12-02 17:36:54 +01:00
getbufinfo ( {bufloaded : true , buflisted : true , bufmodified : false })
2020-10-21 14:25:07 +02:00
- > len ( ) - > assert_equal ( 3 )
bwipe Xtestfile1 Xtestfile2
enddef
def Test_getbufline ( )
e SomeFile
var buf = bufnr ( )
e #
var lines = ['aaa' , 'bbb' , 'ccc' ]
setbufline ( buf , 1 , lines )
getbufline ( '#' , 1 , '$' ) - > assert_equal ( lines )
2020-10-22 18:23:38 +02:00
getbufline ( -1 , '$' , '$' ) - > assert_equal ( [])
getbufline ( -1 , 1 , '$' ) - > assert_equal ( [])
2020-10-21 14:25:07 +02:00
bwipe !
enddef
def Test_getchangelist ( )
new
setline ( 1 , 'some text' )
var changelist = bufnr ( ) - > getchangelist ( )
getchangelist ( '%' ) - > assert_equal ( changelist )
bwipe !
enddef
def Test_getchar ( )
while getchar ( 0 )
endwhile
getchar ( true ) - > assert_equal ( 0 )
enddef
2021-03-10 16:08:26 +01:00
def Test_getenv ( )
if getenv ( 'does-not_exist' ) = = ''
assert_report ( 'getenv() should return null' )
endif
if getenv ( 'does-not_exist' ) = = null
else
assert_report ( 'getenv() should return null' )
endif
$SOMEENVVAR = 'some'
assert_equal ( 'some' , getenv ( 'SOMEENVVAR' ) )
unlet $SOMEENVVAR
enddef
2020-10-21 14:25:07 +02:00
def Test_getcompletion ( )
set wildignore = *.vim , *~
var l = getcompletion ( 'run' , 'file' , true )
l - > assert_equal ( [])
set wildignore &
enddef
2021-06-22 19:52:27 +02:00
def Test_getcurpos ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['getcursorcharpos("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
enddef
def Test_getcursorcharpos ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['getcursorcharpos("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
enddef
def Test_getcwd ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['getcwd("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
CheckDefFailure ( ['getcwd("x", 1)' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
CheckDefFailure ( ['getcwd(1, "x")' ], 'E1013: Argument 2: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
enddef
2020-10-21 14:25:07 +02:00
def Test_getloclist_return_type ( )
var l = getloclist ( 1 )
l - > assert_equal ( [])
2020-12-02 17:36:54 +01:00
var d = getloclist ( 1 , {items : 0 })
d - > assert_equal ( {items : []})
2020-10-21 14:25:07 +02:00
enddef
2021-07-03 11:58:12 +02:00
def Test_getfontname ( )
CheckDefFailure ( ['getfontname(10)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
enddef
2020-12-09 12:41:50 +01:00
def Test_getfperm ( )
2020-12-12 18:58:40 +01:00
assert_equal ( '' , getfperm ( "" ) )
assert_equal ( '' , getfperm ( test_null_string ( ) ) )
2021-07-03 11:58:12 +02:00
CheckDefExecFailure ( ['echo getfperm(true)' ], 'E1013:' )
CheckDefExecFailure ( ['echo getfperm(v:null)' ], 'E1013:' )
2020-12-09 12:41:50 +01:00
enddef
def Test_getfsize ( )
2020-12-12 18:58:40 +01:00
assert_equal ( -1 , getfsize ( "" ) )
assert_equal ( -1 , getfsize ( test_null_string ( ) ) )
2021-07-03 11:58:12 +02:00
CheckDefExecFailure ( ['echo getfsize(true)' ], 'E1013:' )
CheckDefExecFailure ( ['echo getfsize(v:null)' ], 'E1013:' )
2020-12-09 12:41:50 +01:00
enddef
def Test_getftime ( )
2020-12-12 18:58:40 +01:00
assert_equal ( -1 , getftime ( "" ) )
assert_equal ( -1 , getftime ( test_null_string ( ) ) )
2021-07-03 11:58:12 +02:00
CheckDefExecFailure ( ['echo getftime(true)' ], 'E1013:' )
CheckDefExecFailure ( ['echo getftime(v:null)' ], 'E1013:' )
2020-12-09 12:41:50 +01:00
enddef
def Test_getftype ( )
2020-12-12 18:58:40 +01:00
assert_equal ( '' , getftype ( "" ) )
assert_equal ( '' , getftype ( test_null_string ( ) ) )
2021-07-03 11:58:12 +02:00
CheckDefExecFailure ( ['echo getftype(true)' ], 'E1013:' )
CheckDefExecFailure ( ['echo getftype(v:null)' ], 'E1013:' )
2020-12-09 12:41:50 +01:00
enddef
2021-06-22 19:52:27 +02:00
def Test_getjumplist ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['getjumplist("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
CheckDefFailure ( ['getjumplist("x", 1)' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
CheckDefFailure ( ['getjumplist(1, "x")' ], 'E1013: Argument 2: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
enddef
2021-07-11 16:01:58 +02:00
def Test_getline ( )
var lines = < < trim END
new
setline ( 1 , ['hello' , 'there' , 'again' ])
assert_equal ( 'hello' , getline ( 1 ) )
assert_equal ( 'hello' , getline ( '.' ) )
normal 2 Gvjv
assert_equal ( 'there' , getline ( "'<" ) )
assert_equal ( 'again' , getline ( "'>" ) )
END
CheckDefAndScriptSuccess ( lines )
lines = < < trim END
echo getline ( '1' )
END
CheckDefExecAndScriptFailure ( lines , 'E1209:' )
enddef
2021-07-03 11:58:12 +02:00
def Test_getmarklist ( )
CheckDefFailure ( ['getmarklist([])' ], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>' )
assert_equal ( [], getmarklist ( 10000 ) )
assert_fails ( 'getmarklist("a%b@#")' , 'E94:' )
enddef
2021-06-22 19:52:27 +02:00
def Test_getmatches ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['getmatches("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
enddef
2021-07-03 11:58:12 +02:00
def Test_getpos ( )
CheckDefFailure ( ['getpos(10)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
assert_equal ( [0 , 1 , 1 , 0 ], getpos ( '.' ) )
2021-07-11 16:01:58 +02:00
CheckDefExecFailure ( ['getpos("a")' ], 'E1209:' )
2021-07-03 11:58:12 +02:00
enddef
def Test_getqflist ( )
CheckDefFailure ( ['getqflist([])' ], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>' )
call assert_equal ( {}, getqflist ( {}) )
enddef
2020-10-21 14:25:07 +02:00
def Test_getqflist_return_type ( )
var l = getqflist ( )
l - > assert_equal ( [])
2020-12-02 17:36:54 +01:00
var d = getqflist ( {items : 0 })
d - > assert_equal ( {items : []})
2020-10-21 14:25:07 +02:00
enddef
def Test_getreg ( )
var lines = ['aaa' , 'bbb' , 'ccc' ]
setreg ( 'a' , lines )
getreg ( 'a' , true , true ) - > assert_equal ( lines )
2021-02-10 22:23:41 +01:00
assert_fails ( 'getreg("ab")' , 'E1162:' )
2020-10-21 14:25:07 +02:00
enddef
def Test_getreg_return_type ( )
var s1 : string = getreg ( '"' )
var s2 : string = getreg ( '"' , 1 )
var s3 : list < string > = getreg ( '"' , 1 , 1 )
enddef
2021-02-10 22:23:41 +01:00
def Test_getreginfo ( )
var text = 'abc'
setreg ( 'a' , text )
getreginfo ( 'a' ) - > assert_equal ( {regcontents : [text ], regtype : 'v' , isunnamed : false })
assert_fails ( 'getreginfo("ab")' , 'E1162:' )
enddef
def Test_getregtype ( )
var lines = ['aaa' , 'bbb' , 'ccc' ]
setreg ( 'a' , lines )
getregtype ( 'a' ) - > assert_equal ( 'V' )
assert_fails ( 'getregtype("ab")' , 'E1162:' )
enddef
2021-06-22 19:52:27 +02:00
def Test_gettabinfo ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['gettabinfo("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
enddef
def Test_gettagstack ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['gettagstack("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
enddef
2021-07-03 11:58:12 +02:00
def Test_gettext ( )
CheckDefFailure ( ['gettext(10)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
assert_equal ( 'abc' , gettext ( "abc" ) )
enddef
2021-06-22 19:52:27 +02:00
def Test_getwininfo ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['getwininfo("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
enddef
def Test_getwinpos ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['getwinpos("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
enddef
2020-10-21 14:25:07 +02:00
def Test_glob ( )
glob ( 'runtest.vim' , true , true , true ) - > assert_equal ( ['runtest.vim' ])
enddef
2021-07-03 11:58:12 +02:00
def Test_glob2regpat ( )
CheckDefFailure ( ['glob2regpat(null)' ], 'E1013: Argument 1: type mismatch, expected string but got special' )
assert_equal ( '^$' , glob2regpat ( '' ) )
enddef
2020-10-21 14:25:07 +02:00
def Test_globpath ( )
globpath ( '.' , 'runtest.vim' , true , true , true ) - > assert_equal ( ['./runtest.vim' ])
enddef
def Test_has ( )
has ( 'eval' , true ) - > assert_equal ( 1 )
enddef
2021-07-10 13:15:41 +02:00
def Test_has_key ( )
2021-07-11 14:55:49 +02:00
var d = {123 : 'xx' }
assert_true ( has_key ( d , '123' ) )
assert_true ( has_key ( d , 123 ) )
assert_false ( has_key ( d , 'x' ) )
assert_false ( has_key ( d , 99 ) )
2021-07-10 13:15:41 +02:00
CheckDefAndScriptFailure2 ( ['has_key([1, 2], "k")' ], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<number>' , 'E715: Dictionary required' )
CheckDefAndScriptFailure2 ( ['has_key({"a": 10}, ["a"])' ], 'E1013: Argument 2: type mismatch, expected string but got list<string>' , 'E730: Using a List as a String' )
enddef
2021-06-22 19:52:27 +02:00
def Test_haslocaldir ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['haslocaldir("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
CheckDefFailure ( ['haslocaldir("x", 1)' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
CheckDefFailure ( ['haslocaldir(1, "x")' ], 'E1013: Argument 2: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
enddef
2020-10-21 14:25:07 +02:00
def Test_hasmapto ( )
hasmapto ( 'foobar' , 'i' , true ) - > assert_equal ( 0 )
iabbrev foo foobar
hasmapto ( 'foobar' , 'i' , true ) - > assert_equal ( 1 )
iunabbrev foo
enddef
2021-07-03 11:58:12 +02:00
def Test_histadd ( )
CheckDefFailure ( ['histadd(1, "x")' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
CheckDefFailure ( ['histadd(":", 10)' ], 'E1013: Argument 2: type mismatch, expected string but got number' )
histadd ( "search" , 'skyblue' )
assert_equal ( 'skyblue' , histget ( '/' , -1 ) )
enddef
def Test_histnr ( )
CheckDefFailure ( ['histnr(10)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
assert_equal ( -1 , histnr ( 'abc' ) )
enddef
def Test_hlID ( )
CheckDefFailure ( ['hlID(10)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
assert_equal ( 0 , hlID ( 'NonExistingHighlight' ) )
enddef
def Test_hlexists ( )
CheckDefFailure ( ['hlexists([])' ], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>' )
assert_equal ( 0 , hlexists ( 'NonExistingHighlight' ) )
enddef
def Test_iconv ( )
CheckDefFailure ( ['iconv(1, "from", "to")' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
CheckDefFailure ( ['iconv("abc", 10, "to")' ], 'E1013: Argument 2: type mismatch, expected string but got number' )
CheckDefFailure ( ['iconv("abc", "from", 20)' ], 'E1013: Argument 3: type mismatch, expected string but got number' )
assert_equal ( 'abc' , iconv ( 'abc' , 'fromenc' , 'toenc' ) )
enddef
2020-10-21 14:25:07 +02:00
def Test_index ( )
index ( ['a' , 'b' , 'a' , 'B' ], 'b' , 2 , true ) - > assert_equal ( 3 )
enddef
2021-07-03 11:58:12 +02:00
def Test_inputlist ( )
CheckDefFailure ( ['inputlist(10)' ], 'E1013: Argument 1: type mismatch, expected list<string> but got number' )
CheckDefFailure ( ['inputlist("abc")' ], 'E1013: Argument 1: type mismatch, expected list<string> but got string' )
CheckDefFailure ( ['inputlist([1, 2, 3])' ], 'E1013: Argument 1: type mismatch, expected list<string> but got list<number>' )
feedkeys ( "2\<CR>" , 't' )
var r : number = inputlist ( ['a' , 'b' , 'c' ])
assert_equal ( 2 , r )
enddef
def Test_inputsecret ( )
CheckDefFailure ( ['inputsecret(10)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
CheckDefFailure ( ['inputsecret("Pass:", 20)' ], 'E1013: Argument 2: type mismatch, expected string but got number' )
feedkeys ( "\<CR>" , 't' )
var ans : string = inputsecret ( 'Pass:' , '123' )
assert_equal ( '123' , ans )
enddef
2020-11-16 20:08:35 +01:00
let s :number_one = 1
let s :number_two = 2
let s :string_keep = 'keep'
2020-10-21 16:42:22 +02:00
def Test_insert ( )
2020-10-21 14:25:07 +02:00
var l = insert ( [2 , 1 ], 3 )
var res = 0
for n in l
res + = n
endfor
res - > assert_equal ( 6 )
2020-10-21 16:42:22 +02:00
2021-05-25 20:14:00 +02:00
var m : any = []
insert ( m , 4 )
call assert_equal ( [4 ], m )
extend ( m , [6 ], 0 )
call assert_equal ( [6 , 4 ], m )
2021-04-18 15:48:04 +02:00
var lines = < < trim END
insert ( test_null_list ( ) , 123 )
END
CheckDefExecAndScriptFailure ( lines , 'E1130:' , 1 )
lines = < < trim END
insert ( test_null_blob ( ) , 123 )
END
CheckDefExecAndScriptFailure ( lines , 'E1131:' , 1 )
2020-10-21 16:42:22 +02:00
assert_equal ( [1 , 2 , 3 ], insert ( [2 , 3 ], 1 ) )
2020-11-16 20:08:35 +01:00
assert_equal ( [1 , 2 , 3 ], insert ( [2 , 3 ], s :number_one ) )
2020-10-21 16:42:22 +02:00
assert_equal ( [1 , 2 , 3 ], insert ( [1 , 2 ], 3 , 2 ) )
2020-11-16 20:08:35 +01:00
assert_equal ( [1 , 2 , 3 ], insert ( [1 , 2 ], 3 , s :number_two ) )
2020-10-21 16:42:22 +02:00
assert_equal ( ['a' , 'b' , 'c' ], insert ( ['b' , 'c' ], 'a' ) )
assert_equal ( 0 z1234 , insert ( 0 z34 , 0 x12 ) )
2020-11-16 20:08:35 +01:00
2021-05-25 20:14:00 +02:00
CheckDefFailure ( ['insert("a", 1)' ], 'E1013: Argument 1: type mismatch, expected list<any> but got string' , 1 )
2020-10-21 16:42:22 +02:00
CheckDefFailure ( ['insert([2, 3], "a")' ], 'E1013: Argument 2: type mismatch, expected number but got string' , 1 )
CheckDefFailure ( ['insert([2, 3], 1, "x")' ], 'E1013: Argument 3: type mismatch, expected number but got string' , 1 )
2020-10-21 14:25:07 +02:00
enddef
2021-06-22 19:52:27 +02:00
def Test_invert ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['invert("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
enddef
2021-07-03 11:58:12 +02:00
def Test_isdirectory ( )
CheckDefFailure ( ['isdirectory(1.1)' ], 'E1013: Argument 1: type mismatch, expected string but got float' )
assert_false ( isdirectory ( 'NonExistingDir' ) )
enddef
def Test_items ( )
CheckDefFailure ( ['[]->items()' ], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>' )
assert_equal ( [['a' , 10 ], ['b' , 20 ]], {'a' : 10 , 'b' : 20 }- > items ( ) )
assert_equal ( [], {}- > items ( ) )
enddef
def Test_js_decode ( )
CheckDefFailure ( ['js_decode(10)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
assert_equal ( [1 , 2 ], js_decode ( '[1,2]' ) )
enddef
def Test_json_decode ( )
CheckDefFailure ( ['json_decode(true)' ], 'E1013: Argument 1: type mismatch, expected string but got bool' )
assert_equal ( 1 .0 , json_decode ( '1.0' ) )
enddef
def Test_keys ( )
CheckDefFailure ( ['keys([])' ], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>' )
assert_equal ( ['a' ], {a : 'v' }- > keys ( ) )
assert_equal ( [], {}- > keys ( ) )
enddef
2020-10-21 14:25:07 +02:00
def Test_keys_return_type ( )
2020-12-02 17:36:54 +01:00
const var : list < string > = {a : 1 , b : 2 }- > keys ( )
2020-10-21 14:25:07 +02:00
var - > assert_equal ( ['a' , 'b' ])
enddef
2021-03-27 21:23:30 +01:00
def Test_line ( )
2021-07-03 11:58:12 +02:00
assert_fails ( 'line(true)' , 'E1174:' )
enddef
def Test_line2byte ( )
CheckDefFailure ( ['line2byte(true)' ], 'E1013: Argument 1: type mismatch, expected string but got bool' )
assert_equal ( -1 , line2byte ( 1 ) )
assert_equal ( -1 , line2byte ( 10000 ) )
enddef
def Test_lispindent ( )
CheckDefFailure ( ['lispindent({})' ], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>' )
assert_equal ( 0 , lispindent ( 1 ) )
2021-03-27 21:23:30 +01:00
enddef
2020-10-21 14:25:07 +02:00
def Test_list2str_str2list_utf8 ( )
var s = "\u3042\u3044"
var l = [0 x3042 , 0 x3044 ]
str2list ( s , true ) - > assert_equal ( l )
list2str ( l , true ) - > assert_equal ( s )
enddef
def SID ( ) : number
return expand ( '<SID>' )
- > matchstr ( '<SNR>\zs\d\+\ze_$' )
- > str2nr ( )
enddef
2021-07-10 13:15:41 +02:00
def Test_listener_flush ( )
CheckDefAndScriptFailure2 ( ['listener_flush([1])' ], 'E1013: Argument 1: type mismatch, expected string but got list<number>' , 'E730: Using a List as a String' )
enddef
2021-06-22 19:52:27 +02:00
def Test_listener_remove ( )
2021-07-10 13:15:41 +02:00
CheckDefAndScriptFailure2 ( ['listener_remove("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' , 'E1030: Using a String as a Number' )
2021-06-22 19:52:27 +02:00
enddef
2021-01-16 19:01:53 +01:00
def Test_map_function_arg ( )
var lines = < < trim END
def MapOne ( i : number , v : string ) : string
return i .. ':' .. v
enddef
var l = ['a' , 'b' , 'c' ]
map ( l , MapOne )
assert_equal ( ['0:a' , '1:b' , '2:c' ], l )
END
CheckDefAndScriptSuccess ( lines )
2021-06-05 18:15:09 +02:00
lines = < < trim END
range ( 3 ) - > map ( ( a , b , c ) = > a + b + c )
END
CheckDefExecAndScriptFailure ( lines , 'E1190: One argument too few' )
lines = < < trim END
range ( 3 ) - > map ( ( a , b , c , d ) = > a + b + c + d )
END
CheckDefExecAndScriptFailure ( lines , 'E1190: 2 arguments too few' )
2021-01-16 19:01:53 +01:00
enddef
def Test_map_item_type ( )
var lines = < < trim END
var l = ['a' , 'b' , 'c' ]
map ( l , ( k , v ) = > k .. '/' .. v )
assert_equal ( ['0/a' , '1/b' , '2/c' ], l )
END
CheckDefAndScriptSuccess ( lines )
lines = < < trim END
var l : list < number > = [0 ]
echo map ( l , ( _ , v ) = > [])
END
CheckDefExecAndScriptFailure ( lines , 'E1012: Type mismatch; expected number but got list<unknown>' , 2 )
lines = < < trim END
var l : list < number > = range ( 2 )
echo map ( l , ( _ , v ) = > [])
END
CheckDefExecAndScriptFailure ( lines , 'E1012: Type mismatch; expected number but got list<unknown>' , 2 )
lines = < < trim END
var d : dict < number > = {key : 0 }
echo map ( d , ( _ , v ) = > [])
END
CheckDefExecAndScriptFailure ( lines , 'E1012: Type mismatch; expected number but got list<unknown>' , 2 )
enddef
2020-10-21 14:25:07 +02:00
def Test_maparg ( )
var lnum = str2nr ( expand ( '<sflnum>' ) )
map foo bar
2020-12-02 17:36:54 +01:00
maparg ( 'foo' , '' , false , true ) - > assert_equal ( {
2020-10-21 14:25:07 +02:00
lnum : lnum + 1 ,
script : 0 ,
mode : ' ' ,
silent : 0 ,
noremap : 0 ,
lhs : 'foo' ,
lhsraw : 'foo' ,
nowait : 0 ,
expr : 0 ,
sid : SID ( ) ,
rhs : 'bar' ,
buffer : 0 })
unmap foo
enddef
def Test_mapcheck ( )
iabbrev foo foobar
mapcheck ( 'foo' , 'i' , true ) - > assert_equal ( 'foobar' )
iunabbrev foo
enddef
def Test_maparg_mapset ( )
nnoremap < F3 > :echo "hit F3" < CR >
var mapsave = maparg ( '<F3>' , 'n' , false , true )
mapset ( 'n' , false , mapsave )
nunmap < F3 >
enddef
2021-02-21 16:20:18 +01:00
def Test_map_failure ( )
CheckFeature job
var lines = < < trim END
vim9script
writefile ( [], 'Xtmpfile' )
silent e Xtmpfile
var d = {[bufnr ( '%' ) ]: {a : 0 }}
au BufReadPost * Func ( )
def Func ( )
if d - > has_key ( '' )
endif
eval d [expand ( '<abuf>' ) ]- > mapnew ( ( _ , v : dict < job > ) = > 0 )
enddef
e
END
CheckScriptFailure ( lines , 'E1013:' )
au ! BufReadPost
delete ( 'Xtmpfile' )
enddef
2021-06-22 19:52:27 +02:00
def Test_matcharg ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['matcharg("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
enddef
def Test_matchdelete ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['matchdelete("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
CheckDefFailure ( ['matchdelete("x", 1)' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
CheckDefFailure ( ['matchdelete(1, "x")' ], 'E1013: Argument 2: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
enddef
2021-01-22 22:31:10 +01:00
def Test_max ( )
g :flag = true
var l1 : list < number > = g :flag
? [1 , max ( [2 , 3 ]) ]
: [4 , 5 ]
assert_equal ( [1 , 3 ], l1 )
g :flag = false
var l2 : list < number > = g :flag
? [1 , max ( [2 , 3 ]) ]
: [4 , 5 ]
assert_equal ( [4 , 5 ], l2 )
enddef
2021-07-03 11:58:12 +02:00
def Test_menu_info ( )
CheckDefFailure ( ['menu_info(10)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
CheckDefFailure ( ['menu_info(10, "n")' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
CheckDefFailure ( ['menu_info("File", 10)' ], 'E1013: Argument 2: type mismatch, expected string but got number' )
assert_equal ( {}, menu_info ( 'aMenu' ) )
enddef
2021-01-22 22:31:10 +01:00
def Test_min ( )
g :flag = true
var l1 : list < number > = g :flag
? [1 , min ( [2 , 3 ]) ]
: [4 , 5 ]
assert_equal ( [1 , 2 ], l1 )
g :flag = false
var l2 : list < number > = g :flag
? [1 , min ( [2 , 3 ]) ]
: [4 , 5 ]
assert_equal ( [4 , 5 ], l2 )
enddef
2021-07-10 13:15:41 +02:00
def Test_mkdir ( )
CheckDefAndScriptFailure2 ( ['mkdir(["a"])' ], 'E1013: Argument 1: type mismatch, expected string but got list<string>' , 'E730: Using a List as a String' )
CheckDefAndScriptFailure2 ( ['mkdir("a", {})' ], 'E1013: Argument 2: type mismatch, expected string but got dict<unknown>' , 'E731: Using a Dictionary as a String' )
CheckDefAndScriptFailure2 ( ['mkdir("a", "b", "c")' ], 'E1013: Argument 3: type mismatch, expected number but got string' , 'E1030: Using a String as a Number' )
delete ( 'a' , 'rf' )
enddef
2021-07-03 11:58:12 +02:00
def Test_nextnonblank ( )
CheckDefFailure ( ['nextnonblank(null)' ], 'E1013: Argument 1: type mismatch, expected string but got special' )
assert_equal ( 0 , nextnonblank ( 1 ) )
enddef
2020-10-21 14:25:07 +02:00
def Test_nr2char ( )
nr2char ( 97 , true ) - > assert_equal ( 'a' )
enddef
2021-06-22 19:52:27 +02:00
def Test_or ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['or("x", 0x2)' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
CheckDefFailure ( ['or(0x1, "x")' ], 'E1013: Argument 2: type mismatch, expected number but got string' )
enddef
def Test_popup_locate ( )
CheckDefAndScriptFailure2 ( ['popup_locate("a", 20)' ], 'E1013: Argument 1: type mismatch, expected number but got string' , 'E1030: Using a String as a Number' )
CheckDefAndScriptFailure2 ( ['popup_locate(10, "b")' ], 'E1013: Argument 2: type mismatch, expected number but got string' , 'E1030: Using a String as a Number' )
2021-06-22 19:52:27 +02:00
enddef
2021-07-03 11:58:12 +02:00
def Test_prevnonblank ( )
CheckDefFailure ( ['prevnonblank(null)' ], 'E1013: Argument 1: type mismatch, expected string but got special' )
assert_equal ( 0 , prevnonblank ( 1 ) )
enddef
def Test_prompt_getprompt ( )
2021-07-03 19:27:37 +02:00
if has ( 'channel' )
CheckDefFailure ( ['prompt_getprompt([])' ], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>' )
assert_equal ( '' , prompt_getprompt ( 'NonExistingBuf' ) )
endif
2021-07-03 11:58:12 +02:00
enddef
2021-07-10 13:15:41 +02:00
def Test_prop_find ( )
CheckDefAndScriptFailure2 ( ['prop_find([1, 2])' ], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<number>' , 'E715: Dictionary required' )
CheckDefAndScriptFailure2 ( ['prop_find([1, 2], "k")' ], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<number>' , 'E715: Dictionary required' )
CheckDefAndScriptFailure2 ( ['prop_find({"a": 10}, ["a"])' ], 'E1013: Argument 2: type mismatch, expected string but got list<string>' , 'E730: Using a List as a String' )
enddef
def Test_prop_type_add ( )
CheckDefAndScriptFailure2 ( ['prop_type_add({"a": 10}, "b")' ], 'E1013: Argument 1: type mismatch, expected string but got dict<number>' , 'E731: Using a Dictionary as a String' )
CheckDefAndScriptFailure2 ( ['prop_type_add("a", "b")' ], 'E1013: Argument 2: type mismatch, expected dict<any> but got string' , 'E715: Dictionary required' )
enddef
def Test_prop_type_change ( )
CheckDefAndScriptFailure2 ( ['prop_type_change({"a": 10}, "b")' ], 'E1013: Argument 1: type mismatch, expected string but got dict<number>' , 'E731: Using a Dictionary as a String' )
CheckDefAndScriptFailure2 ( ['prop_type_change("a", "b")' ], 'E1013: Argument 2: type mismatch, expected dict<any> but got string' , 'E715: Dictionary required' )
enddef
def Test_prop_type_delete ( )
CheckDefAndScriptFailure2 ( ['prop_type_delete({"a": 10})' ], 'E1013: Argument 1: type mismatch, expected string but got dict<number>' , 'E731: Using a Dictionary as a String' )
CheckDefAndScriptFailure2 ( ['prop_type_delete({"a": 10}, "b")' ], 'E1013: Argument 1: type mismatch, expected string but got dict<number>' , 'E731: Using a Dictionary as a String' )
CheckDefAndScriptFailure2 ( ['prop_type_delete("a", "b")' ], 'E1013: Argument 2: type mismatch, expected dict<any> but got string' , 'E715: Dictionary required' )
enddef
def Test_prop_type_get ( )
CheckDefAndScriptFailure2 ( ['prop_type_get({"a": 10})' ], 'E1013: Argument 1: type mismatch, expected string but got dict<number>' , 'E731: Using a Dictionary as a String' )
CheckDefAndScriptFailure2 ( ['prop_type_get({"a": 10}, "b")' ], 'E1013: Argument 1: type mismatch, expected string but got dict<number>' , 'E731: Using a Dictionary as a String' )
CheckDefAndScriptFailure2 ( ['prop_type_get("a", "b")' ], 'E1013: Argument 2: type mismatch, expected dict<any> but got string' , 'E715: Dictionary required' )
enddef
2021-07-03 11:58:12 +02:00
def Test_rand ( )
CheckDefFailure ( ['rand(10)' ], 'E1013: Argument 1: type mismatch, expected list<number> but got number' )
CheckDefFailure ( ['rand(["a"])' ], 'E1013: Argument 1: type mismatch, expected list<number> but got list<string>' )
assert_true ( rand ( ) > = 0 )
assert_true ( rand ( srand ( ) ) > = 0 )
enddef
2021-07-10 13:15:41 +02:00
def Test_range ( )
CheckDefAndScriptFailure2 ( ['range("a")' ], 'E1013: Argument 1: type mismatch, expected number but got string' , 'E1030: Using a String as a Number' )
CheckDefAndScriptFailure2 ( ['range(10, "b")' ], 'E1013: Argument 2: type mismatch, expected number but got string' , 'E1030: Using a String as a Number' )
CheckDefAndScriptFailure2 ( ['range(10, 20, "c")' ], 'E1013: Argument 3: type mismatch, expected number but got string' , 'E1030: Using a String as a Number' )
enddef
2020-10-21 14:25:07 +02:00
def Test_readdir ( )
2020-12-31 21:28:47 +01:00
eval expand ( 'sautest' ) - > readdir ( ( e ) = > e [0 ] ! = # '.' )
eval expand ( 'sautest' ) - > readdirex ( ( e ) = > e .name [0 ] ! = # '.' )
2020-10-21 14:25:07 +02:00
enddef
2021-01-13 20:38:03 +01:00
def Test_readblob ( )
var blob = 0 z12341234
writefile ( blob , 'Xreadblob' )
var read : blob = readblob ( 'Xreadblob' )
assert_equal ( blob , read )
var lines = < < trim END
var read : list < string > = readblob ( 'Xreadblob' )
END
CheckDefAndScriptFailure ( lines , 'E1012: Type mismatch; expected list<string> but got blob' , 1 )
delete ( 'Xreadblob' )
enddef
def Test_readfile ( )
var text = ['aaa' , 'bbb' , 'ccc' ]
writefile ( text , 'Xreadfile' )
var read : list < string > = readfile ( 'Xreadfile' )
assert_equal ( text , read )
var lines = < < trim END
var read : dict < string > = readfile ( 'Xreadfile' )
END
CheckDefAndScriptFailure ( lines , 'E1012: Type mismatch; expected dict<string> but got list<string>' , 1 )
delete ( 'Xreadfile' )
2021-07-10 13:15:41 +02:00
CheckDefAndScriptFailure2 ( ['readfile("a", 0z10)' ], 'E1013: Argument 2: type mismatch, expected string but got blob' , 'E976: Using a Blob as a String' )
CheckDefAndScriptFailure2 ( ['readfile("a", "b", "c")' ], 'E1013: Argument 3: type mismatch, expected number but got string' , 'E1030: Using a String as a Number' )
2021-01-13 20:38:03 +01:00
enddef
2021-07-03 11:58:12 +02:00
def Test_reltime ( )
CheckDefFailure ( ['reltime("x")' ], 'E1013: Argument 1: type mismatch, expected list<number> but got string' )
CheckDefFailure ( ['reltime(["x", "y"])' ], 'E1013: Argument 1: type mismatch, expected list<number> but got list<string>' )
CheckDefFailure ( ['reltime([1, 2], 10)' ], 'E1013: Argument 2: type mismatch, expected list<number> but got number' )
CheckDefFailure ( ['reltime([1, 2], ["a", "b"])' ], 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>' )
var start : list < any > = reltime ( )
assert_true ( type ( reltime ( start ) ) = = v :t_list )
var end : list < any > = reltime ( )
assert_true ( type ( reltime ( start , end ) ) = = v :t_list )
enddef
def Test_reltimefloat ( )
CheckDefFailure ( ['reltimefloat("x")' ], 'E1013: Argument 1: type mismatch, expected list<number> but got string' )
CheckDefFailure ( ['reltimefloat([1.1])' ], 'E1013: Argument 1: type mismatch, expected list<number> but got list<float>' )
assert_true ( type ( reltimefloat ( reltime ( ) ) ) = = v :t_float )
enddef
def Test_reltimestr ( )
CheckDefFailure ( ['reltimestr(true)' ], 'E1013: Argument 1: type mismatch, expected list<number> but got bool' )
CheckDefFailure ( ['reltimestr([true])' ], 'E1013: Argument 1: type mismatch, expected list<number> but got list<bool>' )
assert_true ( type ( reltimestr ( reltime ( ) ) ) = = v :t_string )
enddef
def Test_remote_foreground ( )
CheckFeature clientserver
# remote_foreground ( ) doesn 't fail on MS - Windows
CheckNotMSWindows
2021-07-05 14:10:04 +02:00
CheckEnv DISPLAY
2021-07-03 11:58:12 +02:00
CheckDefFailure ( ['remote_foreground(10)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
assert_fails ( 'remote_foreground("NonExistingServer")' , 'E241:' )
enddef
2021-07-10 13:15:41 +02:00
def Test_remote_peek ( )
CheckFeature clientserver
CheckEnv DISPLAY
CheckDefAndScriptFailure2 ( ['remote_peek(0z10)' ], 'E1013: Argument 1: type mismatch, expected string but got blob' , 'E976: Using a Blob as a String' )
CheckDefAndScriptFailure2 ( ['remote_peek("a5b6c7", [1])' ], 'E1013: Argument 2: type mismatch, expected string but got list<number>' , 'E573: Invalid server id used' )
enddef
2021-07-03 11:58:12 +02:00
def Test_remote_startserver ( )
2021-07-10 13:15:41 +02:00
CheckFeature clientserver
CheckEnv DISPLAY
2021-07-03 11:58:12 +02:00
CheckDefFailure ( ['remote_startserver({})' ], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>' )
enddef
2020-10-21 14:25:07 +02:00
def Test_remove_return_type ( )
2020-12-02 17:36:54 +01:00
var l = remove ( {one : [1 , 2 ], two : [3 , 4 ]}, 'one' )
2020-10-21 14:25:07 +02:00
var res = 0
for n in l
res + = n
endfor
res - > assert_equal ( 3 )
enddef
2021-07-03 11:58:12 +02:00
def Test_rename ( )
CheckDefFailure ( ['rename(1, "b")' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
CheckDefFailure ( ['rename("a", 2)' ], 'E1013: Argument 2: type mismatch, expected string but got number' )
enddef
def Test_resolve ( )
CheckDefFailure ( ['resolve([])' ], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>' )
assert_equal ( 'SomeFile' , resolve ( 'SomeFile' ) )
enddef
2021-07-10 13:15:41 +02:00
def Test_reverse ( )
CheckDefAndScriptFailure2 ( ['reverse(10)' ], 'E1013: Argument 1: type mismatch, expected list<any> but got number' , 'E899: Argument of reverse() must be a List or Blob' )
CheckDefAndScriptFailure2 ( ['reverse("abc")' ], 'E1013: Argument 1: type mismatch, expected list<any> but got string' , 'E899: Argument of reverse() must be a List or Blob' )
enddef
2020-10-21 14:25:07 +02:00
def Test_reverse_return_type ( )
var l = reverse ( [1 , 2 , 3 ])
var res = 0
for n in l
res + = n
endfor
res - > assert_equal ( 6 )
enddef
2021-06-22 19:52:27 +02:00
def Test_screenattr ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['screenattr("x", 1)' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
CheckDefFailure ( ['screenattr(1, "x")' ], 'E1013: Argument 2: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
enddef
def Test_screenchar ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['screenchar("x", 1)' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
CheckDefFailure ( ['screenchar(1, "x")' ], 'E1013: Argument 2: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
enddef
def Test_screenchars ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['screenchars("x", 1)' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
CheckDefFailure ( ['screenchars(1, "x")' ], 'E1013: Argument 2: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
enddef
2021-07-03 11:58:12 +02:00
def Test_screenpos ( )
CheckDefFailure ( ['screenpos("a", 1, 1)' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
CheckDefFailure ( ['screenpos(1, "b", 1)' ], 'E1013: Argument 2: type mismatch, expected number but got string' )
CheckDefFailure ( ['screenpos(1, 1, "c")' ], 'E1013: Argument 3: type mismatch, expected number but got string' )
assert_equal ( {col : 1 , row : 1 , endcol : 1 , curscol : 1 }, screenpos ( 1 , 1 , 1 ) )
enddef
2021-06-22 19:52:27 +02:00
def Test_screenstring ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['screenstring("x", 1)' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
CheckDefFailure ( ['screenstring(1, "x")' ], 'E1013: Argument 2: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
enddef
2020-10-21 14:25:07 +02:00
def Test_search ( )
new
setline ( 1 , ['foo' , 'bar' ])
var val = 0
# skip expr returns boolean
2020-12-31 21:28:47 +01:00
search ( 'bar' , 'W' , 0 , 0 , ( ) = > val = = 1 ) - > assert_equal ( 2 )
2020-10-21 14:25:07 +02:00
:1
2020-12-31 21:28:47 +01:00
search ( 'bar' , 'W' , 0 , 0 , ( ) = > val = = 0 ) - > assert_equal ( 0 )
2020-10-21 14:25:07 +02:00
# skip expr returns number , only 0 and 1 are accepted
:1
2020-12-31 21:28:47 +01:00
search ( 'bar' , 'W' , 0 , 0 , ( ) = > 0 ) - > assert_equal ( 2 )
2020-10-21 14:25:07 +02:00
:1
2020-12-31 21:28:47 +01:00
search ( 'bar' , 'W' , 0 , 0 , ( ) = > 1 ) - > assert_equal ( 0 )
assert_fails ( "search('bar', '', 0, 0, () => -1)" , 'E1023:' )
assert_fails ( "search('bar', '', 0, 0, () => -1)" , 'E1023:' )
2021-05-07 19:44:21 +02:00
setline ( 1 , "find this word" )
normal gg
var col = 7
assert_equal ( 1 , search ( 'this' , '' , 0 , 0 , 'col(".") > col' ) )
normal 0
assert_equal ( [1 , 6 ], searchpos ( 'this' , '' , 0 , 0 , 'col(".") > col' ) )
col = 5
normal 0
assert_equal ( 0 , search ( 'this' , '' , 0 , 0 , 'col(".") > col' ) )
normal 0
assert_equal ( [0 , 0 ], searchpos ( 'this' , '' , 0 , 0 , 'col(".") > col' ) )
bwipe !
2020-10-21 14:25:07 +02:00
enddef
def Test_searchcount ( )
new
setline ( 1 , "foo bar" )
:/foo
2020-12-02 17:36:54 +01:00
searchcount ( {recompute : true })
- > assert_equal ( {
2020-10-21 14:25:07 +02:00
exact_match : 1 ,
current : 1 ,
total : 1 ,
maxcount : 99 ,
incomplete : 0 })
bwipe !
enddef
2021-05-07 17:55:55 +02:00
def Test_searchpair ( )
new
setline ( 1 , "here { and } there" )
2021-05-07 19:44:21 +02:00
2021-05-07 17:55:55 +02:00
normal f {
var col = 15
assert_equal ( 1 , searchpair ( '{' , '' , '}' , '' , 'col(".") > col' ) )
assert_equal ( 12 , col ( '.' ) )
2021-05-07 19:44:21 +02:00
normal 0 f{
assert_equal ( [1 , 12 ], searchpairpos ( '{' , '' , '}' , '' , 'col(".") > col' ) )
2021-05-07 17:55:55 +02:00
col = 8
normal 0 f{
assert_equal ( 0 , searchpair ( '{' , '' , '}' , '' , 'col(".") > col' ) )
assert_equal ( 6 , col ( '.' ) )
2021-05-07 19:44:21 +02:00
normal 0 f{
assert_equal ( [0 , 0 ], searchpairpos ( '{' , '' , '}' , '' , 'col(".") > col' ) )
2021-05-16 15:24:49 +02:00
var lines = < < trim END
vim9script
setline ( 1 , '()' )
normal gg
def Fail ( )
try
searchpairpos ( '(' , '' , ')' , 'nW' , '[0]->map("")' )
catch
2021-05-18 17:49:59 +02:00
g :caught = 'yes'
2021-05-16 15:24:49 +02:00
endtry
enddef
Fail ( )
END
2021-05-18 17:49:59 +02:00
CheckScriptSuccess ( lines )
assert_equal ( 'yes' , g :caught )
2021-05-16 15:24:49 +02:00
2021-05-18 17:49:59 +02:00
unlet g :caught
2021-05-07 17:55:55 +02:00
bwipe !
enddef
2021-07-10 13:15:41 +02:00
def Test_server2client ( )
CheckFeature clientserver
CheckEnv DISPLAY
CheckDefAndScriptFailure2 ( ['server2client(10, "b")' ], 'E1013: Argument 1: type mismatch, expected string but got number' , 'E573: Invalid server id used:' )
CheckDefAndScriptFailure2 ( ['server2client("a", 10)' ], 'E1013: Argument 2: type mismatch, expected string but got number' , 'E573: Invalid server id used:' )
enddef
2021-01-31 13:08:38 +01:00
def Test_set_get_bufline ( )
# similar to Test_setbufline_getbufline ( )
var lines = < < trim END
new
var b = bufnr ( '%' )
hide
assert_equal ( 0 , setbufline ( b , 1 , ['foo' , 'bar' ]) )
assert_equal ( ['foo' ], getbufline ( b , 1 ) )
assert_equal ( ['bar' ], getbufline ( b , '$' ) )
assert_equal ( ['foo' , 'bar' ], getbufline ( b , 1 , 2 ) )
exe "bd!" b
assert_equal ( [], getbufline ( b , 1 , 2 ) )
split Xtest
setline ( 1 , ['a' , 'b' , 'c' ])
b = bufnr ( '%' )
wincmd w
assert_equal ( 1 , setbufline ( b , 5 , 'x' ) )
assert_equal ( 1 , setbufline ( b , 5 , ['x' ]) )
assert_equal ( 1 , setbufline ( b , 5 , []) )
assert_equal ( 1 , setbufline ( b , 5 , test_null_list ( ) ) )
assert_equal ( 1 , 'x' - > setbufline ( bufnr ( '$' ) + 1 , 1 ) )
assert_equal ( 1 , ['x' ]- > setbufline ( bufnr ( '$' ) + 1 , 1 ) )
assert_equal ( 1 , []- > setbufline ( bufnr ( '$' ) + 1 , 1 ) )
assert_equal ( 1 , test_null_list ( ) - > setbufline ( bufnr ( '$' ) + 1 , 1 ) )
assert_equal ( ['a' , 'b' , 'c' ], getbufline ( b , 1 , '$' ) )
assert_equal ( 0 , setbufline ( b , 4 , ['d' , 'e' ]) )
assert_equal ( ['c' ], b - > getbufline ( 3 ) )
assert_equal ( ['d' ], getbufline ( b , 4 ) )
assert_equal ( ['e' ], getbufline ( b , 5 ) )
assert_equal ( [], getbufline ( b , 6 ) )
assert_equal ( [], getbufline ( b , 2 , 1 ) )
2021-02-07 14:31:06 +01:00
if has ( 'job' )
2021-06-05 20:51:38 +02:00
setbufline ( b , 2 , [function ( 'eval' ) , {key : 123 }, string ( test_null_job ( ) ) ])
2021-02-07 14:31:06 +01:00
assert_equal ( ["function('eval')" ,
"{'key': 123}",
"no process"],
getbufline ( b , 2 , 4 ) )
endif
2021-01-31 13:08:38 +01:00
exe 'bwipe! ' .. b
END
CheckDefAndScriptSuccess ( lines )
enddef
2020-10-21 14:25:07 +02:00
def Test_searchdecl ( )
searchdecl ( 'blah' , true , true ) - > assert_equal ( 1 )
enddef
def Test_setbufvar ( )
setbufvar ( bufnr ( '%' ) , '&syntax' , 'vim' )
&syntax - > assert_equal ( 'vim' )
setbufvar ( bufnr ( '%' ) , '&ts' , 16 )
&ts - > assert_equal ( 16 )
2021-01-03 14:47:25 +01:00
setbufvar ( bufnr ( '%' ) , '&ai' , true )
&ai - > assert_equal ( true )
setbufvar ( bufnr ( '%' ) , '&ft' , 'filetype' )
&ft - > assert_equal ( 'filetype' )
2020-10-21 14:25:07 +02:00
settabwinvar ( 1 , 1 , '&syntax' , 'vam' )
&syntax - > assert_equal ( 'vam' )
settabwinvar ( 1 , 1 , '&ts' , 15 )
&ts - > assert_equal ( 15 )
setlocal ts = 8
2021-01-03 15:55:10 +01:00
settabwinvar ( 1 , 1 , '&list' , false )
&list - > assert_equal ( false )
2021-01-03 14:47:25 +01:00
settabwinvar ( 1 , 1 , '&list' , true )
&list - > assert_equal ( true )
setlocal list &
2020-10-21 14:25:07 +02:00
setbufvar ( '%' , 'myvar' , 123 )
getbufvar ( '%' , 'myvar' ) - > assert_equal ( 123 )
enddef
2021-07-03 11:58:12 +02:00
def Test_setcharsearch ( )
CheckDefFailure ( ['setcharsearch("x")' ], 'E1013: Argument 1: type mismatch, expected dict<any> but got string' )
CheckDefFailure ( ['setcharsearch([])' ], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>' )
var d : dict < any > = {char : 'x' , forward : 1 , until : 1 }
setcharsearch ( d )
assert_equal ( d , getcharsearch ( ) )
enddef
2021-06-22 19:52:27 +02:00
def Test_setcmdpos ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['setcmdpos("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
2021-06-22 19:52:27 +02:00
enddef
2021-07-03 11:58:12 +02:00
def Test_setfperm ( )
CheckDefFailure ( ['setfperm(1, "b")' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
CheckDefFailure ( ['setfperm("a", 0z10)' ], 'E1013: Argument 2: type mismatch, expected string but got blob' )
enddef
2020-10-21 14:25:07 +02:00
def Test_setloclist ( )
2020-12-02 17:36:54 +01:00
var items = [{filename : '/tmp/file' , lnum : 1 , valid : true }]
var what = {items : items }
2020-10-21 14:25:07 +02:00
setqflist ( [], ' ' , what )
setloclist ( 0 , [], ' ' , what )
enddef
def Test_setreg ( )
setreg ( 'a' , ['aaa' , 'bbb' , 'ccc' ])
var reginfo = getreginfo ( 'a' )
setreg ( 'a' , reginfo )
getreginfo ( 'a' ) - > assert_equal ( reginfo )
2021-02-10 22:23:41 +01:00
assert_fails ( 'setreg("ab", 0)' , 'E1162:' )
2020-10-21 14:25:07 +02:00
enddef
2021-07-03 11:58:12 +02:00
def Test_sha256 ( )
CheckDefFailure ( ['sha256(100)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
CheckDefFailure ( ['sha256(0zABCD)' ], 'E1013: Argument 1: type mismatch, expected string but got blob' )
assert_equal ( 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad' , sha256 ( 'abc' ) )
enddef
2021-06-22 19:52:27 +02:00
def Test_shiftwidth ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['shiftwidth("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
enddef
def Test_sign_define ( )
CheckDefAndScriptFailure2 ( ['sign_define({"a": 10})' ], 'E1013: Argument 1: type mismatch, expected string but got dict<number>' , 'E731: Using a Dictionary as a String' )
CheckDefAndScriptFailure2 ( ['sign_define({"a": 10}, "b")' ], 'E1013: Argument 1: type mismatch, expected string but got dict<number>' , 'E731: Using a Dictionary as a String' )
CheckDefAndScriptFailure2 ( ['sign_define("a", ["b"])' ], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<string>' , 'E715: Dictionary required' )
enddef
def Test_sign_undefine ( )
CheckDefAndScriptFailure2 ( ['sign_undefine({})' ], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>' , 'E731: Using a Dictionary as a String' )
CheckDefAndScriptFailure2 ( ['sign_undefine([1])' ], 'E1013: Argument 1: type mismatch, expected list<string> but got list<number>' , 'E155: Unknown sign:' )
enddef
def Test_sign_unplace ( )
CheckDefAndScriptFailure2 ( ['sign_unplace({"a": 10})' ], 'E1013: Argument 1: type mismatch, expected string but got dict<number>' , 'E474: Invalid argument' )
CheckDefAndScriptFailure2 ( ['sign_unplace({"a": 10}, "b")' ], 'E1013: Argument 1: type mismatch, expected string but got dict<number>' , 'E474: Invalid argument' )
CheckDefAndScriptFailure2 ( ['sign_unplace("a", ["b"])' ], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<string>' , 'E715: Dictionary required' )
2021-06-22 19:52:27 +02:00
enddef
2021-07-03 11:58:12 +02:00
def Test_simplify ( )
CheckDefFailure ( ['simplify(100)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
call assert_equal ( 'NonExistingFile' , simplify ( 'NonExistingFile' ) )
enddef
2021-01-13 21:47:15 +01:00
def Test_slice ( )
assert_equal ( '12345' , slice ( '012345' , 1 ) )
assert_equal ( '123' , slice ( '012345' , 1 , 4 ) )
assert_equal ( '1234' , slice ( '012345' , 1 , -1 ) )
assert_equal ( '1' , slice ( '012345' , 1 , -4 ) )
assert_equal ( '' , slice ( '012345' , 1 , -5 ) )
assert_equal ( '' , slice ( '012345' , 1 , -6 ) )
assert_equal ( [1 , 2 , 3 , 4 , 5 ], slice ( range ( 6 ) , 1 ) )
assert_equal ( [1 , 2 , 3 ], slice ( range ( 6 ) , 1 , 4 ) )
assert_equal ( [1 , 2 , 3 , 4 ], slice ( range ( 6 ) , 1 , -1 ) )
assert_equal ( [1 ], slice ( range ( 6 ) , 1 , -4 ) )
assert_equal ( [], slice ( range ( 6 ) , 1 , -5 ) )
assert_equal ( [], slice ( range ( 6 ) , 1 , -6 ) )
assert_equal ( 0 z1122334455 , slice ( 0 z001122334455 , 1 ) )
assert_equal ( 0 z112233 , slice ( 0 z001122334455 , 1 , 4 ) )
assert_equal ( 0 z11223344 , slice ( 0 z001122334455 , 1 , -1 ) )
assert_equal ( 0 z11 , slice ( 0 z001122334455 , 1 , -4 ) )
assert_equal ( 0 z, slice ( 0 z001122334455 , 1 , -5 ) )
assert_equal ( 0 z, slice ( 0 z001122334455 , 1 , -6 ) )
enddef
2020-10-21 14:25:07 +02:00
def Test_spellsuggest ( )
if ! has ( 'spell' )
MissingFeature 'spell'
else
spellsuggest ( 'marrch' , 1 , true ) - > assert_equal ( ['March' ])
endif
enddef
2021-07-03 11:58:12 +02:00
def Test_sound_stop ( )
CheckFeature sound
CheckDefFailure ( ['sound_stop("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
enddef
def Test_soundfold ( )
CheckDefFailure ( ['soundfold(20)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
assert_equal ( 'abc' , soundfold ( 'abc' ) )
enddef
2020-10-21 14:25:07 +02:00
def Test_sort_return_type ( )
var res : list < number >
res = [1 , 2 , 3 ]- > sort ( )
enddef
def Test_sort_argument ( )
2020-12-05 21:47:06 +01:00
var lines = < < trim END
var res = ['b' , 'a' , 'c' ]- > sort ( 'i' )
res - > assert_equal ( ['a' , 'b' , 'c' ])
def Compare ( a : number , b : number ) : number
return a - b
enddef
var l = [3 , 6 , 7 , 1 , 8 , 2 , 4 , 5 ]
sort ( l , Compare )
assert_equal ( [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ], l )
END
CheckDefAndScriptSuccess ( lines )
2020-10-21 14:25:07 +02:00
enddef
2021-07-03 11:58:12 +02:00
def Test_spellbadword ( )
CheckDefFailure ( ['spellbadword(100)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
spellbadword ( 'good' ) - > assert_equal ( ['' , '' ])
enddef
2020-10-21 14:25:07 +02:00
def Test_split ( )
split ( ' aa bb ' , '\W\+' , true ) - > assert_equal ( ['' , 'aa' , 'bb' , '' ])
enddef
2021-07-03 11:58:12 +02:00
def Test_srand ( )
CheckDefFailure ( ['srand("a")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
type ( srand ( 100 ) ) - > assert_equal ( v :t_list )
enddef
def Test_state ( )
CheckDefFailure ( ['state({})' ], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>' )
assert_equal ( '' , state ( 'a' ) )
enddef
2021-01-31 20:48:58 +01:00
def Run_str2float ( )
if ! has ( 'float' )
MissingFeature 'float'
endif
str2float ( "1.00" ) - > assert_equal ( 1 .00 )
str2float ( "2e-2" ) - > assert_equal ( 0 .02 )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['str2float(123)' ], 'E1013:' )
2021-01-31 20:48:58 +01:00
CheckScriptFailure ( ['vim9script' , 'echo str2float(123)' ], 'E1024:' )
endif
enddef
2020-10-21 14:25:07 +02:00
def Test_str2nr ( )
str2nr ( "1'000'000" , 10 , true ) - > assert_equal ( 1000000 )
2021-01-30 23:05:11 +01:00
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['str2nr(123)' ], 'E1013:' )
2021-01-30 23:05:11 +01:00
CheckScriptFailure ( ['vim9script' , 'echo str2nr(123)' ], 'E1024:' )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['str2nr("123", "x")' ], 'E1013:' )
2021-01-30 23:05:11 +01:00
CheckScriptFailure ( ['vim9script' , 'echo str2nr("123", "x")' ], 'E1030:' )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['str2nr("123", 10, "x")' ], 'E1013:' )
2021-01-30 23:05:11 +01:00
CheckScriptFailure ( ['vim9script' , 'echo str2nr("123", 10, "x")' ], 'E1135:' )
2020-10-21 14:25:07 +02:00
enddef
def Test_strchars ( )
strchars ( "A\u20dd" , true ) - > assert_equal ( 1 )
enddef
2021-07-10 13:15:41 +02:00
def Test_stridx ( )
CheckDefAndScriptFailure2 ( ['stridx([1], "b")' ], 'E1013: Argument 1: type mismatch, expected string but got list<number>' , 'E730: Using a List as a String' )
CheckDefAndScriptFailure2 ( ['stridx("a", {})' ], 'E1013: Argument 2: type mismatch, expected string but got dict<unknown>' , 'E731: Using a Dictionary as a String' )
CheckDefAndScriptFailure2 ( ['stridx("a", "b", "c")' ], 'E1013: Argument 3: type mismatch, expected number but got string' , 'E1030: Using a String as a Number' )
enddef
2021-07-03 11:58:12 +02:00
def Test_strlen ( )
CheckDefFailure ( ['strlen([])' ], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>' )
"abc"->strlen()->assert_equal(3)
strlen ( 99 ) - > assert_equal ( 2 )
enddef
def Test_strptime ( )
CheckFunction strptime
CheckDefFailure ( ['strptime(10, "2021")' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
CheckDefFailure ( ['strptime("%Y", 2021)' ], 'E1013: Argument 2: type mismatch, expected string but got number' )
# BUG : Directly calling strptime ( ) in this function gives an "E117: Unknown
# function " error on MS - Windows even with the above CheckFunction call for
# strptime ( ) .
#assert_true ( strptime ( '%Y' , '2021' ) ! = 0 )
enddef
2021-07-10 13:15:41 +02:00
def Test_strridx ( )
CheckDefAndScriptFailure2 ( ['strridx([1], "b")' ], 'E1013: Argument 1: type mismatch, expected string but got list<number>' , 'E730: Using a List as a String' )
CheckDefAndScriptFailure2 ( ['strridx("a", {})' ], 'E1013: Argument 2: type mismatch, expected string but got dict<unknown>' , 'E731: Using a Dictionary as a String' )
CheckDefAndScriptFailure2 ( ['strridx("a", "b", "c")' ], 'E1013: Argument 3: type mismatch, expected number but got string' , 'E1030: Using a String as a Number' )
enddef
2021-07-03 11:58:12 +02:00
def Test_strtrans ( )
CheckDefFailure ( ['strtrans(20)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
assert_equal ( 'abc' , strtrans ( 'abc' ) )
enddef
def Test_strwidth ( )
CheckDefFailure ( ['strwidth(10)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
CheckScriptFailure ( ['vim9script' , 'echo strwidth(10)' ], 'E1024:' )
assert_equal ( 4 , strwidth ( 'abcd' ) )
enddef
2020-10-21 14:25:07 +02:00
def Test_submatch ( )
var pat = 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)'
2021-01-10 22:42:50 +01:00
var Rep = ( ) = > range ( 10 ) - > mapnew ( ( _ , v ) = > submatch ( v , true ) ) - > string ( )
2020-10-21 14:25:07 +02:00
var actual = substitute ( 'A123456789' , pat , Rep , '' )
var expected = "[['A123456789'], ['1'], ['2'], ['3'], ['4'], ['5'], ['6'], ['7'], ['8'], ['9']]"
actual - > assert_equal ( expected )
enddef
2021-06-05 20:51:38 +02:00
def Test_substitute ( )
var res = substitute ( 'A1234' , '\d' , 'X' , '' )
assert_equal ( 'AX234' , res )
if has ( 'job' )
assert_fails ( '"text"->substitute(".*", () => job_start(":"), "")' , 'E908: using an invalid value as a String: job' )
assert_fails ( '"text"->substitute(".*", () => job_start(":")->job_getchannel(), "")' , 'E908: using an invalid value as a String: channel' )
endif
enddef
2021-07-03 11:58:12 +02:00
def Test_swapinfo ( )
CheckDefFailure ( ['swapinfo({})' ], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>' )
call assert_equal ( {error : 'Cannot open file' }, swapinfo ( 'x' ) )
enddef
def Test_swapname ( )
CheckDefFailure ( ['swapname([])' ], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>' )
assert_fails ( 'swapname("NonExistingBuf")' , 'E94:' )
enddef
2020-10-21 14:25:07 +02:00
def Test_synID ( )
new
setline ( 1 , "text" )
synID ( 1 , 1 , true ) - > assert_equal ( 0 )
bwipe !
enddef
2021-07-03 11:58:12 +02:00
def Test_synIDtrans ( )
CheckDefFailure ( ['synIDtrans("a")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
enddef
def Test_tabpagebuflist ( )
CheckDefFailure ( ['tabpagebuflist("t")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
assert_equal ( [bufnr ( '' ) ], tabpagebuflist ( ) )
assert_equal ( [bufnr ( '' ) ], tabpagebuflist ( 1 ) )
enddef
def Test_tabpagenr ( )
2021-07-10 13:15:41 +02:00
CheckDefAndScriptFailure2 ( ['tabpagenr(1)' ], 'E1013: Argument 1: type mismatch, expected string but got number' , 'E15: Invalid expression:' )
2021-07-03 11:58:12 +02:00
assert_equal ( 1 , tabpagenr ( '$' ) )
assert_equal ( 1 , tabpagenr ( ) )
enddef
2021-07-10 13:15:41 +02:00
def Test_taglist ( )
CheckDefAndScriptFailure2 ( ['taglist([1])' ], 'E1013: Argument 1: type mismatch, expected string but got list<number>' , 'E730: Using a List as a String' )
CheckDefAndScriptFailure2 ( ['taglist("a", [2])' ], 'E1013: Argument 2: type mismatch, expected string but got list<number>' , 'E730: Using a List as a String' )
enddef
def Test_term_dumpload ( )
CheckRunVimInTerminal
CheckDefAndScriptFailure2 ( ['term_dumpload({"a": 10})' ], 'E1013: Argument 1: type mismatch, expected string but got dict<number>' , 'E1174: String required for argument 1' )
CheckDefAndScriptFailure2 ( ['term_dumpload({"a": 10}, "b")' ], 'E1013: Argument 1: type mismatch, expected string but got dict<number>' , 'E1174: String required for argument 1' )
CheckDefAndScriptFailure2 ( ['term_dumpload("a", ["b"])' ], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<string>' , 'E1206: Dictionary required for argument 2' )
enddef
def Test_term_getaltscreen ( )
CheckRunVimInTerminal
CheckDefAndScriptFailure2 ( ['term_getaltscreen(true)' ], 'E1013: Argument 1: type mismatch, expected string but got bool' , 'E1138: Using a Bool as a Number' )
enddef
def Test_term_getansicolors ( )
CheckRunVimInTerminal
CheckDefAndScriptFailure2 ( ['term_getansicolors(["a"])' ], 'E1013: Argument 1: type mismatch, expected string but got list<string>' , 'E745: Using a List as a Number' )
enddef
def Test_term_getcursor ( )
CheckRunVimInTerminal
CheckDefAndScriptFailure2 ( ['term_getcursor({"a": 10})' ], 'E1013: Argument 1: type mismatch, expected string but got dict<number>' , 'E728: Using a Dictionary as a Number' )
enddef
def Test_term_getjob ( )
CheckRunVimInTerminal
CheckDefAndScriptFailure2 ( ['term_getjob(0z10)' ], 'E1013: Argument 1: type mismatch, expected string but got blob' , 'E974: Using a Blob as a Number' )
enddef
def Test_term_getscrolled ( )
CheckRunVimInTerminal
CheckDefAndScriptFailure2 ( ['term_getscrolled(1.1)' ], 'E1013: Argument 1: type mismatch, expected string but got float' , 'E805: Using a Float as a Number' )
enddef
def Test_term_getsize ( )
CheckRunVimInTerminal
CheckDefAndScriptFailure2 ( ['term_getsize(1.1)' ], 'E1013: Argument 1: type mismatch, expected string but got float' , 'E805: Using a Float as a Number' )
enddef
def Test_term_getstatus ( )
CheckRunVimInTerminal
CheckDefAndScriptFailure2 ( ['term_getstatus(1.1)' ], 'E1013: Argument 1: type mismatch, expected string but got float' , 'E805: Using a Float as a Number' )
enddef
def Test_term_gettitle ( )
CheckRunVimInTerminal
CheckDefAndScriptFailure2 ( ['term_gettitle(1.1)' ], 'E1013: Argument 1: type mismatch, expected string but got float' , 'E805: Using a Float as a Number' )
enddef
2020-10-21 14:25:07 +02:00
def Test_term_gettty ( )
if ! has ( 'terminal' )
MissingFeature 'terminal'
else
var buf = Run_shell_in_terminal ( {})
term_gettty ( buf , true ) - > assert_notequal ( '' )
StopShellInTerminal ( buf )
endif
enddef
def Test_term_start ( )
if ! has ( 'terminal' )
MissingFeature 'terminal'
else
botright new
var winnr = winnr ( )
2020-12-02 17:36:54 +01:00
term_start ( &shell , {curwin : true })
2020-10-21 14:25:07 +02:00
winnr ( ) - > assert_equal ( winnr )
bwipe !
endif
enddef
2021-07-10 13:15:41 +02:00
def Test_test_alloc_fail ( )
CheckDefAndScriptFailure2 ( ['test_alloc_fail("a", 10, 20)' ], 'E1013: Argument 1: type mismatch, expected number but got string' , 'E474: Invalid argument' )
CheckDefAndScriptFailure2 ( ['test_alloc_fail(10, "b", 20)' ], 'E1013: Argument 2: type mismatch, expected number but got string' , 'E474: Invalid argument' )
CheckDefAndScriptFailure2 ( ['test_alloc_fail(10, 20, "c")' ], 'E1013: Argument 3: type mismatch, expected number but got string' , 'E474: Invalid argument' )
enddef
def Test_test_feedinput ( )
CheckDefAndScriptFailure2 ( ['test_feedinput(test_void())' ], 'E1013: Argument 1: type mismatch, expected string but got void' , 'E1031: Cannot use void value' )
CheckDefAndScriptFailure2 ( ['test_feedinput(["a"])' ], 'E1013: Argument 1: type mismatch, expected string but got list<string>' , 'E730: Using a List as a String' )
enddef
def Test_test_getvalue ( )
CheckDefAndScriptFailure2 ( ['test_getvalue(1.1)' ], 'E1013: Argument 1: type mismatch, expected string but got float' , 'E474: Invalid argument' )
enddef
def Test_test_ignore_error ( )
CheckDefAndScriptFailure2 ( ['test_ignore_error([])' ], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>' , 'E474: Invalid argument' )
test_ignore_error ( 'RESET' )
enddef
def Test_test_option_not_set ( )
CheckDefAndScriptFailure2 ( ['test_option_not_set([])' ], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>' , 'E474: Invalid argument' )
enddef
def Test_test_setmouse ( )
CheckDefAndScriptFailure2 ( ['test_setmouse("a", 10)' ], 'E1013: Argument 1: type mismatch, expected number but got string' , 'E474: Invalid argument' )
CheckDefAndScriptFailure2 ( ['test_setmouse(10, "b")' ], 'E1013: Argument 2: type mismatch, expected number but got string' , 'E474: Invalid argument' )
enddef
def Test_test_settime ( )
CheckDefAndScriptFailure2 ( ['test_settime([1])' ], 'E1013: Argument 1: type mismatch, expected number but got list<number>' , 'E745: Using a List as a Number' )
enddef
def Test_test_srand_seed ( )
CheckDefAndScriptFailure2 ( ['test_srand_seed([1])' ], 'E1013: Argument 1: type mismatch, expected number but got list<number>' , 'E745: Using a List as a Number' )
CheckDefAndScriptFailure2 ( ['test_srand_seed("10")' ], 'E1013: Argument 1: type mismatch, expected number but got string' , 'E1030: Using a String as a Number' )
enddef
2021-07-03 11:58:12 +02:00
def Test_timer_info ( )
CheckDefFailure ( ['timer_info("id")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
assert_equal ( [], timer_info ( 100 ) )
assert_equal ( [], timer_info ( ) )
enddef
2020-10-21 14:25:07 +02:00
def Test_timer_paused ( )
2020-12-31 21:28:47 +01:00
var id = timer_start ( 50 , ( ) = > 0 )
2020-10-21 14:25:07 +02:00
timer_pause ( id , true )
var info = timer_info ( id )
info [0 ]['paused' ]- > assert_equal ( 1 )
timer_stop ( id )
enddef
2021-07-03 11:58:12 +02:00
def Test_timer_stop ( )
CheckDefFailure ( ['timer_stop("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
assert_equal ( 0 , timer_stop ( 100 ) )
enddef
2021-06-22 19:52:27 +02:00
def Test_tolower ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['tolower(1)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
2021-06-22 19:52:27 +02:00
enddef
def Test_toupper ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['toupper(1)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
2021-06-22 19:52:27 +02:00
enddef
def Test_tr ( )
2021-07-10 13:15:41 +02:00
CheckDefFailure ( ['tr(1, "a", "b")' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
CheckDefFailure ( ['tr("a", 1, "b")' ], 'E1013: Argument 2: type mismatch, expected string but got number' )
CheckDefFailure ( ['tr("a", "a", 1)' ], 'E1013: Argument 3: type mismatch, expected string but got number' )
enddef
def Test_trim ( )
CheckDefAndScriptFailure2 ( ['trim(["a"])' ], 'E1013: Argument 1: type mismatch, expected string but got list<string>' , 'E730: Using a List as a String' )
CheckDefAndScriptFailure2 ( ['trim("a", ["b"])' ], 'E1013: Argument 2: type mismatch, expected string but got list<string>' , 'E730: Using a List as a String' )
CheckDefAndScriptFailure2 ( ['trim("a", "b", "c")' ], 'E1013: Argument 3: type mismatch, expected number but got string' , 'E1030: Using a String as a Number' )
2021-06-22 19:52:27 +02:00
enddef
2021-07-09 19:53:57 +02:00
def Test_typename ( )
if has ( 'float' )
assert_equal ( 'func([unknown], [unknown]): float' , typename ( function ( 'pow' ) ) )
endif
enddef
2021-07-03 11:58:12 +02:00
def Test_undofile ( )
CheckDefFailure ( ['undofile(10)' ], 'E1013: Argument 1: type mismatch, expected string but got number' )
assert_equal ( '.abc.un~' , fnamemodify ( undofile ( 'abc' ) , ':t' ) )
enddef
def Test_values ( )
CheckDefFailure ( ['values([])' ], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>' )
assert_equal ( [], {}- > values ( ) )
assert_equal ( ['sun' ], {star : 'sun' }- > values ( ) )
enddef
2021-07-10 13:15:41 +02:00
def Test_virtcol ( )
CheckDefAndScriptFailure2 ( ['virtcol(1.1)' ], 'E1013: Argument 1: type mismatch, expected string but got float' , 'E1174: String required for argument 1' )
enddef
2021-01-12 22:08:53 +01:00
def Test_win_execute ( )
assert_equal ( "\n" .. winnr ( ) , win_execute ( win_getid ( ) , 'echo winnr()' ) )
2021-07-11 18:23:19 +02:00
assert_equal ( "\n" .. winnr ( ) , 'echo winnr()' - > win_execute ( win_getid ( ) ) )
assert_equal ( "\n" .. winnr ( ) , win_execute ( win_getid ( ) , 'echo winnr()' , 'silent' ) )
2021-01-12 22:08:53 +01:00
assert_equal ( '' , win_execute ( 342343 , 'echo winnr()' ) )
enddef
2021-07-03 11:58:12 +02:00
def Test_win_findbuf ( )
CheckDefFailure ( ['win_findbuf("a")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
assert_equal ( [], win_findbuf ( 1000 ) )
assert_equal ( [win_getid ( ) ], win_findbuf ( bufnr ( '' ) ) )
enddef
def Test_win_getid ( )
CheckDefFailure ( ['win_getid(".")' ], 'E1013: Argument 1: type mismatch, expected number but got string' )
CheckDefFailure ( ['win_getid(1, ".")' ], 'E1013: Argument 2: type mismatch, expected number but got string' )
assert_equal ( win_getid ( ) , win_getid ( 1 , 1 ) )
enddef
2020-10-21 14:25:07 +02:00
def Test_win_splitmove ( )
split
2020-12-02 17:36:54 +01:00
win_splitmove ( 1 , 2 , {vertical : true , rightbelow : true })
2020-10-21 14:25:07 +02:00
close
enddef
2021-07-03 11:58:12 +02:00
def Test_winnr ( )
CheckDefFailure ( ['winnr([])' ], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>' )
assert_equal ( 1 , winnr ( ) )
assert_equal ( 1 , winnr ( '$' ) )
enddef
2020-12-29 20:25:19 +01:00
def Test_winrestcmd ( )
split
var cmd = winrestcmd ( )
wincmd _
exe cmd
assert_equal ( cmd , winrestcmd ( ) )
close
enddef
2021-07-03 11:58:12 +02:00
def Test_winrestview ( )
CheckDefFailure ( ['winrestview([])' ], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>' )
:%d _
setline ( 1 , 'Hello World' )
winrestview ( {lnum : 1 , col : 6 })
assert_equal ( [1 , 7 ], [line ( '.' ) , col ( '.' ) ])
enddef
2021-01-07 20:23:33 +01:00
def Test_winsaveview ( )
var view : dict < number > = winsaveview ( )
var lines = < < trim END
var view : list < number > = winsaveview ( )
END
CheckDefAndScriptFailure ( lines , 'E1012: Type mismatch; expected list<number> but got dict<number>' , 1 )
enddef
2021-06-22 19:52:27 +02:00
def Test_win_gettype ( )
2021-07-10 13:15:41 +02:00
CheckDefAndScriptFailure2 ( ['win_gettype("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' , 'E1030: Using a String as a Number' )
2021-06-22 19:52:27 +02:00
enddef
def Test_win_gotoid ( )
2021-07-10 13:15:41 +02:00
CheckDefAndScriptFailure2 ( ['win_gotoid("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' , 'E1030: Using a String as a Number' )
2021-06-22 19:52:27 +02:00
enddef
def Test_win_id2tabwin ( )
2021-07-10 13:15:41 +02:00
CheckDefAndScriptFailure2 ( ['win_id2tabwin("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' , 'E1030: Using a String as a Number' )
2021-06-22 19:52:27 +02:00
enddef
2021-01-07 20:23:33 +01:00
2021-06-22 19:52:27 +02:00
def Test_win_id2win ( )
2021-07-10 13:15:41 +02:00
CheckDefAndScriptFailure2 ( ['win_id2win("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' , 'E1030: Using a String as a Number' )
2021-06-22 19:52:27 +02:00
enddef
def Test_win_screenpos ( )
2021-07-10 13:15:41 +02:00
CheckDefAndScriptFailure2 ( ['win_screenpos("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' , 'E1030: Using a String as a Number' )
2021-06-22 19:52:27 +02:00
enddef
2020-12-29 20:25:19 +01:00
2021-06-22 19:52:27 +02:00
def Test_winbufnr ( )
2021-07-10 13:15:41 +02:00
CheckDefAndScriptFailure2 ( ['winbufnr("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' , 'E1030: Using a String as a Number' )
2021-06-22 19:52:27 +02:00
enddef
def Test_winheight ( )
2021-07-10 13:15:41 +02:00
CheckDefAndScriptFailure2 ( ['winheight("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' , 'E1030: Using a String as a Number' )
2021-06-22 19:52:27 +02:00
enddef
def Test_winlayout ( )
2021-07-10 13:15:41 +02:00
CheckDefAndScriptFailure2 ( ['winlayout("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' , 'E1030: Using a String as a Number' )
2021-06-22 19:52:27 +02:00
enddef
def Test_winwidth ( )
2021-07-10 13:15:41 +02:00
CheckDefAndScriptFailure2 ( ['winwidth("x")' ], 'E1013: Argument 1: type mismatch, expected number but got string' , 'E1030: Using a String as a Number' )
2021-06-22 19:52:27 +02:00
enddef
def Test_xor ( )
2021-07-10 13:15:41 +02:00
CheckDefAndScriptFailure2 ( ['xor("x", 0x2)' ], 'E1013: Argument 1: type mismatch, expected number but got string' , 'E1030: Using a String as a Number' )
CheckDefAndScriptFailure2 ( ['xor(0x1, "x")' ], 'E1013: Argument 2: type mismatch, expected number but got string' , 'E1030: Using a String as a Number' )
2021-06-22 19:52:27 +02:00
enddef
2020-10-21 14:25:07 +02:00
" vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker