1" Test using builtin functions in the Vim9 script language. 2 3source check.vim 4source vim9.vim 5 6" Test for passing too many or too few arguments to builtin functions 7func Test_internalfunc_arg_error() 8 let l =<< trim END 9 def! FArgErr(): float 10 return ceil(1.1, 2) 11 enddef 12 defcompile 13 END 14 call writefile(l, 'Xinvalidarg') 15 call assert_fails('so Xinvalidarg', 'E118:', '', 1, 'FArgErr') 16 let l =<< trim END 17 def! FArgErr(): float 18 return ceil() 19 enddef 20 defcompile 21 END 22 call writefile(l, 'Xinvalidarg') 23 call assert_fails('so Xinvalidarg', 'E119:', '', 1, 'FArgErr') 24 call delete('Xinvalidarg') 25endfunc 26 27" Test for builtin functions returning different types 28func Test_InternalFuncRetType() 29 let lines =<< trim END 30 def RetFloat(): float 31 return ceil(1.456) 32 enddef 33 34 def RetListAny(): list<any> 35 return items({k: 'v'}) 36 enddef 37 38 def RetListString(): list<string> 39 return split('a:b:c', ':') 40 enddef 41 42 def RetListDictAny(): list<dict<any>> 43 return getbufinfo() 44 enddef 45 46 def RetDictNumber(): dict<number> 47 return wordcount() 48 enddef 49 50 def RetDictString(): dict<string> 51 return environ() 52 enddef 53 END 54 call writefile(lines, 'Xscript') 55 source Xscript 56 57 call RetFloat()->assert_equal(2.0) 58 call RetListAny()->assert_equal([['k', 'v']]) 59 call RetListString()->assert_equal(['a', 'b', 'c']) 60 call RetListDictAny()->assert_notequal([]) 61 call RetDictNumber()->assert_notequal({}) 62 call RetDictString()->assert_notequal({}) 63 call delete('Xscript') 64endfunc 65 66def Test_abs() 67 assert_equal(0, abs(0)) 68 assert_equal(2, abs(-2)) 69 assert_equal(3, abs(3)) 70 CheckDefAndScriptFailure2(['abs("text")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 71 if has('float') 72 assert_equal(0, abs(0)) 73 assert_equal(2.0, abs(-2.0)) 74 assert_equal(3.0, abs(3.0)) 75 endif 76enddef 77 78def Test_add() 79 CheckDefAndScriptFailure2(['add({}, 1)'], 'E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1226: List or Blob required for argument 1') 80 CheckDefFailure(['add([1], "a")'], 'E1012: Type mismatch; expected number but got string') 81enddef 82 83def Test_add_blob() 84 var b1: blob = 0z12 85 add(b1, 0x34) 86 assert_equal(0z1234, b1) 87 88 var b2: blob # defaults to empty blob 89 add(b2, 0x67) 90 assert_equal(0z67, b2) 91 92 var lines =<< trim END 93 var b: blob 94 add(b, "x") 95 END 96 CheckDefFailure(lines, 'E1012:', 2) 97 98 lines =<< trim END 99 add(test_null_blob(), 123) 100 END 101 CheckDefExecAndScriptFailure(lines, 'E1131:', 1) 102 103 lines =<< trim END 104 var b: blob = test_null_blob() 105 add(b, 123) 106 END 107 CheckDefExecFailure(lines, 'E1131:', 2) 108 109 # Getting variable with NULL blob allocates a new blob at script level 110 lines =<< trim END 111 vim9script 112 var b: blob = test_null_blob() 113 add(b, 123) 114 END 115 CheckScriptSuccess(lines) 116enddef 117 118def Test_add_list() 119 var l: list<number> # defaults to empty list 120 add(l, 9) 121 assert_equal([9], l) 122 123 var lines =<< trim END 124 var l: list<number> 125 add(l, "x") 126 END 127 CheckDefFailure(lines, 'E1012:', 2) 128 129 lines =<< trim END 130 add(test_null_list(), 123) 131 END 132 CheckDefExecAndScriptFailure(lines, 'E1130:', 1) 133 134 lines =<< trim END 135 var l: list<number> = test_null_list() 136 add(l, 123) 137 END 138 CheckDefExecFailure(lines, 'E1130:', 2) 139 140 # Getting variable with NULL list allocates a new list at script level 141 lines =<< trim END 142 vim9script 143 var l: list<number> = test_null_list() 144 add(l, 123) 145 END 146 CheckScriptSuccess(lines) 147 148 lines =<< trim END 149 vim9script 150 var l: list<string> = ['a'] 151 l->add(123) 152 END 153 CheckScriptFailure(lines, 'E1012: Type mismatch; expected string but got number', 3) 154 155 lines =<< trim END 156 vim9script 157 var l: list<string> 158 l->add(123) 159 END 160 CheckScriptFailure(lines, 'E1012: Type mismatch; expected string but got number', 3) 161enddef 162 163def Test_and() 164 CheckDefAndScriptFailure2(['and("x", 0x2)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 165 CheckDefAndScriptFailure2(['and(0x1, "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 166enddef 167 168def Test_append() 169 new 170 setline(1, range(3)) 171 var res1: number = append(1, 'one') 172 assert_equal(0, res1) 173 var res2: bool = append(3, 'two') 174 assert_equal(false, res2) 175 assert_equal(['0', 'one', '1', 'two', '2'], getline(1, 6)) 176 177 append(0, 'zero') 178 assert_equal('zero', getline(1)) 179 append(0, {a: 10}) 180 assert_equal("{'a': 10}", getline(1)) 181 append(0, function('min')) 182 assert_equal("function('min')", getline(1)) 183 CheckDefAndScriptFailure2(['append([1], "x")'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1') 184 CheckDefExecAndScriptFailure(['append("", "x")'], 'E1209: Invalid value for a line number') 185 bwipe! 186enddef 187 188def Test_appendbufline() 189 new 190 var bnum: number = bufnr() 191 :wincmd w 192 appendbufline(bnum, 0, range(3)) 193 var res1: number = appendbufline(bnum, 1, 'one') 194 assert_equal(0, res1) 195 var res2: bool = appendbufline(bnum, 3, 'two') 196 assert_equal(false, res2) 197 assert_equal(['0', 'one', '1', 'two', '2', ''], getbufline(bnum, 1, '$')) 198 appendbufline(bnum, 0, 'zero') 199 assert_equal(['zero'], getbufline(bnum, 1)) 200 CheckDefAndScriptFailure2(['appendbufline([1], 1, "x")'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1') 201 CheckDefAndScriptFailure2(['appendbufline(1, [1], "x")'], 'E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 2') 202 CheckDefAndScriptFailure2(['appendbufline(1, 1, {"a": 10})'], 'E1013: Argument 3: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 3') 203 bnum->bufwinid()->win_gotoid() 204 bwipe! 205enddef 206 207def Test_argc() 208 CheckDefAndScriptFailure2(['argc("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 209enddef 210 211def Test_arglistid() 212 CheckDefAndScriptFailure2(['arglistid("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 213 CheckDefAndScriptFailure2(['arglistid(1, "y")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 214 CheckDefAndScriptFailure2(['arglistid("x", "y")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 215enddef 216 217def Test_argv() 218 CheckDefAndScriptFailure2(['argv("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 219 CheckDefAndScriptFailure2(['argv(1, "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 220 CheckDefAndScriptFailure2(['argv("x", "y")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 221enddef 222 223def Test_assert_beeps() 224 CheckDefAndScriptFailure2(['assert_beeps(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 225enddef 226 227def Test_assert_equalfile() 228 CheckDefAndScriptFailure2(['assert_equalfile(1, "f2")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 229 CheckDefAndScriptFailure2(['assert_equalfile("f1", true)'], 'E1013: Argument 2: type mismatch, expected string but got bool', 'E1174: String required for argument 2') 230 CheckDefAndScriptFailure2(['assert_equalfile("f1", "f2", ["a"])'], 'E1013: Argument 3: type mismatch, expected string but got list<string>', 'E1174: String required for argument 3') 231enddef 232 233def Test_assert_exception() 234 CheckDefAndScriptFailure2(['assert_exception({})'], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1') 235 CheckDefAndScriptFailure2(['assert_exception("E1:", v:null)'], 'E1013: Argument 2: type mismatch, expected string but got special', 'E1174: String required for argument 2') 236enddef 237 238def Test_assert_fails() 239 CheckDefAndScriptFailure2(['assert_fails([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 240 CheckDefAndScriptFailure2(['assert_fails("a", true)'], 'E1013: Argument 2: type mismatch, expected string but got bool', 'E1222: String or List required for argument 2') 241 CheckDefAndScriptFailure2(['assert_fails("a", "b", "c", "d")'], 'E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4') 242 CheckDefAndScriptFailure2(['assert_fails("a", "b", "c", 4, 5)'], 'E1013: Argument 5: type mismatch, expected string but got number', 'E1174: String required for argument 5') 243enddef 244 245def Test_assert_inrange() 246 CheckDefAndScriptFailure2(['assert_inrange("a", 2, 3)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 247 CheckDefAndScriptFailure2(['assert_inrange(1, "b", 3)'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 2') 248 CheckDefAndScriptFailure2(['assert_inrange(1, 2, "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 3') 249 CheckDefAndScriptFailure2(['assert_inrange(1, 2, 3, 4)'], 'E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4') 250enddef 251 252def Test_assert_match() 253 CheckDefAndScriptFailure2(['assert_match({}, "b")'], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>', '') 254 CheckDefAndScriptFailure2(['assert_match("a", 1)'], 'E1013: Argument 2: type mismatch, expected string but got number', '') 255 CheckDefAndScriptFailure2(['assert_match("a", "b", null)'], 'E1013: Argument 3: type mismatch, expected string but got special', '') 256enddef 257 258def Test_assert_nobeep() 259 CheckDefAndScriptFailure2(['assert_nobeep(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 260enddef 261 262def Test_assert_notmatch() 263 CheckDefAndScriptFailure2(['assert_notmatch({}, "b")'], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>', '') 264 CheckDefAndScriptFailure2(['assert_notmatch("a", 1)'], 'E1013: Argument 2: type mismatch, expected string but got number', '') 265 CheckDefAndScriptFailure2(['assert_notmatch("a", "b", null)'], 'E1013: Argument 3: type mismatch, expected string but got special', '') 266enddef 267 268def Test_assert_report() 269 CheckDefAndScriptFailure2(['assert_report([1, 2])'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1') 270enddef 271 272def Test_balloon_show() 273 CheckGui 274 CheckFeature balloon_eval 275 276 assert_fails('balloon_show(10)', 'E1222:') 277 assert_fails('balloon_show(true)', 'E1222:') 278 279 CheckDefAndScriptFailure2(['balloon_show(1.2)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1222: String or List required for argument 1') 280 CheckDefAndScriptFailure2(['balloon_show({"a": 10})'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1') 281enddef 282 283def Test_balloon_split() 284 CheckFeature balloon_eval_term 285 286 assert_fails('balloon_split([])', 'E1174:') 287 assert_fails('balloon_split(true)', 'E1174:') 288enddef 289 290def Test_browse() 291 CheckFeature browse 292 293 CheckDefAndScriptFailure2(['browse(2, "title", "dir", "file")'], 'E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1') 294 CheckDefAndScriptFailure2(['browse(true, 2, "dir", "file")'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 295 CheckDefAndScriptFailure2(['browse(true, "title", 3, "file")'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 296 CheckDefAndScriptFailure2(['browse(true, "title", "dir", 4)'], 'E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4') 297enddef 298 299def Test_browsedir() 300 if has('browse') 301 CheckDefAndScriptFailure2(['browsedir({}, "b")'], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1') 302 CheckDefAndScriptFailure2(['browsedir("a", [])'], 'E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2') 303 endif 304enddef 305 306def Test_bufadd() 307 assert_fails('bufadd([])', 'E1174:') 308enddef 309 310def Test_bufexists() 311 assert_fails('bufexists(true)', 'E1220:') 312 bufexists('')->assert_false() 313enddef 314 315def Test_buflisted() 316 var res: bool = buflisted('asdf') 317 assert_equal(false, res) 318 assert_fails('buflisted(true)', 'E1220:') 319 assert_fails('buflisted([])', 'E1220:') 320 buflisted('')->assert_false() 321enddef 322 323def Test_bufload() 324 assert_fails('bufload([])', 'E1220:') 325enddef 326 327def Test_bufloaded() 328 assert_fails('bufloaded(true)', 'E1220:') 329 assert_fails('bufloaded([])', 'E1220:') 330 bufloaded('')->assert_false() 331enddef 332 333def Test_bufname() 334 split SomeFile 335 bufname('%')->assert_equal('SomeFile') 336 edit OtherFile 337 bufname('#')->assert_equal('SomeFile') 338 close 339 assert_fails('bufname(true)', 'E1220:') 340 assert_fails('bufname([])', 'E1220:') 341enddef 342 343def Test_bufnr() 344 var buf = bufnr() 345 bufnr('%')->assert_equal(buf) 346 347 buf = bufnr('Xdummy', true) 348 buf->assert_notequal(-1) 349 exe 'bwipe! ' .. buf 350 CheckDefAndScriptFailure2(['bufnr([1])'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1') 351 CheckDefAndScriptFailure2(['bufnr(1, 2)'], 'E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2') 352enddef 353 354def Test_bufwinid() 355 var origwin = win_getid() 356 below split SomeFile 357 var SomeFileID = win_getid() 358 below split OtherFile 359 below split SomeFile 360 bufwinid('SomeFile')->assert_equal(SomeFileID) 361 362 win_gotoid(origwin) 363 only 364 bwipe SomeFile 365 bwipe OtherFile 366 367 assert_fails('bufwinid(true)', 'E1220:') 368 assert_fails('bufwinid([])', 'E1220:') 369enddef 370 371def Test_bufwinnr() 372 assert_fails('bufwinnr(true)', 'E1220:') 373 assert_fails('bufwinnr([])', 'E1220:') 374enddef 375 376def Test_byte2line() 377 CheckDefAndScriptFailure2(['byte2line("1")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 378 CheckDefAndScriptFailure2(['byte2line([])'], 'E1013: Argument 1: type mismatch, expected number but got list<unknown>', 'E1210: Number required for argument 1') 379 assert_equal(-1, byte2line(0)) 380enddef 381 382def Test_byteidx() 383 CheckDefAndScriptFailure2(['byteidx(1, 2)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 384 CheckDefAndScriptFailure2(['byteidx("a", "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 385enddef 386 387def Test_byteidxcomp() 388 CheckDefAndScriptFailure2(['byteidxcomp(1, 2)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 389 CheckDefAndScriptFailure2(['byteidxcomp("a", "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 390enddef 391 392def Test_call_call() 393 var l = [3, 2, 1] 394 call('reverse', [l]) 395 l->assert_equal([1, 2, 3]) 396 CheckDefAndScriptFailure2(['call("reverse", 2)'], 'E1013: Argument 2: type mismatch, expected list<any> but got number', 'E1211: List required for argument 2') 397 CheckDefAndScriptFailure2(['call("reverse", [2], [1])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3') 398enddef 399 400def Test_ch_canread() 401 if !has('channel') 402 CheckFeature channel 403 else 404 CheckDefAndScriptFailure2(['ch_canread(10)'], 'E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1') 405 endif 406enddef 407 408def Test_ch_close() 409 if !has('channel') 410 CheckFeature channel 411 else 412 CheckDefAndScriptFailure2(['ch_close("c")'], 'E1013: Argument 1: type mismatch, expected channel but got string', 'E1217: Channel or Job required for argument 1') 413 endif 414enddef 415 416def Test_ch_close_in() 417 if !has('channel') 418 CheckFeature channel 419 else 420 CheckDefAndScriptFailure2(['ch_close_in(true)'], 'E1013: Argument 1: type mismatch, expected channel but got bool', 'E1217: Channel or Job required for argument 1') 421 endif 422enddef 423 424def Test_ch_evalexpr() 425 if !has('channel') 426 CheckFeature channel 427 else 428 CheckDefAndScriptFailure2(['ch_evalexpr(1, "a")'], 'E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1') 429 CheckDefAndScriptFailure2(['ch_evalexpr(test_null_channel(), 1, [])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3') 430 endif 431enddef 432 433def Test_ch_evalraw() 434 if !has('channel') 435 CheckFeature channel 436 else 437 CheckDefAndScriptFailure2(['ch_evalraw(1, "")'], 'E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1') 438 CheckDefAndScriptFailure2(['ch_evalraw(test_null_channel(), 1)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1221: String or Blob required for argument 2') 439 CheckDefAndScriptFailure2(['ch_evalraw(test_null_channel(), "", [])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3') 440 endif 441enddef 442 443def Test_ch_getbufnr() 444 if !has('channel') 445 CheckFeature channel 446 else 447 CheckDefAndScriptFailure2(['ch_getbufnr(1, "a")'], 'E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1') 448 CheckDefAndScriptFailure2(['ch_getbufnr(test_null_channel(), 1)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 449 endif 450enddef 451 452def Test_ch_getjob() 453 if !has('channel') 454 CheckFeature channel 455 else 456 CheckDefAndScriptFailure2(['ch_getjob(1)'], 'E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1') 457 CheckDefAndScriptFailure2(['ch_getjob({"a": 10})'], 'E1013: Argument 1: type mismatch, expected channel but got dict<number>', 'E1217: Channel or Job required for argument 1') 458 assert_equal(0, ch_getjob(test_null_channel())) 459 endif 460enddef 461 462def Test_ch_info() 463 if !has('channel') 464 CheckFeature channel 465 else 466 CheckDefAndScriptFailure2(['ch_info([1])'], 'E1013: Argument 1: type mismatch, expected channel but got list<number>', 'E1217: Channel or Job required for argument 1') 467 endif 468enddef 469 470def Test_ch_log() 471 if !has('channel') 472 CheckFeature channel 473 else 474 CheckDefAndScriptFailure2(['ch_log(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1') 475 CheckDefAndScriptFailure2(['ch_log("a", 1)'], 'E1013: Argument 2: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 2') 476 endif 477enddef 478 479def Test_ch_logfile() 480 if !has('channel') 481 CheckFeature channel 482 else 483 assert_fails('ch_logfile(true)', 'E1174:') 484 assert_fails('ch_logfile("foo", true)', 'E1174:') 485 486 CheckDefAndScriptFailure2(['ch_logfile(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 487 CheckDefAndScriptFailure2(['ch_logfile("a", true)'], 'E1013: Argument 2: type mismatch, expected string but got bool', 'E1174: String required for argument 2') 488 endif 489enddef 490 491def Test_ch_open() 492 if !has('channel') 493 CheckFeature channel 494 else 495 CheckDefAndScriptFailure2(['ch_open({"a": 10}, "a")'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1') 496 CheckDefAndScriptFailure2(['ch_open("a", [1])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2') 497 CheckDefExecAndScriptFailure(['ch_open("")'], 'E475: Invalid argument') 498 endif 499enddef 500 501def Test_ch_read() 502 if !has('channel') 503 CheckFeature channel 504 else 505 CheckDefAndScriptFailure2(['ch_read(1)'], 'E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1') 506 CheckDefAndScriptFailure2(['ch_read(test_null_channel(), [])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2') 507 endif 508enddef 509 510def Test_ch_readblob() 511 if !has('channel') 512 CheckFeature channel 513 else 514 CheckDefAndScriptFailure2(['ch_readblob(1)'], 'E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1') 515 CheckDefAndScriptFailure2(['ch_readblob(test_null_channel(), [])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2') 516 endif 517enddef 518 519def Test_ch_readraw() 520 if !has('channel') 521 CheckFeature channel 522 else 523 CheckDefAndScriptFailure2(['ch_readraw(1)'], 'E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1') 524 CheckDefAndScriptFailure2(['ch_readraw(test_null_channel(), [])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2') 525 endif 526enddef 527 528def Test_ch_sendexpr() 529 if !has('channel') 530 CheckFeature channel 531 else 532 CheckDefAndScriptFailure2(['ch_sendexpr(1, "a")'], 'E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1') 533 CheckDefAndScriptFailure2(['ch_sendexpr(test_null_channel(), 1, [])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3') 534 endif 535enddef 536 537def Test_ch_sendraw() 538 if !has('channel') 539 CheckFeature channel 540 else 541 CheckDefAndScriptFailure2(['ch_sendraw(1, "")'], 'E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1') 542 CheckDefAndScriptFailure2(['ch_sendraw(test_null_channel(), 1)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1221: String or Blob required for argument 2') 543 CheckDefAndScriptFailure2(['ch_sendraw(test_null_channel(), "", [])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3') 544 endif 545enddef 546 547def Test_ch_setoptions() 548 if !has('channel') 549 CheckFeature channel 550 else 551 CheckDefAndScriptFailure2(['ch_setoptions(1, {})'], 'E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1') 552 CheckDefAndScriptFailure2(['ch_setoptions(test_null_channel(), [])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2') 553 endif 554enddef 555 556def Test_ch_status() 557 if !has('channel') 558 CheckFeature channel 559 else 560 CheckDefAndScriptFailure2(['ch_status(1)'], 'E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1') 561 CheckDefAndScriptFailure2(['ch_status(test_null_channel(), [])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2') 562 endif 563enddef 564 565def Test_char2nr() 566 char2nr('あ', true)->assert_equal(12354) 567 568 assert_fails('char2nr(true)', 'E1174:') 569 CheckDefAndScriptFailure2(['char2nr(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 570 CheckDefAndScriptFailure2(['char2nr("a", 2)'], 'E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2') 571 assert_equal(97, char2nr('a', 1)) 572 assert_equal(97, char2nr('a', 0)) 573 assert_equal(97, char2nr('a', true)) 574 assert_equal(97, char2nr('a', false)) 575enddef 576 577def Test_charclass() 578 assert_fails('charclass(true)', 'E1174:') 579enddef 580 581def Test_charcol() 582 CheckDefAndScriptFailure2(['charcol(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1222: String or List required for argument 1') 583 CheckDefAndScriptFailure2(['charcol({a: 10})'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1') 584 CheckDefExecAndScriptFailure(['charcol("")'], 'E1209: Invalid value for a line number') 585 new 586 setline(1, ['abcdefgh']) 587 cursor(1, 4) 588 assert_equal(4, charcol('.')) 589 assert_equal(9, charcol([1, '$'])) 590 assert_equal(0, charcol([10, '$'])) 591 bw! 592enddef 593 594def Test_charidx() 595 CheckDefAndScriptFailure2(['charidx(0z10, 1)'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1174: String required for argument 1') 596 CheckDefAndScriptFailure2(['charidx("a", "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 597 CheckDefAndScriptFailure2(['charidx("a", 1, "")'], 'E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3') 598enddef 599 600def Test_chdir() 601 assert_fails('chdir(true)', 'E1174:') 602enddef 603 604def Test_cindent() 605 CheckDefAndScriptFailure2(['cindent([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 606 CheckDefAndScriptFailure2(['cindent(null)'], 'E1013: Argument 1: type mismatch, expected string but got special', 'E1220: String or Number required for argument 1') 607 CheckDefExecAndScriptFailure(['cindent("")'], 'E1209: Invalid value for a line number') 608 assert_equal(-1, cindent(0)) 609 assert_equal(0, cindent('.')) 610enddef 611 612def Test_clearmatches() 613 CheckDefAndScriptFailure2(['clearmatches("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 614enddef 615 616def Test_col() 617 new 618 setline(1, 'abcdefgh') 619 cursor(1, 4) 620 assert_equal(4, col('.')) 621 col([1, '$'])->assert_equal(9) 622 assert_equal(0, col([10, '$'])) 623 624 assert_fails('col(true)', 'E1222:') 625 626 CheckDefAndScriptFailure2(['col(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1222: String or List required for argument 1') 627 CheckDefAndScriptFailure2(['col({a: 10})'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1') 628 CheckDefAndScriptFailure2(['col(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1222: String or List required for argument 1') 629 CheckDefExecAndScriptFailure(['col("")'], 'E1209: Invalid value for a line number') 630 bw! 631enddef 632 633def Test_complete() 634 CheckDefAndScriptFailure2(['complete("1", [])'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 635 CheckDefAndScriptFailure2(['complete(1, {})'], 'E1013: Argument 2: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 2') 636enddef 637 638def Test_complete_add() 639 CheckDefAndScriptFailure2(['complete_add([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1223: String or Dictionary required for argument 1') 640enddef 641 642def Test_complete_info() 643 CheckDefAndScriptFailure2(['complete_info("")'], 'E1013: Argument 1: type mismatch, expected list<string> but got string', 'E1211: List required for argument 1') 644 CheckDefAndScriptFailure2(['complete_info({})'], 'E1013: Argument 1: type mismatch, expected list<string> but got dict<unknown>', 'E1211: List required for argument 1') 645 assert_equal({'pum_visible': 0, 'mode': '', 'selected': -1, 'items': []}, complete_info()) 646 assert_equal({'mode': '', 'items': []}, complete_info(['mode', 'items'])) 647enddef 648 649def Test_confirm() 650 if !has('dialog_con') && !has('dialog_gui') 651 CheckFeature dialog_con 652 endif 653 654 assert_fails('confirm(true)', 'E1174:') 655 assert_fails('confirm("yes", true)', 'E1174:') 656 assert_fails('confirm("yes", "maybe", 2, true)', 'E1174:') 657 CheckDefAndScriptFailure2(['confirm(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 658 CheckDefAndScriptFailure2(['confirm("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 659 CheckDefAndScriptFailure2(['confirm("a", "b", "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 660 CheckDefAndScriptFailure2(['confirm("a", "b", 3, 4)'], 'E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4') 661enddef 662 663def Test_copy_return_type() 664 var l = copy([1, 2, 3]) 665 var res = 0 666 for n in l 667 res += n 668 endfor 669 res->assert_equal(6) 670 671 var dl = deepcopy([1, 2, 3]) 672 res = 0 673 for n in dl 674 res += n 675 endfor 676 res->assert_equal(6) 677 678 dl = deepcopy([1, 2, 3], true) 679enddef 680 681def Test_count() 682 count('ABC ABC ABC', 'b', true)->assert_equal(3) 683 count('ABC ABC ABC', 'b', false)->assert_equal(0) 684 CheckDefAndScriptFailure2(['count(10, 1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1225: String, List or Dictionary required for argument 1') 685 CheckDefAndScriptFailure2(['count("a", [1], 2)'], 'E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3') 686 CheckDefAndScriptFailure2(['count("a", [1], 0, "b")'], 'E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4') 687 count([1, 2, 2, 3], 2)->assert_equal(2) 688 count([1, 2, 2, 3], 2, false, 2)->assert_equal(1) 689 count({a: 1.1, b: 2.2, c: 1.1}, 1.1)->assert_equal(2) 690enddef 691 692def Test_cscope_connection() 693 CheckFeature cscope 694 assert_equal(0, cscope_connection()) 695 CheckDefAndScriptFailure2(['cscope_connection("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 696 CheckDefAndScriptFailure2(['cscope_connection(1, 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 697 CheckDefAndScriptFailure2(['cscope_connection(1, "b", 3)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 698enddef 699 700def Test_cursor() 701 new 702 setline(1, range(4)) 703 cursor(2, 1) 704 assert_equal(2, getcurpos()[1]) 705 cursor('$', 1) 706 assert_equal(4, getcurpos()[1]) 707 cursor([2, 1]) 708 assert_equal(2, getcurpos()[1]) 709 710 var lines =<< trim END 711 cursor('2', 1) 712 END 713 CheckDefExecAndScriptFailure(lines, 'E1209:') 714 CheckDefAndScriptFailure2(['cursor(0z10, 1)'], 'E1013: Argument 1: type mismatch, expected number but got blob', 'E1224: String, Number or List required for argument 1') 715 CheckDefAndScriptFailure2(['cursor(1, "2")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 716 CheckDefAndScriptFailure2(['cursor(1, 2, "3")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 717 CheckDefExecAndScriptFailure(['cursor("", 2)'], 'E1209: Invalid value for a line number') 718enddef 719 720def Test_debugbreak() 721 CheckMSWindows 722 CheckDefAndScriptFailure2(['debugbreak("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 723enddef 724 725def Test_deepcopy() 726 CheckDefAndScriptFailure2(['deepcopy({}, 2)'], 'E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2') 727enddef 728 729def Test_delete() 730 var res: bool = delete('doesnotexist') 731 assert_equal(true, res) 732 733 CheckDefAndScriptFailure2(['delete(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 734 CheckDefAndScriptFailure2(['delete("a", 10)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 735 CheckDefExecAndScriptFailure(['delete("")'], 'E474: Invalid argument') 736enddef 737 738def Test_deletebufline() 739 CheckDefAndScriptFailure2(['deletebufline([], 2)'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 740 CheckDefAndScriptFailure2(['deletebufline("a", [])'], 'E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 2') 741 CheckDefAndScriptFailure2(['deletebufline("a", 2, 0z10)'], 'E1013: Argument 3: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 3') 742enddef 743 744def Test_diff_filler() 745 CheckDefAndScriptFailure2(['diff_filler([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 746 CheckDefAndScriptFailure2(['diff_filler(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1') 747 CheckDefExecAndScriptFailure(['diff_filler("")'], 'E1209: Invalid value for a line number') 748 assert_equal(0, diff_filler(1)) 749 assert_equal(0, diff_filler('.')) 750enddef 751 752def Test_diff_hlID() 753 CheckDefAndScriptFailure2(['diff_hlID(0z10, 1)'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1') 754 CheckDefAndScriptFailure2(['diff_hlID(1, "a")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 755 CheckDefExecAndScriptFailure(['diff_hlID("", 10)'], 'E1209: Invalid value for a line number') 756enddef 757 758def Test_digraph_get() 759 CheckDefAndScriptFailure2(['digraph_get(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 760 CheckDefExecAndScriptFailure(['digraph_get("")'], 'E1214: Digraph must be just two characters') 761enddef 762 763def Test_digraph_getlist() 764 CheckDefAndScriptFailure2(['digraph_getlist(10)'], 'E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1') 765 CheckDefAndScriptFailure2(['digraph_getlist("")'], 'E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1') 766enddef 767 768def Test_digraph_set() 769 CheckDefAndScriptFailure2(['digraph_set(10, "a")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 770 CheckDefAndScriptFailure2(['digraph_set("ab", 0z10)'], 'E1013: Argument 2: type mismatch, expected string but got blob', 'E1174: String required for argument 2') 771 CheckDefExecAndScriptFailure(['digraph_set("", "a")'], 'E1214: Digraph must be just two characters') 772enddef 773 774def Test_digraph_setlist() 775 CheckDefAndScriptFailure2(['digraph_setlist("a")'], 'E1013: Argument 1: type mismatch, expected list<string> but got string', 'E1216: digraph_setlist() argument must be a list of lists with two items') 776 CheckDefAndScriptFailure2(['digraph_setlist({})'], 'E1013: Argument 1: type mismatch, expected list<string> but got dict<unknown>', 'E1216: digraph_setlist() argument must be a list of lists with two items') 777enddef 778 779def Test_echoraw() 780 CheckDefAndScriptFailure2(['echoraw(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 781 CheckDefAndScriptFailure2(['echoraw(["x"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1') 782enddef 783 784def Test_escape() 785 CheckDefAndScriptFailure2(['escape(10, " ")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 786 CheckDefAndScriptFailure2(['escape(true, false)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1') 787 CheckDefAndScriptFailure2(['escape("a", 10)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 788 assert_equal('a\:b', escape("a:b", ":")) 789enddef 790 791def Test_eval() 792 CheckDefAndScriptFailure2(['eval(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 793 CheckDefAndScriptFailure2(['eval(null)'], 'E1013: Argument 1: type mismatch, expected string but got special', 'E1174: String required for argument 1') 794 CheckDefExecAndScriptFailure(['eval("")'], 'E15: Invalid expression') 795 assert_equal(2, eval('1 + 1')) 796enddef 797 798def Test_executable() 799 assert_false(executable("")) 800 assert_false(executable(test_null_string())) 801 802 CheckDefExecFailure(['echo executable(123)'], 'E1013:') 803 CheckDefExecFailure(['echo executable(true)'], 'E1013:') 804enddef 805 806def Test_execute() 807 var res = execute("echo 'hello'") 808 assert_equal("\nhello", res) 809 res = execute(["echo 'here'", "echo 'there'"]) 810 assert_equal("\nhere\nthere", res) 811 812 CheckDefAndScriptFailure2(['execute(123)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1222: String or List required for argument 1') 813 CheckDefFailure(['execute([123])'], 'E1013: Argument 1: type mismatch, expected list<string> but got list<number>') 814 CheckDefExecFailure(['echo execute(["xx", 123])'], 'E492') 815 CheckDefAndScriptFailure2(['execute("xx", 123)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 816enddef 817 818def Test_exepath() 819 CheckDefExecFailure(['echo exepath(true)'], 'E1013:') 820 CheckDefExecFailure(['echo exepath(v:null)'], 'E1013:') 821 CheckDefExecFailure(['echo exepath("")'], 'E1175:') 822enddef 823 824command DoSomeCommand let g:didSomeCommand = 4 825 826def Test_exists() 827 CheckDefAndScriptFailure2(['exists(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 828 call assert_equal(1, exists('&tabstop')) 829 830 var lines =<< trim END 831 if exists('+newoption') 832 if &newoption == 'ok' 833 endif 834 endif 835 END 836 CheckDefFailure(lines, 'E113:') 837 CheckScriptSuccess(lines) 838enddef 839 840def Test_exists_compiled() 841 call assert_equal(1, exists_compiled('&tabstop')) 842 CheckDefAndScriptFailure2(['exists_compiled(10)'], 'E1232:', 'E1233:') 843 CheckDefAndScriptFailure2(['exists_compiled(v:progname)'], 'E1232:', 'E1233:') 844 845 if exists_compiled('+newoption') 846 if &newoption == 'ok' 847 endif 848 endif 849 if exists_compiled('&newoption') 850 if &newoption == 'ok' 851 endif 852 endif 853 if exists_compiled('+tabstop') 854 assert_equal(8, &tabstop) 855 else 856 assert_report('tabstop option not existing?') 857 endif 858 if exists_compiled('&tabstop') 859 assert_equal(8, &tabstop) 860 else 861 assert_report('tabstop option not existing?') 862 endif 863 864 if exists_compiled(':DoSomeCommand') >= 2 865 DoSomeCommand 866 endif 867 assert_equal(4, g:didSomeCommand) 868 if exists_compiled(':NoSuchCommand') >= 2 869 NoSuchCommand 870 endif 871 872 var found = false 873 if exists_compiled('*CheckScriptSuccess') 874 found = true 875 endif 876 assert_true(found) 877 if exists_compiled('*NoSuchFunction') 878 NoSuchFunction() 879 endif 880 if exists_compiled('*no_such_function') 881 no_such_function() 882 endif 883enddef 884 885def Test_expand() 886 split SomeFile 887 expand('%', true, true)->assert_equal(['SomeFile']) 888 close 889 CheckDefAndScriptFailure2(['expand(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 890 CheckDefAndScriptFailure2(['expand("a", 2)'], 'E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2') 891 CheckDefAndScriptFailure2(['expand("a", true, 2)'], 'E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3') 892enddef 893 894def Test_expandcmd() 895 $FOO = "blue" 896 assert_equal("blue sky", expandcmd("`=$FOO .. ' sky'`")) 897 898 assert_equal("yes", expandcmd("`={a: 'yes'}['a']`")) 899enddef 900 901def Test_extend_arg_types() 902 g:number_one = 1 903 g:string_keep = 'keep' 904 var lines =<< trim END 905 assert_equal([1, 2, 3], extend([1, 2], [3])) 906 assert_equal([3, 1, 2], extend([1, 2], [3], 0)) 907 assert_equal([1, 3, 2], extend([1, 2], [3], 1)) 908 assert_equal([1, 3, 2], extend([1, 2], [3], g:number_one)) 909 910 assert_equal({a: 1, b: 2, c: 3}, extend({a: 1, b: 2}, {c: 3})) 911 assert_equal({a: 1, b: 4}, extend({a: 1, b: 2}, {b: 4})) 912 assert_equal({a: 1, b: 2}, extend({a: 1, b: 2}, {b: 4}, 'keep')) 913 assert_equal({a: 1, b: 2}, extend({a: 1, b: 2}, {b: 4}, g:string_keep)) 914 915 var res: list<dict<any>> 916 extend(res, mapnew([1, 2], (_, v) => ({}))) 917 assert_equal([{}, {}], res) 918 END 919 CheckDefAndScriptSuccess(lines) 920 921 CheckDefAndScriptFailure2(['extend("a", 1)'], 'E1013: Argument 1: type mismatch, expected list<any> but got string', 'E712: Argument of extend() must be a List or Dictionary') 922 CheckDefAndScriptFailure2(['extend([1, 2], 3)'], 'E1013: Argument 2: type mismatch, expected list<number> but got number', 'E712: Argument of extend() must be a List or Dictionary') 923 CheckDefAndScriptFailure2(['extend([1, 2], ["x"])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>', 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>') 924 CheckDefFailure(['extend([1, 2], [3], "x")'], 'E1013: Argument 3: type mismatch, expected number but got string') 925 926 CheckDefFailure(['extend({a: 1}, 42)'], 'E1013: Argument 2: type mismatch, expected dict<number> but got number') 927 CheckDefFailure(['extend({a: 1}, {b: "x"})'], 'E1013: Argument 2: type mismatch, expected dict<number> but got dict<string>') 928 CheckDefFailure(['extend({a: 1}, {b: 2}, 1)'], 'E1013: Argument 3: type mismatch, expected string but got number') 929 930 CheckDefFailure(['extend([1], ["b"])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>') 931 CheckDefExecFailure(['extend([1], ["b", 1])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<any>') 932 933 CheckScriptFailure(['vim9script', 'extend([1], ["b", 1])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<any> in extend()') 934enddef 935 936func g:ExtendDict(d) 937 call extend(a:d, #{xx: 'x'}) 938endfunc 939 940def Test_extend_dict_item_type() 941 var lines =<< trim END 942 var d: dict<number> = {a: 1} 943 extend(d, {b: 2}) 944 END 945 CheckDefAndScriptSuccess(lines) 946 947 lines =<< trim END 948 var d: dict<number> = {a: 1} 949 extend(d, {b: 'x'}) 950 END 951 CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected dict<number> but got dict<string>', 2) 952 953 lines =<< trim END 954 var d: dict<number> = {a: 1} 955 g:ExtendDict(d) 956 END 957 CheckDefExecFailure(lines, 'E1012: Type mismatch; expected number but got string', 0) 958 CheckScriptFailure(['vim9script'] + lines, 'E1012:', 1) 959 960 lines =<< trim END 961 var d: dict<bool> 962 extend(d, {b: 0}) 963 END 964 CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected dict<bool> but got dict<number>', 2) 965enddef 966 967func g:ExtendList(l) 968 call extend(a:l, ['x']) 969endfunc 970 971def Test_extend_list_item_type() 972 var lines =<< trim END 973 var l: list<number> = [1] 974 extend(l, [2]) 975 END 976 CheckDefAndScriptSuccess(lines) 977 978 lines =<< trim END 979 var l: list<number> = [1] 980 extend(l, ['x']) 981 END 982 CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>', 2) 983 984 lines =<< trim END 985 var l: list<number> = [1] 986 g:ExtendList(l) 987 END 988 CheckDefExecFailure(lines, 'E1012: Type mismatch; expected number but got string', 0) 989 CheckScriptFailure(['vim9script'] + lines, 'E1012:', 1) 990 991 lines =<< trim END 992 var l: list<bool> 993 extend(l, [0]) 994 END 995 CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected list<bool> but got list<number>', 2) 996enddef 997 998def Test_extend_return_type() 999 var l = extend([1, 2], [3]) 1000 var res = 0 1001 for n in l 1002 res += n 1003 endfor 1004 res->assert_equal(6) 1005enddef 1006 1007def Test_extend_with_error_function() 1008 var lines =<< trim END 1009 vim9script 1010 def F() 1011 { 1012 var m = 10 1013 } 1014 echo m 1015 enddef 1016 1017 def Test() 1018 var d: dict<any> = {} 1019 d->extend({A: 10, Func: function('F', [])}) 1020 enddef 1021 1022 Test() 1023 END 1024 CheckScriptFailure(lines, 'E1001: Variable not found: m') 1025enddef 1026 1027def Test_extendnew() 1028 assert_equal([1, 2, 'a'], extendnew([1, 2], ['a'])) 1029 assert_equal({one: 1, two: 'a'}, extendnew({one: 1}, {two: 'a'})) 1030 1031 CheckDefAndScriptFailure2(['extendnew({a: 1}, 42)'], 'E1013: Argument 2: type mismatch, expected dict<number> but got number', 'E712: Argument of extendnew() must be a List or Dictionary') 1032 CheckDefAndScriptFailure2(['extendnew({a: 1}, [42])'], 'E1013: Argument 2: type mismatch, expected dict<number> but got list<number>', 'E712: Argument of extendnew() must be a List or Dictionary') 1033 CheckDefAndScriptFailure2(['extendnew([1, 2], "x")'], 'E1013: Argument 2: type mismatch, expected list<number> but got string', 'E712: Argument of extendnew() must be a List or Dictionary') 1034 CheckDefAndScriptFailure2(['extendnew([1, 2], {x: 1})'], 'E1013: Argument 2: type mismatch, expected list<number> but got dict<number>', 'E712: Argument of extendnew() must be a List or Dictionary') 1035enddef 1036 1037def Test_feedkeys() 1038 CheckDefAndScriptFailure2(['feedkeys(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1039 CheckDefAndScriptFailure2(['feedkeys("x", 10)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 1040 CheckDefAndScriptFailure2(['feedkeys([], {})'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1') 1041 g:TestVar = 1 1042 feedkeys(":g:TestVar = 789\n", 'xt') 1043 assert_equal(789, g:TestVar) 1044 unlet g:TestVar 1045enddef 1046 1047def Test_filereadable() 1048 assert_false(filereadable("")) 1049 assert_false(filereadable(test_null_string())) 1050 1051 CheckDefExecFailure(['echo filereadable(123)'], 'E1013:') 1052 CheckDefExecFailure(['echo filereadable(true)'], 'E1013:') 1053enddef 1054 1055def Test_filewritable() 1056 assert_false(filewritable("")) 1057 assert_false(filewritable(test_null_string())) 1058 1059 CheckDefExecFailure(['echo filewritable(123)'], 'E1013:') 1060 CheckDefExecFailure(['echo filewritable(true)'], 'E1013:') 1061enddef 1062 1063def Test_finddir() 1064 mkdir('Xtestdir') 1065 finddir('Xtestdir', '**', -1)->assert_equal(['Xtestdir']) 1066 var lines =<< trim END 1067 var l: list<string> = finddir('nothing', '*;', -1) 1068 END 1069 CheckDefAndScriptSuccess(lines) 1070 delete('Xtestdir', 'rf') 1071 1072 CheckDefAndScriptFailure2(['finddir(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1') 1073 CheckDefAndScriptFailure2(['finddir(v:null)'], 'E1013: Argument 1: type mismatch, expected string but got special', 'E1174: String required for argument 1') 1074 CheckDefExecFailure(['echo finddir("")'], 'E1175:') 1075 CheckDefAndScriptFailure2(['finddir("a", [])'], 'E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2') 1076 CheckDefAndScriptFailure2(['finddir("a", "b", "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 1077enddef 1078 1079def Test_findfile() 1080 findfile('runtest.vim', '**', -1)->assert_equal(['runtest.vim']) 1081 var lines =<< trim END 1082 var l: list<string> = findfile('nothing', '*;', -1) 1083 END 1084 CheckDefAndScriptSuccess(lines) 1085 1086 CheckDefExecFailure(['findfile(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool') 1087 CheckDefExecFailure(['findfile(v:null)'], 'E1013: Argument 1: type mismatch, expected string but got special') 1088 CheckDefExecFailure(['findfile("")'], 'E1175:') 1089 CheckDefAndScriptFailure2(['findfile("a", [])'], 'E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2') 1090 CheckDefAndScriptFailure2(['findfile("a", "b", "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 1091enddef 1092 1093def Test_flattennew() 1094 var lines =<< trim END 1095 var l = [1, [2, [3, 4]], 5] 1096 call assert_equal([1, 2, 3, 4, 5], flattennew(l)) 1097 call assert_equal([1, [2, [3, 4]], 5], l) 1098 1099 call assert_equal([1, 2, [3, 4], 5], flattennew(l, 1)) 1100 call assert_equal([1, [2, [3, 4]], 5], l) 1101 END 1102 CheckDefAndScriptSuccess(lines) 1103 1104 lines =<< trim END 1105 echo flatten([1, 2, 3]) 1106 END 1107 CheckDefAndScriptFailure(lines, 'E1158:') 1108 CheckDefAndScriptFailure2(['flattennew({})'], 'E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 1') 1109 CheckDefAndScriptFailure2(['flattennew([], "1")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 1110enddef 1111 1112" Test for float functions argument type 1113def Test_float_funcs_args() 1114 CheckFeature float 1115 1116 # acos() 1117 CheckDefAndScriptFailure2(['acos("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 1118 # asin() 1119 CheckDefAndScriptFailure2(['asin("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 1120 # atan() 1121 CheckDefAndScriptFailure2(['atan("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 1122 # atan2() 1123 CheckDefAndScriptFailure2(['atan2("a", 1.1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 1124 CheckDefAndScriptFailure2(['atan2(1.2, "a")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 2') 1125 CheckDefAndScriptFailure2(['atan2(1.2)'], 'E119:', 'E119:') 1126 # ceil() 1127 CheckDefAndScriptFailure2(['ceil("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 1128 # cos() 1129 CheckDefAndScriptFailure2(['cos("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 1130 # cosh() 1131 CheckDefAndScriptFailure2(['cosh("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 1132 # exp() 1133 CheckDefAndScriptFailure2(['exp("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 1134 # float2nr() 1135 CheckDefAndScriptFailure2(['float2nr("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 1136 # floor() 1137 CheckDefAndScriptFailure2(['floor("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 1138 # fmod() 1139 CheckDefAndScriptFailure2(['fmod(1.1, "a")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 2') 1140 CheckDefAndScriptFailure2(['fmod("a", 1.1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 1141 CheckDefAndScriptFailure2(['fmod(1.1)'], 'E119:', 'E119:') 1142 # isinf() 1143 CheckDefAndScriptFailure2(['isinf("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 1144 # isnan() 1145 CheckDefAndScriptFailure2(['isnan("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 1146 # log() 1147 CheckDefAndScriptFailure2(['log("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 1148 # log10() 1149 CheckDefAndScriptFailure2(['log10("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 1150 # pow() 1151 CheckDefAndScriptFailure2(['pow("a", 1.1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 1152 CheckDefAndScriptFailure2(['pow(1.1, "a")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 2') 1153 CheckDefAndScriptFailure2(['pow(1.1)'], 'E119:', 'E119:') 1154 # round() 1155 CheckDefAndScriptFailure2(['round("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 1156 # sin() 1157 CheckDefAndScriptFailure2(['sin("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 1158 # sinh() 1159 CheckDefAndScriptFailure2(['sinh("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 1160 # sqrt() 1161 CheckDefAndScriptFailure2(['sqrt("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 1162 # tan() 1163 CheckDefAndScriptFailure2(['tan("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 1164 # tanh() 1165 CheckDefAndScriptFailure2(['tanh("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 1166 # trunc() 1167 CheckDefAndScriptFailure2(['trunc("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 1168enddef 1169 1170def Test_fnameescape() 1171 CheckDefAndScriptFailure2(['fnameescape(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1172 assert_equal('\+a\%b\|', fnameescape('+a%b|')) 1173enddef 1174 1175def Test_fnamemodify() 1176 CheckDefSuccess(['echo fnamemodify(test_null_string(), ":p")']) 1177 CheckDefSuccess(['echo fnamemodify("", ":p")']) 1178 CheckDefSuccess(['echo fnamemodify("file", test_null_string())']) 1179 CheckDefSuccess(['echo fnamemodify("file", "")']) 1180 1181 CheckDefExecFailure(['echo fnamemodify(true, ":p")'], 'E1013: Argument 1: type mismatch, expected string but got bool') 1182 CheckDefExecFailure(['echo fnamemodify(v:null, ":p")'], 'E1013: Argument 1: type mismatch, expected string but got special') 1183 CheckDefExecFailure(['echo fnamemodify("file", true)'], 'E1013: Argument 2: type mismatch, expected string but got bool') 1184enddef 1185 1186def Wrong_dict_key_type(items: list<number>): list<number> 1187 return filter(items, (_, val) => get({[val]: 1}, 'x')) 1188enddef 1189 1190def Test_filter() 1191 CheckDefAndScriptFailure2(['filter(1.1, "1")'], 'E1013: Argument 1: type mismatch, expected list<any> but got float', 'E1228: List, Dictionary or Blob required for argument 1') 1192 assert_equal([], filter([1, 2, 3], '0')) 1193 assert_equal([1, 2, 3], filter([1, 2, 3], '1')) 1194 assert_equal({b: 20}, filter({a: 10, b: 20}, 'v:val == 20')) 1195enddef 1196 1197def Test_filter_wrong_dict_key_type() 1198 assert_fails('Wrong_dict_key_type([1, v:null, 3])', 'E1013:') 1199enddef 1200 1201def Test_filter_return_type() 1202 var l = filter([1, 2, 3], (_, _) => 1) 1203 var res = 0 1204 for n in l 1205 res += n 1206 endfor 1207 res->assert_equal(6) 1208enddef 1209 1210def Test_filter_missing_argument() 1211 var dict = {aa: [1], ab: [2], ac: [3], de: [4]} 1212 var res = dict->filter((k, _) => k =~ 'a' && k !~ 'b') 1213 res->assert_equal({aa: [1], ac: [3]}) 1214enddef 1215 1216def Test_foldclosed() 1217 CheckDefAndScriptFailure2(['foldclosed(function("min"))'], 'E1013: Argument 1: type mismatch, expected string but got func(...): any', 'E1220: String or Number required for argument 1') 1218 CheckDefExecAndScriptFailure(['foldclosed("")'], 'E1209: Invalid value for a line number') 1219 assert_equal(-1, foldclosed(1)) 1220 assert_equal(-1, foldclosed('$')) 1221enddef 1222 1223def Test_foldclosedend() 1224 CheckDefAndScriptFailure2(['foldclosedend(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1') 1225 CheckDefExecAndScriptFailure(['foldclosedend("")'], 'E1209: Invalid value for a line number') 1226 assert_equal(-1, foldclosedend(1)) 1227 assert_equal(-1, foldclosedend('w0')) 1228enddef 1229 1230def Test_foldlevel() 1231 CheckDefAndScriptFailure2(['foldlevel(0z10)'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1') 1232 CheckDefExecAndScriptFailure(['foldlevel("")'], 'E1209: Invalid value for a line number') 1233 assert_equal(0, foldlevel(1)) 1234 assert_equal(0, foldlevel('.')) 1235enddef 1236 1237def Test_foldtextresult() 1238 CheckDefAndScriptFailure2(['foldtextresult(1.1)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1') 1239 CheckDefExecAndScriptFailure(['foldtextresult("")'], 'E1209: Invalid value for a line number') 1240 assert_equal('', foldtextresult(1)) 1241 assert_equal('', foldtextresult('.')) 1242enddef 1243 1244def Test_fullcommand() 1245 assert_equal('next', fullcommand('n')) 1246 assert_equal('noremap', fullcommand('no')) 1247 assert_equal('noremap', fullcommand('nor')) 1248 assert_equal('normal', fullcommand('norm')) 1249 1250 assert_equal('', fullcommand('k')) 1251 assert_equal('keepmarks', fullcommand('ke')) 1252 assert_equal('keepmarks', fullcommand('kee')) 1253 assert_equal('keepmarks', fullcommand('keep')) 1254 assert_equal('keepjumps', fullcommand('keepj')) 1255 1256 assert_equal('dlist', fullcommand('dl')) 1257 assert_equal('', fullcommand('dp')) 1258 assert_equal('delete', fullcommand('del')) 1259 assert_equal('', fullcommand('dell')) 1260 assert_equal('', fullcommand('delp')) 1261 1262 assert_equal('srewind', fullcommand('sre')) 1263 assert_equal('scriptnames', fullcommand('scr')) 1264 assert_equal('', fullcommand('scg')) 1265enddef 1266 1267def Test_funcref() 1268 CheckDefAndScriptFailure2(['funcref("reverse", 2)'], 'E1013: Argument 2: type mismatch, expected list<any> but got number', 'E1211: List required for argument 2') 1269 CheckDefAndScriptFailure2(['funcref("reverse", [2], [1])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3') 1270enddef 1271 1272def Test_function() 1273 CheckDefAndScriptFailure2(['function("reverse", 2)'], 'E1013: Argument 2: type mismatch, expected list<any> but got number', 'E1211: List required for argument 2') 1274 CheckDefAndScriptFailure2(['function("reverse", [2], [1])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3') 1275enddef 1276 1277def Test_garbagecollect() 1278 garbagecollect(true) 1279 CheckDefAndScriptFailure2(['garbagecollect("1")'], 'E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1') 1280 CheckDefAndScriptFailure2(['garbagecollect(20)'], 'E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1') 1281enddef 1282 1283def Test_get() 1284 CheckDefAndScriptFailure2(['get("a", 1)'], 'E1013: Argument 1: type mismatch, expected list<any> but got string', 'E896: Argument of get() must be a List, Dictionary or Blob') 1285 [3, 5, 2]->get(1)->assert_equal(5) 1286 [3, 5, 2]->get(3)->assert_equal(0) 1287 [3, 5, 2]->get(3, 9)->assert_equal(9) 1288 assert_equal(get(0z102030, 2), 0x30) 1289 {a: 7, b: 11, c: 13}->get('c')->assert_equal(13) 1290 {10: 'a', 20: 'b', 30: 'd'}->get(20)->assert_equal('b') 1291 function('max')->get('name')->assert_equal('max') 1292 var F: func = function('min', [[5, 8, 6]]) 1293 F->get('name')->assert_equal('min') 1294 F->get('args')->assert_equal([[5, 8, 6]]) 1295 1296 var lines =<< trim END 1297 vim9script 1298 def DoThat(): number 1299 var Getqflist: func = function('getqflist', [{id: 42}]) 1300 return Getqflist()->get('id', 77) 1301 enddef 1302 assert_equal(0, DoThat()) 1303 END 1304 CheckScriptSuccess(lines) 1305enddef 1306 1307def Test_getbufinfo() 1308 var bufinfo = getbufinfo(bufnr()) 1309 getbufinfo('%')->assert_equal(bufinfo) 1310 1311 edit Xtestfile1 1312 hide edit Xtestfile2 1313 hide enew 1314 getbufinfo({bufloaded: true, buflisted: true, bufmodified: false}) 1315 ->len()->assert_equal(3) 1316 bwipe Xtestfile1 Xtestfile2 1317 CheckDefAndScriptFailure2(['getbufinfo(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1') 1318enddef 1319 1320def Test_getbufline() 1321 e SomeFile 1322 var buf = bufnr() 1323 sp Otherfile 1324 var lines = ['aaa', 'bbb', 'ccc'] 1325 setbufline(buf, 1, lines) 1326 getbufline('#', 1, '$')->assert_equal(lines) 1327 getbufline(-1, '$', '$')->assert_equal([]) 1328 getbufline(-1, 1, '$')->assert_equal([]) 1329 1330 bwipe! 1331 CheckDefAndScriptFailure2(['getbufline([], 2)'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 1332 CheckDefAndScriptFailure2(['getbufline("a", [])'], 'E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 2') 1333 CheckDefAndScriptFailure2(['getbufline("a", 2, 0z10)'], 'E1013: Argument 3: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 3') 1334enddef 1335 1336def Test_getbufvar() 1337 CheckDefAndScriptFailure2(['getbufvar(true, "v")'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1') 1338 CheckDefAndScriptFailure2(['getbufvar(1, 2, 3)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 1339enddef 1340 1341def Test_getchangelist() 1342 new 1343 setline(1, 'some text') 1344 var changelist = bufnr()->getchangelist() 1345 getchangelist('%')->assert_equal(changelist) 1346 bwipe! 1347enddef 1348 1349def Test_getchar() 1350 while getchar(0) 1351 endwhile 1352 getchar(true)->assert_equal(0) 1353 getchar(1)->assert_equal(0) 1354 CheckDefAndScriptFailure2(['getchar(2)'], 'E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1') 1355 CheckDefAndScriptFailure2(['getchar("1")'], 'E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1') 1356enddef 1357 1358def Test_getcharpos() 1359 CheckDefAndScriptFailure2(['getcharpos(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1') 1360 CheckDefAndScriptFailure2(['getcharpos(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1361 CheckDefExecAndScriptFailure(['getcharpos("")'], 'E1209: Invalid value for a line number') 1362enddef 1363 1364def Test_getcharstr() 1365 CheckDefAndScriptFailure2(['getcharstr(2)'], 'E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1') 1366 CheckDefAndScriptFailure2(['getcharstr("1")'], 'E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1') 1367enddef 1368 1369def Test_getcompletion() 1370 set wildignore=*.vim,*~ 1371 var l = getcompletion('run', 'file', true) 1372 l->assert_equal([]) 1373 set wildignore& 1374 CheckDefAndScriptFailure2(['getcompletion(1, "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1375 CheckDefAndScriptFailure2(['getcompletion("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 1376 CheckDefAndScriptFailure2(['getcompletion("a", "b", 2)'], 'E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3') 1377 CheckDefExecAndScriptFailure(['getcompletion("a", "")'], 'E475: Invalid argument') 1378 getcompletion('', 'messages')->assert_equal(['clear']) 1379enddef 1380 1381def Test_getcurpos() 1382 CheckDefAndScriptFailure2(['getcurpos("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 1383enddef 1384 1385def Test_getcursorcharpos() 1386 CheckDefAndScriptFailure2(['getcursorcharpos("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 1387enddef 1388 1389def Test_getcwd() 1390 CheckDefAndScriptFailure2(['getcwd("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 1391 CheckDefAndScriptFailure2(['getcwd("x", 1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 1392 CheckDefAndScriptFailure2(['getcwd(1, "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 1393enddef 1394 1395def Test_getenv() 1396 if getenv('does-not_exist') == '' 1397 assert_report('getenv() should return null') 1398 endif 1399 if getenv('does-not_exist') == null 1400 else 1401 assert_report('getenv() should return null') 1402 endif 1403 $SOMEENVVAR = 'some' 1404 assert_equal('some', getenv('SOMEENVVAR')) 1405 unlet $SOMEENVVAR 1406enddef 1407 1408def Test_getfontname() 1409 CheckDefAndScriptFailure2(['getfontname(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1410enddef 1411 1412def Test_getfperm() 1413 assert_equal('', getfperm("")) 1414 assert_equal('', getfperm(test_null_string())) 1415 1416 CheckDefExecFailure(['echo getfperm(true)'], 'E1013:') 1417 CheckDefExecFailure(['echo getfperm(v:null)'], 'E1013:') 1418enddef 1419 1420def Test_getfsize() 1421 assert_equal(-1, getfsize("")) 1422 assert_equal(-1, getfsize(test_null_string())) 1423 1424 CheckDefExecFailure(['echo getfsize(true)'], 'E1013:') 1425 CheckDefExecFailure(['echo getfsize(v:null)'], 'E1013:') 1426enddef 1427 1428def Test_getftime() 1429 assert_equal(-1, getftime("")) 1430 assert_equal(-1, getftime(test_null_string())) 1431 1432 CheckDefExecFailure(['echo getftime(true)'], 'E1013:') 1433 CheckDefExecFailure(['echo getftime(v:null)'], 'E1013:') 1434enddef 1435 1436def Test_getftype() 1437 assert_equal('', getftype("")) 1438 assert_equal('', getftype(test_null_string())) 1439 1440 CheckDefExecFailure(['echo getftype(true)'], 'E1013:') 1441 CheckDefExecFailure(['echo getftype(v:null)'], 'E1013:') 1442enddef 1443 1444def Test_getjumplist() 1445 CheckDefAndScriptFailure2(['getjumplist("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 1446 CheckDefAndScriptFailure2(['getjumplist("x", 1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 1447 CheckDefAndScriptFailure2(['getjumplist(1, "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 1448enddef 1449 1450def Test_getline() 1451 var lines =<< trim END 1452 new 1453 setline(1, ['hello', 'there', 'again']) 1454 assert_equal('hello', getline(1)) 1455 assert_equal('hello', getline('.')) 1456 1457 normal 2Gvjv 1458 assert_equal('there', getline("'<")) 1459 assert_equal('again', getline("'>")) 1460 END 1461 CheckDefAndScriptSuccess(lines) 1462 1463 lines =<< trim END 1464 echo getline('1') 1465 END 1466 CheckDefExecAndScriptFailure(lines, 'E1209:') 1467 CheckDefAndScriptFailure2(['getline(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1') 1468 CheckDefAndScriptFailure2(['getline(1, true)'], 'E1013: Argument 2: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 2') 1469 CheckDefExecAndScriptFailure(['getline("")'], 'E1209: Invalid value for a line number') 1470enddef 1471 1472def Test_getloclist() 1473 CheckDefAndScriptFailure2(['getloclist("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 1474 CheckDefAndScriptFailure2(['getloclist(1, [])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2') 1475enddef 1476 1477def Test_getloclist_return_type() 1478 var l = getloclist(1) 1479 l->assert_equal([]) 1480 1481 var d = getloclist(1, {items: 0}) 1482 d->assert_equal({items: []}) 1483enddef 1484 1485def Test_getmarklist() 1486 CheckDefAndScriptFailure2(['getmarklist([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 1487 assert_equal([], getmarklist(10000)) 1488 assert_fails('getmarklist("a%b@#")', 'E94:') 1489enddef 1490 1491def Test_getmatches() 1492 CheckDefAndScriptFailure2(['getmatches("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 1493enddef 1494 1495def Test_getpos() 1496 CheckDefAndScriptFailure2(['getpos(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1497 assert_equal([0, 1, 1, 0], getpos('.')) 1498 CheckDefExecFailure(['getpos("a")'], 'E1209:') 1499 CheckDefExecAndScriptFailure(['getpos("")'], 'E1209: Invalid value for a line number') 1500enddef 1501 1502def Test_getqflist() 1503 CheckDefAndScriptFailure2(['getqflist([])'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1') 1504 call assert_equal({}, getqflist({})) 1505enddef 1506 1507def Test_getqflist_return_type() 1508 var l = getqflist() 1509 l->assert_equal([]) 1510 1511 var d = getqflist({items: 0}) 1512 d->assert_equal({items: []}) 1513enddef 1514 1515def Test_getreg() 1516 var lines = ['aaa', 'bbb', 'ccc'] 1517 setreg('a', lines) 1518 getreg('a', true, true)->assert_equal(lines) 1519 assert_fails('getreg("ab")', 'E1162:') 1520 CheckDefAndScriptFailure2(['getreg(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1521 CheckDefAndScriptFailure2(['getreg(".", 2)'], 'E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2') 1522 CheckDefAndScriptFailure2(['getreg(".", 1, "b")'], 'E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3') 1523enddef 1524 1525def Test_getreg_return_type() 1526 var s1: string = getreg('"') 1527 var s2: string = getreg('"', 1) 1528 var s3: list<string> = getreg('"', 1, 1) 1529enddef 1530 1531def Test_getreginfo() 1532 var text = 'abc' 1533 setreg('a', text) 1534 getreginfo('a')->assert_equal({regcontents: [text], regtype: 'v', isunnamed: false}) 1535 assert_fails('getreginfo("ab")', 'E1162:') 1536enddef 1537 1538def Test_getregtype() 1539 var lines = ['aaa', 'bbb', 'ccc'] 1540 setreg('a', lines) 1541 getregtype('a')->assert_equal('V') 1542 assert_fails('getregtype("ab")', 'E1162:') 1543enddef 1544 1545def Test_gettabinfo() 1546 CheckDefAndScriptFailure2(['gettabinfo("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 1547enddef 1548 1549def Test_gettabvar() 1550 CheckDefAndScriptFailure2(['gettabvar("a", "b")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 1551 CheckDefAndScriptFailure2(['gettabvar(1, 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 1552enddef 1553 1554def Test_gettabwinvar() 1555 CheckDefAndScriptFailure2(['gettabwinvar("a", 2, "c")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 1556 CheckDefAndScriptFailure2(['gettabwinvar(1, "b", "c", [])'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 1557 CheckDefAndScriptFailure2(['gettabwinvar(1, 1, 3, {})'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 1558enddef 1559 1560def Test_gettagstack() 1561 CheckDefAndScriptFailure2(['gettagstack("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 1562enddef 1563 1564def Test_gettext() 1565 CheckDefAndScriptFailure2(['gettext(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1566 CheckDefExecAndScriptFailure(['gettext("")'], 'E475: Invalid argument') 1567 assert_equal('abc', gettext("abc")) 1568enddef 1569 1570def Test_getwininfo() 1571 CheckDefAndScriptFailure2(['getwininfo("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 1572enddef 1573 1574def Test_getwinpos() 1575 CheckDefAndScriptFailure2(['getwinpos("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 1576enddef 1577 1578def Test_getwinvar() 1579 CheckDefAndScriptFailure2(['getwinvar("a", "b")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 1580 CheckDefAndScriptFailure2(['getwinvar(1, 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 1581enddef 1582 1583def Test_glob() 1584 glob('runtest.vim', true, true, true)->assert_equal(['runtest.vim']) 1585 CheckDefAndScriptFailure2(['glob(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1586 CheckDefAndScriptFailure2(['glob("a", 2)'], 'E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2') 1587 CheckDefAndScriptFailure2(['glob("a", 1, "b")'], 'E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3') 1588 CheckDefAndScriptFailure2(['glob("a", 1, true, 2)'], 'E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4') 1589enddef 1590 1591def Test_glob2regpat() 1592 CheckDefAndScriptFailure2(['glob2regpat(null)'], 'E1013: Argument 1: type mismatch, expected string but got special', 'E1174: String required for argument 1') 1593 assert_equal('^$', glob2regpat('')) 1594enddef 1595 1596def Test_globpath() 1597 globpath('.', 'runtest.vim', true, true, true)->assert_equal(['./runtest.vim']) 1598 CheckDefAndScriptFailure2(['globpath(1, "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1599 CheckDefAndScriptFailure2(['globpath("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 1600 CheckDefAndScriptFailure2(['globpath("a", "b", "c")'], 'E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3') 1601 CheckDefAndScriptFailure2(['globpath("a", "b", true, "d")'], 'E1013: Argument 4: type mismatch, expected bool but got string', 'E1212: Bool required for argument 4') 1602 CheckDefAndScriptFailure2(['globpath("a", "b", true, false, "e")'], 'E1013: Argument 5: type mismatch, expected bool but got string', 'E1212: Bool required for argument 5') 1603enddef 1604 1605def Test_has() 1606 has('eval', true)->assert_equal(1) 1607 CheckDefAndScriptFailure2(['has(["a"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1') 1608 CheckDefAndScriptFailure2(['has("a", "b")'], 'E1013: Argument 2: type mismatch, expected bool but got string', 'E1212: Bool required for argument 2') 1609enddef 1610 1611def Test_has_key() 1612 var d = {123: 'xx'} 1613 assert_true(has_key(d, '123')) 1614 assert_true(has_key(d, 123)) 1615 assert_false(has_key(d, 'x')) 1616 assert_false(has_key(d, 99)) 1617 1618 CheckDefAndScriptFailure2(['has_key([1, 2], "k")'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 1') 1619 CheckDefAndScriptFailure2(['has_key({"a": 10}, ["a"])'], 'E1013: Argument 2: type mismatch, expected string but got list<string>', 'E1220: String or Number required for argument 2') 1620enddef 1621 1622def Test_haslocaldir() 1623 CheckDefAndScriptFailure2(['haslocaldir("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 1624 CheckDefAndScriptFailure2(['haslocaldir("x", 1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 1625 CheckDefAndScriptFailure2(['haslocaldir(1, "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 1626enddef 1627 1628def Test_hasmapto() 1629 hasmapto('foobar', 'i', true)->assert_equal(0) 1630 iabbrev foo foobar 1631 hasmapto('foobar', 'i', true)->assert_equal(1) 1632 iunabbrev foo 1633 CheckDefAndScriptFailure2(['hasmapto(1, "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1634 CheckDefAndScriptFailure2(['hasmapto("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 1635 CheckDefAndScriptFailure2(['hasmapto("a", "b", 2)'], 'E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3') 1636enddef 1637 1638def Test_histadd() 1639 CheckDefAndScriptFailure2(['histadd(1, "x")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1640 CheckDefAndScriptFailure2(['histadd(":", 10)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 1641 histadd("search", 'skyblue') 1642 assert_equal('skyblue', histget('/', -1)) 1643 histadd("search", '')->assert_equal(0) 1644enddef 1645 1646def Test_histdel() 1647 CheckDefAndScriptFailure2(['histdel(1, "x")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1648 CheckDefAndScriptFailure2(['histdel(":", true)'], 'E1013: Argument 2: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 2') 1649 histdel('search', '')->assert_equal(0) 1650enddef 1651 1652def Test_histget() 1653 CheckDefAndScriptFailure2(['histget(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1654 CheckDefAndScriptFailure2(['histget("a", "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 1655enddef 1656 1657def Test_histnr() 1658 CheckDefAndScriptFailure2(['histnr(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1659 assert_equal(-1, histnr('abc')) 1660enddef 1661 1662def Test_hlID() 1663 CheckDefAndScriptFailure2(['hlID(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1664 assert_equal(0, hlID('NonExistingHighlight')) 1665enddef 1666 1667def Test_hlexists() 1668 CheckDefAndScriptFailure2(['hlexists([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1') 1669 assert_equal(0, hlexists('NonExistingHighlight')) 1670enddef 1671 1672def Test_iconv() 1673 CheckDefAndScriptFailure2(['iconv(1, "from", "to")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1674 CheckDefAndScriptFailure2(['iconv("abc", 10, "to")'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 1675 CheckDefAndScriptFailure2(['iconv("abc", "from", 20)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 1676 assert_equal('abc', iconv('abc', 'fromenc', 'toenc')) 1677enddef 1678 1679def Test_indent() 1680 CheckDefAndScriptFailure2(['indent([1])'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1') 1681 CheckDefAndScriptFailure2(['indent(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1') 1682 CheckDefExecAndScriptFailure(['indent("")'], 'E1209: Invalid value for a line number') 1683 assert_equal(0, indent(1)) 1684enddef 1685 1686def Test_index() 1687 index(['a', 'b', 'a', 'B'], 'b', 2, true)->assert_equal(3) 1688 CheckDefAndScriptFailure2(['index("a", "a")'], 'E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1226: List or Blob required for argument 1') 1689 CheckDefFailure(['index(["1"], 1)'], 'E1013: Argument 2: type mismatch, expected string but got number') 1690 CheckDefAndScriptFailure2(['index(0z10, "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 1691 CheckDefAndScriptFailure2(['index([1], 1, "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 1692 CheckDefAndScriptFailure2(['index(0z1020, 10, 1, 2)'], 'E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4') 1693enddef 1694 1695def Test_input() 1696 CheckDefAndScriptFailure2(['input(5)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1697 CheckDefAndScriptFailure2(['input(["a"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1') 1698 CheckDefAndScriptFailure2(['input("p", 10)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 1699 CheckDefAndScriptFailure2(['input("p", "q", 20)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 1700enddef 1701 1702def Test_inputdialog() 1703 CheckDefAndScriptFailure2(['inputdialog(5)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1704 CheckDefAndScriptFailure2(['inputdialog(["a"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1') 1705 CheckDefAndScriptFailure2(['inputdialog("p", 10)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 1706 CheckDefAndScriptFailure2(['inputdialog("p", "q", 20)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 1707enddef 1708 1709def Test_inputlist() 1710 CheckDefAndScriptFailure2(['inputlist(10)'], 'E1013: Argument 1: type mismatch, expected list<string> but got number', 'E1211: List required for argument 1') 1711 CheckDefAndScriptFailure2(['inputlist("abc")'], 'E1013: Argument 1: type mismatch, expected list<string> but got string', 'E1211: List required for argument 1') 1712 CheckDefFailure(['inputlist([1, 2, 3])'], 'E1013: Argument 1: type mismatch, expected list<string> but got list<number>') 1713 feedkeys("2\<CR>", 't') 1714 var r: number = inputlist(['a', 'b', 'c']) 1715 assert_equal(2, r) 1716enddef 1717 1718def Test_inputsecret() 1719 CheckDefAndScriptFailure2(['inputsecret(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1720 CheckDefAndScriptFailure2(['inputsecret("Pass:", 20)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 1721 feedkeys("\<CR>", 't') 1722 var ans: string = inputsecret('Pass:', '123') 1723 assert_equal('123', ans) 1724enddef 1725 1726let s:number_one = 1 1727let s:number_two = 2 1728let s:string_keep = 'keep' 1729 1730def Test_insert() 1731 var l = insert([2, 1], 3) 1732 var res = 0 1733 for n in l 1734 res += n 1735 endfor 1736 res->assert_equal(6) 1737 1738 var m: any = [] 1739 insert(m, 4) 1740 call assert_equal([4], m) 1741 extend(m, [6], 0) 1742 call assert_equal([6, 4], m) 1743 1744 var lines =<< trim END 1745 insert(test_null_list(), 123) 1746 END 1747 CheckDefExecAndScriptFailure(lines, 'E1130:', 1) 1748 1749 lines =<< trim END 1750 insert(test_null_blob(), 123) 1751 END 1752 CheckDefExecAndScriptFailure(lines, 'E1131:', 1) 1753 1754 assert_equal([1, 2, 3], insert([2, 3], 1)) 1755 assert_equal([1, 2, 3], insert([2, 3], s:number_one)) 1756 assert_equal([1, 2, 3], insert([1, 2], 3, 2)) 1757 assert_equal([1, 2, 3], insert([1, 2], 3, s:number_two)) 1758 assert_equal(['a', 'b', 'c'], insert(['b', 'c'], 'a')) 1759 assert_equal(0z1234, insert(0z34, 0x12)) 1760 1761 CheckDefAndScriptFailure2(['insert("a", 1)'], 'E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1226: List or Blob required for argument 1') 1762 CheckDefFailure(['insert([2, 3], "a")'], 'E1013: Argument 2: type mismatch, expected number but got string') 1763 CheckDefAndScriptFailure2(['insert([2, 3], 1, "x")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 1764enddef 1765 1766def Test_invert() 1767 CheckDefAndScriptFailure2(['invert("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 1768enddef 1769 1770def Test_isdirectory() 1771 CheckDefAndScriptFailure2(['isdirectory(1.1)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1') 1772 assert_false(isdirectory('NonExistingDir')) 1773enddef 1774 1775def Test_islocked() 1776 CheckDefAndScriptFailure2(['islocked(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1') 1777 CheckDefAndScriptFailure2(['var n1: number = 10', 'islocked(n1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1778 g:v1 = 10 1779 assert_false(islocked('g:v1')) 1780 lockvar g:v1 1781 assert_true(islocked('g:v1')) 1782 unlet g:v1 1783enddef 1784 1785def Test_items() 1786 CheckDefFailure(['[]->items()'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>') 1787 assert_equal([['a', 10], ['b', 20]], {'a': 10, 'b': 20}->items()) 1788 assert_equal([], {}->items()) 1789enddef 1790 1791def Test_job_getchannel() 1792 if !has('job') 1793 CheckFeature job 1794 else 1795 CheckDefAndScriptFailure2(['job_getchannel("a")'], 'E1013: Argument 1: type mismatch, expected job but got string', 'E1218: Job required for argument 1') 1796 assert_fails('job_getchannel(test_null_job())', 'E916: not a valid job') 1797 endif 1798enddef 1799 1800def Test_job_info() 1801 if !has('job') 1802 CheckFeature job 1803 else 1804 CheckDefAndScriptFailure2(['job_info("a")'], 'E1013: Argument 1: type mismatch, expected job but got string', 'E1218: Job required for argument 1') 1805 assert_fails('job_info(test_null_job())', 'E916: not a valid job') 1806 endif 1807enddef 1808 1809def Test_job_info_return_type() 1810 if !has('job') 1811 CheckFeature job 1812 else 1813 job_start(&shell) 1814 var jobs = job_info() 1815 assert_equal('list<job>', typename(jobs)) 1816 assert_equal('dict<any>', typename(job_info(jobs[0]))) 1817 job_stop(jobs[0]) 1818 endif 1819enddef 1820 1821def Test_job_setoptions() 1822 if !has('job') 1823 CheckFeature job 1824 else 1825 CheckDefAndScriptFailure2(['job_setoptions(test_null_channel(), {})'], 'E1013: Argument 1: type mismatch, expected job but got channel', 'E1218: Job required for argument 1') 1826 CheckDefAndScriptFailure2(['job_setoptions(test_null_job(), [])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2') 1827 assert_equal('fail', job_status(test_null_job())) 1828 endif 1829enddef 1830 1831def Test_job_status() 1832 if !has('job') 1833 CheckFeature job 1834 else 1835 CheckDefAndScriptFailure2(['job_status("a")'], 'E1013: Argument 1: type mismatch, expected job but got string', 'E1218: Job required for argument 1') 1836 assert_equal('fail', job_status(test_null_job())) 1837 endif 1838enddef 1839 1840def Test_job_stop() 1841 if !has('job') 1842 CheckFeature job 1843 else 1844 CheckDefAndScriptFailure2(['job_stop("a")'], 'E1013: Argument 1: type mismatch, expected job but got string', 'E1218: Job required for argument 1') 1845 CheckDefAndScriptFailure2(['job_stop(test_null_job(), true)'], 'E1013: Argument 2: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 2') 1846 endif 1847enddef 1848 1849def Test_join() 1850 CheckDefAndScriptFailure2(['join("abc")'], 'E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1') 1851 CheckDefAndScriptFailure2(['join([], 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 1852enddef 1853 1854def Test_js_decode() 1855 CheckDefAndScriptFailure2(['js_decode(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1856 assert_equal([1, 2], js_decode('[1,2]')) 1857enddef 1858 1859def Test_json_decode() 1860 CheckDefAndScriptFailure2(['json_decode(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1') 1861 assert_equal(1.0, json_decode('1.0')) 1862enddef 1863 1864def Test_keys() 1865 CheckDefAndScriptFailure2(['keys([])'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1') 1866 assert_equal(['a'], {a: 'v'}->keys()) 1867 assert_equal([], {}->keys()) 1868enddef 1869 1870def Test_keys_return_type() 1871 const var: list<string> = {a: 1, b: 2}->keys() 1872 var->assert_equal(['a', 'b']) 1873enddef 1874 1875def Test_len() 1876 CheckDefAndScriptFailure2(['len(true)'], 'E1013: Argument 1: type mismatch, expected list<any> but got bool', 'E701: Invalid type for len()') 1877 assert_equal(2, "ab"->len()) 1878 assert_equal(3, 456->len()) 1879 assert_equal(0, []->len()) 1880 assert_equal(1, {a: 10}->len()) 1881 assert_equal(4, 0z20304050->len()) 1882enddef 1883 1884def Test_libcall() 1885 CheckFeature libcall 1886 CheckDefAndScriptFailure2(['libcall(1, "b", 3)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1887 CheckDefAndScriptFailure2(['libcall("a", 2, 3)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 1888 CheckDefAndScriptFailure2(['libcall("a", "b", 1.1)'], 'E1013: Argument 3: type mismatch, expected string but got float', 'E1220: String or Number required for argument 3') 1889enddef 1890 1891def Test_libcallnr() 1892 CheckFeature libcall 1893 CheckDefAndScriptFailure2(['libcallnr(1, "b", 3)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1894 CheckDefAndScriptFailure2(['libcallnr("a", 2, 3)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 1895 CheckDefAndScriptFailure2(['libcallnr("a", "b", 1.1)'], 'E1013: Argument 3: type mismatch, expected string but got float', 'E1220: String or Number required for argument 3') 1896enddef 1897 1898def Test_line() 1899 assert_fails('line(true)', 'E1174:') 1900 CheckDefAndScriptFailure2(['line(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1901 CheckDefAndScriptFailure2(['line(".", "a")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 1902 CheckDefExecAndScriptFailure(['line("")'], 'E1209: Invalid value for a line number') 1903enddef 1904 1905def Test_line2byte() 1906 CheckDefAndScriptFailure2(['line2byte(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1') 1907 CheckDefExecAndScriptFailure(['line2byte("")'], 'E1209: Invalid value for a line number') 1908 assert_equal(-1, line2byte(1)) 1909 assert_equal(-1, line2byte(10000)) 1910enddef 1911 1912def Test_lispindent() 1913 CheckDefAndScriptFailure2(['lispindent({})'], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1220: String or Number required for argument 1') 1914 CheckDefExecAndScriptFailure(['lispindent("")'], 'E1209: Invalid value for a line number') 1915 assert_equal(0, lispindent(1)) 1916enddef 1917 1918def Test_list2str_str2list_utf8() 1919 var s = "\u3042\u3044" 1920 var l = [0x3042, 0x3044] 1921 str2list(s, true)->assert_equal(l) 1922 list2str(l, true)->assert_equal(s) 1923enddef 1924 1925def Test_list2str() 1926 CheckDefAndScriptFailure2(['list2str(".", true)'], 'E1013: Argument 1: type mismatch, expected list<number> but got string', 'E1211: List required for argument 1') 1927 CheckDefAndScriptFailure2(['list2str([1], 0z10)'], 'E1013: Argument 2: type mismatch, expected bool but got blob', 'E1212: Bool required for argument 2') 1928enddef 1929 1930def SID(): number 1931 return expand('<SID>') 1932 ->matchstr('<SNR>\zs\d\+\ze_$') 1933 ->str2nr() 1934enddef 1935 1936def Test_listener_add() 1937 CheckDefAndScriptFailure2(['listener_add("1", true)'], 'E1013: Argument 2: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 2') 1938enddef 1939 1940def Test_listener_flush() 1941 CheckDefAndScriptFailure2(['listener_flush([1])'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1') 1942enddef 1943 1944def Test_listener_remove() 1945 CheckDefAndScriptFailure2(['listener_remove("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 1946enddef 1947 1948def Test_lua() 1949 if !has('lua') 1950 CheckFeature lua 1951 endif 1952 CheckDefAndScriptFailure2(['luaeval(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1953enddef 1954 1955def Test_map() 1956 CheckDefAndScriptFailure2(['map("x", "1")'], 'E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1228: List, Dictionary or Blob required for argument 1') 1957 CheckDefAndScriptFailure2(['map(1, "1")'], 'E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1228: List, Dictionary or Blob required for argument 1') 1958enddef 1959 1960def Test_map_failure() 1961 CheckFeature job 1962 1963 var lines =<< trim END 1964 vim9script 1965 writefile([], 'Xtmpfile') 1966 silent e Xtmpfile 1967 var d = {[bufnr('%')]: {a: 0}} 1968 au BufReadPost * Func() 1969 def Func() 1970 if d->has_key('') 1971 endif 1972 eval d[expand('<abuf>')]->mapnew((_, v: dict<job>) => 0) 1973 enddef 1974 e 1975 END 1976 CheckScriptFailure(lines, 'E1013:') 1977 au! BufReadPost 1978 delete('Xtmpfile') 1979enddef 1980 1981def Test_map_function_arg() 1982 var lines =<< trim END 1983 def MapOne(i: number, v: string): string 1984 return i .. ':' .. v 1985 enddef 1986 var l = ['a', 'b', 'c'] 1987 map(l, MapOne) 1988 assert_equal(['0:a', '1:b', '2:c'], l) 1989 END 1990 CheckDefAndScriptSuccess(lines) 1991 1992 lines =<< trim END 1993 range(3)->map((a, b, c) => a + b + c) 1994 END 1995 CheckDefExecAndScriptFailure(lines, 'E1190: One argument too few') 1996 lines =<< trim END 1997 range(3)->map((a, b, c, d) => a + b + c + d) 1998 END 1999 CheckDefExecAndScriptFailure(lines, 'E1190: 2 arguments too few') 2000enddef 2001 2002def Test_map_item_type() 2003 var lines =<< trim END 2004 var l = ['a', 'b', 'c'] 2005 map(l, (k, v) => k .. '/' .. v ) 2006 assert_equal(['0/a', '1/b', '2/c'], l) 2007 END 2008 CheckDefAndScriptSuccess(lines) 2009 2010 lines =<< trim END 2011 var l: list<number> = [0] 2012 echo map(l, (_, v) => []) 2013 END 2014 CheckDefExecAndScriptFailure(lines, 'E1012: Type mismatch; expected number but got list<unknown> in map()', 2) 2015 2016 lines =<< trim END 2017 var l: list<number> = range(2) 2018 echo map(l, (_, v) => []) 2019 END 2020 CheckDefExecAndScriptFailure(lines, 'E1012: Type mismatch; expected number but got list<unknown> in map()', 2) 2021 2022 lines =<< trim END 2023 var d: dict<number> = {key: 0} 2024 echo map(d, (_, v) => []) 2025 END 2026 CheckDefExecAndScriptFailure(lines, 'E1012: Type mismatch; expected number but got list<unknown> in map()', 2) 2027enddef 2028 2029def Test_maparg() 2030 var lnum = str2nr(expand('<sflnum>')) 2031 map foo bar 2032 maparg('foo', '', false, true)->assert_equal({ 2033 lnum: lnum + 1, 2034 script: 0, 2035 mode: ' ', 2036 silent: 0, 2037 noremap: 0, 2038 lhs: 'foo', 2039 lhsraw: 'foo', 2040 nowait: 0, 2041 expr: 0, 2042 sid: SID(), 2043 rhs: 'bar', 2044 buffer: 0}) 2045 unmap foo 2046 CheckDefAndScriptFailure2(['maparg(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 2047 CheckDefAndScriptFailure2(['maparg("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 2048 CheckDefAndScriptFailure2(['maparg("a", "b", 2)'], 'E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3') 2049 CheckDefAndScriptFailure2(['maparg("a", "b", true, 2)'], 'E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4') 2050enddef 2051 2052def Test_maparg_mapset() 2053 nnoremap <F3> :echo "hit F3"<CR> 2054 var mapsave = maparg('<F3>', 'n', false, true) 2055 mapset('n', false, mapsave) 2056 2057 nunmap <F3> 2058enddef 2059 2060def Test_mapcheck() 2061 iabbrev foo foobar 2062 mapcheck('foo', 'i', true)->assert_equal('foobar') 2063 iunabbrev foo 2064 CheckDefAndScriptFailure2(['mapcheck(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 2065 CheckDefAndScriptFailure2(['mapcheck("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 2066 CheckDefAndScriptFailure2(['mapcheck("a", "b", 2)'], 'E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3') 2067enddef 2068 2069def Test_mapnew() 2070 CheckDefAndScriptFailure2(['mapnew("x", "1")'], 'E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1228: List, Dictionary or Blob required for argument 1') 2071 CheckDefAndScriptFailure2(['mapnew(1, "1")'], 'E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1228: List, Dictionary or Blob required for argument 1') 2072enddef 2073 2074def Test_mapset() 2075 CheckDefAndScriptFailure2(['mapset(1, true, {})'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 2076 CheckDefAndScriptFailure2(['mapset("a", 2, {})'], 'E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2') 2077 CheckDefAndScriptFailure2(['mapset("a", false, [])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3') 2078enddef 2079 2080def Test_match() 2081 CheckDefAndScriptFailure2(['match(0z12, "p")'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1') 2082 CheckDefAndScriptFailure2(['match(["s"], [2])'], 'E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2') 2083 CheckDefAndScriptFailure2(['match("s", "p", "q")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 2084 CheckDefAndScriptFailure2(['match("s", "p", 1, "r")'], 'E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4') 2085 assert_equal(2, match('ab12cd', '12')) 2086 assert_equal(-1, match('ab12cd', '34')) 2087 assert_equal(6, match('ab12cd12ef', '12', 4)) 2088 assert_equal(2, match('abcd', '..', 0, 3)) 2089 assert_equal(1, match(['a', 'b', 'c'], 'b')) 2090 assert_equal(-1, match(['a', 'b', 'c'], 'd')) 2091 assert_equal(3, match(['a', 'b', 'c', 'b', 'd', 'b'], 'b', 2)) 2092 assert_equal(5, match(['a', 'b', 'c', 'b', 'd', 'b'], 'b', 2, 2)) 2093enddef 2094 2095def Test_matchadd() 2096 CheckDefAndScriptFailure2(['matchadd(1, "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 2097 CheckDefAndScriptFailure2(['matchadd("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 2098 CheckDefAndScriptFailure2(['matchadd("a", "b", "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 2099 CheckDefAndScriptFailure2(['matchadd("a", "b", 1, "d")'], 'E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4') 2100 CheckDefAndScriptFailure2(['matchadd("a", "b", 1, 1, [])'], 'E1013: Argument 5: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 5') 2101 matchadd('', 'a')->assert_equal(-1) 2102 matchadd('Search', '')->assert_equal(-1) 2103enddef 2104 2105def Test_matchaddpos() 2106 CheckDefAndScriptFailure2(['matchaddpos(1, [1])'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 2107 CheckDefAndScriptFailure2(['matchaddpos("a", "b")'], 'E1013: Argument 2: type mismatch, expected list<any> but got string', 'E1211: List required for argument 2') 2108 CheckDefAndScriptFailure2(['matchaddpos("a", [1], "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 2109 CheckDefAndScriptFailure2(['matchaddpos("a", [1], 1, "d")'], 'E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4') 2110 CheckDefAndScriptFailure2(['matchaddpos("a", [1], 1, 1, [])'], 'E1013: Argument 5: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 5') 2111 matchaddpos('', [1])->assert_equal(-1) 2112enddef 2113 2114def Test_matcharg() 2115 CheckDefAndScriptFailure2(['matcharg("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2116enddef 2117 2118def Test_matchdelete() 2119 CheckDefAndScriptFailure2(['matchdelete("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2120 CheckDefAndScriptFailure2(['matchdelete("x", 1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2121 CheckDefAndScriptFailure2(['matchdelete(1, "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 2122enddef 2123 2124def Test_matchend() 2125 CheckDefAndScriptFailure2(['matchend(0z12, "p")'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1') 2126 CheckDefAndScriptFailure2(['matchend(["s"], [2])'], 'E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2') 2127 CheckDefAndScriptFailure2(['matchend("s", "p", "q")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 2128 CheckDefAndScriptFailure2(['matchend("s", "p", 1, "r")'], 'E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4') 2129 assert_equal(4, matchend('ab12cd', '12')) 2130 assert_equal(-1, matchend('ab12cd', '34')) 2131 assert_equal(8, matchend('ab12cd12ef', '12', 4)) 2132 assert_equal(4, matchend('abcd', '..', 0, 3)) 2133 assert_equal(1, matchend(['a', 'b', 'c'], 'b')) 2134 assert_equal(-1, matchend(['a', 'b', 'c'], 'd')) 2135 assert_equal(3, matchend(['a', 'b', 'c', 'b', 'd', 'b'], 'b', 2)) 2136 assert_equal(5, matchend(['a', 'b', 'c', 'b', 'd', 'b'], 'b', 2, 2)) 2137enddef 2138 2139def Test_matchfuzzy() 2140 CheckDefAndScriptFailure2(['matchfuzzy({}, "p")'], 'E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 1') 2141 CheckDefAndScriptFailure2(['matchfuzzy([], 1)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 2142 CheckDefAndScriptFailure2(['matchfuzzy([], "a", [])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3') 2143enddef 2144 2145def Test_matchfuzzypos() 2146 CheckDefAndScriptFailure2(['matchfuzzypos({}, "p")'], 'E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 1') 2147 CheckDefAndScriptFailure2(['matchfuzzypos([], 1)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 2148 CheckDefAndScriptFailure2(['matchfuzzypos([], "a", [])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3') 2149enddef 2150 2151def Test_matchlist() 2152 CheckDefAndScriptFailure2(['matchlist(0z12, "p")'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1') 2153 CheckDefAndScriptFailure2(['matchlist(["s"], [2])'], 'E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2') 2154 CheckDefAndScriptFailure2(['matchlist("s", "p", "q")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 2155 CheckDefAndScriptFailure2(['matchlist("s", "p", 1, "r")'], 'E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4') 2156 var l: list<string> = ['12', '', '', '', '', '', '', '', '', ''] 2157 assert_equal(l, matchlist('ab12cd', '12')) 2158 assert_equal([], matchlist('ab12cd', '34')) 2159 assert_equal(l, matchlist('ab12cd12ef', '12', 4)) 2160 l[0] = 'cd' 2161 assert_equal(l, matchlist('abcd', '..', 0, 3)) 2162 l[0] = 'b' 2163 assert_equal(l, matchlist(['a', 'b', 'c'], 'b')) 2164 assert_equal([], matchlist(['a', 'b', 'c'], 'd')) 2165 assert_equal(l, matchlist(['a', 'b', 'c', 'b', 'd', 'b'], 'b', 2)) 2166 assert_equal(l, matchlist(['a', 'b', 'c', 'b', 'd', 'b'], 'b', 2, 2)) 2167enddef 2168 2169def Test_matchstr() 2170 CheckDefAndScriptFailure2(['matchstr(0z12, "p")'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1') 2171 CheckDefAndScriptFailure2(['matchstr(["s"], [2])'], 'E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2') 2172 CheckDefAndScriptFailure2(['matchstr("s", "p", "q")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 2173 CheckDefAndScriptFailure2(['matchstr("s", "p", 1, "r")'], 'E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4') 2174 assert_equal('12', matchstr('ab12cd', '12')) 2175 assert_equal('', matchstr('ab12cd', '34')) 2176 assert_equal('12', matchstr('ab12cd12ef', '12', 4)) 2177 assert_equal('cd', matchstr('abcd', '..', 0, 3)) 2178 assert_equal('b', matchstr(['a', 'b', 'c'], 'b')) 2179 assert_equal('', matchstr(['a', 'b', 'c'], 'd')) 2180 assert_equal('b', matchstr(['a', 'b', 'c', 'b', 'd', 'b'], 'b', 2)) 2181 assert_equal('b', matchstr(['a', 'b', 'c', 'b', 'd', 'b'], 'b', 2, 2)) 2182enddef 2183 2184def Test_matchstrpos() 2185 CheckDefAndScriptFailure2(['matchstrpos(0z12, "p")'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1') 2186 CheckDefAndScriptFailure2(['matchstrpos(["s"], [2])'], 'E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2') 2187 CheckDefAndScriptFailure2(['matchstrpos("s", "p", "q")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 2188 CheckDefAndScriptFailure2(['matchstrpos("s", "p", 1, "r")'], 'E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4') 2189 assert_equal(['12', 2, 4], matchstrpos('ab12cd', '12')) 2190 assert_equal(['', -1, -1], matchstrpos('ab12cd', '34')) 2191 assert_equal(['12', 6, 8], matchstrpos('ab12cd12ef', '12', 4)) 2192 assert_equal(['cd', 2, 4], matchstrpos('abcd', '..', 0, 3)) 2193 assert_equal(['b', 1, 0, 1], matchstrpos(['a', 'b', 'c'], 'b')) 2194 assert_equal(['', -1, -1, -1], matchstrpos(['a', 'b', 'c'], 'd')) 2195 assert_equal(['b', 3, 0, 1], 2196 matchstrpos(['a', 'b', 'c', 'b', 'd', 'b'], 'b', 2)) 2197 assert_equal(['b', 5, 0, 1], 2198 matchstrpos(['a', 'b', 'c', 'b', 'd', 'b'], 'b', 2, 2)) 2199enddef 2200 2201def Test_max() 2202 g:flag = true 2203 var l1: list<number> = g:flag 2204 ? [1, max([2, 3])] 2205 : [4, 5] 2206 assert_equal([1, 3], l1) 2207 2208 g:flag = false 2209 var l2: list<number> = g:flag 2210 ? [1, max([2, 3])] 2211 : [4, 5] 2212 assert_equal([4, 5], l2) 2213 CheckDefAndScriptFailure2(['max(5)'], 'E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1227: List or Dictionary required for argument 1') 2214enddef 2215 2216def Test_menu_info() 2217 CheckDefAndScriptFailure2(['menu_info(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 2218 CheckDefAndScriptFailure2(['menu_info(10, "n")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 2219 CheckDefAndScriptFailure2(['menu_info("File", 10)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 2220 assert_equal({}, menu_info('aMenu')) 2221enddef 2222 2223def Test_min() 2224 g:flag = true 2225 var l1: list<number> = g:flag 2226 ? [1, min([2, 3])] 2227 : [4, 5] 2228 assert_equal([1, 2], l1) 2229 2230 g:flag = false 2231 var l2: list<number> = g:flag 2232 ? [1, min([2, 3])] 2233 : [4, 5] 2234 assert_equal([4, 5], l2) 2235 CheckDefAndScriptFailure2(['min(5)'], 'E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1227: List or Dictionary required for argument 1') 2236enddef 2237 2238def Test_mkdir() 2239 CheckDefAndScriptFailure2(['mkdir(["a"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1') 2240 CheckDefAndScriptFailure2(['mkdir("a", {})'], 'E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 2') 2241 CheckDefAndScriptFailure2(['mkdir("a", "b", "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 2242 delete('a', 'rf') 2243enddef 2244 2245def Test_mode() 2246 CheckDefAndScriptFailure2(['mode("1")'], 'E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1') 2247 CheckDefAndScriptFailure2(['mode(2)'], 'E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1') 2248enddef 2249 2250def Test_mzeval() 2251 if !has('mzscheme') 2252 CheckFeature mzscheme 2253 endif 2254 CheckDefAndScriptFailure2(['mzeval(["a"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1') 2255enddef 2256 2257def Test_nextnonblank() 2258 CheckDefAndScriptFailure2(['nextnonblank(null)'], 'E1013: Argument 1: type mismatch, expected string but got special', 'E1220: String or Number required for argument 1') 2259 CheckDefExecAndScriptFailure(['nextnonblank("")'], 'E1209: Invalid value for a line number') 2260 assert_equal(0, nextnonblank(1)) 2261enddef 2262 2263def Test_nr2char() 2264 nr2char(97, true)->assert_equal('a') 2265 CheckDefAndScriptFailure2(['nr2char("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2266 CheckDefAndScriptFailure2(['nr2char(1, "a")'], 'E1013: Argument 2: type mismatch, expected bool but got string', 'E1212: Bool required for argument 2') 2267enddef 2268 2269def Test_or() 2270 CheckDefAndScriptFailure2(['or("x", 0x2)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2271 CheckDefAndScriptFailure2(['or(0x1, "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 2272enddef 2273 2274def Test_pathshorten() 2275 CheckDefAndScriptFailure2(['pathshorten(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 2276 CheckDefAndScriptFailure2(['pathshorten("a", "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 2277enddef 2278 2279def Test_perleval() 2280 if !has('perl') 2281 CheckFeature perl 2282 endif 2283 CheckDefAndScriptFailure2(['perleval(["a"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1') 2284enddef 2285 2286def Test_popup_atcursor() 2287 CheckDefAndScriptFailure2(['popup_atcursor({"a": 10}, {})'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 1') 2288 CheckDefAndScriptFailure2(['popup_atcursor("a", [1, 2])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2') 2289 2290 # Pass variable of type 'any' to popup_atcursor() 2291 var what: any = 'Hello' 2292 var popupID = what->popup_atcursor({moved: 'any'}) 2293 assert_equal(0, popupID->popup_getoptions().tabpage) 2294 popupID->popup_close() 2295enddef 2296 2297def Test_popup_beval() 2298 CheckDefAndScriptFailure2(['popup_beval({"a": 10}, {})'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 1') 2299 CheckDefAndScriptFailure2(['popup_beval("a", [1, 2])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2') 2300enddef 2301 2302def Test_popup_clear() 2303 CheckDefAndScriptFailure2(['popup_clear(["a"])'], 'E1013: Argument 1: type mismatch, expected bool but got list<string>', 'E1212: Bool required for argument 1') 2304 CheckDefAndScriptFailure2(['popup_clear(2)'], 'E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1') 2305enddef 2306 2307def Test_popup_close() 2308 CheckDefAndScriptFailure2(['popup_close("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2309enddef 2310 2311def Test_popup_create() 2312 # Pass variable of type 'any' to popup_create() 2313 var what: any = 'Hello' 2314 var popupID = what->popup_create({}) 2315 assert_equal(0, popupID->popup_getoptions().tabpage) 2316 popupID->popup_close() 2317enddef 2318 2319def Test_popup_dialog() 2320 CheckDefAndScriptFailure2(['popup_dialog({"a": 10}, {})'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 1') 2321 CheckDefAndScriptFailure2(['popup_dialog("a", [1, 2])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2') 2322enddef 2323 2324def Test_popup_filter_menu() 2325 CheckDefAndScriptFailure2(['popup_filter_menu("x", "")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2326 CheckDefAndScriptFailure2(['popup_filter_menu(1, 1)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 2327enddef 2328 2329def Test_popup_filter_yesno() 2330 CheckDefAndScriptFailure2(['popup_filter_yesno("x", "")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2331 CheckDefAndScriptFailure2(['popup_filter_yesno(1, 1)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 2332enddef 2333 2334def Test_popup_getoptions() 2335 CheckDefAndScriptFailure2(['popup_getoptions("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2336 CheckDefAndScriptFailure2(['popup_getoptions(true)'], 'E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1') 2337enddef 2338 2339def Test_popup_getpos() 2340 CheckDefAndScriptFailure2(['popup_getpos("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2341 CheckDefAndScriptFailure2(['popup_getpos(true)'], 'E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1') 2342enddef 2343 2344def Test_popup_hide() 2345 CheckDefAndScriptFailure2(['popup_hide("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2346 CheckDefAndScriptFailure2(['popup_hide(true)'], 'E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1') 2347enddef 2348 2349def Test_popup_locate() 2350 CheckDefAndScriptFailure2(['popup_locate("a", 20)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2351 CheckDefAndScriptFailure2(['popup_locate(10, "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 2352enddef 2353 2354def Test_popup_menu() 2355 CheckDefAndScriptFailure2(['popup_menu({"a": 10}, {})'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 1') 2356 CheckDefAndScriptFailure2(['popup_menu("a", [1, 2])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2') 2357enddef 2358 2359def Test_popup_move() 2360 CheckDefAndScriptFailure2(['popup_move("x", {})'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2361 CheckDefAndScriptFailure2(['popup_move(1, [])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2') 2362enddef 2363 2364def Test_popup_notification() 2365 CheckDefAndScriptFailure2(['popup_notification({"a": 10}, {})'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 1') 2366 CheckDefAndScriptFailure2(['popup_notification("a", [1, 2])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2') 2367enddef 2368 2369def Test_popup_setoptions() 2370 CheckDefAndScriptFailure2(['popup_setoptions("x", {})'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2371 CheckDefAndScriptFailure2(['popup_setoptions(1, [])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2') 2372enddef 2373 2374def Test_popup_settext() 2375 CheckDefAndScriptFailure2(['popup_settext("x", [])'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2376 CheckDefAndScriptFailure2(['popup_settext(1, 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1222: String or List required for argument 2') 2377enddef 2378 2379def Test_popup_show() 2380 CheckDefAndScriptFailure2(['popup_show("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2381 CheckDefAndScriptFailure2(['popup_show(true)'], 'E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1') 2382enddef 2383 2384def Test_prevnonblank() 2385 CheckDefAndScriptFailure2(['prevnonblank(null)'], 'E1013: Argument 1: type mismatch, expected string but got special', 'E1220: String or Number required for argument 1') 2386 CheckDefExecAndScriptFailure(['prevnonblank("")'], 'E1209: Invalid value for a line number') 2387 assert_equal(0, prevnonblank(1)) 2388enddef 2389 2390def Test_printf() 2391 CheckDefAndScriptFailure2(['printf([1])'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1') 2392 printf(0x10)->assert_equal('16') 2393 assert_equal(" abc", "abc"->printf("%4s")) 2394enddef 2395 2396def Test_prompt_getprompt() 2397 if !has('channel') 2398 CheckFeature channel 2399 else 2400 CheckDefAndScriptFailure2(['prompt_getprompt([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 2401 assert_equal('', prompt_getprompt('NonExistingBuf')) 2402 endif 2403enddef 2404 2405def Test_prompt_setcallback() 2406 if !has('channel') 2407 CheckFeature channel 2408 else 2409 CheckDefAndScriptFailure2(['prompt_setcallback(true, "1")'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1') 2410 endif 2411enddef 2412 2413def Test_prompt_setinterrupt() 2414 if !has('channel') 2415 CheckFeature channel 2416 else 2417 CheckDefAndScriptFailure2(['prompt_setinterrupt(true, "1")'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1') 2418 endif 2419enddef 2420 2421def Test_prompt_setprompt() 2422 if !has('channel') 2423 CheckFeature channel 2424 else 2425 CheckDefAndScriptFailure2(['prompt_setprompt([], "p")'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 2426 CheckDefAndScriptFailure2(['prompt_setprompt(1, [])'], 'E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2') 2427 endif 2428enddef 2429 2430def Test_prop_add() 2431 CheckDefAndScriptFailure2(['prop_add("a", 2, {})'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2432 CheckDefAndScriptFailure2(['prop_add(1, "b", {})'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 2433 CheckDefAndScriptFailure2(['prop_add(1, 2, [])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3') 2434enddef 2435 2436def Test_prop_add_list() 2437 CheckDefAndScriptFailure2(['prop_add_list([], [])'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1') 2438 CheckDefAndScriptFailure2(['prop_add_list({}, {})'], 'E1013: Argument 2: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 2') 2439enddef 2440 2441def Test_prop_clear() 2442 CheckDefAndScriptFailure2(['prop_clear("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2443 CheckDefAndScriptFailure2(['prop_clear(1, "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 2444 CheckDefAndScriptFailure2(['prop_clear(1, 2, [])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3') 2445enddef 2446 2447def Test_prop_find() 2448 CheckDefAndScriptFailure2(['prop_find([1, 2])'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 1') 2449 CheckDefAndScriptFailure2(['prop_find([1, 2], "k")'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 1') 2450 CheckDefAndScriptFailure2(['prop_find({"a": 10}, ["a"])'], 'E1013: Argument 2: type mismatch, expected string but got list<string>', 'E1174: String required for argument 2') 2451enddef 2452 2453def Test_prop_list() 2454 CheckDefAndScriptFailure2(['prop_list("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2455 CheckDefAndScriptFailure2(['prop_list(1, [])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2') 2456enddef 2457 2458def Test_prop_remove() 2459 CheckDefAndScriptFailure2(['prop_remove([])'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1') 2460 CheckDefAndScriptFailure2(['prop_remove({}, "a")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 2461 CheckDefAndScriptFailure2(['prop_remove({}, 1, "b")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 2462enddef 2463 2464def Test_prop_type_add() 2465 CheckDefAndScriptFailure2(['prop_type_add({"a": 10}, "b")'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1') 2466 CheckDefAndScriptFailure2(['prop_type_add("a", "b")'], 'E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2') 2467enddef 2468 2469def Test_prop_type_change() 2470 CheckDefAndScriptFailure2(['prop_type_change({"a": 10}, "b")'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1') 2471 CheckDefAndScriptFailure2(['prop_type_change("a", "b")'], 'E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2') 2472enddef 2473 2474def Test_prop_type_delete() 2475 CheckDefAndScriptFailure2(['prop_type_delete({"a": 10})'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1') 2476 CheckDefAndScriptFailure2(['prop_type_delete({"a": 10}, "b")'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1') 2477 CheckDefAndScriptFailure2(['prop_type_delete("a", "b")'], 'E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2') 2478enddef 2479 2480def Test_prop_type_get() 2481 CheckDefAndScriptFailure2(['prop_type_get({"a": 10})'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1') 2482 CheckDefAndScriptFailure2(['prop_type_get({"a": 10}, "b")'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1') 2483 CheckDefAndScriptFailure2(['prop_type_get("a", "b")'], 'E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2') 2484enddef 2485 2486def Test_prop_type_list() 2487 CheckDefAndScriptFailure2(['prop_type_list(["a"])'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 1') 2488 CheckDefAndScriptFailure2(['prop_type_list(2)'], 'E1013: Argument 1: type mismatch, expected dict<any> but got number', 'E1206: Dictionary required for argument 1') 2489enddef 2490 2491def Test_py3eval() 2492 if !has('python3') 2493 CheckFeature python3 2494 endif 2495 CheckDefAndScriptFailure2(['py3eval([2])'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1') 2496enddef 2497 2498def Test_pyeval() 2499 if !has('python') 2500 CheckFeature python 2501 endif 2502 CheckDefAndScriptFailure2(['pyeval([2])'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1') 2503enddef 2504 2505def Test_pyxeval() 2506 if !has('python') && !has('python3') 2507 CheckFeature python 2508 endif 2509 CheckDefAndScriptFailure2(['pyxeval([2])'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1') 2510enddef 2511 2512def Test_rand() 2513 CheckDefAndScriptFailure2(['rand(10)'], 'E1013: Argument 1: type mismatch, expected list<number> but got number', 'E1211: List required for argument 1') 2514 CheckDefFailure(['rand(["a"])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<string>') 2515 assert_true(rand() >= 0) 2516 assert_true(rand(srand()) >= 0) 2517enddef 2518 2519def Test_range() 2520 CheckDefAndScriptFailure2(['range("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2521 CheckDefAndScriptFailure2(['range(10, "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 2522 CheckDefAndScriptFailure2(['range(10, 20, "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 2523enddef 2524 2525def Test_readdir() 2526 eval expand('sautest')->readdir((e) => e[0] !=# '.') 2527 eval expand('sautest')->readdirex((e) => e.name[0] !=# '.') 2528 CheckDefAndScriptFailure2(['readdir(["a"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1') 2529 CheckDefAndScriptFailure2(['readdir("a", "1", [3])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3') 2530 if has('unix') 2531 # only fails on Unix-like systems 2532 assert_fails('readdir("")', 'E484: Can''t open file') 2533 endif 2534enddef 2535 2536def Test_readdirex() 2537 CheckDefAndScriptFailure2(['readdirex(["a"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1') 2538 CheckDefAndScriptFailure2(['readdirex("a", "1", [3])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3') 2539 if has('unix') 2540 # only fails on Unix-like systems 2541 assert_fails('readdirex("")', 'E484: Can''t open file') 2542 endif 2543enddef 2544 2545def Test_readblob() 2546 var blob = 0z12341234 2547 writefile(blob, 'Xreadblob') 2548 var read: blob = readblob('Xreadblob') 2549 assert_equal(blob, read) 2550 2551 var lines =<< trim END 2552 var read: list<string> = readblob('Xreadblob') 2553 END 2554 CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected list<string> but got blob', 1) 2555 CheckDefExecAndScriptFailure(['readblob("")'], 'E484: Can''t open file <empty>') 2556 delete('Xreadblob') 2557enddef 2558 2559def Test_readfile() 2560 var text = ['aaa', 'bbb', 'ccc'] 2561 writefile(text, 'Xreadfile') 2562 var read: list<string> = readfile('Xreadfile') 2563 assert_equal(text, read) 2564 2565 var lines =<< trim END 2566 var read: dict<string> = readfile('Xreadfile') 2567 END 2568 CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected dict<string> but got list<string>', 1) 2569 delete('Xreadfile') 2570 2571 CheckDefAndScriptFailure2(['readfile("a", 0z10)'], 'E1013: Argument 2: type mismatch, expected string but got blob', 'E1174: String required for argument 2') 2572 CheckDefAndScriptFailure2(['readfile("a", "b", "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 2573enddef 2574 2575def Test_reduce() 2576 CheckDefAndScriptFailure2(['reduce({a: 10}, "1")'], 'E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E897: List or Blob required') 2577 assert_equal(6, [1, 2, 3]->reduce((r, c) => r + c, 0)) 2578 assert_equal(11, 0z0506->reduce((r, c) => r + c, 0)) 2579enddef 2580 2581def Test_reltime() 2582 CheckFeature reltime 2583 2584 CheckDefExecAndScriptFailure(['[]->reltime()'], 'E474:') 2585 CheckDefExecAndScriptFailure(['[]->reltime([])'], 'E474:') 2586 2587 CheckDefAndScriptFailure2(['reltime("x")'], 'E1013: Argument 1: type mismatch, expected list<number> but got string', 'E1211: List required for argument 1') 2588 CheckDefFailure(['reltime(["x", "y"])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<string>') 2589 CheckDefAndScriptFailure2(['reltime([1, 2], 10)'], 'E1013: Argument 2: type mismatch, expected list<number> but got number', 'E1211: List required for argument 2') 2590 CheckDefFailure(['reltime([1, 2], ["a", "b"])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>') 2591 var start: list<any> = reltime() 2592 assert_true(type(reltime(start)) == v:t_list) 2593 var end: list<any> = reltime() 2594 assert_true(type(reltime(start, end)) == v:t_list) 2595enddef 2596 2597def Test_reltimefloat() 2598 CheckFeature reltime 2599 2600 CheckDefExecAndScriptFailure(['[]->reltimefloat()'], 'E474:') 2601 2602 CheckDefAndScriptFailure2(['reltimefloat("x")'], 'E1013: Argument 1: type mismatch, expected list<number> but got string', 'E1211: List required for argument 1') 2603 CheckDefFailure(['reltimefloat([1.1])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<float>') 2604 assert_true(type(reltimefloat(reltime())) == v:t_float) 2605enddef 2606 2607def Test_reltimestr() 2608 CheckFeature reltime 2609 2610 CheckDefExecAndScriptFailure(['[]->reltimestr()'], 'E474:') 2611 2612 CheckDefAndScriptFailure2(['reltimestr(true)'], 'E1013: Argument 1: type mismatch, expected list<number> but got bool', 'E1211: List required for argument 1') 2613 CheckDefFailure(['reltimestr([true])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<bool>') 2614 assert_true(type(reltimestr(reltime())) == v:t_string) 2615enddef 2616 2617def Test_remote_expr() 2618 CheckFeature clientserver 2619 CheckEnv DISPLAY 2620 CheckDefAndScriptFailure2(['remote_expr(1, "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 2621 CheckDefAndScriptFailure2(['remote_expr("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 2622 CheckDefAndScriptFailure2(['remote_expr("a", "b", 3)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 2623 CheckDefAndScriptFailure2(['remote_expr("a", "b", "c", "d")'], 'E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4') 2624enddef 2625 2626def Test_remote_foreground() 2627 CheckFeature clientserver 2628 # remote_foreground() doesn't fail on MS-Windows 2629 CheckNotMSWindows 2630 CheckEnv DISPLAY 2631 2632 CheckDefAndScriptFailure2(['remote_foreground(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 2633 assert_fails('remote_foreground("NonExistingServer")', 'E241:') 2634enddef 2635 2636def Test_remote_peek() 2637 CheckFeature clientserver 2638 CheckEnv DISPLAY 2639 CheckDefAndScriptFailure2(['remote_peek(0z10)'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1174: String required for argument 1') 2640 CheckDefAndScriptFailure2(['remote_peek("a5b6c7", [1])'], 'E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2') 2641 CheckDefExecAndScriptFailure(['remote_peek("")'], 'E573: Invalid server id used') 2642enddef 2643 2644def Test_remote_read() 2645 CheckFeature clientserver 2646 CheckEnv DISPLAY 2647 CheckDefAndScriptFailure2(['remote_read(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 2648 CheckDefAndScriptFailure2(['remote_read("a", "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 2649 CheckDefExecAndScriptFailure(['remote_read("")'], 'E573: Invalid server id used') 2650enddef 2651 2652def Test_remote_send() 2653 CheckFeature clientserver 2654 CheckEnv DISPLAY 2655 CheckDefAndScriptFailure2(['remote_send(1, "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 2656 CheckDefAndScriptFailure2(['remote_send("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 2657 CheckDefAndScriptFailure2(['remote_send("a", "b", 3)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 2658enddef 2659 2660def Test_remote_startserver() 2661 CheckFeature clientserver 2662 CheckEnv DISPLAY 2663 CheckDefAndScriptFailure2(['remote_startserver({})'], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1') 2664enddef 2665 2666def Test_remove_const_list() 2667 var l: list<number> = [1, 2, 3, 4] 2668 assert_equal([1, 2], remove(l, 0, 1)) 2669 assert_equal([3, 4], l) 2670enddef 2671 2672def Test_remove() 2673 CheckDefAndScriptFailure2(['remove("a", 1)'], 'E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1228: List, Dictionary or Blob required for argument 1') 2674 CheckDefAndScriptFailure2(['remove([], "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 2675 CheckDefAndScriptFailure2(['remove([], 1, "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 2676 CheckDefAndScriptFailure2(['remove({}, 1.1)'], 'E1013: Argument 2: type mismatch, expected string but got float', 'E1220: String or Number required for argument 2') 2677 CheckDefAndScriptFailure2(['remove(0z10, "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 2678 CheckDefAndScriptFailure2(['remove(0z20, 1, "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 2679 var l: any = [1, 2, 3, 4] 2680 remove(l, 1) 2681 assert_equal([1, 3, 4], l) 2682 remove(l, 0, 1) 2683 assert_equal([4], l) 2684 var b: any = 0z1234.5678.90 2685 remove(b, 1) 2686 assert_equal(0z1256.7890, b) 2687 remove(b, 1, 2) 2688 assert_equal(0z1290, b) 2689 var d: any = {a: 10, b: 20, c: 30} 2690 remove(d, 'b') 2691 assert_equal({a: 10, c: 30}, d) 2692 var d2: any = {1: 'a', 2: 'b', 3: 'c'} 2693 remove(d2, 2) 2694 assert_equal({1: 'a', 3: 'c'}, d2) 2695enddef 2696 2697def Test_remove_return_type() 2698 var l = remove({one: [1, 2], two: [3, 4]}, 'one') 2699 var res = 0 2700 for n in l 2701 res += n 2702 endfor 2703 res->assert_equal(3) 2704enddef 2705 2706def Test_rename() 2707 CheckDefAndScriptFailure2(['rename(1, "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 2708 CheckDefAndScriptFailure2(['rename("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 2709enddef 2710 2711def Test_repeat() 2712 CheckDefAndScriptFailure2(['repeat(1.1, 2)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1224: String, Number or List required for argument 1') 2713 CheckDefAndScriptFailure2(['repeat({a: 10}, 2)'], 'E1013: Argument 1: type mismatch, expected string but got dict<', 'E1224: String, Number or List required for argument 1') 2714 var lines =<< trim END 2715 assert_equal('aaa', repeat('a', 3)) 2716 assert_equal('111', repeat(1, 3)) 2717 assert_equal([1, 1, 1], repeat([1], 3)) 2718 var s = '-' 2719 s ..= repeat(5, 3) 2720 assert_equal('-555', s) 2721 END 2722 CheckDefAndScriptSuccess(lines) 2723enddef 2724 2725def Test_resolve() 2726 CheckDefAndScriptFailure2(['resolve([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1') 2727 assert_equal('SomeFile', resolve('SomeFile')) 2728enddef 2729 2730def Test_reverse() 2731 CheckDefAndScriptFailure2(['reverse(10)'], 'E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1226: List or Blob required for argument 1') 2732 CheckDefAndScriptFailure2(['reverse("abc")'], 'E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1226: List or Blob required for argument 1') 2733enddef 2734 2735def Test_reverse_return_type() 2736 var l = reverse([1, 2, 3]) 2737 var res = 0 2738 for n in l 2739 res += n 2740 endfor 2741 res->assert_equal(6) 2742enddef 2743 2744def Test_rubyeval() 2745 if !has('ruby') 2746 CheckFeature ruby 2747 endif 2748 CheckDefAndScriptFailure2(['rubyeval([2])'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1') 2749enddef 2750 2751def Test_screenattr() 2752 CheckDefAndScriptFailure2(['screenattr("x", 1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2753 CheckDefAndScriptFailure2(['screenattr(1, "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 2754enddef 2755 2756def Test_screenchar() 2757 CheckDefAndScriptFailure2(['screenchar("x", 1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2758 CheckDefAndScriptFailure2(['screenchar(1, "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 2759enddef 2760 2761def Test_screenchars() 2762 CheckDefAndScriptFailure2(['screenchars("x", 1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2763 CheckDefAndScriptFailure2(['screenchars(1, "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 2764enddef 2765 2766def Test_screenpos() 2767 CheckDefAndScriptFailure2(['screenpos("a", 1, 1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2768 CheckDefAndScriptFailure2(['screenpos(1, "b", 1)'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 2769 CheckDefAndScriptFailure2(['screenpos(1, 1, "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 2770 assert_equal({col: 1, row: 1, endcol: 1, curscol: 1}, screenpos(1, 1, 1)) 2771enddef 2772 2773def Test_screenstring() 2774 CheckDefAndScriptFailure2(['screenstring("x", 1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2775 CheckDefAndScriptFailure2(['screenstring(1, "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 2776enddef 2777 2778def Test_search() 2779 new 2780 setline(1, ['foo', 'bar']) 2781 var val = 0 2782 # skip expr returns boolean 2783 search('bar', 'W', 0, 0, () => val == 1)->assert_equal(2) 2784 :1 2785 search('bar', 'W', 0, 0, () => val == 0)->assert_equal(0) 2786 # skip expr returns number, only 0 and 1 are accepted 2787 :1 2788 search('bar', 'W', 0, 0, () => 0)->assert_equal(2) 2789 :1 2790 search('bar', 'W', 0, 0, () => 1)->assert_equal(0) 2791 assert_fails("search('bar', '', 0, 0, () => -1)", 'E1023:') 2792 assert_fails("search('bar', '', 0, 0, () => -1)", 'E1023:') 2793 2794 setline(1, "find this word") 2795 normal gg 2796 var col = 7 2797 assert_equal(1, search('this', '', 0, 0, 'col(".") > col')) 2798 normal 0 2799 assert_equal([1, 6], searchpos('this', '', 0, 0, 'col(".") > col')) 2800 2801 col = 5 2802 normal 0 2803 assert_equal(0, search('this', '', 0, 0, 'col(".") > col')) 2804 normal 0 2805 assert_equal([0, 0], searchpos('this', '', 0, 0, 'col(".") > col')) 2806 bwipe! 2807 CheckDefAndScriptFailure2(['search(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 2808 CheckDefAndScriptFailure2(['search("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 2809 CheckDefAndScriptFailure2(['search("a", "b", "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 2810 CheckDefAndScriptFailure2(['search("a", "b", 3, "d")'], 'E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4') 2811enddef 2812 2813def Test_searchcount() 2814 new 2815 setline(1, "foo bar") 2816 :/foo 2817 searchcount({recompute: true}) 2818 ->assert_equal({ 2819 exact_match: 1, 2820 current: 1, 2821 total: 1, 2822 maxcount: 99, 2823 incomplete: 0}) 2824 bwipe! 2825 CheckDefAndScriptFailure2(['searchcount([1])'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 1') 2826enddef 2827 2828def Test_searchdecl() 2829 searchdecl('blah', true, true)->assert_equal(1) 2830 CheckDefAndScriptFailure2(['searchdecl(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 2831 CheckDefAndScriptFailure2(['searchdecl("a", 2)'], 'E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2') 2832 CheckDefAndScriptFailure2(['searchdecl("a", true, 2)'], 'E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3') 2833enddef 2834 2835def Test_searchpair() 2836 new 2837 setline(1, "here { and } there") 2838 2839 normal f{ 2840 var col = 15 2841 assert_equal(1, searchpair('{', '', '}', '', 'col(".") > col')) 2842 assert_equal(12, col('.')) 2843 normal 0f{ 2844 assert_equal([1, 12], searchpairpos('{', '', '}', '', 'col(".") > col')) 2845 2846 col = 8 2847 normal 0f{ 2848 assert_equal(0, searchpair('{', '', '}', '', 'col(".") > col')) 2849 assert_equal(6, col('.')) 2850 normal 0f{ 2851 assert_equal([0, 0], searchpairpos('{', '', '}', '', 'col(".") > col')) 2852 2853 var lines =<< trim END 2854 vim9script 2855 setline(1, '()') 2856 normal gg 2857 def Fail() 2858 try 2859 searchpairpos('(', '', ')', 'nW', '[0]->map("")') 2860 catch 2861 g:caught = 'yes' 2862 endtry 2863 enddef 2864 Fail() 2865 END 2866 CheckScriptSuccess(lines) 2867 assert_equal('yes', g:caught) 2868 unlet g:caught 2869 bwipe! 2870 2871 lines =<< trim END 2872 echo searchpair("a", "b", "c", "d", "f", 33) 2873 END 2874 CheckDefAndScriptFailure2(lines, 'E1001: Variable not found: f', 'E475: Invalid argument: d') 2875 2876 CheckDefAndScriptFailure2(['searchpair(1, "b", "c")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 2877 CheckDefAndScriptFailure2(['searchpair("a", 2, "c")'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 2878 CheckDefAndScriptFailure2(['searchpair("a", "b", 3)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 2879 CheckDefAndScriptFailure2(['searchpair("a", "b", "c", 4)'], 'E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4') 2880 CheckDefAndScriptFailure2(['searchpair("a", "b", "c", "r", "1", "f")'], 'E1013: Argument 6: type mismatch, expected number but got string', 'E1210: Number required for argument 6') 2881 CheckDefAndScriptFailure2(['searchpair("a", "b", "c", "r", "1", 3, "g")'], 'E1013: Argument 7: type mismatch, expected number but got string', 'E1210: Number required for argument 7') 2882enddef 2883 2884def Test_searchpos() 2885 CheckDefAndScriptFailure2(['searchpos(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 2886 CheckDefAndScriptFailure2(['searchpos("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 2887 CheckDefAndScriptFailure2(['searchpos("a", "b", "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 2888 CheckDefAndScriptFailure2(['searchpos("a", "b", 3, "d")'], 'E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4') 2889enddef 2890 2891def Test_server2client() 2892 CheckFeature clientserver 2893 CheckEnv DISPLAY 2894 CheckDefAndScriptFailure2(['server2client(10, "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 2895 CheckDefAndScriptFailure2(['server2client("a", 10)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 2896 CheckDefExecAndScriptFailure(['server2client("", "a")'], 'E573: Invalid server id used') 2897enddef 2898 2899def Test_shellescape() 2900 CheckDefAndScriptFailure2(['shellescape(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 2901 CheckDefAndScriptFailure2(['shellescape("a", 2)'], 'E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2') 2902enddef 2903 2904def Test_set_get_bufline() 2905 # similar to Test_setbufline_getbufline() 2906 var lines =<< trim END 2907 new 2908 var b = bufnr('%') 2909 hide 2910 assert_equal(0, setbufline(b, 1, ['foo', 'bar'])) 2911 assert_equal(['foo'], getbufline(b, 1)) 2912 assert_equal(['bar'], getbufline(b, '$')) 2913 assert_equal(['foo', 'bar'], getbufline(b, 1, 2)) 2914 exe "bd!" b 2915 assert_equal([], getbufline(b, 1, 2)) 2916 2917 split Xtest 2918 setline(1, ['a', 'b', 'c']) 2919 b = bufnr('%') 2920 wincmd w 2921 2922 assert_equal(1, setbufline(b, 5, 'x')) 2923 assert_equal(1, setbufline(b, 5, ['x'])) 2924 assert_equal(1, setbufline(b, 5, [])) 2925 assert_equal(1, setbufline(b, 5, test_null_list())) 2926 2927 assert_equal(1, 'x'->setbufline(bufnr('$') + 1, 1)) 2928 assert_equal(1, ['x']->setbufline(bufnr('$') + 1, 1)) 2929 assert_equal(1, []->setbufline(bufnr('$') + 1, 1)) 2930 assert_equal(1, test_null_list()->setbufline(bufnr('$') + 1, 1)) 2931 2932 assert_equal(['a', 'b', 'c'], getbufline(b, 1, '$')) 2933 2934 assert_equal(0, setbufline(b, 4, ['d', 'e'])) 2935 assert_equal(['c'], b->getbufline(3)) 2936 assert_equal(['d'], getbufline(b, 4)) 2937 assert_equal(['e'], getbufline(b, 5)) 2938 assert_equal([], getbufline(b, 6)) 2939 assert_equal([], getbufline(b, 2, 1)) 2940 2941 if has('job') 2942 setbufline(b, 2, [function('eval'), {key: 123}, string(test_null_job())]) 2943 assert_equal(["function('eval')", 2944 "{'key': 123}", 2945 "no process"], 2946 getbufline(b, 2, 4)) 2947 endif 2948 2949 exe 'bwipe! ' .. b 2950 END 2951 CheckDefAndScriptSuccess(lines) 2952enddef 2953 2954def Test_setbufvar() 2955 setbufvar(bufnr('%'), '&syntax', 'vim') 2956 &syntax->assert_equal('vim') 2957 setbufvar(bufnr('%'), '&ts', 16) 2958 &ts->assert_equal(16) 2959 setbufvar(bufnr('%'), '&ai', true) 2960 &ai->assert_equal(true) 2961 setbufvar(bufnr('%'), '&ft', 'filetype') 2962 &ft->assert_equal('filetype') 2963 2964 settabwinvar(1, 1, '&syntax', 'vam') 2965 &syntax->assert_equal('vam') 2966 settabwinvar(1, 1, '&ts', 15) 2967 &ts->assert_equal(15) 2968 setlocal ts=8 2969 settabwinvar(1, 1, '&list', false) 2970 &list->assert_equal(false) 2971 settabwinvar(1, 1, '&list', true) 2972 &list->assert_equal(true) 2973 setlocal list& 2974 2975 setbufvar('%', 'myvar', 123) 2976 getbufvar('%', 'myvar')->assert_equal(123) 2977 2978 CheckDefAndScriptFailure2(['setbufvar(true, "v", 3)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1') 2979 CheckDefAndScriptFailure2(['setbufvar(1, 2, 3)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 2980 assert_fails('setbufvar("%", "", 10)', 'E461: Illegal variable name') 2981enddef 2982 2983def Test_setbufline() 2984 new 2985 var bnum = bufnr('%') 2986 :wincmd w 2987 setbufline(bnum, 1, range(1, 3)) 2988 setbufline(bnum, 4, 'one') 2989 setbufline(bnum, 5, 10) 2990 setbufline(bnum, 6, ['two', 11]) 2991 assert_equal(['1', '2', '3', 'one', '10', 'two', '11'], getbufline(bnum, 1, '$')) 2992 CheckDefAndScriptFailure2(['setbufline([1], 1, "x")'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1') 2993 CheckDefAndScriptFailure2(['setbufline(1, [1], "x")'], 'E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 2') 2994 CheckDefAndScriptFailure2(['setbufline(1, 1, {"a": 10})'], 'E1013: Argument 3: type mismatch, expected string but got dict<number>', 'E1224: String, Number or List required for argument 3') 2995 bnum->bufwinid()->win_gotoid() 2996 bw! 2997enddef 2998 2999def Test_setcellwidths() 3000 CheckDefAndScriptFailure2(['setcellwidths(1)'], 'E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1211: List required for argument 1') 3001 CheckDefAndScriptFailure2(['setcellwidths({"a": 10})'], 'E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1211: List required for argument 1') 3002enddef 3003 3004def Test_setcharpos() 3005 CheckDefAndScriptFailure2(['setcharpos(1, [])'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3006 CheckDefFailure(['setcharpos(".", ["a"])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>') 3007 CheckDefAndScriptFailure2(['setcharpos(".", 1)'], 'E1013: Argument 2: type mismatch, expected list<number> but got number', 'E1211: List required for argument 2') 3008 CheckDefExecAndScriptFailure(['setcharpos("", [0, 1, 1, 1])'], 'E474: Invalid argument') 3009enddef 3010 3011def Test_setcharsearch() 3012 CheckDefAndScriptFailure2(['setcharsearch("x")'], 'E1013: Argument 1: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 1') 3013 CheckDefAndScriptFailure2(['setcharsearch([])'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1') 3014 var d: dict<any> = {char: 'x', forward: 1, until: 1} 3015 setcharsearch(d) 3016 assert_equal(d, getcharsearch()) 3017enddef 3018 3019def Test_setcmdpos() 3020 CheckDefAndScriptFailure2(['setcmdpos("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3021enddef 3022 3023def Test_setcursorcharpos() 3024 CheckDefAndScriptFailure2(['setcursorcharpos(0z10, 1)'], 'E1013: Argument 1: type mismatch, expected number but got blob', 'E1224: String, Number or List required for argument 1') 3025 CheckDefAndScriptFailure2(['setcursorcharpos(1, "2")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3026 CheckDefAndScriptFailure2(['setcursorcharpos(1, 2, "3")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 3027 CheckDefExecAndScriptFailure(['setcursorcharpos("", 10)'], 'E1209: Invalid value for a line number') 3028enddef 3029 3030def Test_setenv() 3031 CheckDefAndScriptFailure2(['setenv(1, 2)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3032enddef 3033 3034def Test_setfperm() 3035 CheckDefAndScriptFailure2(['setfperm(1, "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3036 CheckDefAndScriptFailure2(['setfperm("a", 0z10)'], 'E1013: Argument 2: type mismatch, expected string but got blob', 'E1174: String required for argument 2') 3037 CheckDefExecAndScriptFailure(['setfperm("Xfile", "")'], 'E475: Invalid argument') 3038enddef 3039 3040def Test_setline() 3041 new 3042 setline(1, range(1, 4)) 3043 assert_equal(['1', '2', '3', '4'], getline(1, '$')) 3044 setline(1, ['a', 'b', 'c', 'd']) 3045 assert_equal(['a', 'b', 'c', 'd'], getline(1, '$')) 3046 setline(1, 'one') 3047 assert_equal(['one', 'b', 'c', 'd'], getline(1, '$')) 3048 setline(1, 10) 3049 assert_equal(['10', 'b', 'c', 'd'], getline(1, '$')) 3050 CheckDefAndScriptFailure2(['setline([1], "x")'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1') 3051 CheckDefExecAndScriptFailure(['setline("", "x")'], 'E1209: Invalid value for a line number') 3052 bw! 3053enddef 3054 3055def Test_setloclist() 3056 var items = [{filename: '/tmp/file', lnum: 1, valid: true}] 3057 var what = {items: items} 3058 setqflist([], ' ', what) 3059 setloclist(0, [], ' ', what) 3060 CheckDefAndScriptFailure2(['setloclist("1", [])'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3061 CheckDefAndScriptFailure2(['setloclist(1, 2)'], 'E1013: Argument 2: type mismatch, expected list<any> but got number', 'E1211: List required for argument 2') 3062 CheckDefAndScriptFailure2(['setloclist(1, [], 3)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 3063 CheckDefAndScriptFailure2(['setloclist(1, [], "a", [])'], 'E1013: Argument 4: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 4') 3064enddef 3065 3066def Test_setmatches() 3067 CheckDefAndScriptFailure2(['setmatches({})'], 'E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 1') 3068 CheckDefAndScriptFailure2(['setmatches([], "1")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3069enddef 3070 3071def Test_setpos() 3072 CheckDefAndScriptFailure2(['setpos(1, [])'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3073 CheckDefFailure(['setpos(".", ["a"])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>') 3074 CheckDefAndScriptFailure2(['setpos(".", 1)'], 'E1013: Argument 2: type mismatch, expected list<number> but got number', 'E1211: List required for argument 2') 3075 CheckDefExecAndScriptFailure(['setpos("", [0, 1, 1, 1])'], 'E474: Invalid argument') 3076enddef 3077 3078def Test_setqflist() 3079 CheckDefAndScriptFailure2(['setqflist(1, "")'], 'E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1211: List required for argument 1') 3080 CheckDefAndScriptFailure2(['setqflist([], 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 3081 CheckDefAndScriptFailure2(['setqflist([], "", [])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3') 3082enddef 3083 3084def Test_setreg() 3085 setreg('a', ['aaa', 'bbb', 'ccc']) 3086 var reginfo = getreginfo('a') 3087 setreg('a', reginfo) 3088 getreginfo('a')->assert_equal(reginfo) 3089 assert_fails('setreg("ab", 0)', 'E1162:') 3090 CheckDefAndScriptFailure2(['setreg(1, "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3091 CheckDefAndScriptFailure2(['setreg("a", "b", 3)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 3092enddef 3093 3094def Test_settabvar() 3095 CheckDefAndScriptFailure2(['settabvar("a", "b", 1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3096 CheckDefAndScriptFailure2(['settabvar(1, 2, "c")'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 3097 assert_fails('settabvar(1, "", 10)', 'E461: Illegal variable name') 3098enddef 3099 3100def Test_settabwinvar() 3101 CheckDefAndScriptFailure2(['settabwinvar("a", 2, "c", true)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3102 CheckDefAndScriptFailure2(['settabwinvar(1, "b", "c", [])'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3103 CheckDefAndScriptFailure2(['settabwinvar(1, 1, 3, {})'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 3104 assert_fails('settabwinvar(1, 1, "", 10)', 'E461: Illegal variable name') 3105enddef 3106 3107def Test_settagstack() 3108 CheckDefAndScriptFailure2(['settagstack(true, {})'], 'E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1') 3109 CheckDefAndScriptFailure2(['settagstack(1, [1])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2') 3110 CheckDefAndScriptFailure2(['settagstack(1, {}, 2)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 3111enddef 3112 3113def Test_setwinvar() 3114 CheckDefAndScriptFailure2(['setwinvar("a", "b", 1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3115 CheckDefAndScriptFailure2(['setwinvar(1, 2, "c")'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 3116 assert_fails('setwinvar(1, "", 10)', 'E461: Illegal variable name') 3117enddef 3118 3119def Test_sha256() 3120 CheckDefAndScriptFailure2(['sha256(100)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3121 CheckDefAndScriptFailure2(['sha256(0zABCD)'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1174: String required for argument 1') 3122 assert_equal('ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad', sha256('abc')) 3123enddef 3124 3125def Test_shiftwidth() 3126 CheckDefAndScriptFailure2(['shiftwidth("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3127enddef 3128 3129def Test_sign_define() 3130 CheckDefAndScriptFailure2(['sign_define({"a": 10})'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1') 3131 CheckDefAndScriptFailure2(['sign_define({"a": 10}, "b")'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1') 3132 CheckDefAndScriptFailure2(['sign_define("a", ["b"])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 2') 3133enddef 3134 3135def Test_sign_getdefined() 3136 CheckDefAndScriptFailure2(['sign_getdefined(["x"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1') 3137 CheckDefAndScriptFailure2(['sign_getdefined(2)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3138enddef 3139 3140def Test_sign_getplaced() 3141 CheckDefAndScriptFailure2(['sign_getplaced(["x"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1220: String or Number required for argument 1') 3142 CheckDefAndScriptFailure2(['sign_getplaced(1, ["a"])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 2') 3143 CheckDefAndScriptFailure2(['sign_getplaced("a", 1.1)'], 'E1013: Argument 2: type mismatch, expected dict<any> but got float', 'E1206: Dictionary required for argument 2') 3144enddef 3145 3146def Test_sign_jump() 3147 CheckDefAndScriptFailure2(['sign_jump("a", "b", "c")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3148 CheckDefAndScriptFailure2(['sign_jump(1, 2, 3)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 3149 CheckDefAndScriptFailure2(['sign_jump(1, "b", true)'], 'E1013: Argument 3: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 3') 3150enddef 3151 3152def Test_sign_place() 3153 CheckDefAndScriptFailure2(['sign_place("a", "b", "c", "d")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3154 CheckDefAndScriptFailure2(['sign_place(1, 2, "c", "d")'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 3155 CheckDefAndScriptFailure2(['sign_place(1, "b", 3, "d")'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 3156 CheckDefAndScriptFailure2(['sign_place(1, "b", "c", 1.1)'], 'E1013: Argument 4: type mismatch, expected string but got float', 'E1220: String or Number required for argument 4') 3157 CheckDefAndScriptFailure2(['sign_place(1, "b", "c", "d", [1])'], 'E1013: Argument 5: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 5') 3158enddef 3159 3160def Test_sign_placelist() 3161 CheckDefAndScriptFailure2(['sign_placelist("x")'], 'E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1') 3162 CheckDefAndScriptFailure2(['sign_placelist({"a": 10})'], 'E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1211: List required for argument 1') 3163enddef 3164 3165def Test_sign_undefine() 3166 CheckDefAndScriptFailure2(['sign_undefine({})'], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1222: String or List required for argument 1') 3167 CheckDefAndScriptFailure2(['sign_undefine([1])'], 'E1013: Argument 1: type mismatch, expected list<string> but got list<number>', 'E155: Unknown sign:') 3168enddef 3169 3170def Test_sign_unplace() 3171 CheckDefAndScriptFailure2(['sign_unplace({"a": 10})'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1') 3172 CheckDefAndScriptFailure2(['sign_unplace({"a": 10}, "b")'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1') 3173 CheckDefAndScriptFailure2(['sign_unplace("a", ["b"])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 2') 3174enddef 3175 3176def Test_sign_unplacelist() 3177 CheckDefAndScriptFailure2(['sign_unplacelist("x")'], 'E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1') 3178 CheckDefAndScriptFailure2(['sign_unplacelist({"a": 10})'], 'E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1211: List required for argument 1') 3179enddef 3180 3181def Test_simplify() 3182 CheckDefAndScriptFailure2(['simplify(100)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3183 call assert_equal('NonExistingFile', simplify('NonExistingFile')) 3184enddef 3185 3186def Test_slice() 3187 assert_equal('12345', slice('012345', 1)) 3188 assert_equal('123', slice('012345', 1, 4)) 3189 assert_equal('1234', slice('012345', 1, -1)) 3190 assert_equal('1', slice('012345', 1, -4)) 3191 assert_equal('', slice('012345', 1, -5)) 3192 assert_equal('', slice('012345', 1, -6)) 3193 3194 assert_equal([1, 2, 3, 4, 5], slice(range(6), 1)) 3195 assert_equal([1, 2, 3], slice(range(6), 1, 4)) 3196 assert_equal([1, 2, 3, 4], slice(range(6), 1, -1)) 3197 assert_equal([1], slice(range(6), 1, -4)) 3198 assert_equal([], slice(range(6), 1, -5)) 3199 assert_equal([], slice(range(6), 1, -6)) 3200 3201 assert_equal(0z1122334455, slice(0z001122334455, 1)) 3202 assert_equal(0z112233, slice(0z001122334455, 1, 4)) 3203 assert_equal(0z11223344, slice(0z001122334455, 1, -1)) 3204 assert_equal(0z11, slice(0z001122334455, 1, -4)) 3205 assert_equal(0z, slice(0z001122334455, 1, -5)) 3206 assert_equal(0z, slice(0z001122334455, 1, -6)) 3207 CheckDefAndScriptFailure2(['slice({"a": 10}, 1)'], 'E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1211: List required for argument 1') 3208 CheckDefAndScriptFailure2(['slice([1, 2, 3], "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3209 CheckDefAndScriptFailure2(['slice("abc", 1, "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 3210enddef 3211 3212def Test_spellsuggest() 3213 if !has('spell') 3214 CheckFeature spell 3215 else 3216 spellsuggest('marrch', 1, true)->assert_equal(['March']) 3217 endif 3218 CheckDefAndScriptFailure2(['spellsuggest(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3219 CheckDefAndScriptFailure2(['spellsuggest("a", "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3220 CheckDefAndScriptFailure2(['spellsuggest("a", 1, 0z01)'], 'E1013: Argument 3: type mismatch, expected bool but got blob', 'E1212: Bool required for argument 3') 3221 spellsuggest('')->assert_equal([]) 3222enddef 3223 3224def Test_sound_playevent() 3225 CheckFeature sound 3226 CheckDefAndScriptFailure2(['sound_playevent(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3227enddef 3228 3229def Test_sound_playfile() 3230 CheckFeature sound 3231 CheckDefAndScriptFailure2(['sound_playfile(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3232enddef 3233 3234def Test_sound_stop() 3235 CheckFeature sound 3236 CheckDefAndScriptFailure2(['sound_stop("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3237enddef 3238 3239def Test_soundfold() 3240 CheckDefAndScriptFailure2(['soundfold(20)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3241 assert_equal('abc', soundfold('abc')) 3242enddef 3243 3244def Test_sort_return_type() 3245 var res: list<number> 3246 res = [1, 2, 3]->sort() 3247enddef 3248 3249def Test_sort_argument() 3250 var lines =<< trim END 3251 var res = ['b', 'a', 'c']->sort('i') 3252 res->assert_equal(['a', 'b', 'c']) 3253 3254 def Compare(a: number, b: number): number 3255 return a - b 3256 enddef 3257 var l = [3, 6, 7, 1, 8, 2, 4, 5] 3258 sort(l, Compare) 3259 assert_equal([1, 2, 3, 4, 5, 6, 7, 8], l) 3260 END 3261 CheckDefAndScriptSuccess(lines) 3262 CheckDefAndScriptFailure2(['sort("a")'], 'E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1') 3263 CheckDefAndScriptFailure2(['sort([1], "", [1])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3') 3264enddef 3265 3266def Test_spellbadword() 3267 CheckDefAndScriptFailure2(['spellbadword(100)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3268 spellbadword('good')->assert_equal(['', '']) 3269enddef 3270 3271def Test_split() 3272 split(' aa bb ', '\W\+', true)->assert_equal(['', 'aa', 'bb', '']) 3273 CheckDefAndScriptFailure2(['split(1, "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3274 CheckDefAndScriptFailure2(['split("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 3275 CheckDefAndScriptFailure2(['split("a", "b", 2)'], 'E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3') 3276enddef 3277 3278def Test_srand() 3279 CheckDefAndScriptFailure2(['srand("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3280 type(srand(100))->assert_equal(v:t_list) 3281enddef 3282 3283def Test_state() 3284 CheckDefAndScriptFailure2(['state({})'], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1') 3285 assert_equal('', state('a')) 3286enddef 3287 3288def Run_str2float() 3289 if !has('float') 3290 CheckFeature float 3291 endif 3292 str2float("1.00")->assert_equal(1.00) 3293 str2float("2e-2")->assert_equal(0.02) 3294 3295 CheckDefAndScriptFailure2(['str2float(123)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3296 endif 3297enddef 3298 3299def Test_str2list() 3300 CheckDefAndScriptFailure2(['str2list(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3301 CheckDefAndScriptFailure2(['str2list("a", 2)'], 'E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2') 3302 assert_equal([97], str2list('a')) 3303 assert_equal([97], str2list('a', 1)) 3304 assert_equal([97], str2list('a', true)) 3305enddef 3306 3307def Test_str2nr() 3308 str2nr("1'000'000", 10, true)->assert_equal(1000000) 3309 3310 CheckDefAndScriptFailure2(['str2nr(123)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3311 CheckDefAndScriptFailure2(['str2nr("123", "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3312 CheckDefAndScriptFailure2(['str2nr("123", 10, "x")'], 'E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3') 3313enddef 3314 3315def Test_strcharlen() 3316 CheckDefAndScriptFailure2(['strcharlen([1])'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1') 3317 "abc"->strcharlen()->assert_equal(3) 3318 strcharlen(99)->assert_equal(2) 3319enddef 3320 3321def Test_strcharpart() 3322 CheckDefAndScriptFailure2(['strcharpart(1, 2)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3323 CheckDefAndScriptFailure2(['strcharpart("a", "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3324 CheckDefAndScriptFailure2(['strcharpart("a", 1, "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 3325 CheckDefAndScriptFailure2(['strcharpart("a", 1, 1, 2)'], 'E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4') 3326enddef 3327 3328def Test_strchars() 3329 strchars("A\u20dd", true)->assert_equal(1) 3330 CheckDefAndScriptFailure2(['strchars(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3331 CheckDefAndScriptFailure2(['strchars("a", 2)'], 'E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2') 3332 assert_equal(3, strchars('abc')) 3333 assert_equal(3, strchars('abc', 1)) 3334 assert_equal(3, strchars('abc', true)) 3335enddef 3336 3337def Test_strdisplaywidth() 3338 CheckDefAndScriptFailure2(['strdisplaywidth(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3339 CheckDefAndScriptFailure2(['strdisplaywidth("a", "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3340enddef 3341 3342def Test_strftime() 3343 CheckDefAndScriptFailure2(['strftime(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3344 CheckDefAndScriptFailure2(['strftime("a", "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3345enddef 3346 3347def Test_strgetchar() 3348 CheckDefAndScriptFailure2(['strgetchar(1, 1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3349 CheckDefAndScriptFailure2(['strgetchar("a", "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3350enddef 3351 3352def Test_stridx() 3353 CheckDefAndScriptFailure2(['stridx([1], "b")'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1') 3354 CheckDefAndScriptFailure2(['stridx("a", {})'], 'E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 2') 3355 CheckDefAndScriptFailure2(['stridx("a", "b", "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 3356enddef 3357 3358def Test_strlen() 3359 CheckDefAndScriptFailure2(['strlen([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 3360 "abc"->strlen()->assert_equal(3) 3361 strlen(99)->assert_equal(2) 3362enddef 3363 3364def Test_strpart() 3365 CheckDefAndScriptFailure2(['strpart(1, 2)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3366 CheckDefAndScriptFailure2(['strpart("a", "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3367 CheckDefAndScriptFailure2(['strpart("a", 1, "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 3368 CheckDefAndScriptFailure2(['strpart("a", 1, 1, 2)'], 'E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4') 3369enddef 3370 3371def Test_strptime() 3372 CheckFunction strptime 3373 CheckDefAndScriptFailure2(['strptime(10, "2021")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3374 CheckDefAndScriptFailure2(['strptime("%Y", 2021)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 3375 # BUG: Directly calling strptime() in this function gives an "E117: Unknown 3376 # function" error on MS-Windows even with the above CheckFunction call for 3377 # strptime(). 3378 #assert_true(strptime('%Y', '2021') != 0) 3379enddef 3380 3381def Test_strridx() 3382 CheckDefAndScriptFailure2(['strridx([1], "b")'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1') 3383 CheckDefAndScriptFailure2(['strridx("a", {})'], 'E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 2') 3384 CheckDefAndScriptFailure2(['strridx("a", "b", "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 3385enddef 3386 3387def Test_strtrans() 3388 CheckDefAndScriptFailure2(['strtrans(20)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3389 assert_equal('abc', strtrans('abc')) 3390enddef 3391 3392def Test_strwidth() 3393 CheckDefAndScriptFailure2(['strwidth(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3394 assert_equal(4, strwidth('abcd')) 3395enddef 3396 3397def Test_submatch() 3398 var pat = 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)' 3399 var Rep = () => range(10)->mapnew((_, v) => submatch(v, true))->string() 3400 var actual = substitute('A123456789', pat, Rep, '') 3401 var expected = "[['A123456789'], ['1'], ['2'], ['3'], ['4'], ['5'], ['6'], ['7'], ['8'], ['9']]" 3402 actual->assert_equal(expected) 3403 CheckDefAndScriptFailure2(['submatch("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3404 CheckDefAndScriptFailure2(['submatch(1, "a")'], 'E1013: Argument 2: type mismatch, expected bool but got string', 'E1212: Bool required for argument 2') 3405enddef 3406 3407def Test_substitute() 3408 var res = substitute('A1234', '\d', 'X', '') 3409 assert_equal('AX234', res) 3410 3411 if has('job') 3412 assert_fails('"text"->substitute(".*", () => test_null_job(), "")', 'E908: using an invalid value as a String: job') 3413 assert_fails('"text"->substitute(".*", () => test_null_channel(), "")', 'E908: using an invalid value as a String: channel') 3414 endif 3415 CheckDefAndScriptFailure2(['substitute(1, "b", "1", "d")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3416 CheckDefAndScriptFailure2(['substitute("a", 2, "1", "d")'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 3417 CheckDefAndScriptFailure2(['substitute("a", "b", "1", 4)'], 'E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4') 3418enddef 3419 3420def Test_swapinfo() 3421 CheckDefAndScriptFailure2(['swapinfo({})'], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1') 3422 call swapinfo('x')->assert_equal({error: 'Cannot open file'}) 3423 call swapinfo('')->assert_equal({error: 'Cannot open file'}) 3424enddef 3425 3426def Test_swapname() 3427 CheckDefAndScriptFailure2(['swapname([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 3428 assert_fails('swapname("NonExistingBuf")', 'E94:') 3429enddef 3430 3431def Test_synID() 3432 new 3433 setline(1, "text") 3434 synID(1, 1, true)->assert_equal(0) 3435 bwipe! 3436 CheckDefAndScriptFailure2(['synID(0z10, 1, true)'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1') 3437 CheckDefAndScriptFailure2(['synID("a", true, false)'], 'E1013: Argument 2: type mismatch, expected number but got bool', 'E1210: Number required for argument 2') 3438 CheckDefAndScriptFailure2(['synID(1, 1, 2)'], 'E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3') 3439 CheckDefExecAndScriptFailure(['synID("", 10, true)'], 'E1209: Invalid value for a line number') 3440enddef 3441 3442def Test_synIDattr() 3443 CheckDefAndScriptFailure2(['synIDattr("a", "b")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3444 CheckDefAndScriptFailure2(['synIDattr(1, 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 3445 CheckDefAndScriptFailure2(['synIDattr(1, "b", 3)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 3446enddef 3447 3448def Test_synIDtrans() 3449 CheckDefAndScriptFailure2(['synIDtrans("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3450enddef 3451 3452def Test_synconcealed() 3453 CheckDefAndScriptFailure2(['synconcealed(0z10, 1)'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1') 3454 CheckDefAndScriptFailure2(['synconcealed(1, "a")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3455 if has('conceal') 3456 CheckDefExecAndScriptFailure(['synconcealed("", 4)'], 'E1209: Invalid value for a line number') 3457 endif 3458enddef 3459 3460def Test_synstack() 3461 CheckDefAndScriptFailure2(['synstack(0z10, 1)'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1') 3462 CheckDefAndScriptFailure2(['synstack(1, "a")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3463 CheckDefExecAndScriptFailure(['synstack("", 4)'], 'E1209: Invalid value for a line number') 3464enddef 3465 3466def Test_system() 3467 CheckDefAndScriptFailure2(['system(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3468 CheckDefAndScriptFailure2(['system("a", {})'], 'E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1224: String, Number or List required for argument 2') 3469 assert_equal("123\n", system('echo 123')) 3470enddef 3471 3472def Test_systemlist() 3473 CheckDefAndScriptFailure2(['systemlist(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3474 CheckDefAndScriptFailure2(['systemlist("a", {})'], 'E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1224: String, Number or List required for argument 2') 3475 if has('win32') 3476 call assert_equal(["123\r"], systemlist('echo 123')) 3477 else 3478 call assert_equal(['123'], systemlist('echo 123')) 3479 endif 3480enddef 3481 3482def Test_tabpagebuflist() 3483 CheckDefAndScriptFailure2(['tabpagebuflist("t")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3484 assert_equal([bufnr('')], tabpagebuflist()) 3485 assert_equal([bufnr('')], tabpagebuflist(1)) 3486enddef 3487 3488def Test_tabpagenr() 3489 CheckDefAndScriptFailure2(['tabpagenr(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3490 CheckDefExecAndScriptFailure(['tabpagenr("")'], 'E15: Invalid expression') 3491 assert_equal(1, tabpagenr('$')) 3492 assert_equal(1, tabpagenr()) 3493enddef 3494 3495def Test_tabpagewinnr() 3496 CheckDefAndScriptFailure2(['tabpagewinnr("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3497 CheckDefAndScriptFailure2(['tabpagewinnr(1, 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 3498 CheckDefExecAndScriptFailure(['tabpagewinnr(1, "")'], 'E15: Invalid expression') 3499enddef 3500 3501def Test_taglist() 3502 CheckDefAndScriptFailure2(['taglist([1])'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1') 3503 CheckDefAndScriptFailure2(['taglist("a", [2])'], 'E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2') 3504enddef 3505 3506def Test_term_dumpload() 3507 CheckRunVimInTerminal 3508 CheckDefAndScriptFailure2(['term_dumpload({"a": 10})'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1') 3509 CheckDefAndScriptFailure2(['term_dumpload({"a": 10}, "b")'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1') 3510 CheckDefAndScriptFailure2(['term_dumpload("a", ["b"])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 2') 3511 CheckDefExecAndScriptFailure(['term_dumpload("")'], 'E485: Can''t read file') 3512enddef 3513 3514def Test_term_dumpdiff() 3515 CheckRunVimInTerminal 3516 CheckDefAndScriptFailure2(['term_dumpdiff(1, "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3517 CheckDefAndScriptFailure2(['term_dumpdiff("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 3518 CheckDefAndScriptFailure2(['term_dumpdiff("a", "b", [1])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3') 3519 CheckDefExecAndScriptFailure(['term_dumpdiff("", "")'], 'E485: Can''t read file') 3520enddef 3521 3522def Test_term_dumpwrite() 3523 CheckRunVimInTerminal 3524 CheckDefAndScriptFailure2(['term_dumpwrite(true, "b")'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1') 3525 CheckDefAndScriptFailure2(['term_dumpwrite(1, 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 3526 CheckDefAndScriptFailure2(['term_dumpwrite("a", "b", [1])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3') 3527enddef 3528 3529def Test_term_getaltscreen() 3530 CheckRunVimInTerminal 3531 CheckDefAndScriptFailure2(['term_getaltscreen(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1') 3532enddef 3533 3534def Test_term_getansicolors() 3535 CheckRunVimInTerminal 3536 CheckFeature termguicolors 3537 CheckDefAndScriptFailure2(['term_getansicolors(["a"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1220: String or Number required for argument 1') 3538enddef 3539 3540def Test_term_getattr() 3541 CheckRunVimInTerminal 3542 CheckDefAndScriptFailure2(['term_getattr("x", "a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3543 CheckDefAndScriptFailure2(['term_getattr(1, 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 3544enddef 3545 3546def Test_term_getcursor() 3547 CheckRunVimInTerminal 3548 CheckDefAndScriptFailure2(['term_getcursor({"a": 10})'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1220: String or Number required for argument 1') 3549enddef 3550 3551def Test_term_getjob() 3552 CheckRunVimInTerminal 3553 CheckDefAndScriptFailure2(['term_getjob(0z10)'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1') 3554enddef 3555 3556def Test_term_getline() 3557 CheckRunVimInTerminal 3558 CheckDefAndScriptFailure2(['term_getline(1.1, 1)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1') 3559 CheckDefAndScriptFailure2(['term_getline(1, 1.1)'], 'E1013: Argument 2: type mismatch, expected string but got float', 'E1220: String or Number required for argument 2') 3560enddef 3561 3562def Test_term_getscrolled() 3563 CheckRunVimInTerminal 3564 CheckDefAndScriptFailure2(['term_getscrolled(1.1)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1') 3565enddef 3566 3567def Test_term_getsize() 3568 CheckRunVimInTerminal 3569 CheckDefAndScriptFailure2(['term_getsize(1.1)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1') 3570enddef 3571 3572def Test_term_getstatus() 3573 CheckRunVimInTerminal 3574 CheckDefAndScriptFailure2(['term_getstatus(1.1)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1') 3575enddef 3576 3577def Test_term_gettitle() 3578 CheckRunVimInTerminal 3579 CheckDefAndScriptFailure2(['term_gettitle(1.1)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1') 3580enddef 3581 3582def Test_term_gettty() 3583 if !has('terminal') 3584 CheckFeature terminal 3585 else 3586 var buf = Run_shell_in_terminal({}) 3587 term_gettty(buf, true)->assert_notequal('') 3588 StopShellInTerminal(buf) 3589 endif 3590 CheckDefAndScriptFailure2(['term_gettty([1])'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1') 3591 CheckDefAndScriptFailure2(['term_gettty(1, 2)'], 'E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2') 3592enddef 3593 3594def Test_term_scrape() 3595 CheckRunVimInTerminal 3596 CheckDefAndScriptFailure2(['term_scrape(1.1, 1)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1') 3597 CheckDefAndScriptFailure2(['term_scrape(1, 1.1)'], 'E1013: Argument 2: type mismatch, expected string but got float', 'E1220: String or Number required for argument 2') 3598enddef 3599 3600def Test_term_sendkeys() 3601 CheckRunVimInTerminal 3602 CheckDefAndScriptFailure2(['term_sendkeys([], "p")'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 3603 CheckDefAndScriptFailure2(['term_sendkeys(1, [])'], 'E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2') 3604enddef 3605 3606def Test_term_setansicolors() 3607 CheckRunVimInTerminal 3608 3609 if has('termguicolors') || has('gui') 3610 CheckDefAndScriptFailure2(['term_setansicolors([], "p")'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 3611 CheckDefAndScriptFailure2(['term_setansicolors(10, {})'], 'E1013: Argument 2: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 2') 3612 else 3613 throw 'Skipped: Only works with termguicolors or gui feature' 3614 endif 3615enddef 3616 3617def Test_term_setapi() 3618 CheckRunVimInTerminal 3619 CheckDefAndScriptFailure2(['term_setapi([], "p")'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 3620 CheckDefAndScriptFailure2(['term_setapi(1, [])'], 'E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2') 3621enddef 3622 3623def Test_term_setkill() 3624 CheckRunVimInTerminal 3625 CheckDefAndScriptFailure2(['term_setkill([], "p")'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 3626 CheckDefAndScriptFailure2(['term_setkill(1, [])'], 'E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2') 3627enddef 3628 3629def Test_term_setrestore() 3630 CheckRunVimInTerminal 3631 CheckDefAndScriptFailure2(['term_setrestore([], "p")'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 3632 CheckDefAndScriptFailure2(['term_setrestore(1, [])'], 'E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2') 3633enddef 3634 3635def Test_term_setsize() 3636 CheckRunVimInTerminal 3637 CheckDefAndScriptFailure2(['term_setsize(1.1, 2, 3)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1') 3638 CheckDefAndScriptFailure2(['term_setsize(1, "2", 3)'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3639 CheckDefAndScriptFailure2(['term_setsize(1, 2, "3")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 3640enddef 3641 3642def Test_term_start() 3643 if !has('terminal') 3644 CheckFeature terminal 3645 else 3646 botright new 3647 var winnr = winnr() 3648 term_start(&shell, {curwin: true}) 3649 winnr()->assert_equal(winnr) 3650 bwipe! 3651 endif 3652 CheckDefAndScriptFailure2(['term_start({})'], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1222: String or List required for argument 1') 3653 CheckDefAndScriptFailure2(['term_start([], [])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2') 3654 CheckDefAndScriptFailure2(['term_start("", "")'], 'E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2') 3655 CheckDefExecAndScriptFailure(['term_start("")'], 'E474: Invalid argument') 3656enddef 3657 3658def Test_term_wait() 3659 CheckRunVimInTerminal 3660 CheckDefAndScriptFailure2(['term_wait(0z10, 1)'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1') 3661 CheckDefAndScriptFailure2(['term_wait(1, "a")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3662enddef 3663 3664def Test_test_alloc_fail() 3665 CheckDefAndScriptFailure2(['test_alloc_fail("a", 10, 20)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3666 CheckDefAndScriptFailure2(['test_alloc_fail(10, "b", 20)'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3667 CheckDefAndScriptFailure2(['test_alloc_fail(10, 20, "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 3668enddef 3669 3670def Test_test_feedinput() 3671 CheckDefAndScriptFailure2(['test_feedinput(test_void())'], 'E1013: Argument 1: type mismatch, expected string but got void', 'E1174: String required for argument 1') 3672 CheckDefAndScriptFailure2(['test_feedinput(["a"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1') 3673enddef 3674 3675def Test_test_getvalue() 3676 CheckDefAndScriptFailure2(['test_getvalue(1.1)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1') 3677enddef 3678 3679def Test_test_gui_drop_files() 3680 CheckGui 3681 CheckDefAndScriptFailure2(['test_gui_drop_files("a", 1, 1, 0)'], 'E1013: Argument 1: type mismatch, expected list<string> but got string', 'E1211: List required for argument 1') 3682 CheckDefAndScriptFailure2(['test_gui_drop_files(["x"], "", 1, 0)'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3683 CheckDefAndScriptFailure2(['test_gui_drop_files(["x"], 1, "", 0)'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 3684 CheckDefAndScriptFailure2(['test_gui_drop_files(["x"], 1, 1, "")'], 'E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4') 3685enddef 3686 3687def Test_test_gui_mouse_event() 3688 CheckGui 3689 CheckDefAndScriptFailure2(['test_gui_mouse_event(1.1, 1, 1, 1, 1)'], 'E1013: Argument 1: type mismatch, expected number but got float', 'E1210: Number required for argument 1') 3690 CheckDefAndScriptFailure2(['test_gui_mouse_event(1, "1", 1, 1, 1)'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3691 CheckDefAndScriptFailure2(['test_gui_mouse_event(1, 1, "1", 1, 1)'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 3692 CheckDefAndScriptFailure2(['test_gui_mouse_event(1, 1, 1, "1", 1)'], 'E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4') 3693 CheckDefAndScriptFailure2(['test_gui_mouse_event(1, 1, 1, 1, "1")'], 'E1013: Argument 5: type mismatch, expected number but got string', 'E1210: Number required for argument 5') 3694enddef 3695 3696def Test_test_ignore_error() 3697 CheckDefAndScriptFailure2(['test_ignore_error([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1') 3698 test_ignore_error('RESET') 3699enddef 3700 3701def Test_test_option_not_set() 3702 CheckDefAndScriptFailure2(['test_option_not_set([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1') 3703enddef 3704 3705def Test_test_override() 3706 CheckDefAndScriptFailure2(['test_override(1, 1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3707 CheckDefAndScriptFailure2(['test_override("a", "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3708enddef 3709 3710def Test_test_scrollbar() 3711 CheckGui 3712 CheckDefAndScriptFailure2(['test_scrollbar(1, 2, 3)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3713 CheckDefAndScriptFailure2(['test_scrollbar("a", "b", 3)'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3714 CheckDefAndScriptFailure2(['test_scrollbar("a", 2, "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 3715enddef 3716 3717def Test_test_setmouse() 3718 CheckDefAndScriptFailure2(['test_setmouse("a", 10)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3719 CheckDefAndScriptFailure2(['test_setmouse(10, "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3720enddef 3721 3722def Test_test_settime() 3723 CheckDefAndScriptFailure2(['test_settime([1])'], 'E1013: Argument 1: type mismatch, expected number but got list<number>', 'E1210: Number required for argument 1') 3724enddef 3725 3726def Test_test_srand_seed() 3727 CheckDefAndScriptFailure2(['test_srand_seed([1])'], 'E1013: Argument 1: type mismatch, expected number but got list<number>', 'E1210: Number required for argument 1') 3728 CheckDefAndScriptFailure2(['test_srand_seed("10")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3729enddef 3730 3731def Test_timer_info() 3732 CheckDefAndScriptFailure2(['timer_info("id")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3733 assert_equal([], timer_info(100)) 3734 assert_equal([], timer_info()) 3735enddef 3736 3737def Test_timer_pause() 3738 CheckDefAndScriptFailure2(['timer_pause("x", 1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3739 CheckDefAndScriptFailure2(['timer_pause(1, "a")'], 'E1013: Argument 2: type mismatch, expected bool but got string', 'E1212: Bool required for argument 2') 3740enddef 3741 3742def Test_timer_paused() 3743 var id = timer_start(50, () => 0) 3744 timer_pause(id, true) 3745 var info = timer_info(id) 3746 info[0]['paused']->assert_equal(1) 3747 timer_stop(id) 3748enddef 3749 3750def Test_timer_start() 3751 CheckDefAndScriptFailure2(['timer_start("a", "1")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3752 CheckDefAndScriptFailure2(['timer_start(1, "1", [1])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3') 3753enddef 3754 3755def Test_timer_stop() 3756 CheckDefAndScriptFailure2(['timer_stop("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3757 assert_equal(0, timer_stop(100)) 3758enddef 3759 3760def Test_tolower() 3761 CheckDefAndScriptFailure2(['tolower(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3762enddef 3763 3764def Test_toupper() 3765 CheckDefAndScriptFailure2(['toupper(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3766enddef 3767 3768def Test_tr() 3769 CheckDefAndScriptFailure2(['tr(1, "a", "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3770 CheckDefAndScriptFailure2(['tr("a", 1, "b")'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 3771 CheckDefAndScriptFailure2(['tr("a", "a", 1)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 3772enddef 3773 3774def Test_trim() 3775 CheckDefAndScriptFailure2(['trim(["a"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1') 3776 CheckDefAndScriptFailure2(['trim("a", ["b"])'], 'E1013: Argument 2: type mismatch, expected string but got list<string>', 'E1174: String required for argument 2') 3777 CheckDefAndScriptFailure2(['trim("a", "b", "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 3778enddef 3779 3780def Test_typename() 3781 if has('float') 3782 assert_equal('func([unknown], [unknown]): float', typename(function('pow'))) 3783 endif 3784 assert_equal('func', test_null_partial()->typename()) 3785 assert_equal('list<unknown>', test_null_list()->typename()) 3786 assert_equal('dict<unknown>', test_null_dict()->typename()) 3787 if has('job') 3788 assert_equal('job', test_null_job()->typename()) 3789 endif 3790 if has('channel') 3791 assert_equal('channel', test_null_channel()->typename()) 3792 endif 3793enddef 3794 3795def Test_undofile() 3796 CheckDefAndScriptFailure2(['undofile(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3797 assert_equal('.abc.un~', fnamemodify(undofile('abc'), ':t')) 3798enddef 3799 3800def Test_uniq() 3801 CheckDefAndScriptFailure2(['uniq("a")'], 'E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1') 3802 CheckDefAndScriptFailure2(['uniq([1], "", [1])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3') 3803enddef 3804 3805def Test_values() 3806 CheckDefAndScriptFailure2(['values([])'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1') 3807 assert_equal([], {}->values()) 3808 assert_equal(['sun'], {star: 'sun'}->values()) 3809enddef 3810 3811def Test_virtcol() 3812 CheckDefAndScriptFailure2(['virtcol(1.1)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1222: String or List required for argument 1') 3813 CheckDefExecAndScriptFailure(['virtcol("")'], 'E1209: Invalid value for a line number') 3814 new 3815 setline(1, ['abcdefgh']) 3816 cursor(1, 4) 3817 assert_equal(4, virtcol('.')) 3818 assert_equal(4, virtcol([1, 4])) 3819 assert_equal(9, virtcol([1, '$'])) 3820 assert_equal(0, virtcol([10, '$'])) 3821 bw! 3822enddef 3823 3824def Test_visualmode() 3825 CheckDefAndScriptFailure2(['visualmode("1")'], 'E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1') 3826 CheckDefAndScriptFailure2(['visualmode(2)'], 'E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1') 3827enddef 3828 3829def Test_win_execute() 3830 assert_equal("\n" .. winnr(), win_execute(win_getid(), 'echo winnr()')) 3831 assert_equal("\n" .. winnr(), 'echo winnr()'->win_execute(win_getid())) 3832 assert_equal("\n" .. winnr(), win_execute(win_getid(), 'echo winnr()', 'silent')) 3833 assert_equal('', win_execute(342343, 'echo winnr()')) 3834 CheckDefAndScriptFailure2(['win_execute("a", "b", "c")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3835 CheckDefAndScriptFailure2(['win_execute(1, 2, "c")'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1222: String or List required for argument 2') 3836 CheckDefAndScriptFailure2(['win_execute(1, "b", 3)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 3837enddef 3838 3839def Test_win_findbuf() 3840 CheckDefAndScriptFailure2(['win_findbuf("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3841 assert_equal([], win_findbuf(1000)) 3842 assert_equal([win_getid()], win_findbuf(bufnr(''))) 3843enddef 3844 3845def Test_win_getid() 3846 CheckDefAndScriptFailure2(['win_getid(".")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3847 CheckDefAndScriptFailure2(['win_getid(1, ".")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3848 assert_equal(win_getid(), win_getid(1, 1)) 3849enddef 3850 3851def Test_win_gettype() 3852 CheckDefAndScriptFailure2(['win_gettype("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3853enddef 3854 3855def Test_win_gotoid() 3856 CheckDefAndScriptFailure2(['win_gotoid("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3857enddef 3858 3859def Test_win_id2tabwin() 3860 CheckDefAndScriptFailure2(['win_id2tabwin("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3861enddef 3862 3863def Test_win_id2win() 3864 CheckDefAndScriptFailure2(['win_id2win("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3865enddef 3866 3867def Test_win_screenpos() 3868 CheckDefAndScriptFailure2(['win_screenpos("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3869enddef 3870 3871def Test_win_splitmove() 3872 split 3873 win_splitmove(1, 2, {vertical: true, rightbelow: true}) 3874 close 3875 CheckDefAndScriptFailure2(['win_splitmove("a", 2)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3876 CheckDefAndScriptFailure2(['win_splitmove(1, "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3877 CheckDefAndScriptFailure2(['win_splitmove(1, 2, [])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3') 3878enddef 3879 3880def Test_winbufnr() 3881 CheckDefAndScriptFailure2(['winbufnr("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3882enddef 3883 3884def Test_winheight() 3885 CheckDefAndScriptFailure2(['winheight("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3886enddef 3887 3888def Test_winlayout() 3889 CheckDefAndScriptFailure2(['winlayout("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3890enddef 3891 3892def Test_winnr() 3893 CheckDefAndScriptFailure2(['winnr([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1') 3894 CheckDefExecAndScriptFailure(['winnr("")'], 'E15: Invalid expression') 3895 assert_equal(1, winnr()) 3896 assert_equal(1, winnr('$')) 3897enddef 3898 3899def Test_winrestcmd() 3900 split 3901 var cmd = winrestcmd() 3902 wincmd _ 3903 exe cmd 3904 assert_equal(cmd, winrestcmd()) 3905 close 3906enddef 3907 3908def Test_winrestview() 3909 CheckDefAndScriptFailure2(['winrestview([])'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1') 3910 :%d _ 3911 setline(1, 'Hello World') 3912 winrestview({lnum: 1, col: 6}) 3913 assert_equal([1, 7], [line('.'), col('.')]) 3914enddef 3915 3916def Test_winsaveview() 3917 var view: dict<number> = winsaveview() 3918 3919 var lines =<< trim END 3920 var view: list<number> = winsaveview() 3921 END 3922 CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected list<number> but got dict<number>', 1) 3923enddef 3924 3925def Test_winwidth() 3926 CheckDefAndScriptFailure2(['winwidth("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3927enddef 3928 3929def Test_xor() 3930 CheckDefAndScriptFailure2(['xor("x", 0x2)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3931 CheckDefAndScriptFailure2(['xor(0x1, "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3932enddef 3933 3934def Test_writefile() 3935 CheckDefExecAndScriptFailure(['writefile(["a"], "")'], 'E482: Can''t create file <empty>') 3936enddef 3937 3938" vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker 3939