194738d8fSBram Moolenaar" Test using builtin functions in the Vim9 script language. 294738d8fSBram Moolenaar 394738d8fSBram Moolenaarsource check.vim 494738d8fSBram Moolenaarsource vim9.vim 594738d8fSBram Moolenaar 694738d8fSBram Moolenaar" Test for passing too many or too few arguments to builtin functions 794738d8fSBram Moolenaarfunc Test_internalfunc_arg_error() 894738d8fSBram Moolenaar let l =<< trim END 994738d8fSBram Moolenaar def! FArgErr(): float 1094738d8fSBram Moolenaar return ceil(1.1, 2) 1194738d8fSBram Moolenaar enddef 1294738d8fSBram Moolenaar defcompile 1394738d8fSBram Moolenaar END 1494738d8fSBram Moolenaar call writefile(l, 'Xinvalidarg') 1594738d8fSBram Moolenaar call assert_fails('so Xinvalidarg', 'E118:', '', 1, 'FArgErr') 1694738d8fSBram Moolenaar let l =<< trim END 1794738d8fSBram Moolenaar def! FArgErr(): float 1894738d8fSBram Moolenaar return ceil() 1994738d8fSBram Moolenaar enddef 2094738d8fSBram Moolenaar defcompile 2194738d8fSBram Moolenaar END 2294738d8fSBram Moolenaar call writefile(l, 'Xinvalidarg') 2394738d8fSBram Moolenaar call assert_fails('so Xinvalidarg', 'E119:', '', 1, 'FArgErr') 2494738d8fSBram Moolenaar call delete('Xinvalidarg') 2594738d8fSBram Moolenaarendfunc 2694738d8fSBram Moolenaar 2794738d8fSBram Moolenaar" Test for builtin functions returning different types 2894738d8fSBram Moolenaarfunc Test_InternalFuncRetType() 2994738d8fSBram Moolenaar let lines =<< trim END 3094738d8fSBram Moolenaar def RetFloat(): float 3194738d8fSBram Moolenaar return ceil(1.456) 3294738d8fSBram Moolenaar enddef 3394738d8fSBram Moolenaar 3494738d8fSBram Moolenaar def RetListAny(): list<any> 35e0de171eSBram Moolenaar return items({k: 'v'}) 3694738d8fSBram Moolenaar enddef 3794738d8fSBram Moolenaar 3894738d8fSBram Moolenaar def RetListString(): list<string> 3994738d8fSBram Moolenaar return split('a:b:c', ':') 4094738d8fSBram Moolenaar enddef 4194738d8fSBram Moolenaar 4294738d8fSBram Moolenaar def RetListDictAny(): list<dict<any>> 4394738d8fSBram Moolenaar return getbufinfo() 4494738d8fSBram Moolenaar enddef 4594738d8fSBram Moolenaar 4694738d8fSBram Moolenaar def RetDictNumber(): dict<number> 4794738d8fSBram Moolenaar return wordcount() 4894738d8fSBram Moolenaar enddef 4994738d8fSBram Moolenaar 5094738d8fSBram Moolenaar def RetDictString(): dict<string> 5194738d8fSBram Moolenaar return environ() 5294738d8fSBram Moolenaar enddef 5394738d8fSBram Moolenaar END 5494738d8fSBram Moolenaar call writefile(lines, 'Xscript') 5594738d8fSBram Moolenaar source Xscript 5694738d8fSBram Moolenaar 5794738d8fSBram Moolenaar call RetFloat()->assert_equal(2.0) 5894738d8fSBram Moolenaar call RetListAny()->assert_equal([['k', 'v']]) 5994738d8fSBram Moolenaar call RetListString()->assert_equal(['a', 'b', 'c']) 6094738d8fSBram Moolenaar call RetListDictAny()->assert_notequal([]) 6194738d8fSBram Moolenaar call RetDictNumber()->assert_notequal({}) 6294738d8fSBram Moolenaar call RetDictString()->assert_notequal({}) 6394738d8fSBram Moolenaar call delete('Xscript') 6494738d8fSBram Moolenaarendfunc 6594738d8fSBram Moolenaar 6694738d8fSBram Moolenaardef Test_abs() 6794738d8fSBram Moolenaar assert_equal(0, abs(0)) 6894738d8fSBram Moolenaar assert_equal(2, abs(-2)) 6994738d8fSBram Moolenaar assert_equal(3, abs(3)) 704490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['abs("text")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 7194738d8fSBram Moolenaar if has('float') 7294738d8fSBram Moolenaar assert_equal(0, abs(0)) 7394738d8fSBram Moolenaar assert_equal(2.0, abs(-2.0)) 7494738d8fSBram Moolenaar assert_equal(3.0, abs(3.0)) 7594738d8fSBram Moolenaar endif 7694738d8fSBram Moolenaarenddef 7794738d8fSBram Moolenaar 780ad871dcSYegappan Lakshmanandef Test_add() 7978db17c6SBram Moolenaar CheckDefAndScriptFailure2(['add({}, 1)'], 'E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1226: List or Blob required for argument 1') 800ad871dcSYegappan Lakshmanan CheckDefFailure(['add([1], "a")'], 'E1012: Type mismatch; expected number but got string') 810ad871dcSYegappan Lakshmananenddef 820ad871dcSYegappan Lakshmanan 831a71d31bSYegappan Lakshmanandef Test_add_blob() 841a71d31bSYegappan Lakshmanan var b1: blob = 0z12 851a71d31bSYegappan Lakshmanan add(b1, 0x34) 861a71d31bSYegappan Lakshmanan assert_equal(0z1234, b1) 871a71d31bSYegappan Lakshmanan 881a71d31bSYegappan Lakshmanan var b2: blob # defaults to empty blob 891a71d31bSYegappan Lakshmanan add(b2, 0x67) 901a71d31bSYegappan Lakshmanan assert_equal(0z67, b2) 911a71d31bSYegappan Lakshmanan 921a71d31bSYegappan Lakshmanan var lines =<< trim END 931a71d31bSYegappan Lakshmanan var b: blob 941a71d31bSYegappan Lakshmanan add(b, "x") 951a71d31bSYegappan Lakshmanan END 961a71d31bSYegappan Lakshmanan CheckDefFailure(lines, 'E1012:', 2) 971a71d31bSYegappan Lakshmanan 981a71d31bSYegappan Lakshmanan lines =<< trim END 991a71d31bSYegappan Lakshmanan add(test_null_blob(), 123) 1001a71d31bSYegappan Lakshmanan END 1011a71d31bSYegappan Lakshmanan CheckDefExecAndScriptFailure(lines, 'E1131:', 1) 1021a71d31bSYegappan Lakshmanan 1031a71d31bSYegappan Lakshmanan lines =<< trim END 1041a71d31bSYegappan Lakshmanan var b: blob = test_null_blob() 1051a71d31bSYegappan Lakshmanan add(b, 123) 1061a71d31bSYegappan Lakshmanan END 1071a71d31bSYegappan Lakshmanan CheckDefExecFailure(lines, 'E1131:', 2) 1081a71d31bSYegappan Lakshmanan 1091a71d31bSYegappan Lakshmanan # Getting variable with NULL blob allocates a new blob at script level 1101a71d31bSYegappan Lakshmanan lines =<< trim END 1111a71d31bSYegappan Lakshmanan vim9script 1121a71d31bSYegappan Lakshmanan var b: blob = test_null_blob() 1131a71d31bSYegappan Lakshmanan add(b, 123) 1141a71d31bSYegappan Lakshmanan END 1151a71d31bSYegappan Lakshmanan CheckScriptSuccess(lines) 1161a71d31bSYegappan Lakshmananenddef 1171a71d31bSYegappan Lakshmanan 11894738d8fSBram Moolenaardef Test_add_list() 11994738d8fSBram Moolenaar var l: list<number> # defaults to empty list 12094738d8fSBram Moolenaar add(l, 9) 12194738d8fSBram Moolenaar assert_equal([9], l) 12294738d8fSBram Moolenaar 12394738d8fSBram Moolenaar var lines =<< trim END 12494738d8fSBram Moolenaar var l: list<number> 12594738d8fSBram Moolenaar add(l, "x") 12694738d8fSBram Moolenaar END 12794738d8fSBram Moolenaar CheckDefFailure(lines, 'E1012:', 2) 12894738d8fSBram Moolenaar 12994738d8fSBram Moolenaar lines =<< trim END 130b7c21afeSBram Moolenaar add(test_null_list(), 123) 131b7c21afeSBram Moolenaar END 132b7c21afeSBram Moolenaar CheckDefExecAndScriptFailure(lines, 'E1130:', 1) 133b7c21afeSBram Moolenaar 134b7c21afeSBram Moolenaar lines =<< trim END 13594738d8fSBram Moolenaar var l: list<number> = test_null_list() 13694738d8fSBram Moolenaar add(l, 123) 13794738d8fSBram Moolenaar END 13894738d8fSBram Moolenaar CheckDefExecFailure(lines, 'E1130:', 2) 139b7c21afeSBram Moolenaar 140b7c21afeSBram Moolenaar # Getting variable with NULL list allocates a new list at script level 141b7c21afeSBram Moolenaar lines =<< trim END 142b7c21afeSBram Moolenaar vim9script 143b7c21afeSBram Moolenaar var l: list<number> = test_null_list() 144b7c21afeSBram Moolenaar add(l, 123) 145b7c21afeSBram Moolenaar END 146b7c21afeSBram Moolenaar CheckScriptSuccess(lines) 147f32f0997SBram Moolenaar 148f32f0997SBram Moolenaar lines =<< trim END 149f32f0997SBram Moolenaar vim9script 150f32f0997SBram Moolenaar var l: list<string> = ['a'] 151f32f0997SBram Moolenaar l->add(123) 152f32f0997SBram Moolenaar END 153f32f0997SBram Moolenaar CheckScriptFailure(lines, 'E1012: Type mismatch; expected string but got number', 3) 154f055d450SBram Moolenaar 155f055d450SBram Moolenaar lines =<< trim END 156f055d450SBram Moolenaar vim9script 157f055d450SBram Moolenaar var l: list<string> 158f055d450SBram Moolenaar l->add(123) 159f055d450SBram Moolenaar END 160f055d450SBram Moolenaar CheckScriptFailure(lines, 'E1012: Type mismatch; expected string but got number', 3) 16194738d8fSBram Moolenaarenddef 16294738d8fSBram Moolenaar 1637237cab8SYegappan Lakshmanandef Test_and() 1644490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['and("x", 0x2)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 1654490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['and(0x1, "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 1667237cab8SYegappan Lakshmananenddef 1677237cab8SYegappan Lakshmanan 1683af15ab7SBram Moolenaardef Test_append() 1693af15ab7SBram Moolenaar new 1703af15ab7SBram Moolenaar setline(1, range(3)) 1713af15ab7SBram Moolenaar var res1: number = append(1, 'one') 1723af15ab7SBram Moolenaar assert_equal(0, res1) 1733af15ab7SBram Moolenaar var res2: bool = append(3, 'two') 1743af15ab7SBram Moolenaar assert_equal(false, res2) 1753af15ab7SBram Moolenaar assert_equal(['0', 'one', '1', 'two', '2'], getline(1, 6)) 176b2ac7d06SBram Moolenaar 177b2ac7d06SBram Moolenaar append(0, 'zero') 178b2ac7d06SBram Moolenaar assert_equal('zero', getline(1)) 1791a71d31bSYegappan Lakshmanan append(0, {a: 10}) 1801a71d31bSYegappan Lakshmanan assert_equal("{'a': 10}", getline(1)) 1811a71d31bSYegappan Lakshmanan append(0, function('min')) 1821a71d31bSYegappan Lakshmanan assert_equal("function('min')", getline(1)) 1834490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['append([1], "x")'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1') 184fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['append("", "x")'], 'E1209: Invalid value for a line number') 1851a71d31bSYegappan Lakshmanan bwipe! 1861a71d31bSYegappan Lakshmananenddef 1871a71d31bSYegappan Lakshmanan 1881a71d31bSYegappan Lakshmanandef Test_appendbufline() 1891a71d31bSYegappan Lakshmanan new 1901a71d31bSYegappan Lakshmanan var bnum: number = bufnr() 1911a71d31bSYegappan Lakshmanan :wincmd w 1921a71d31bSYegappan Lakshmanan appendbufline(bnum, 0, range(3)) 1931a71d31bSYegappan Lakshmanan var res1: number = appendbufline(bnum, 1, 'one') 1941a71d31bSYegappan Lakshmanan assert_equal(0, res1) 1951a71d31bSYegappan Lakshmanan var res2: bool = appendbufline(bnum, 3, 'two') 1961a71d31bSYegappan Lakshmanan assert_equal(false, res2) 1971a71d31bSYegappan Lakshmanan assert_equal(['0', 'one', '1', 'two', '2', ''], getbufline(bnum, 1, '$')) 1981a71d31bSYegappan Lakshmanan appendbufline(bnum, 0, 'zero') 1991a71d31bSYegappan Lakshmanan assert_equal(['zero'], getbufline(bnum, 1)) 2004490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['appendbufline([1], 1, "x")'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1') 2014490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['appendbufline(1, [1], "x")'], 'E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 2') 20278db17c6SBram Moolenaar 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') 2031a71d31bSYegappan Lakshmanan bnum->bufwinid()->win_gotoid() 20451491adfSYegappan Lakshmanan appendbufline('', 0, 'numbers') 20551491adfSYegappan Lakshmanan getline(1)->assert_equal('numbers') 206b2ac7d06SBram Moolenaar bwipe! 2073af15ab7SBram Moolenaarenddef 2083af15ab7SBram Moolenaar 2097237cab8SYegappan Lakshmanandef Test_argc() 2104490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['argc("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2117237cab8SYegappan Lakshmananenddef 2127237cab8SYegappan Lakshmanan 2137237cab8SYegappan Lakshmanandef Test_arglistid() 2144490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['arglistid("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2154490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['arglistid(1, "y")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 2164490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['arglistid("x", "y")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2177237cab8SYegappan Lakshmananenddef 2187237cab8SYegappan Lakshmanan 2197237cab8SYegappan Lakshmanandef Test_argv() 2204490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['argv("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2214490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['argv(1, "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 2224490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['argv("x", "y")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2235b73992dSYegappan Lakshmananenddef 2245b73992dSYegappan Lakshmanan 2251a71d31bSYegappan Lakshmanandef Test_assert_beeps() 2261a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['assert_beeps(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 2271a71d31bSYegappan Lakshmananenddef 2281a71d31bSYegappan Lakshmanan 2295b73992dSYegappan Lakshmanandef Test_assert_equalfile() 2304490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['assert_equalfile(1, "f2")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 2314490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['assert_equalfile("f1", true)'], 'E1013: Argument 2: type mismatch, expected string but got bool', 'E1174: String required for argument 2') 2324490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['assert_equalfile("f1", "f2", ["a"])'], 'E1013: Argument 3: type mismatch, expected string but got list<string>', 'E1174: String required for argument 3') 2335b73992dSYegappan Lakshmananenddef 2345b73992dSYegappan Lakshmanan 2355b73992dSYegappan Lakshmanandef Test_assert_exception() 2364490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['assert_exception({})'], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1') 2374490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['assert_exception("E1:", v:null)'], 'E1013: Argument 2: type mismatch, expected string but got special', 'E1174: String required for argument 2') 2385b73992dSYegappan Lakshmananenddef 2395b73992dSYegappan Lakshmanan 240a764e73dSYegappan Lakshmanandef Test_assert_fails() 2414490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['assert_fails([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 2424490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['assert_fails("a", true)'], 'E1013: Argument 2: type mismatch, expected string but got bool', 'E1222: String or List required for argument 2') 243a764e73dSYegappan Lakshmanan CheckDefAndScriptFailure2(['assert_fails("a", "b", "c", "d")'], 'E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4') 244a764e73dSYegappan Lakshmanan CheckDefAndScriptFailure2(['assert_fails("a", "b", "c", 4, 5)'], 'E1013: Argument 5: type mismatch, expected string but got number', 'E1174: String required for argument 5') 245a764e73dSYegappan Lakshmananenddef 246a764e73dSYegappan Lakshmanan 247a764e73dSYegappan Lakshmanandef Test_assert_inrange() 2484490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['assert_inrange("a", 2, 3)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 2494490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['assert_inrange(1, "b", 3)'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 2') 2504490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['assert_inrange(1, 2, "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 3') 251a764e73dSYegappan Lakshmanan CheckDefAndScriptFailure2(['assert_inrange(1, 2, 3, 4)'], 'E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4') 252a764e73dSYegappan Lakshmananenddef 253a764e73dSYegappan Lakshmanan 2545b73992dSYegappan Lakshmanandef Test_assert_match() 2554490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['assert_match({}, "b")'], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>', '') 2564490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['assert_match("a", 1)'], 'E1013: Argument 2: type mismatch, expected string but got number', '') 2574490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['assert_match("a", "b", null)'], 'E1013: Argument 3: type mismatch, expected string but got special', '') 2585b73992dSYegappan Lakshmananenddef 2595b73992dSYegappan Lakshmanan 2601a71d31bSYegappan Lakshmanandef Test_assert_nobeep() 2611a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['assert_nobeep(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 2621a71d31bSYegappan Lakshmananenddef 2631a71d31bSYegappan Lakshmanan 2645b73992dSYegappan Lakshmanandef Test_assert_notmatch() 2654490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['assert_notmatch({}, "b")'], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>', '') 2664490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['assert_notmatch("a", 1)'], 'E1013: Argument 2: type mismatch, expected string but got number', '') 2674490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['assert_notmatch("a", "b", null)'], 'E1013: Argument 3: type mismatch, expected string but got special', '') 2687237cab8SYegappan Lakshmananenddef 2697237cab8SYegappan Lakshmanan 270c72bdd28SYegappan Lakshmanandef Test_assert_report() 271c72bdd28SYegappan Lakshmanan CheckDefAndScriptFailure2(['assert_report([1, 2])'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1') 272c72bdd28SYegappan Lakshmananenddef 273c72bdd28SYegappan Lakshmanan 27432105ae8SBram Moolenaardef Test_balloon_show() 27532105ae8SBram Moolenaar CheckGui 27632105ae8SBram Moolenaar CheckFeature balloon_eval 27732105ae8SBram Moolenaar 2784490ec4eSYegappan Lakshmanan assert_fails('balloon_show(10)', 'E1222:') 2794490ec4eSYegappan Lakshmanan assert_fails('balloon_show(true)', 'E1222:') 280c72bdd28SYegappan Lakshmanan 2814490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['balloon_show(1.2)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1222: String or List required for argument 1') 2824490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['balloon_show({"a": 10})'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1') 28332105ae8SBram Moolenaarenddef 28432105ae8SBram Moolenaar 28532105ae8SBram Moolenaardef Test_balloon_split() 2867b45d46cSBram Moolenaar CheckFeature balloon_eval_term 28732105ae8SBram Moolenaar 288a26f56f6SYegappan Lakshmanan assert_fails('balloon_split([])', 'E1174:') 28932105ae8SBram Moolenaar assert_fails('balloon_split(true)', 'E1174:') 29032105ae8SBram Moolenaarenddef 29132105ae8SBram Moolenaar 2925dfe4674SYegappan Lakshmanandef Test_blob2list() 2935dfe4674SYegappan Lakshmanan CheckDefAndScriptFailure2(['blob2list(10)'], 'E1013: Argument 1: type mismatch, expected blob but got number', 'E1238: Blob required for argument 1') 2945dfe4674SYegappan Lakshmananenddef 2955dfe4674SYegappan Lakshmanan 296f28f2ac4SBram Moolenaardef Test_browse() 297f28f2ac4SBram Moolenaar CheckFeature browse 298f28f2ac4SBram Moolenaar 29983494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['browse(2, "title", "dir", "file")'], 'E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1') 30083494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['browse(true, 2, "dir", "file")'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 30183494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['browse(true, "title", 3, "file")'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 30283494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['browse(true, "title", "dir", 4)'], 'E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4') 303f28f2ac4SBram Moolenaarenddef 304f28f2ac4SBram Moolenaar 3055b73992dSYegappan Lakshmanandef Test_browsedir() 3064490ec4eSYegappan Lakshmanan if has('browse') 3074490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['browsedir({}, "b")'], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1') 3084490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['browsedir("a", [])'], 'E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2') 3094490ec4eSYegappan Lakshmanan endif 3105b73992dSYegappan Lakshmananenddef 3115b73992dSYegappan Lakshmanan 312a26f56f6SYegappan Lakshmanandef Test_bufadd() 3134490ec4eSYegappan Lakshmanan assert_fails('bufadd([])', 'E1174:') 314a26f56f6SYegappan Lakshmananenddef 315a26f56f6SYegappan Lakshmanan 31632105ae8SBram Moolenaardef Test_bufexists() 3174490ec4eSYegappan Lakshmanan assert_fails('bufexists(true)', 'E1220:') 318fc3b7750SYegappan Lakshmanan bufexists('')->assert_false() 31932105ae8SBram Moolenaarenddef 32032105ae8SBram Moolenaar 3213af15ab7SBram Moolenaardef Test_buflisted() 3223af15ab7SBram Moolenaar var res: bool = buflisted('asdf') 3233af15ab7SBram Moolenaar assert_equal(false, res) 3244490ec4eSYegappan Lakshmanan assert_fails('buflisted(true)', 'E1220:') 3254490ec4eSYegappan Lakshmanan assert_fails('buflisted([])', 'E1220:') 326fc3b7750SYegappan Lakshmanan buflisted('')->assert_false() 327a26f56f6SYegappan Lakshmananenddef 328a26f56f6SYegappan Lakshmanan 329a26f56f6SYegappan Lakshmanandef Test_bufload() 3304490ec4eSYegappan Lakshmanan assert_fails('bufload([])', 'E1220:') 33151491adfSYegappan Lakshmanan bufload('')->assert_equal(0) 332a26f56f6SYegappan Lakshmananenddef 333a26f56f6SYegappan Lakshmanan 334a26f56f6SYegappan Lakshmanandef Test_bufloaded() 3354490ec4eSYegappan Lakshmanan assert_fails('bufloaded(true)', 'E1220:') 3364490ec4eSYegappan Lakshmanan assert_fails('bufloaded([])', 'E1220:') 337fc3b7750SYegappan Lakshmanan bufloaded('')->assert_false() 3383af15ab7SBram Moolenaarenddef 3393af15ab7SBram Moolenaar 34094738d8fSBram Moolenaardef Test_bufname() 34194738d8fSBram Moolenaar split SomeFile 34294738d8fSBram Moolenaar bufname('%')->assert_equal('SomeFile') 34394738d8fSBram Moolenaar edit OtherFile 34494738d8fSBram Moolenaar bufname('#')->assert_equal('SomeFile') 34594738d8fSBram Moolenaar close 3464490ec4eSYegappan Lakshmanan assert_fails('bufname(true)', 'E1220:') 3474490ec4eSYegappan Lakshmanan assert_fails('bufname([])', 'E1220:') 34894738d8fSBram Moolenaarenddef 34994738d8fSBram Moolenaar 35094738d8fSBram Moolenaardef Test_bufnr() 35194738d8fSBram Moolenaar var buf = bufnr() 35294738d8fSBram Moolenaar bufnr('%')->assert_equal(buf) 35394738d8fSBram Moolenaar 35494738d8fSBram Moolenaar buf = bufnr('Xdummy', true) 35594738d8fSBram Moolenaar buf->assert_notequal(-1) 35694738d8fSBram Moolenaar exe 'bwipe! ' .. buf 3574490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['bufnr([1])'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1') 35883494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['bufnr(1, 2)'], 'E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2') 35994738d8fSBram Moolenaarenddef 36094738d8fSBram Moolenaar 36194738d8fSBram Moolenaardef Test_bufwinid() 36294738d8fSBram Moolenaar var origwin = win_getid() 36394738d8fSBram Moolenaar below split SomeFile 36494738d8fSBram Moolenaar var SomeFileID = win_getid() 36594738d8fSBram Moolenaar below split OtherFile 36694738d8fSBram Moolenaar below split SomeFile 36794738d8fSBram Moolenaar bufwinid('SomeFile')->assert_equal(SomeFileID) 36894738d8fSBram Moolenaar 36994738d8fSBram Moolenaar win_gotoid(origwin) 37094738d8fSBram Moolenaar only 37194738d8fSBram Moolenaar bwipe SomeFile 37294738d8fSBram Moolenaar bwipe OtherFile 37332105ae8SBram Moolenaar 3744490ec4eSYegappan Lakshmanan assert_fails('bufwinid(true)', 'E1220:') 3754490ec4eSYegappan Lakshmanan assert_fails('bufwinid([])', 'E1220:') 376a26f56f6SYegappan Lakshmananenddef 377a26f56f6SYegappan Lakshmanan 378a26f56f6SYegappan Lakshmanandef Test_bufwinnr() 3794490ec4eSYegappan Lakshmanan assert_fails('bufwinnr(true)', 'E1220:') 3804490ec4eSYegappan Lakshmanan assert_fails('bufwinnr([])', 'E1220:') 381a26f56f6SYegappan Lakshmananenddef 382a26f56f6SYegappan Lakshmanan 383a26f56f6SYegappan Lakshmanandef Test_byte2line() 3844490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['byte2line("1")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3854490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['byte2line([])'], 'E1013: Argument 1: type mismatch, expected number but got list<unknown>', 'E1210: Number required for argument 1') 386820d5525SYegappan Lakshmanan byte2line(0)->assert_equal(-1) 38794738d8fSBram Moolenaarenddef 38894738d8fSBram Moolenaar 3891a71d31bSYegappan Lakshmanandef Test_byteidx() 3901a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['byteidx(1, 2)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3911a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['byteidx("a", "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 392820d5525SYegappan Lakshmanan byteidx('', 0)->assert_equal(0) 393820d5525SYegappan Lakshmanan byteidx('', 1)->assert_equal(-1) 3941a71d31bSYegappan Lakshmananenddef 3951a71d31bSYegappan Lakshmanan 3961a71d31bSYegappan Lakshmanandef Test_byteidxcomp() 3971a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['byteidxcomp(1, 2)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3981a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['byteidxcomp("a", "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3991a71d31bSYegappan Lakshmananenddef 4001a71d31bSYegappan Lakshmanan 40194738d8fSBram Moolenaardef Test_call_call() 40294738d8fSBram Moolenaar var l = [3, 2, 1] 40394738d8fSBram Moolenaar call('reverse', [l]) 40494738d8fSBram Moolenaar l->assert_equal([1, 2, 3]) 4055bca906bSYegappan Lakshmanan CheckDefAndScriptFailure2(['call("reverse", 2)'], 'E1013: Argument 2: type mismatch, expected list<any> but got number', 'E1211: List required for argument 2') 4065bca906bSYegappan Lakshmanan CheckDefAndScriptFailure2(['call("reverse", [2], [1])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3') 40794738d8fSBram Moolenaarenddef 40894738d8fSBram Moolenaar 4095b73992dSYegappan Lakshmanandef Test_ch_canread() 4105b73992dSYegappan Lakshmanan if !has('channel') 4115b73992dSYegappan Lakshmanan CheckFeature channel 41283494b4aSYegappan Lakshmanan else 4134490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_canread(10)'], 'E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1') 41483494b4aSYegappan Lakshmanan endif 4155b73992dSYegappan Lakshmananenddef 4165b73992dSYegappan Lakshmanan 4175b73992dSYegappan Lakshmanandef Test_ch_close() 4185b73992dSYegappan Lakshmanan if !has('channel') 4195b73992dSYegappan Lakshmanan CheckFeature channel 42083494b4aSYegappan Lakshmanan else 4214490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_close("c")'], 'E1013: Argument 1: type mismatch, expected channel but got string', 'E1217: Channel or Job required for argument 1') 42283494b4aSYegappan Lakshmanan endif 4235b73992dSYegappan Lakshmananenddef 4245b73992dSYegappan Lakshmanan 4255b73992dSYegappan Lakshmanandef Test_ch_close_in() 4265b73992dSYegappan Lakshmanan if !has('channel') 4275b73992dSYegappan Lakshmanan CheckFeature channel 42883494b4aSYegappan Lakshmanan else 4294490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_close_in(true)'], 'E1013: Argument 1: type mismatch, expected channel but got bool', 'E1217: Channel or Job required for argument 1') 43083494b4aSYegappan Lakshmanan endif 43183494b4aSYegappan Lakshmananenddef 43283494b4aSYegappan Lakshmanan 43383494b4aSYegappan Lakshmanandef Test_ch_evalexpr() 43483494b4aSYegappan Lakshmanan if !has('channel') 43583494b4aSYegappan Lakshmanan CheckFeature channel 43683494b4aSYegappan Lakshmanan else 4370ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_evalexpr(1, "a")'], 'E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1') 43883494b4aSYegappan Lakshmanan 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') 43983494b4aSYegappan Lakshmanan endif 44083494b4aSYegappan Lakshmananenddef 44183494b4aSYegappan Lakshmanan 44283494b4aSYegappan Lakshmanandef Test_ch_evalraw() 44383494b4aSYegappan Lakshmanan if !has('channel') 44483494b4aSYegappan Lakshmanan CheckFeature channel 44583494b4aSYegappan Lakshmanan else 4460ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_evalraw(1, "")'], 'E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1') 4474490ec4eSYegappan Lakshmanan 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') 44883494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_evalraw(test_null_channel(), "", [])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3') 44983494b4aSYegappan Lakshmanan endif 45083494b4aSYegappan Lakshmananenddef 45183494b4aSYegappan Lakshmanan 45283494b4aSYegappan Lakshmanandef Test_ch_getbufnr() 45383494b4aSYegappan Lakshmanan if !has('channel') 45483494b4aSYegappan Lakshmanan CheckFeature channel 45583494b4aSYegappan Lakshmanan else 4560ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_getbufnr(1, "a")'], 'E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1') 45783494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_getbufnr(test_null_channel(), 1)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 45851491adfSYegappan Lakshmanan # test empty string argument for ch_getbufnr() 45951491adfSYegappan Lakshmanan var job: job = job_start(&shell) 46051491adfSYegappan Lakshmanan job->ch_getbufnr('')->assert_equal(-1) 46151491adfSYegappan Lakshmanan job_stop(job) 46283494b4aSYegappan Lakshmanan endif 4635b73992dSYegappan Lakshmananenddef 4645b73992dSYegappan Lakshmanan 4651a71d31bSYegappan Lakshmanandef Test_ch_getjob() 4669ff9c7b9SDominique Pelle if !has('channel') 4679ff9c7b9SDominique Pelle CheckFeature channel 4689ff9c7b9SDominique Pelle else 4694490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_getjob(1)'], 'E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1') 4704490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_getjob({"a": 10})'], 'E1013: Argument 1: type mismatch, expected channel but got dict<number>', 'E1217: Channel or Job required for argument 1') 4711a71d31bSYegappan Lakshmanan assert_equal(0, ch_getjob(test_null_channel())) 4729ff9c7b9SDominique Pelle endif 4731a71d31bSYegappan Lakshmananenddef 4741a71d31bSYegappan Lakshmanan 4755b73992dSYegappan Lakshmanandef Test_ch_info() 4765b73992dSYegappan Lakshmanan if !has('channel') 4775b73992dSYegappan Lakshmanan CheckFeature channel 47883494b4aSYegappan Lakshmanan else 4794490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_info([1])'], 'E1013: Argument 1: type mismatch, expected channel but got list<number>', 'E1217: Channel or Job required for argument 1') 48083494b4aSYegappan Lakshmanan endif 4815b73992dSYegappan Lakshmananenddef 4825b73992dSYegappan Lakshmanan 4837973de35SYegappan Lakshmanandef Test_ch_log() 4847973de35SYegappan Lakshmanan if !has('channel') 4857973de35SYegappan Lakshmanan CheckFeature channel 4867973de35SYegappan Lakshmanan else 4877973de35SYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_log(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1') 4887973de35SYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_log("a", 1)'], 'E1013: Argument 2: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 2') 4897973de35SYegappan Lakshmanan endif 4907973de35SYegappan Lakshmananenddef 4917973de35SYegappan Lakshmanan 492c5809439SBram Moolenaardef Test_ch_logfile() 493886e5e73SBram Moolenaar if !has('channel') 494886e5e73SBram Moolenaar CheckFeature channel 49583494b4aSYegappan Lakshmanan else 496a26f56f6SYegappan Lakshmanan assert_fails('ch_logfile(true)', 'E1174:') 497a26f56f6SYegappan Lakshmanan assert_fails('ch_logfile("foo", true)', 'E1174:') 49851491adfSYegappan Lakshmanan ch_logfile('', '')->assert_equal(0) 4995b73992dSYegappan Lakshmanan 5005b73992dSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_logfile(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 5015b73992dSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_logfile("a", true)'], 'E1013: Argument 2: type mismatch, expected string but got bool', 'E1174: String required for argument 2') 50283494b4aSYegappan Lakshmanan endif 5035b73992dSYegappan Lakshmananenddef 5045b73992dSYegappan Lakshmanan 5055b73992dSYegappan Lakshmanandef Test_ch_open() 5065b73992dSYegappan Lakshmanan if !has('channel') 5075b73992dSYegappan Lakshmanan CheckFeature channel 50883494b4aSYegappan Lakshmanan else 5095b73992dSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_open({"a": 10}, "a")'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1') 5105b73992dSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_open("a", [1])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2') 511fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['ch_open("")'], 'E475: Invalid argument') 51283494b4aSYegappan Lakshmanan endif 513c5809439SBram Moolenaarenddef 514c5809439SBram Moolenaar 5151a71d31bSYegappan Lakshmanandef Test_ch_read() 5161a71d31bSYegappan Lakshmanan if !has('channel') 5171a71d31bSYegappan Lakshmanan CheckFeature channel 51883494b4aSYegappan Lakshmanan else 5194490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_read(1)'], 'E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1') 5204490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_read(test_null_channel(), [])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2') 52183494b4aSYegappan Lakshmanan endif 5221a71d31bSYegappan Lakshmananenddef 5231a71d31bSYegappan Lakshmanan 5241a71d31bSYegappan Lakshmanandef Test_ch_readblob() 5251a71d31bSYegappan Lakshmanan if !has('channel') 5261a71d31bSYegappan Lakshmanan CheckFeature channel 52783494b4aSYegappan Lakshmanan else 5284490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_readblob(1)'], 'E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1') 5294490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_readblob(test_null_channel(), [])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2') 53083494b4aSYegappan Lakshmanan endif 5311a71d31bSYegappan Lakshmananenddef 5321a71d31bSYegappan Lakshmanan 5331a71d31bSYegappan Lakshmanandef Test_ch_readraw() 5341a71d31bSYegappan Lakshmanan if !has('channel') 5351a71d31bSYegappan Lakshmanan CheckFeature channel 53683494b4aSYegappan Lakshmanan else 5374490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_readraw(1)'], 'E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1') 5384490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_readraw(test_null_channel(), [])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2') 53983494b4aSYegappan Lakshmanan endif 54083494b4aSYegappan Lakshmananenddef 54183494b4aSYegappan Lakshmanan 54283494b4aSYegappan Lakshmanandef Test_ch_sendexpr() 54383494b4aSYegappan Lakshmanan if !has('channel') 54483494b4aSYegappan Lakshmanan CheckFeature channel 54583494b4aSYegappan Lakshmanan else 5460ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_sendexpr(1, "a")'], 'E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1') 54783494b4aSYegappan Lakshmanan 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') 54883494b4aSYegappan Lakshmanan endif 54983494b4aSYegappan Lakshmananenddef 55083494b4aSYegappan Lakshmanan 55183494b4aSYegappan Lakshmanandef Test_ch_sendraw() 55283494b4aSYegappan Lakshmanan if !has('channel') 55383494b4aSYegappan Lakshmanan CheckFeature channel 55483494b4aSYegappan Lakshmanan else 5550ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_sendraw(1, "")'], 'E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1') 5564490ec4eSYegappan Lakshmanan 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') 55783494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_sendraw(test_null_channel(), "", [])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3') 55883494b4aSYegappan Lakshmanan endif 5591a71d31bSYegappan Lakshmananenddef 5601a71d31bSYegappan Lakshmanan 5611a71d31bSYegappan Lakshmanandef Test_ch_setoptions() 5621a71d31bSYegappan Lakshmanan if !has('channel') 5631a71d31bSYegappan Lakshmanan CheckFeature channel 56483494b4aSYegappan Lakshmanan else 5654490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_setoptions(1, {})'], 'E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1') 5664490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_setoptions(test_null_channel(), [])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2') 56783494b4aSYegappan Lakshmanan endif 5681a71d31bSYegappan Lakshmananenddef 5691a71d31bSYegappan Lakshmanan 5701a71d31bSYegappan Lakshmanandef Test_ch_status() 5711a71d31bSYegappan Lakshmanan if !has('channel') 5721a71d31bSYegappan Lakshmanan CheckFeature channel 57383494b4aSYegappan Lakshmanan else 5744490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_status(1)'], 'E1013: Argument 1: type mismatch, expected channel but got number', 'E1217: Channel or Job required for argument 1') 5754490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['ch_status(test_null_channel(), [])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2') 57683494b4aSYegappan Lakshmanan endif 5771a71d31bSYegappan Lakshmananenddef 5781a71d31bSYegappan Lakshmanan 57994738d8fSBram Moolenaardef Test_char2nr() 58094738d8fSBram Moolenaar char2nr('あ', true)->assert_equal(12354) 581c5809439SBram Moolenaar 582a26f56f6SYegappan Lakshmanan assert_fails('char2nr(true)', 'E1174:') 583a9a7c0c6SYegappan Lakshmanan CheckDefAndScriptFailure2(['char2nr(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 58498c2eaedSBram Moolenaar CheckDefAndScriptFailure2(['char2nr("a", 2)'], 'E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2') 585a9a7c0c6SYegappan Lakshmanan assert_equal(97, char2nr('a', 1)) 586a9a7c0c6SYegappan Lakshmanan assert_equal(97, char2nr('a', 0)) 587a9a7c0c6SYegappan Lakshmanan assert_equal(97, char2nr('a', true)) 588a9a7c0c6SYegappan Lakshmanan assert_equal(97, char2nr('a', false)) 5895dfe4674SYegappan Lakshmanan char2nr('')->assert_equal(0) 590c5809439SBram Moolenaarenddef 591c5809439SBram Moolenaar 592c5809439SBram Moolenaardef Test_charclass() 593a26f56f6SYegappan Lakshmanan assert_fails('charclass(true)', 'E1174:') 594f8dbd586SYegappan Lakshmanan charclass('')->assert_equal(0) 595c5809439SBram Moolenaarenddef 596c5809439SBram Moolenaar 5975b73992dSYegappan Lakshmanandef Test_charcol() 5984490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['charcol(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1222: String or List required for argument 1') 5994490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['charcol({a: 10})'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1') 600fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['charcol("")'], 'E1209: Invalid value for a line number') 601c72bdd28SYegappan Lakshmanan new 602c72bdd28SYegappan Lakshmanan setline(1, ['abcdefgh']) 603c72bdd28SYegappan Lakshmanan cursor(1, 4) 604c72bdd28SYegappan Lakshmanan assert_equal(4, charcol('.')) 605c72bdd28SYegappan Lakshmanan assert_equal(9, charcol([1, '$'])) 606c72bdd28SYegappan Lakshmanan assert_equal(0, charcol([10, '$'])) 607c72bdd28SYegappan Lakshmanan bw! 6085b73992dSYegappan Lakshmananenddef 6095b73992dSYegappan Lakshmanan 6105b73992dSYegappan Lakshmanandef Test_charidx() 6114490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['charidx(0z10, 1)'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1174: String required for argument 1') 6124490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['charidx("a", "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 6134490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['charidx("a", 1, "")'], 'E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3') 614820d5525SYegappan Lakshmanan charidx('', 0)->assert_equal(-1) 615820d5525SYegappan Lakshmanan charidx('', 1)->assert_equal(-1) 6165b73992dSYegappan Lakshmananenddef 6175b73992dSYegappan Lakshmanan 618c5809439SBram Moolenaardef Test_chdir() 619a26f56f6SYegappan Lakshmanan assert_fails('chdir(true)', 'E1174:') 620a26f56f6SYegappan Lakshmananenddef 621a26f56f6SYegappan Lakshmanan 622a26f56f6SYegappan Lakshmanandef Test_cindent() 6234490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['cindent([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 6244490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['cindent(null)'], 'E1013: Argument 1: type mismatch, expected string but got special', 'E1220: String or Number required for argument 1') 625fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['cindent("")'], 'E1209: Invalid value for a line number') 626a26f56f6SYegappan Lakshmanan assert_equal(-1, cindent(0)) 627a26f56f6SYegappan Lakshmanan assert_equal(0, cindent('.')) 62894738d8fSBram Moolenaarenddef 62994738d8fSBram Moolenaar 6307237cab8SYegappan Lakshmanandef Test_clearmatches() 6314490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['clearmatches("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 6327237cab8SYegappan Lakshmananenddef 6337237cab8SYegappan Lakshmanan 63494738d8fSBram Moolenaardef Test_col() 63594738d8fSBram Moolenaar new 636c72bdd28SYegappan Lakshmanan setline(1, 'abcdefgh') 637c72bdd28SYegappan Lakshmanan cursor(1, 4) 638c72bdd28SYegappan Lakshmanan assert_equal(4, col('.')) 639c72bdd28SYegappan Lakshmanan col([1, '$'])->assert_equal(9) 640c72bdd28SYegappan Lakshmanan assert_equal(0, col([10, '$'])) 641c5809439SBram Moolenaar 6424490ec4eSYegappan Lakshmanan assert_fails('col(true)', 'E1222:') 6435b73992dSYegappan Lakshmanan 6444490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['col(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1222: String or List required for argument 1') 6454490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['col({a: 10})'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1') 6464490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['col(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1222: String or List required for argument 1') 647fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['col("")'], 'E1209: Invalid value for a line number') 6485b73992dSYegappan Lakshmanan bw! 649c5809439SBram Moolenaarenddef 650c5809439SBram Moolenaar 65183494b4aSYegappan Lakshmanandef Test_complete() 65283494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['complete("1", [])'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 65383494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['complete(1, {})'], 'E1013: Argument 2: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 2') 65483494b4aSYegappan Lakshmananenddef 65583494b4aSYegappan Lakshmanan 65683494b4aSYegappan Lakshmanandef Test_complete_add() 65778db17c6SBram Moolenaar CheckDefAndScriptFailure2(['complete_add([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1223: String or Dictionary required for argument 1') 65883494b4aSYegappan Lakshmananenddef 65983494b4aSYegappan Lakshmanan 6601a71d31bSYegappan Lakshmanandef Test_complete_info() 6614490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['complete_info("")'], 'E1013: Argument 1: type mismatch, expected list<string> but got string', 'E1211: List required for argument 1') 6624490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['complete_info({})'], 'E1013: Argument 1: type mismatch, expected list<string> but got dict<unknown>', 'E1211: List required for argument 1') 6631a71d31bSYegappan Lakshmanan assert_equal({'pum_visible': 0, 'mode': '', 'selected': -1, 'items': []}, complete_info()) 6641a71d31bSYegappan Lakshmanan assert_equal({'mode': '', 'items': []}, complete_info(['mode', 'items'])) 6651a71d31bSYegappan Lakshmananenddef 6661a71d31bSYegappan Lakshmanan 667c5809439SBram Moolenaardef Test_confirm() 668c5809439SBram Moolenaar if !has('dialog_con') && !has('dialog_gui') 669c5809439SBram Moolenaar CheckFeature dialog_con 670c5809439SBram Moolenaar endif 671c5809439SBram Moolenaar 672a26f56f6SYegappan Lakshmanan assert_fails('confirm(true)', 'E1174:') 673a26f56f6SYegappan Lakshmanan assert_fails('confirm("yes", true)', 'E1174:') 674a26f56f6SYegappan Lakshmanan assert_fails('confirm("yes", "maybe", 2, true)', 'E1174:') 6750ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['confirm(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 6760ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['confirm("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 6770ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['confirm("a", "b", "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 6780ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['confirm("a", "b", 3, 4)'], 'E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4') 679a26f56f6SYegappan Lakshmananenddef 680a26f56f6SYegappan Lakshmanan 68194738d8fSBram Moolenaardef Test_copy_return_type() 68294738d8fSBram Moolenaar var l = copy([1, 2, 3]) 68394738d8fSBram Moolenaar var res = 0 68494738d8fSBram Moolenaar for n in l 68594738d8fSBram Moolenaar res += n 68694738d8fSBram Moolenaar endfor 68794738d8fSBram Moolenaar res->assert_equal(6) 68894738d8fSBram Moolenaar 68994738d8fSBram Moolenaar var dl = deepcopy([1, 2, 3]) 69094738d8fSBram Moolenaar res = 0 69194738d8fSBram Moolenaar for n in dl 69294738d8fSBram Moolenaar res += n 69394738d8fSBram Moolenaar endfor 69494738d8fSBram Moolenaar res->assert_equal(6) 69594738d8fSBram Moolenaar 69694738d8fSBram Moolenaar dl = deepcopy([1, 2, 3], true) 69794738d8fSBram Moolenaarenddef 69894738d8fSBram Moolenaar 69994738d8fSBram Moolenaardef Test_count() 70094738d8fSBram Moolenaar count('ABC ABC ABC', 'b', true)->assert_equal(3) 70194738d8fSBram Moolenaar count('ABC ABC ABC', 'b', false)->assert_equal(0) 70278db17c6SBram Moolenaar CheckDefAndScriptFailure2(['count(10, 1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1225: String, List or Dictionary required for argument 1') 70383494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['count("a", [1], 2)'], 'E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3') 70483494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['count("a", [1], 0, "b")'], 'E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4') 70583494b4aSYegappan Lakshmanan count([1, 2, 2, 3], 2)->assert_equal(2) 70683494b4aSYegappan Lakshmanan count([1, 2, 2, 3], 2, false, 2)->assert_equal(1) 70783494b4aSYegappan Lakshmanan count({a: 1.1, b: 2.2, c: 1.1}, 1.1)->assert_equal(2) 70894738d8fSBram Moolenaarenddef 70994738d8fSBram Moolenaar 7107973de35SYegappan Lakshmanandef Test_cscope_connection() 7117973de35SYegappan Lakshmanan CheckFeature cscope 7127973de35SYegappan Lakshmanan assert_equal(0, cscope_connection()) 7137973de35SYegappan Lakshmanan CheckDefAndScriptFailure2(['cscope_connection("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 7147973de35SYegappan Lakshmanan CheckDefAndScriptFailure2(['cscope_connection(1, 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 7157973de35SYegappan Lakshmanan CheckDefAndScriptFailure2(['cscope_connection(1, "b", 3)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 7167973de35SYegappan Lakshmananenddef 7177973de35SYegappan Lakshmanan 7189a963377SBram Moolenaardef Test_cursor() 7199a963377SBram Moolenaar new 7209a963377SBram Moolenaar setline(1, range(4)) 7219a963377SBram Moolenaar cursor(2, 1) 7229a963377SBram Moolenaar assert_equal(2, getcurpos()[1]) 7239a963377SBram Moolenaar cursor('$', 1) 7249a963377SBram Moolenaar assert_equal(4, getcurpos()[1]) 725cd917207SYegappan Lakshmanan cursor([2, 1]) 726cd917207SYegappan Lakshmanan assert_equal(2, getcurpos()[1]) 7279a963377SBram Moolenaar 7289a963377SBram Moolenaar var lines =<< trim END 7299a963377SBram Moolenaar cursor('2', 1) 7309a963377SBram Moolenaar END 7310f1227f7SBram Moolenaar CheckDefExecAndScriptFailure(lines, 'E1209:') 73278db17c6SBram Moolenaar CheckDefAndScriptFailure2(['cursor(0z10, 1)'], 'E1013: Argument 1: type mismatch, expected number but got blob', 'E1224: String, Number or List required for argument 1') 73383494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['cursor(1, "2")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 73483494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['cursor(1, 2, "3")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 735fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['cursor("", 2)'], 'E1209: Invalid value for a line number') 7369a963377SBram Moolenaarenddef 7379a963377SBram Moolenaar 7387237cab8SYegappan Lakshmanandef Test_debugbreak() 7397237cab8SYegappan Lakshmanan CheckMSWindows 7404490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['debugbreak("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 7417237cab8SYegappan Lakshmananenddef 7427237cab8SYegappan Lakshmanan 74383494b4aSYegappan Lakshmanandef Test_deepcopy() 74483494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['deepcopy({}, 2)'], 'E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2') 74583494b4aSYegappan Lakshmananenddef 74683494b4aSYegappan Lakshmanan 7473af15ab7SBram Moolenaardef Test_delete() 7483af15ab7SBram Moolenaar var res: bool = delete('doesnotexist') 7493af15ab7SBram Moolenaar assert_equal(true, res) 7505b73992dSYegappan Lakshmanan 7514490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['delete(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 7524490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['delete("a", 10)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 753fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['delete("")'], 'E474: Invalid argument') 7543af15ab7SBram Moolenaarenddef 7553af15ab7SBram Moolenaar 75683494b4aSYegappan Lakshmanandef Test_deletebufline() 7574490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['deletebufline([], 2)'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 7584490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['deletebufline("a", [])'], 'E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 2') 7594490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['deletebufline("a", 2, 0z10)'], 'E1013: Argument 3: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 3') 76051491adfSYegappan Lakshmanan new 76151491adfSYegappan Lakshmanan setline(1, ['one', 'two']) 76251491adfSYegappan Lakshmanan deletebufline('', 1) 76351491adfSYegappan Lakshmanan getline(1, '$')->assert_equal(['two']) 76451491adfSYegappan Lakshmanan bwipe! 76583494b4aSYegappan Lakshmananenddef 76683494b4aSYegappan Lakshmanan 767a26f56f6SYegappan Lakshmanandef Test_diff_filler() 7684490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['diff_filler([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 7694490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['diff_filler(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1') 770fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['diff_filler("")'], 'E1209: Invalid value for a line number') 771a26f56f6SYegappan Lakshmanan assert_equal(0, diff_filler(1)) 772a26f56f6SYegappan Lakshmanan assert_equal(0, diff_filler('.')) 773a26f56f6SYegappan Lakshmananenddef 774a26f56f6SYegappan Lakshmanan 775a9a7c0c6SYegappan Lakshmanandef Test_diff_hlID() 7764490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['diff_hlID(0z10, 1)'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1') 777a9a7c0c6SYegappan Lakshmanan CheckDefAndScriptFailure2(['diff_hlID(1, "a")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 778fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['diff_hlID("", 10)'], 'E1209: Invalid value for a line number') 779fc3b7750SYegappan Lakshmananenddef 780fc3b7750SYegappan Lakshmanan 781fc3b7750SYegappan Lakshmanandef Test_digraph_get() 782fc3b7750SYegappan Lakshmanan CheckDefAndScriptFailure2(['digraph_get(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 783fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['digraph_get("")'], 'E1214: Digraph must be just two characters') 784fc3b7750SYegappan Lakshmananenddef 785fc3b7750SYegappan Lakshmanan 786fc3b7750SYegappan Lakshmanandef Test_digraph_getlist() 787fc3b7750SYegappan Lakshmanan CheckDefAndScriptFailure2(['digraph_getlist(10)'], 'E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1') 788fc3b7750SYegappan Lakshmanan CheckDefAndScriptFailure2(['digraph_getlist("")'], 'E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1') 789fc3b7750SYegappan Lakshmananenddef 790fc3b7750SYegappan Lakshmanan 791fc3b7750SYegappan Lakshmanandef Test_digraph_set() 792fc3b7750SYegappan Lakshmanan CheckDefAndScriptFailure2(['digraph_set(10, "a")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 793fc3b7750SYegappan Lakshmanan CheckDefAndScriptFailure2(['digraph_set("ab", 0z10)'], 'E1013: Argument 2: type mismatch, expected string but got blob', 'E1174: String required for argument 2') 794fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['digraph_set("", "a")'], 'E1214: Digraph must be just two characters') 795fc3b7750SYegappan Lakshmananenddef 796fc3b7750SYegappan Lakshmanan 797fc3b7750SYegappan Lakshmanandef Test_digraph_setlist() 798fc3b7750SYegappan Lakshmanan 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') 799fc3b7750SYegappan Lakshmanan 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') 800a9a7c0c6SYegappan Lakshmananenddef 801a9a7c0c6SYegappan Lakshmanan 8021a71d31bSYegappan Lakshmanandef Test_echoraw() 8031a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['echoraw(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 8041a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['echoraw(["x"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1') 8051a71d31bSYegappan Lakshmananenddef 8061a71d31bSYegappan Lakshmanan 807a26f56f6SYegappan Lakshmanandef Test_escape() 8084490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['escape(10, " ")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 8094490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['escape(true, false)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1') 8104490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['escape("a", 10)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 811a26f56f6SYegappan Lakshmanan assert_equal('a\:b', escape("a:b", ":")) 8125dfe4674SYegappan Lakshmanan escape('abc', '')->assert_equal('abc') 8135dfe4674SYegappan Lakshmanan escape('', ':')->assert_equal('') 814a26f56f6SYegappan Lakshmananenddef 815a26f56f6SYegappan Lakshmanan 816a26f56f6SYegappan Lakshmanandef Test_eval() 8174490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['eval(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 8184490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['eval(null)'], 'E1013: Argument 1: type mismatch, expected string but got special', 'E1174: String required for argument 1') 819fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['eval("")'], 'E15: Invalid expression') 820a26f56f6SYegappan Lakshmanan assert_equal(2, eval('1 + 1')) 821a26f56f6SYegappan Lakshmananenddef 822a26f56f6SYegappan Lakshmanan 8237bb4e74cSBram Moolenaardef Test_executable() 8242a9d5d38SBram Moolenaar assert_false(executable("")) 8252a9d5d38SBram Moolenaar assert_false(executable(test_null_string())) 8262a9d5d38SBram Moolenaar 827a26f56f6SYegappan Lakshmanan CheckDefExecFailure(['echo executable(123)'], 'E1013:') 828a26f56f6SYegappan Lakshmanan CheckDefExecFailure(['echo executable(true)'], 'E1013:') 8297bb4e74cSBram Moolenaarenddef 8307bb4e74cSBram Moolenaar 831ca81f0e8SBram Moolenaardef Test_execute() 832ca81f0e8SBram Moolenaar var res = execute("echo 'hello'") 833ca81f0e8SBram Moolenaar assert_equal("\nhello", res) 834ca81f0e8SBram Moolenaar res = execute(["echo 'here'", "echo 'there'"]) 835ca81f0e8SBram Moolenaar assert_equal("\nhere\nthere", res) 836ca81f0e8SBram Moolenaar 8374490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['execute(123)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1222: String or List required for argument 1') 8385b73992dSYegappan Lakshmanan CheckDefFailure(['execute([123])'], 'E1013: Argument 1: type mismatch, expected list<string> but got list<number>') 839ca81f0e8SBram Moolenaar CheckDefExecFailure(['echo execute(["xx", 123])'], 'E492') 8404490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['execute("xx", 123)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 841ca81f0e8SBram Moolenaarenddef 842ca81f0e8SBram Moolenaar 8437bb4e74cSBram Moolenaardef Test_exepath() 844a26f56f6SYegappan Lakshmanan CheckDefExecFailure(['echo exepath(true)'], 'E1013:') 845a26f56f6SYegappan Lakshmanan CheckDefExecFailure(['echo exepath(v:null)'], 'E1013:') 846fa984418SBram Moolenaar CheckDefExecFailure(['echo exepath("")'], 'E1175:') 8477bb4e74cSBram Moolenaarenddef 8487bb4e74cSBram Moolenaar 8495671f3f0SBram Moolenaarcommand DoSomeCommand let g:didSomeCommand = 4 8505671f3f0SBram Moolenaar 851a26f56f6SYegappan Lakshmanandef Test_exists() 8524490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['exists(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 853a26f56f6SYegappan Lakshmanan call assert_equal(1, exists('&tabstop')) 854bb7ee7abSBram Moolenaar 85526735990SBram Moolenaar var lines =<< trim END 856bb7ee7abSBram Moolenaar if exists('+newoption') 857bb7ee7abSBram Moolenaar if &newoption == 'ok' 858bb7ee7abSBram Moolenaar endif 859bb7ee7abSBram Moolenaar endif 86026735990SBram Moolenaar END 86126735990SBram Moolenaar CheckDefFailure(lines, 'E113:') 86226735990SBram Moolenaar CheckScriptSuccess(lines) 86326735990SBram Moolenaarenddef 86426735990SBram Moolenaar 86526735990SBram Moolenaardef Test_exists_compiled() 86626735990SBram Moolenaar call assert_equal(1, exists_compiled('&tabstop')) 86726735990SBram Moolenaar CheckDefAndScriptFailure2(['exists_compiled(10)'], 'E1232:', 'E1233:') 86826735990SBram Moolenaar CheckDefAndScriptFailure2(['exists_compiled(v:progname)'], 'E1232:', 'E1233:') 86926735990SBram Moolenaar 87026735990SBram Moolenaar if exists_compiled('+newoption') 871bb7ee7abSBram Moolenaar if &newoption == 'ok' 872bb7ee7abSBram Moolenaar endif 873bb7ee7abSBram Moolenaar endif 87426735990SBram Moolenaar if exists_compiled('&newoption') 87526735990SBram Moolenaar if &newoption == 'ok' 87626735990SBram Moolenaar endif 87726735990SBram Moolenaar endif 87826735990SBram Moolenaar if exists_compiled('+tabstop') 879bb7ee7abSBram Moolenaar assert_equal(8, &tabstop) 880bb7ee7abSBram Moolenaar else 881bb7ee7abSBram Moolenaar assert_report('tabstop option not existing?') 882bb7ee7abSBram Moolenaar endif 88326735990SBram Moolenaar if exists_compiled('&tabstop') 884bb7ee7abSBram Moolenaar assert_equal(8, &tabstop) 885bb7ee7abSBram Moolenaar else 886bb7ee7abSBram Moolenaar assert_report('tabstop option not existing?') 887bb7ee7abSBram Moolenaar endif 8885671f3f0SBram Moolenaar 88926735990SBram Moolenaar if exists_compiled(':DoSomeCommand') >= 2 8905671f3f0SBram Moolenaar DoSomeCommand 8915671f3f0SBram Moolenaar endif 8925671f3f0SBram Moolenaar assert_equal(4, g:didSomeCommand) 89326735990SBram Moolenaar if exists_compiled(':NoSuchCommand') >= 2 8945671f3f0SBram Moolenaar NoSuchCommand 8955671f3f0SBram Moolenaar endif 8965671f3f0SBram Moolenaar 8975671f3f0SBram Moolenaar var found = false 89826735990SBram Moolenaar if exists_compiled('*CheckScriptSuccess') 8995671f3f0SBram Moolenaar found = true 9005671f3f0SBram Moolenaar endif 9015671f3f0SBram Moolenaar assert_true(found) 90226735990SBram Moolenaar if exists_compiled('*NoSuchFunction') 9035671f3f0SBram Moolenaar NoSuchFunction() 9045671f3f0SBram Moolenaar endif 90526735990SBram Moolenaar if exists_compiled('*no_such_function') 9065671f3f0SBram Moolenaar no_such_function() 9075671f3f0SBram Moolenaar endif 908a26f56f6SYegappan Lakshmananenddef 909a26f56f6SYegappan Lakshmanan 91094738d8fSBram Moolenaardef Test_expand() 91194738d8fSBram Moolenaar split SomeFile 91294738d8fSBram Moolenaar expand('%', true, true)->assert_equal(['SomeFile']) 91394738d8fSBram Moolenaar close 91483494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['expand(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 91583494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['expand("a", 2)'], 'E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2') 91683494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['expand("a", true, 2)'], 'E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3') 917820d5525SYegappan Lakshmanan expand('')->assert_equal('') 91894738d8fSBram Moolenaarenddef 91994738d8fSBram Moolenaar 92002795104SBram Moolenaardef Test_expandcmd() 92102795104SBram Moolenaar $FOO = "blue" 92202795104SBram Moolenaar assert_equal("blue sky", expandcmd("`=$FOO .. ' sky'`")) 92302795104SBram Moolenaar 92402795104SBram Moolenaar assert_equal("yes", expandcmd("`={a: 'yes'}['a']`")) 925f8dbd586SYegappan Lakshmanan expandcmd('')->assert_equal('') 92602795104SBram Moolenaarenddef 92702795104SBram Moolenaar 928fbcbffe1SBram Moolenaardef Test_extend_arg_types() 929c03f5c67SBram Moolenaar g:number_one = 1 930c03f5c67SBram Moolenaar g:string_keep = 'keep' 931c03f5c67SBram Moolenaar var lines =<< trim END 932fbcbffe1SBram Moolenaar assert_equal([1, 2, 3], extend([1, 2], [3])) 933fbcbffe1SBram Moolenaar assert_equal([3, 1, 2], extend([1, 2], [3], 0)) 934fbcbffe1SBram Moolenaar assert_equal([1, 3, 2], extend([1, 2], [3], 1)) 935c03f5c67SBram Moolenaar assert_equal([1, 3, 2], extend([1, 2], [3], g:number_one)) 936fbcbffe1SBram Moolenaar 937e0de171eSBram Moolenaar assert_equal({a: 1, b: 2, c: 3}, extend({a: 1, b: 2}, {c: 3})) 938e0de171eSBram Moolenaar assert_equal({a: 1, b: 4}, extend({a: 1, b: 2}, {b: 4})) 939e0de171eSBram Moolenaar assert_equal({a: 1, b: 2}, extend({a: 1, b: 2}, {b: 4}, 'keep')) 940c03f5c67SBram Moolenaar assert_equal({a: 1, b: 2}, extend({a: 1, b: 2}, {b: 4}, g:string_keep)) 941193f6201SBram Moolenaar 942193f6201SBram Moolenaar var res: list<dict<any>> 94375ab91ffSBram Moolenaar extend(res, mapnew([1, 2], (_, v) => ({}))) 944193f6201SBram Moolenaar assert_equal([{}, {}], res) 945c03f5c67SBram Moolenaar END 946c03f5c67SBram Moolenaar CheckDefAndScriptSuccess(lines) 947fbcbffe1SBram Moolenaar 9484490ec4eSYegappan Lakshmanan 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') 9494490ec4eSYegappan Lakshmanan 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') 9504490ec4eSYegappan Lakshmanan 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>') 951fbcbffe1SBram Moolenaar CheckDefFailure(['extend([1, 2], [3], "x")'], 'E1013: Argument 3: type mismatch, expected number but got string') 952fbcbffe1SBram Moolenaar 953e0de171eSBram Moolenaar CheckDefFailure(['extend({a: 1}, 42)'], 'E1013: Argument 2: type mismatch, expected dict<number> but got number') 954e0de171eSBram Moolenaar CheckDefFailure(['extend({a: 1}, {b: "x"})'], 'E1013: Argument 2: type mismatch, expected dict<number> but got dict<string>') 955e0de171eSBram Moolenaar CheckDefFailure(['extend({a: 1}, {b: 2}, 1)'], 'E1013: Argument 3: type mismatch, expected string but got number') 956351ead09SBram Moolenaar 957351ead09SBram Moolenaar CheckDefFailure(['extend([1], ["b"])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>') 958e32e516dSBram Moolenaar CheckDefExecFailure(['extend([1], ["b", 1])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<any>') 9597a3fe3e1SBram Moolenaar 9607a3fe3e1SBram Moolenaar CheckScriptFailure(['vim9script', 'extend([1], ["b", 1])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<any> in extend()') 961fbcbffe1SBram Moolenaarenddef 962fbcbffe1SBram Moolenaar 963aa210a3aSBram Moolenaarfunc g:ExtendDict(d) 964aa210a3aSBram Moolenaar call extend(a:d, #{xx: 'x'}) 965aa210a3aSBram Moolenaarendfunc 966aa210a3aSBram Moolenaar 967aa210a3aSBram Moolenaardef Test_extend_dict_item_type() 968aa210a3aSBram Moolenaar var lines =<< trim END 969aa210a3aSBram Moolenaar var d: dict<number> = {a: 1} 970aa210a3aSBram Moolenaar extend(d, {b: 2}) 971aa210a3aSBram Moolenaar END 972aa210a3aSBram Moolenaar CheckDefAndScriptSuccess(lines) 973aa210a3aSBram Moolenaar 974aa210a3aSBram Moolenaar lines =<< trim END 975aa210a3aSBram Moolenaar var d: dict<number> = {a: 1} 976aa210a3aSBram Moolenaar extend(d, {b: 'x'}) 977aa210a3aSBram Moolenaar END 978c03f5c67SBram Moolenaar CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected dict<number> but got dict<string>', 2) 979aa210a3aSBram Moolenaar 980aa210a3aSBram Moolenaar lines =<< trim END 981aa210a3aSBram Moolenaar var d: dict<number> = {a: 1} 982aa210a3aSBram Moolenaar g:ExtendDict(d) 983aa210a3aSBram Moolenaar END 984aa210a3aSBram Moolenaar CheckDefExecFailure(lines, 'E1012: Type mismatch; expected number but got string', 0) 985aa210a3aSBram Moolenaar CheckScriptFailure(['vim9script'] + lines, 'E1012:', 1) 986b56c4419SBram Moolenaar 987b56c4419SBram Moolenaar lines =<< trim END 988b56c4419SBram Moolenaar var d: dict<bool> 989b56c4419SBram Moolenaar extend(d, {b: 0}) 990b56c4419SBram Moolenaar END 991b56c4419SBram Moolenaar CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected dict<bool> but got dict<number>', 2) 992aa210a3aSBram Moolenaarenddef 993aa210a3aSBram Moolenaar 994aa210a3aSBram Moolenaarfunc g:ExtendList(l) 995aa210a3aSBram Moolenaar call extend(a:l, ['x']) 996aa210a3aSBram Moolenaarendfunc 997aa210a3aSBram Moolenaar 998aa210a3aSBram Moolenaardef Test_extend_list_item_type() 999aa210a3aSBram Moolenaar var lines =<< trim END 1000aa210a3aSBram Moolenaar var l: list<number> = [1] 1001aa210a3aSBram Moolenaar extend(l, [2]) 1002aa210a3aSBram Moolenaar END 1003aa210a3aSBram Moolenaar CheckDefAndScriptSuccess(lines) 1004aa210a3aSBram Moolenaar 1005aa210a3aSBram Moolenaar lines =<< trim END 1006aa210a3aSBram Moolenaar var l: list<number> = [1] 1007aa210a3aSBram Moolenaar extend(l, ['x']) 1008aa210a3aSBram Moolenaar END 1009c03f5c67SBram Moolenaar CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>', 2) 1010aa210a3aSBram Moolenaar 1011aa210a3aSBram Moolenaar lines =<< trim END 1012aa210a3aSBram Moolenaar var l: list<number> = [1] 1013aa210a3aSBram Moolenaar g:ExtendList(l) 1014aa210a3aSBram Moolenaar END 1015aa210a3aSBram Moolenaar CheckDefExecFailure(lines, 'E1012: Type mismatch; expected number but got string', 0) 1016aa210a3aSBram Moolenaar CheckScriptFailure(['vim9script'] + lines, 'E1012:', 1) 1017b56c4419SBram Moolenaar 1018b56c4419SBram Moolenaar lines =<< trim END 1019b56c4419SBram Moolenaar var l: list<bool> 1020b56c4419SBram Moolenaar extend(l, [0]) 1021b56c4419SBram Moolenaar END 1022b56c4419SBram Moolenaar CheckDefAndScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected list<bool> but got list<number>', 2) 1023aa210a3aSBram Moolenaarenddef 102494738d8fSBram Moolenaar 10251a71d31bSYegappan Lakshmanandef Test_extend_return_type() 10261a71d31bSYegappan Lakshmanan var l = extend([1, 2], [3]) 10271a71d31bSYegappan Lakshmanan var res = 0 10281a71d31bSYegappan Lakshmanan for n in l 10291a71d31bSYegappan Lakshmanan res += n 10301a71d31bSYegappan Lakshmanan endfor 10311a71d31bSYegappan Lakshmanan res->assert_equal(6) 10321a71d31bSYegappan Lakshmananenddef 10331a71d31bSYegappan Lakshmanan 103493e1cae7SBram Moolenaardef Test_extend_with_error_function() 103593e1cae7SBram Moolenaar var lines =<< trim END 103693e1cae7SBram Moolenaar vim9script 103793e1cae7SBram Moolenaar def F() 103893e1cae7SBram Moolenaar { 103993e1cae7SBram Moolenaar var m = 10 104093e1cae7SBram Moolenaar } 104193e1cae7SBram Moolenaar echo m 104293e1cae7SBram Moolenaar enddef 104393e1cae7SBram Moolenaar 104493e1cae7SBram Moolenaar def Test() 104593e1cae7SBram Moolenaar var d: dict<any> = {} 104693e1cae7SBram Moolenaar d->extend({A: 10, Func: function('F', [])}) 104793e1cae7SBram Moolenaar enddef 104893e1cae7SBram Moolenaar 104993e1cae7SBram Moolenaar Test() 105093e1cae7SBram Moolenaar END 105193e1cae7SBram Moolenaar CheckScriptFailure(lines, 'E1001: Variable not found: m') 105293e1cae7SBram Moolenaarenddef 105393e1cae7SBram Moolenaar 10541a71d31bSYegappan Lakshmanandef Test_extendnew() 10551a71d31bSYegappan Lakshmanan assert_equal([1, 2, 'a'], extendnew([1, 2], ['a'])) 10561a71d31bSYegappan Lakshmanan assert_equal({one: 1, two: 'a'}, extendnew({one: 1}, {two: 'a'})) 10571a71d31bSYegappan Lakshmanan 10584490ec4eSYegappan Lakshmanan 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') 10594490ec4eSYegappan Lakshmanan 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') 10604490ec4eSYegappan Lakshmanan 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') 10614490ec4eSYegappan Lakshmanan 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') 10621a71d31bSYegappan Lakshmananenddef 10631a71d31bSYegappan Lakshmanan 1064a26f56f6SYegappan Lakshmanandef Test_feedkeys() 10654490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['feedkeys(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 10664490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['feedkeys("x", 10)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 10674490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['feedkeys([], {})'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1') 1068a26f56f6SYegappan Lakshmanan g:TestVar = 1 1069a26f56f6SYegappan Lakshmanan feedkeys(":g:TestVar = 789\n", 'xt') 1070a26f56f6SYegappan Lakshmanan assert_equal(789, g:TestVar) 1071a26f56f6SYegappan Lakshmanan unlet g:TestVar 1072a26f56f6SYegappan Lakshmananenddef 1073a26f56f6SYegappan Lakshmanan 10747bb4e74cSBram Moolenaardef Test_filereadable() 10752a9d5d38SBram Moolenaar assert_false(filereadable("")) 10762a9d5d38SBram Moolenaar assert_false(filereadable(test_null_string())) 10772a9d5d38SBram Moolenaar 1078a26f56f6SYegappan Lakshmanan CheckDefExecFailure(['echo filereadable(123)'], 'E1013:') 1079a26f56f6SYegappan Lakshmanan CheckDefExecFailure(['echo filereadable(true)'], 'E1013:') 10807bb4e74cSBram Moolenaarenddef 10817bb4e74cSBram Moolenaar 10827bb4e74cSBram Moolenaardef Test_filewritable() 10832a9d5d38SBram Moolenaar assert_false(filewritable("")) 10842a9d5d38SBram Moolenaar assert_false(filewritable(test_null_string())) 10852a9d5d38SBram Moolenaar 1086a26f56f6SYegappan Lakshmanan CheckDefExecFailure(['echo filewritable(123)'], 'E1013:') 1087a26f56f6SYegappan Lakshmanan CheckDefExecFailure(['echo filewritable(true)'], 'E1013:') 10887bb4e74cSBram Moolenaarenddef 10897bb4e74cSBram Moolenaar 10907bb4e74cSBram Moolenaardef Test_finddir() 109110c83ddeSBram Moolenaar mkdir('Xtestdir') 109210c83ddeSBram Moolenaar finddir('Xtestdir', '**', -1)->assert_equal(['Xtestdir']) 109310c83ddeSBram Moolenaar var lines =<< trim END 109410c83ddeSBram Moolenaar var l: list<string> = finddir('nothing', '*;', -1) 109510c83ddeSBram Moolenaar END 109610c83ddeSBram Moolenaar CheckDefAndScriptSuccess(lines) 109710c83ddeSBram Moolenaar delete('Xtestdir', 'rf') 109810c83ddeSBram Moolenaar 10995b73992dSYegappan Lakshmanan CheckDefAndScriptFailure2(['finddir(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1') 11005b73992dSYegappan Lakshmanan CheckDefAndScriptFailure2(['finddir(v:null)'], 'E1013: Argument 1: type mismatch, expected string but got special', 'E1174: String required for argument 1') 1101fa984418SBram Moolenaar CheckDefExecFailure(['echo finddir("")'], 'E1175:') 11024490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['finddir("a", [])'], 'E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2') 11034490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['finddir("a", "b", "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 1104f8dbd586SYegappan Lakshmanan finddir('abc', '')->assert_equal('') 11057bb4e74cSBram Moolenaarenddef 11067bb4e74cSBram Moolenaar 11077bb4e74cSBram Moolenaardef Test_findfile() 110810c83ddeSBram Moolenaar findfile('runtest.vim', '**', -1)->assert_equal(['runtest.vim']) 110910c83ddeSBram Moolenaar var lines =<< trim END 111010c83ddeSBram Moolenaar var l: list<string> = findfile('nothing', '*;', -1) 111110c83ddeSBram Moolenaar END 111210c83ddeSBram Moolenaar CheckDefAndScriptSuccess(lines) 111310c83ddeSBram Moolenaar 11145b73992dSYegappan Lakshmanan CheckDefExecFailure(['findfile(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool') 11155b73992dSYegappan Lakshmanan CheckDefExecFailure(['findfile(v:null)'], 'E1013: Argument 1: type mismatch, expected string but got special') 11165b73992dSYegappan Lakshmanan CheckDefExecFailure(['findfile("")'], 'E1175:') 11174490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['findfile("a", [])'], 'E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2') 11184490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['findfile("a", "b", "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 1119f8dbd586SYegappan Lakshmanan findfile('abc', '')->assert_equal('') 11207bb4e74cSBram Moolenaarenddef 11217bb4e74cSBram Moolenaar 1122b3bf33a7SBram Moolenaardef Test_flatten() 1123b3bf33a7SBram Moolenaar var lines =<< trim END 1124b3bf33a7SBram Moolenaar echo flatten([1, 2, 3]) 1125b3bf33a7SBram Moolenaar END 1126b3bf33a7SBram Moolenaar CheckDefAndScriptFailure(lines, 'E1158:') 1127b3bf33a7SBram Moolenaarenddef 1128b3bf33a7SBram Moolenaar 11293b690069SBram Moolenaardef Test_flattennew() 11303b690069SBram Moolenaar var lines =<< trim END 11313b690069SBram Moolenaar var l = [1, [2, [3, 4]], 5] 11323b690069SBram Moolenaar call assert_equal([1, 2, 3, 4, 5], flattennew(l)) 11333b690069SBram Moolenaar call assert_equal([1, [2, [3, 4]], 5], l) 11343b690069SBram Moolenaar 11353b690069SBram Moolenaar call assert_equal([1, 2, [3, 4], 5], flattennew(l, 1)) 11363b690069SBram Moolenaar call assert_equal([1, [2, [3, 4]], 5], l) 1137b3bf33a7SBram Moolenaar 1138b3bf33a7SBram Moolenaar var ll: list<list<string>> = [['a', 'b', 'c']] 1139b3bf33a7SBram Moolenaar assert_equal(['a', 'b', 'c'], ll->flattennew()) 11403b690069SBram Moolenaar END 11413b690069SBram Moolenaar CheckDefAndScriptSuccess(lines) 11423b690069SBram Moolenaar 114383494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['flattennew({})'], 'E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 1') 114483494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['flattennew([], "1")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 11453b690069SBram Moolenaarenddef 11463b690069SBram Moolenaar 11477237cab8SYegappan Lakshmanan" Test for float functions argument type 11487237cab8SYegappan Lakshmanandef Test_float_funcs_args() 11497237cab8SYegappan Lakshmanan CheckFeature float 11507237cab8SYegappan Lakshmanan 11517237cab8SYegappan Lakshmanan # acos() 11524490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['acos("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 11537237cab8SYegappan Lakshmanan # asin() 11544490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['asin("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 11557237cab8SYegappan Lakshmanan # atan() 11564490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['atan("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 11577237cab8SYegappan Lakshmanan # atan2() 11584490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['atan2("a", 1.1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 11594490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['atan2(1.2, "a")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 2') 11604490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['atan2(1.2)'], 'E119:', 'E119:') 11617237cab8SYegappan Lakshmanan # ceil() 11624490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['ceil("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 11637237cab8SYegappan Lakshmanan # cos() 11644490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['cos("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 11657237cab8SYegappan Lakshmanan # cosh() 11664490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['cosh("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 11677237cab8SYegappan Lakshmanan # exp() 11684490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['exp("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 11697237cab8SYegappan Lakshmanan # float2nr() 11704490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['float2nr("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 11717237cab8SYegappan Lakshmanan # floor() 11724490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['floor("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 11737237cab8SYegappan Lakshmanan # fmod() 11744490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['fmod(1.1, "a")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 2') 11754490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['fmod("a", 1.1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 11764490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['fmod(1.1)'], 'E119:', 'E119:') 11777237cab8SYegappan Lakshmanan # isinf() 11784490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['isinf("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 11797237cab8SYegappan Lakshmanan # isnan() 11804490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['isnan("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 11817237cab8SYegappan Lakshmanan # log() 11824490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['log("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 11837237cab8SYegappan Lakshmanan # log10() 11844490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['log10("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 11857237cab8SYegappan Lakshmanan # pow() 11864490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['pow("a", 1.1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 11874490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['pow(1.1, "a")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 2') 11884490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['pow(1.1)'], 'E119:', 'E119:') 11897237cab8SYegappan Lakshmanan # round() 11904490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['round("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 11917237cab8SYegappan Lakshmanan # sin() 11924490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['sin("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 11937237cab8SYegappan Lakshmanan # sinh() 11944490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['sinh("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 11957237cab8SYegappan Lakshmanan # sqrt() 11964490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['sqrt("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 11977237cab8SYegappan Lakshmanan # tan() 11984490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['tan("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 11997237cab8SYegappan Lakshmanan # tanh() 12004490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['tanh("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 12017237cab8SYegappan Lakshmanan # trunc() 12024490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['trunc("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1219: Float or Number required for argument 1') 12037237cab8SYegappan Lakshmananenddef 12047237cab8SYegappan Lakshmanan 1205a26f56f6SYegappan Lakshmanandef Test_fnameescape() 12064490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['fnameescape(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1207a26f56f6SYegappan Lakshmanan assert_equal('\+a\%b\|', fnameescape('+a%b|')) 1208f8dbd586SYegappan Lakshmanan fnameescape('')->assert_equal('') 1209a26f56f6SYegappan Lakshmananenddef 1210a26f56f6SYegappan Lakshmanan 12117bb4e74cSBram Moolenaardef Test_fnamemodify() 12122a9d5d38SBram Moolenaar CheckDefSuccess(['echo fnamemodify(test_null_string(), ":p")']) 12132a9d5d38SBram Moolenaar CheckDefSuccess(['echo fnamemodify("", ":p")']) 12142a9d5d38SBram Moolenaar CheckDefSuccess(['echo fnamemodify("file", test_null_string())']) 12152a9d5d38SBram Moolenaar CheckDefSuccess(['echo fnamemodify("file", "")']) 12162a9d5d38SBram Moolenaar 1217a26f56f6SYegappan Lakshmanan CheckDefExecFailure(['echo fnamemodify(true, ":p")'], 'E1013: Argument 1: type mismatch, expected string but got bool') 1218a26f56f6SYegappan Lakshmanan CheckDefExecFailure(['echo fnamemodify(v:null, ":p")'], 'E1013: Argument 1: type mismatch, expected string but got special') 1219a26f56f6SYegappan Lakshmanan CheckDefExecFailure(['echo fnamemodify("file", true)'], 'E1013: Argument 2: type mismatch, expected string but got bool') 12207bb4e74cSBram Moolenaarenddef 12217bb4e74cSBram Moolenaar 12222e5910bfSBram Moolenaardef Wrong_dict_key_type(items: list<number>): list<number> 12232e5910bfSBram Moolenaar return filter(items, (_, val) => get({[val]: 1}, 'x')) 12242e5910bfSBram Moolenaarenddef 12252e5910bfSBram Moolenaar 12260ad871dcSYegappan Lakshmanandef Test_filter() 122778db17c6SBram Moolenaar 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') 12280ad871dcSYegappan Lakshmanan assert_equal([], filter([1, 2, 3], '0')) 12290ad871dcSYegappan Lakshmanan assert_equal([1, 2, 3], filter([1, 2, 3], '1')) 12300ad871dcSYegappan Lakshmanan assert_equal({b: 20}, filter({a: 10, b: 20}, 'v:val == 20')) 12310ad871dcSYegappan Lakshmananenddef 12320ad871dcSYegappan Lakshmanan 123394738d8fSBram Moolenaardef Test_filter_wrong_dict_key_type() 12342e5910bfSBram Moolenaar assert_fails('Wrong_dict_key_type([1, v:null, 3])', 'E1013:') 123594738d8fSBram Moolenaarenddef 123694738d8fSBram Moolenaar 123794738d8fSBram Moolenaardef Test_filter_return_type() 1238bb8a7ce0SBram Moolenaar var l = filter([1, 2, 3], (_, _) => 1) 123994738d8fSBram Moolenaar var res = 0 124094738d8fSBram Moolenaar for n in l 124194738d8fSBram Moolenaar res += n 124294738d8fSBram Moolenaar endfor 124394738d8fSBram Moolenaar res->assert_equal(6) 124494738d8fSBram Moolenaarenddef 124594738d8fSBram Moolenaar 1246fc0e8f5cSBram Moolenaardef Test_filter_missing_argument() 1247fc0e8f5cSBram Moolenaar var dict = {aa: [1], ab: [2], ac: [3], de: [4]} 1248bb8a7ce0SBram Moolenaar var res = dict->filter((k, _) => k =~ 'a' && k !~ 'b') 1249fc0e8f5cSBram Moolenaar res->assert_equal({aa: [1], ac: [3]}) 1250fc0e8f5cSBram Moolenaarenddef 125194738d8fSBram Moolenaar 1252a26f56f6SYegappan Lakshmanandef Test_foldclosed() 12534490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['foldclosed(function("min"))'], 'E1013: Argument 1: type mismatch, expected string but got func(...): any', 'E1220: String or Number required for argument 1') 1254fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['foldclosed("")'], 'E1209: Invalid value for a line number') 1255a26f56f6SYegappan Lakshmanan assert_equal(-1, foldclosed(1)) 1256a26f56f6SYegappan Lakshmanan assert_equal(-1, foldclosed('$')) 1257a26f56f6SYegappan Lakshmananenddef 1258a26f56f6SYegappan Lakshmanan 1259a26f56f6SYegappan Lakshmanandef Test_foldclosedend() 12604490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['foldclosedend(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1') 1261fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['foldclosedend("")'], 'E1209: Invalid value for a line number') 1262a26f56f6SYegappan Lakshmanan assert_equal(-1, foldclosedend(1)) 1263a26f56f6SYegappan Lakshmanan assert_equal(-1, foldclosedend('w0')) 1264a26f56f6SYegappan Lakshmananenddef 1265a26f56f6SYegappan Lakshmanan 1266a26f56f6SYegappan Lakshmanandef Test_foldlevel() 12674490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['foldlevel(0z10)'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1') 1268fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['foldlevel("")'], 'E1209: Invalid value for a line number') 1269a26f56f6SYegappan Lakshmanan assert_equal(0, foldlevel(1)) 1270a26f56f6SYegappan Lakshmanan assert_equal(0, foldlevel('.')) 1271a26f56f6SYegappan Lakshmananenddef 1272a26f56f6SYegappan Lakshmanan 1273a26f56f6SYegappan Lakshmanandef Test_foldtextresult() 12744490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['foldtextresult(1.1)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1') 1275fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['foldtextresult("")'], 'E1209: Invalid value for a line number') 1276a26f56f6SYegappan Lakshmanan assert_equal('', foldtextresult(1)) 1277a26f56f6SYegappan Lakshmanan assert_equal('', foldtextresult('.')) 1278a26f56f6SYegappan Lakshmananenddef 1279a26f56f6SYegappan Lakshmanan 12807d840e9aSBram Moolenaardef Test_fullcommand() 12817d840e9aSBram Moolenaar assert_equal('next', fullcommand('n')) 12827d840e9aSBram Moolenaar assert_equal('noremap', fullcommand('no')) 12837d840e9aSBram Moolenaar assert_equal('noremap', fullcommand('nor')) 12847d840e9aSBram Moolenaar assert_equal('normal', fullcommand('norm')) 12857d840e9aSBram Moolenaar 12867d840e9aSBram Moolenaar assert_equal('', fullcommand('k')) 12877d840e9aSBram Moolenaar assert_equal('keepmarks', fullcommand('ke')) 12887d840e9aSBram Moolenaar assert_equal('keepmarks', fullcommand('kee')) 12897d840e9aSBram Moolenaar assert_equal('keepmarks', fullcommand('keep')) 12907d840e9aSBram Moolenaar assert_equal('keepjumps', fullcommand('keepj')) 12917d840e9aSBram Moolenaar 12927d840e9aSBram Moolenaar assert_equal('dlist', fullcommand('dl')) 12937d840e9aSBram Moolenaar assert_equal('', fullcommand('dp')) 12947d840e9aSBram Moolenaar assert_equal('delete', fullcommand('del')) 12957d840e9aSBram Moolenaar assert_equal('', fullcommand('dell')) 12967d840e9aSBram Moolenaar assert_equal('', fullcommand('delp')) 12977d840e9aSBram Moolenaar 12987d840e9aSBram Moolenaar assert_equal('srewind', fullcommand('sre')) 12997d840e9aSBram Moolenaar assert_equal('scriptnames', fullcommand('scr')) 13007d840e9aSBram Moolenaar assert_equal('', fullcommand('scg')) 1301820d5525SYegappan Lakshmanan fullcommand('')->assert_equal('') 13027d840e9aSBram Moolenaarenddef 13037d840e9aSBram Moolenaar 13045bca906bSYegappan Lakshmanandef Test_funcref() 13055bca906bSYegappan Lakshmanan CheckDefAndScriptFailure2(['funcref("reverse", 2)'], 'E1013: Argument 2: type mismatch, expected list<any> but got number', 'E1211: List required for argument 2') 13065bca906bSYegappan Lakshmanan CheckDefAndScriptFailure2(['funcref("reverse", [2], [1])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3') 13075bca906bSYegappan Lakshmananenddef 13085bca906bSYegappan Lakshmanan 13095bca906bSYegappan Lakshmanandef Test_function() 13105bca906bSYegappan Lakshmanan CheckDefAndScriptFailure2(['function("reverse", 2)'], 'E1013: Argument 2: type mismatch, expected list<any> but got number', 'E1211: List required for argument 2') 13115bca906bSYegappan Lakshmanan CheckDefAndScriptFailure2(['function("reverse", [2], [1])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3') 13125bca906bSYegappan Lakshmananenddef 13135bca906bSYegappan Lakshmanan 131494738d8fSBram Moolenaardef Test_garbagecollect() 131594738d8fSBram Moolenaar garbagecollect(true) 13164490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['garbagecollect("1")'], 'E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1') 13174490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['garbagecollect(20)'], 'E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1') 131894738d8fSBram Moolenaarenddef 131994738d8fSBram Moolenaar 1320a764e73dSYegappan Lakshmanandef Test_get() 1321a764e73dSYegappan Lakshmanan 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') 1322a764e73dSYegappan Lakshmanan [3, 5, 2]->get(1)->assert_equal(5) 1323a764e73dSYegappan Lakshmanan [3, 5, 2]->get(3)->assert_equal(0) 1324a764e73dSYegappan Lakshmanan [3, 5, 2]->get(3, 9)->assert_equal(9) 1325a764e73dSYegappan Lakshmanan assert_equal(get(0z102030, 2), 0x30) 1326a764e73dSYegappan Lakshmanan {a: 7, b: 11, c: 13}->get('c')->assert_equal(13) 1327a764e73dSYegappan Lakshmanan {10: 'a', 20: 'b', 30: 'd'}->get(20)->assert_equal('b') 1328a764e73dSYegappan Lakshmanan function('max')->get('name')->assert_equal('max') 1329a764e73dSYegappan Lakshmanan var F: func = function('min', [[5, 8, 6]]) 1330a764e73dSYegappan Lakshmanan F->get('name')->assert_equal('min') 1331a764e73dSYegappan Lakshmanan F->get('args')->assert_equal([[5, 8, 6]]) 1332f723701dSBram Moolenaar 1333f723701dSBram Moolenaar var lines =<< trim END 1334f723701dSBram Moolenaar vim9script 1335f723701dSBram Moolenaar def DoThat(): number 1336f723701dSBram Moolenaar var Getqflist: func = function('getqflist', [{id: 42}]) 1337f723701dSBram Moolenaar return Getqflist()->get('id', 77) 1338f723701dSBram Moolenaar enddef 1339f723701dSBram Moolenaar assert_equal(0, DoThat()) 1340f723701dSBram Moolenaar END 1341f723701dSBram Moolenaar CheckScriptSuccess(lines) 1342a764e73dSYegappan Lakshmananenddef 1343a764e73dSYegappan Lakshmanan 134494738d8fSBram Moolenaardef Test_getbufinfo() 134594738d8fSBram Moolenaar var bufinfo = getbufinfo(bufnr()) 134694738d8fSBram Moolenaar getbufinfo('%')->assert_equal(bufinfo) 134794738d8fSBram Moolenaar 134894738d8fSBram Moolenaar edit Xtestfile1 134994738d8fSBram Moolenaar hide edit Xtestfile2 135094738d8fSBram Moolenaar hide enew 1351e0de171eSBram Moolenaar getbufinfo({bufloaded: true, buflisted: true, bufmodified: false}) 135294738d8fSBram Moolenaar ->len()->assert_equal(3) 135394738d8fSBram Moolenaar bwipe Xtestfile1 Xtestfile2 1354cd917207SYegappan Lakshmanan CheckDefAndScriptFailure2(['getbufinfo(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1') 135594738d8fSBram Moolenaarenddef 135694738d8fSBram Moolenaar 135794738d8fSBram Moolenaardef Test_getbufline() 135894738d8fSBram Moolenaar e SomeFile 135994738d8fSBram Moolenaar var buf = bufnr() 1360b8bd2e6eSBram Moolenaar sp Otherfile 136194738d8fSBram Moolenaar var lines = ['aaa', 'bbb', 'ccc'] 136294738d8fSBram Moolenaar setbufline(buf, 1, lines) 136394738d8fSBram Moolenaar getbufline('#', 1, '$')->assert_equal(lines) 1364e6e70a10SBram Moolenaar getbufline(-1, '$', '$')->assert_equal([]) 1365e6e70a10SBram Moolenaar getbufline(-1, 1, '$')->assert_equal([]) 136694738d8fSBram Moolenaar 136794738d8fSBram Moolenaar bwipe! 13684490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['getbufline([], 2)'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 13694490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['getbufline("a", [])'], 'E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 2') 13704490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['getbufline("a", 2, 0z10)'], 'E1013: Argument 3: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 3') 137194738d8fSBram Moolenaarenddef 137294738d8fSBram Moolenaar 13737973de35SYegappan Lakshmanandef Test_getbufvar() 13744490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['getbufvar(true, "v")'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1') 13757973de35SYegappan Lakshmanan CheckDefAndScriptFailure2(['getbufvar(1, 2, 3)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 13767973de35SYegappan Lakshmananenddef 13777973de35SYegappan Lakshmanan 137894738d8fSBram Moolenaardef Test_getchangelist() 137994738d8fSBram Moolenaar new 138094738d8fSBram Moolenaar setline(1, 'some text') 138194738d8fSBram Moolenaar var changelist = bufnr()->getchangelist() 138294738d8fSBram Moolenaar getchangelist('%')->assert_equal(changelist) 138394738d8fSBram Moolenaar bwipe! 138494738d8fSBram Moolenaarenddef 138594738d8fSBram Moolenaar 138694738d8fSBram Moolenaardef Test_getchar() 138794738d8fSBram Moolenaar while getchar(0) 138894738d8fSBram Moolenaar endwhile 138994738d8fSBram Moolenaar getchar(true)->assert_equal(0) 13901a71d31bSYegappan Lakshmanan getchar(1)->assert_equal(0) 13914490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['getchar(2)'], 'E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1') 13924490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['getchar("1")'], 'E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1') 13931a71d31bSYegappan Lakshmananenddef 13941a71d31bSYegappan Lakshmanan 13951a71d31bSYegappan Lakshmanandef Test_getcharpos() 13961a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['getcharpos(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1') 13971a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['getcharpos(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1398fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['getcharpos("")'], 'E1209: Invalid value for a line number') 13991a71d31bSYegappan Lakshmananenddef 14001a71d31bSYegappan Lakshmanan 14011a71d31bSYegappan Lakshmanandef Test_getcharstr() 14024490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['getcharstr(2)'], 'E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1') 14034490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['getcharstr("1")'], 'E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1') 140494738d8fSBram Moolenaarenddef 140594738d8fSBram Moolenaar 140694738d8fSBram Moolenaardef Test_getcompletion() 140794738d8fSBram Moolenaar set wildignore=*.vim,*~ 140894738d8fSBram Moolenaar var l = getcompletion('run', 'file', true) 140994738d8fSBram Moolenaar l->assert_equal([]) 141094738d8fSBram Moolenaar set wildignore& 141183494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['getcompletion(1, "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 141283494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['getcompletion("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 141383494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['getcompletion("a", "b", 2)'], 'E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3') 1414fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['getcompletion("a", "")'], 'E475: Invalid argument') 1415fc3b7750SYegappan Lakshmanan getcompletion('', 'messages')->assert_equal(['clear']) 141694738d8fSBram Moolenaarenddef 141794738d8fSBram Moolenaar 14187237cab8SYegappan Lakshmanandef Test_getcurpos() 1419fc3b7750SYegappan Lakshmanan CheckDefAndScriptFailure2(['getcurpos("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 14207237cab8SYegappan Lakshmananenddef 14217237cab8SYegappan Lakshmanan 14227237cab8SYegappan Lakshmanandef Test_getcursorcharpos() 14234490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['getcursorcharpos("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 14247237cab8SYegappan Lakshmananenddef 14257237cab8SYegappan Lakshmanan 14267237cab8SYegappan Lakshmanandef Test_getcwd() 14274490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['getcwd("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 14284490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['getcwd("x", 1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 14294490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['getcwd(1, "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 14307237cab8SYegappan Lakshmananenddef 14317237cab8SYegappan Lakshmanan 143283494b4aSYegappan Lakshmanandef Test_getenv() 143383494b4aSYegappan Lakshmanan if getenv('does-not_exist') == '' 143483494b4aSYegappan Lakshmanan assert_report('getenv() should return null') 143583494b4aSYegappan Lakshmanan endif 143683494b4aSYegappan Lakshmanan if getenv('does-not_exist') == null 143783494b4aSYegappan Lakshmanan else 143883494b4aSYegappan Lakshmanan assert_report('getenv() should return null') 143983494b4aSYegappan Lakshmanan endif 144083494b4aSYegappan Lakshmanan $SOMEENVVAR = 'some' 144183494b4aSYegappan Lakshmanan assert_equal('some', getenv('SOMEENVVAR')) 144283494b4aSYegappan Lakshmanan unlet $SOMEENVVAR 1443f8dbd586SYegappan Lakshmanan getenv('')->assert_equal(v:null) 144483494b4aSYegappan Lakshmananenddef 144583494b4aSYegappan Lakshmanan 1446a26f56f6SYegappan Lakshmanandef Test_getfontname() 14474490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['getfontname(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1448f8dbd586SYegappan Lakshmanan #getfontname('')->assert_equal('') 1449a26f56f6SYegappan Lakshmananenddef 1450a26f56f6SYegappan Lakshmanan 14517bb4e74cSBram Moolenaardef Test_getfperm() 14522a9d5d38SBram Moolenaar assert_equal('', getfperm("")) 14532a9d5d38SBram Moolenaar assert_equal('', getfperm(test_null_string())) 14542a9d5d38SBram Moolenaar 1455a26f56f6SYegappan Lakshmanan CheckDefExecFailure(['echo getfperm(true)'], 'E1013:') 1456a26f56f6SYegappan Lakshmanan CheckDefExecFailure(['echo getfperm(v:null)'], 'E1013:') 14577bb4e74cSBram Moolenaarenddef 14587bb4e74cSBram Moolenaar 14597bb4e74cSBram Moolenaardef Test_getfsize() 14602a9d5d38SBram Moolenaar assert_equal(-1, getfsize("")) 14612a9d5d38SBram Moolenaar assert_equal(-1, getfsize(test_null_string())) 14622a9d5d38SBram Moolenaar 1463a26f56f6SYegappan Lakshmanan CheckDefExecFailure(['echo getfsize(true)'], 'E1013:') 1464a26f56f6SYegappan Lakshmanan CheckDefExecFailure(['echo getfsize(v:null)'], 'E1013:') 14657bb4e74cSBram Moolenaarenddef 14667bb4e74cSBram Moolenaar 14677bb4e74cSBram Moolenaardef Test_getftime() 14682a9d5d38SBram Moolenaar assert_equal(-1, getftime("")) 14692a9d5d38SBram Moolenaar assert_equal(-1, getftime(test_null_string())) 14702a9d5d38SBram Moolenaar 1471a26f56f6SYegappan Lakshmanan CheckDefExecFailure(['echo getftime(true)'], 'E1013:') 1472a26f56f6SYegappan Lakshmanan CheckDefExecFailure(['echo getftime(v:null)'], 'E1013:') 14737bb4e74cSBram Moolenaarenddef 14747bb4e74cSBram Moolenaar 14757bb4e74cSBram Moolenaardef Test_getftype() 14762a9d5d38SBram Moolenaar assert_equal('', getftype("")) 14772a9d5d38SBram Moolenaar assert_equal('', getftype(test_null_string())) 14782a9d5d38SBram Moolenaar 1479a26f56f6SYegappan Lakshmanan CheckDefExecFailure(['echo getftype(true)'], 'E1013:') 1480a26f56f6SYegappan Lakshmanan CheckDefExecFailure(['echo getftype(v:null)'], 'E1013:') 14817bb4e74cSBram Moolenaarenddef 14827bb4e74cSBram Moolenaar 14837237cab8SYegappan Lakshmanandef Test_getjumplist() 14844490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['getjumplist("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 14854490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['getjumplist("x", 1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 14864490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['getjumplist(1, "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 14877237cab8SYegappan Lakshmananenddef 14887237cab8SYegappan Lakshmanan 14890f1227f7SBram Moolenaardef Test_getline() 14900f1227f7SBram Moolenaar var lines =<< trim END 14910f1227f7SBram Moolenaar new 14920f1227f7SBram Moolenaar setline(1, ['hello', 'there', 'again']) 14930f1227f7SBram Moolenaar assert_equal('hello', getline(1)) 14940f1227f7SBram Moolenaar assert_equal('hello', getline('.')) 14950f1227f7SBram Moolenaar 14960f1227f7SBram Moolenaar normal 2Gvjv 14970f1227f7SBram Moolenaar assert_equal('there', getline("'<")) 14980f1227f7SBram Moolenaar assert_equal('again', getline("'>")) 14990f1227f7SBram Moolenaar END 15000f1227f7SBram Moolenaar CheckDefAndScriptSuccess(lines) 15010f1227f7SBram Moolenaar 15020f1227f7SBram Moolenaar lines =<< trim END 15030f1227f7SBram Moolenaar echo getline('1') 15040f1227f7SBram Moolenaar END 15050f1227f7SBram Moolenaar CheckDefExecAndScriptFailure(lines, 'E1209:') 15064490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['getline(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1') 15074490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['getline(1, true)'], 'E1013: Argument 2: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 2') 1508fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['getline("")'], 'E1209: Invalid value for a line number') 15090f1227f7SBram Moolenaarenddef 15100f1227f7SBram Moolenaar 15111a71d31bSYegappan Lakshmanandef Test_getloclist() 15124490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['getloclist("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 15134490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['getloclist(1, [])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2') 15141a71d31bSYegappan Lakshmananenddef 15151a71d31bSYegappan Lakshmanan 15161a71d31bSYegappan Lakshmanandef Test_getloclist_return_type() 15171a71d31bSYegappan Lakshmanan var l = getloclist(1) 15181a71d31bSYegappan Lakshmanan l->assert_equal([]) 15191a71d31bSYegappan Lakshmanan 15201a71d31bSYegappan Lakshmanan var d = getloclist(1, {items: 0}) 15211a71d31bSYegappan Lakshmanan d->assert_equal({items: []}) 15221a71d31bSYegappan Lakshmananenddef 15231a71d31bSYegappan Lakshmanan 1524a26f56f6SYegappan Lakshmanandef Test_getmarklist() 15254490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['getmarklist([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 1526a26f56f6SYegappan Lakshmanan assert_equal([], getmarklist(10000)) 1527a26f56f6SYegappan Lakshmanan assert_fails('getmarklist("a%b@#")', 'E94:') 1528a26f56f6SYegappan Lakshmananenddef 1529a26f56f6SYegappan Lakshmanan 15307237cab8SYegappan Lakshmanandef Test_getmatches() 15314490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['getmatches("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 15327237cab8SYegappan Lakshmananenddef 15337237cab8SYegappan Lakshmanan 1534a26f56f6SYegappan Lakshmanandef Test_getpos() 15354490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['getpos(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1536a26f56f6SYegappan Lakshmanan assert_equal([0, 1, 1, 0], getpos('.')) 15370f1227f7SBram Moolenaar CheckDefExecFailure(['getpos("a")'], 'E1209:') 1538fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['getpos("")'], 'E1209: Invalid value for a line number') 1539a26f56f6SYegappan Lakshmananenddef 1540a26f56f6SYegappan Lakshmanan 1541a26f56f6SYegappan Lakshmanandef Test_getqflist() 15424490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['getqflist([])'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1') 1543a26f56f6SYegappan Lakshmanan call assert_equal({}, getqflist({})) 1544a26f56f6SYegappan Lakshmananenddef 1545a26f56f6SYegappan Lakshmanan 154694738d8fSBram Moolenaardef Test_getqflist_return_type() 154794738d8fSBram Moolenaar var l = getqflist() 154894738d8fSBram Moolenaar l->assert_equal([]) 154994738d8fSBram Moolenaar 1550e0de171eSBram Moolenaar var d = getqflist({items: 0}) 1551e0de171eSBram Moolenaar d->assert_equal({items: []}) 155294738d8fSBram Moolenaarenddef 155394738d8fSBram Moolenaar 155494738d8fSBram Moolenaardef Test_getreg() 155594738d8fSBram Moolenaar var lines = ['aaa', 'bbb', 'ccc'] 155694738d8fSBram Moolenaar setreg('a', lines) 155794738d8fSBram Moolenaar getreg('a', true, true)->assert_equal(lines) 1558418a29f0SBram Moolenaar assert_fails('getreg("ab")', 'E1162:') 155983494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['getreg(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 156083494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['getreg(".", 2)'], 'E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2') 156183494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['getreg(".", 1, "b")'], 'E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3') 1562f8dbd586SYegappan Lakshmanan @" = 'A1B2C3' 1563f8dbd586SYegappan Lakshmanan getreg('')->assert_equal('A1B2C3') 156494738d8fSBram Moolenaarenddef 156594738d8fSBram Moolenaar 156694738d8fSBram Moolenaardef Test_getreg_return_type() 156794738d8fSBram Moolenaar var s1: string = getreg('"') 156894738d8fSBram Moolenaar var s2: string = getreg('"', 1) 156994738d8fSBram Moolenaar var s3: list<string> = getreg('"', 1, 1) 157094738d8fSBram Moolenaarenddef 157194738d8fSBram Moolenaar 1572418a29f0SBram Moolenaardef Test_getreginfo() 1573418a29f0SBram Moolenaar var text = 'abc' 1574418a29f0SBram Moolenaar setreg('a', text) 1575418a29f0SBram Moolenaar getreginfo('a')->assert_equal({regcontents: [text], regtype: 'v', isunnamed: false}) 1576418a29f0SBram Moolenaar assert_fails('getreginfo("ab")', 'E1162:') 1577f8dbd586SYegappan Lakshmanan @" = 'D1E2F3' 1578f8dbd586SYegappan Lakshmanan getreginfo('').regcontents->assert_equal(['D1E2F3']) 1579418a29f0SBram Moolenaarenddef 1580418a29f0SBram Moolenaar 1581418a29f0SBram Moolenaardef Test_getregtype() 1582418a29f0SBram Moolenaar var lines = ['aaa', 'bbb', 'ccc'] 1583418a29f0SBram Moolenaar setreg('a', lines) 1584418a29f0SBram Moolenaar getregtype('a')->assert_equal('V') 1585418a29f0SBram Moolenaar assert_fails('getregtype("ab")', 'E1162:') 1586f8dbd586SYegappan Lakshmanan setreg('"', 'ABCD', 'b') 1587f8dbd586SYegappan Lakshmanan getregtype('')->assert_equal("\<C-V>4") 1588418a29f0SBram Moolenaarenddef 1589418a29f0SBram Moolenaar 15907237cab8SYegappan Lakshmanandef Test_gettabinfo() 15914490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['gettabinfo("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 15927237cab8SYegappan Lakshmananenddef 15937237cab8SYegappan Lakshmanan 159483494b4aSYegappan Lakshmanandef Test_gettabvar() 159583494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['gettabvar("a", "b")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 159683494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['gettabvar(1, 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 159783494b4aSYegappan Lakshmananenddef 159883494b4aSYegappan Lakshmanan 159983494b4aSYegappan Lakshmanandef Test_gettabwinvar() 160083494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['gettabwinvar("a", 2, "c")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 160183494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['gettabwinvar(1, "b", "c", [])'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 160283494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['gettabwinvar(1, 1, 3, {})'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 160383494b4aSYegappan Lakshmananenddef 160483494b4aSYegappan Lakshmanan 16057237cab8SYegappan Lakshmanandef Test_gettagstack() 16064490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['gettagstack("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 16077237cab8SYegappan Lakshmananenddef 16087237cab8SYegappan Lakshmanan 1609a26f56f6SYegappan Lakshmanandef Test_gettext() 16104490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['gettext(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1611fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['gettext("")'], 'E475: Invalid argument') 1612a26f56f6SYegappan Lakshmanan assert_equal('abc', gettext("abc")) 1613f8dbd586SYegappan Lakshmanan assert_fails('gettext("")', 'E475:') 1614a26f56f6SYegappan Lakshmananenddef 1615a26f56f6SYegappan Lakshmanan 16167237cab8SYegappan Lakshmanandef Test_getwininfo() 16174490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['getwininfo("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 16187237cab8SYegappan Lakshmananenddef 16197237cab8SYegappan Lakshmanan 16207237cab8SYegappan Lakshmanandef Test_getwinpos() 16214490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['getwinpos("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 16227237cab8SYegappan Lakshmananenddef 16237237cab8SYegappan Lakshmanan 162483494b4aSYegappan Lakshmanandef Test_getwinvar() 162583494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['getwinvar("a", "b")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 162683494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['getwinvar(1, 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 162783494b4aSYegappan Lakshmananenddef 162883494b4aSYegappan Lakshmanan 162994738d8fSBram Moolenaardef Test_glob() 163094738d8fSBram Moolenaar glob('runtest.vim', true, true, true)->assert_equal(['runtest.vim']) 163183494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['glob(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 163283494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['glob("a", 2)'], 'E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2') 163383494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['glob("a", 1, "b")'], 'E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3') 163483494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['glob("a", 1, true, 2)'], 'E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4') 1635f8dbd586SYegappan Lakshmanan glob('')->assert_equal('') 163694738d8fSBram Moolenaarenddef 163794738d8fSBram Moolenaar 1638a26f56f6SYegappan Lakshmanandef Test_glob2regpat() 16394490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['glob2regpat(null)'], 'E1013: Argument 1: type mismatch, expected string but got special', 'E1174: String required for argument 1') 1640f8dbd586SYegappan Lakshmanan glob2regpat('')->assert_equal('^$') 1641a26f56f6SYegappan Lakshmananenddef 1642a26f56f6SYegappan Lakshmanan 164394738d8fSBram Moolenaardef Test_globpath() 164494738d8fSBram Moolenaar globpath('.', 'runtest.vim', true, true, true)->assert_equal(['./runtest.vim']) 164583494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['globpath(1, "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 164683494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['globpath("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 164783494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['globpath("a", "b", "c")'], 'E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3') 164883494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['globpath("a", "b", true, "d")'], 'E1013: Argument 4: type mismatch, expected bool but got string', 'E1212: Bool required for argument 4') 164983494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['globpath("a", "b", true, false, "e")'], 'E1013: Argument 5: type mismatch, expected bool but got string', 'E1212: Bool required for argument 5') 1650f8dbd586SYegappan Lakshmanan globpath('', '')->assert_equal('') 165194738d8fSBram Moolenaarenddef 165294738d8fSBram Moolenaar 165394738d8fSBram Moolenaardef Test_has() 165494738d8fSBram Moolenaar has('eval', true)->assert_equal(1) 165583494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['has(["a"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1') 165683494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['has("a", "b")'], 'E1013: Argument 2: type mismatch, expected bool but got string', 'E1212: Bool required for argument 2') 1657f8dbd586SYegappan Lakshmanan has('')->assert_equal(0) 165894738d8fSBram Moolenaarenddef 165994738d8fSBram Moolenaar 16605b73992dSYegappan Lakshmanandef Test_has_key() 16611aeddeb8SBram Moolenaar var d = {123: 'xx'} 16621aeddeb8SBram Moolenaar assert_true(has_key(d, '123')) 16631aeddeb8SBram Moolenaar assert_true(has_key(d, 123)) 16641aeddeb8SBram Moolenaar assert_false(has_key(d, 'x')) 16651aeddeb8SBram Moolenaar assert_false(has_key(d, 99)) 16661aeddeb8SBram Moolenaar 16674490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['has_key([1, 2], "k")'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 1') 16684490ec4eSYegappan Lakshmanan 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') 16695b73992dSYegappan Lakshmananenddef 16705b73992dSYegappan Lakshmanan 16717237cab8SYegappan Lakshmanandef Test_haslocaldir() 16724490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['haslocaldir("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 16734490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['haslocaldir("x", 1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 16744490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['haslocaldir(1, "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 16757237cab8SYegappan Lakshmananenddef 16767237cab8SYegappan Lakshmanan 167794738d8fSBram Moolenaardef Test_hasmapto() 167894738d8fSBram Moolenaar hasmapto('foobar', 'i', true)->assert_equal(0) 167994738d8fSBram Moolenaar iabbrev foo foobar 168094738d8fSBram Moolenaar hasmapto('foobar', 'i', true)->assert_equal(1) 168194738d8fSBram Moolenaar iunabbrev foo 168283494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['hasmapto(1, "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 168383494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['hasmapto("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 168483494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['hasmapto("a", "b", 2)'], 'E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3') 1685f8dbd586SYegappan Lakshmanan hasmapto('', '')->assert_equal(0) 168694738d8fSBram Moolenaarenddef 168794738d8fSBram Moolenaar 1688a26f56f6SYegappan Lakshmanandef Test_histadd() 16894490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['histadd(1, "x")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 16904490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['histadd(":", 10)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 1691a26f56f6SYegappan Lakshmanan histadd("search", 'skyblue') 1692a26f56f6SYegappan Lakshmanan assert_equal('skyblue', histget('/', -1)) 1693fc3b7750SYegappan Lakshmanan histadd("search", '')->assert_equal(0) 1694a26f56f6SYegappan Lakshmananenddef 1695a26f56f6SYegappan Lakshmanan 16960ad871dcSYegappan Lakshmanandef Test_histdel() 16970ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['histdel(1, "x")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 16984490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['histdel(":", true)'], 'E1013: Argument 2: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 2') 1699fc3b7750SYegappan Lakshmanan histdel('search', '')->assert_equal(0) 17000ad871dcSYegappan Lakshmananenddef 17010ad871dcSYegappan Lakshmanan 17021a71d31bSYegappan Lakshmanandef Test_histget() 17031a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['histget(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 17041a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['histget("a", "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 17051a71d31bSYegappan Lakshmananenddef 17061a71d31bSYegappan Lakshmanan 1707a26f56f6SYegappan Lakshmanandef Test_histnr() 17084490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['histnr(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1709a26f56f6SYegappan Lakshmanan assert_equal(-1, histnr('abc')) 1710a26f56f6SYegappan Lakshmananenddef 1711a26f56f6SYegappan Lakshmanan 1712a26f56f6SYegappan Lakshmanandef Test_hlID() 17134490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['hlID(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1714a26f56f6SYegappan Lakshmanan assert_equal(0, hlID('NonExistingHighlight')) 1715f8dbd586SYegappan Lakshmanan hlID('')->assert_equal(0) 1716a26f56f6SYegappan Lakshmananenddef 1717a26f56f6SYegappan Lakshmanan 1718a26f56f6SYegappan Lakshmanandef Test_hlexists() 17194490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['hlexists([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1') 1720a26f56f6SYegappan Lakshmanan assert_equal(0, hlexists('NonExistingHighlight')) 1721f8dbd586SYegappan Lakshmanan hlexists('')->assert_equal(0) 1722a26f56f6SYegappan Lakshmananenddef 1723a26f56f6SYegappan Lakshmanan 1724d1a8d658SYegappan Lakshmanandef Test_hlget() 1725d1a8d658SYegappan Lakshmanan CheckDefAndScriptFailure2(['hlget([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1') 1726d1a8d658SYegappan Lakshmanan hlget('')->assert_equal([]) 1727d1a8d658SYegappan Lakshmananenddef 1728d1a8d658SYegappan Lakshmanan 1729d1a8d658SYegappan Lakshmanandef Test_hlset() 1730d1a8d658SYegappan Lakshmanan CheckDefAndScriptFailure2(['hlset("id")'], 'E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1') 1731d1a8d658SYegappan Lakshmanan hlset([])->assert_equal(0) 1732d1a8d658SYegappan Lakshmananenddef 1733d1a8d658SYegappan Lakshmanan 1734a26f56f6SYegappan Lakshmanandef Test_iconv() 17354490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['iconv(1, "from", "to")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 17364490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['iconv("abc", 10, "to")'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 17374490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['iconv("abc", "from", 20)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 1738a26f56f6SYegappan Lakshmanan assert_equal('abc', iconv('abc', 'fromenc', 'toenc')) 1739f8dbd586SYegappan Lakshmanan iconv('', '', '')->assert_equal('') 1740a26f56f6SYegappan Lakshmananenddef 1741a26f56f6SYegappan Lakshmanan 17421a71d31bSYegappan Lakshmanandef Test_indent() 17434490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['indent([1])'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1') 17444490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['indent(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1') 1745fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['indent("")'], 'E1209: Invalid value for a line number') 17461a71d31bSYegappan Lakshmanan assert_equal(0, indent(1)) 17471a71d31bSYegappan Lakshmananenddef 17481a71d31bSYegappan Lakshmanan 174994738d8fSBram Moolenaardef Test_index() 175094738d8fSBram Moolenaar index(['a', 'b', 'a', 'B'], 'b', 2, true)->assert_equal(3) 175178db17c6SBram Moolenaar CheckDefAndScriptFailure2(['index("a", "a")'], 'E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1226: List or Blob required for argument 1') 17520ad871dcSYegappan Lakshmanan CheckDefFailure(['index(["1"], 1)'], 'E1013: Argument 2: type mismatch, expected string but got number') 17530ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['index(0z10, "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 17540ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['index([1], 1, "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 17550ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['index(0z1020, 10, 1, 2)'], 'E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4') 175694738d8fSBram Moolenaarenddef 175794738d8fSBram Moolenaar 17581a71d31bSYegappan Lakshmanandef Test_input() 17594490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['input(5)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 17604490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['input(["a"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1') 17614490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['input("p", 10)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 17624490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['input("p", "q", 20)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 17631a71d31bSYegappan Lakshmananenddef 17641a71d31bSYegappan Lakshmanan 17651a71d31bSYegappan Lakshmanandef Test_inputdialog() 17664490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['inputdialog(5)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 17674490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['inputdialog(["a"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1') 17684490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['inputdialog("p", 10)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 17694490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['inputdialog("p", "q", 20)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 17701a71d31bSYegappan Lakshmananenddef 17711a71d31bSYegappan Lakshmanan 1772a26f56f6SYegappan Lakshmanandef Test_inputlist() 17734490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['inputlist(10)'], 'E1013: Argument 1: type mismatch, expected list<string> but got number', 'E1211: List required for argument 1') 17744490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['inputlist("abc")'], 'E1013: Argument 1: type mismatch, expected list<string> but got string', 'E1211: List required for argument 1') 1775a26f56f6SYegappan Lakshmanan CheckDefFailure(['inputlist([1, 2, 3])'], 'E1013: Argument 1: type mismatch, expected list<string> but got list<number>') 1776a26f56f6SYegappan Lakshmanan feedkeys("2\<CR>", 't') 1777a26f56f6SYegappan Lakshmanan var r: number = inputlist(['a', 'b', 'c']) 1778a26f56f6SYegappan Lakshmanan assert_equal(2, r) 1779a26f56f6SYegappan Lakshmananenddef 1780a26f56f6SYegappan Lakshmanan 1781a26f56f6SYegappan Lakshmanandef Test_inputsecret() 17824490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['inputsecret(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 17834490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['inputsecret("Pass:", 20)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 1784a26f56f6SYegappan Lakshmanan feedkeys("\<CR>", 't') 1785a26f56f6SYegappan Lakshmanan var ans: string = inputsecret('Pass:', '123') 1786a26f56f6SYegappan Lakshmanan assert_equal('123', ans) 1787a26f56f6SYegappan Lakshmananenddef 1788a26f56f6SYegappan Lakshmanan 1789193f6201SBram Moolenaarlet s:number_one = 1 1790193f6201SBram Moolenaarlet s:number_two = 2 1791193f6201SBram Moolenaarlet s:string_keep = 'keep' 1792193f6201SBram Moolenaar 1793ca17453eSBram Moolenaardef Test_insert() 179494738d8fSBram Moolenaar var l = insert([2, 1], 3) 179594738d8fSBram Moolenaar var res = 0 179694738d8fSBram Moolenaar for n in l 179794738d8fSBram Moolenaar res += n 179894738d8fSBram Moolenaar endfor 179994738d8fSBram Moolenaar res->assert_equal(6) 1800ca17453eSBram Moolenaar 180134fcb697SYegappan Lakshmanan var m: any = [] 180234fcb697SYegappan Lakshmanan insert(m, 4) 180334fcb697SYegappan Lakshmanan call assert_equal([4], m) 180434fcb697SYegappan Lakshmanan extend(m, [6], 0) 180534fcb697SYegappan Lakshmanan call assert_equal([6, 4], m) 180634fcb697SYegappan Lakshmanan 180739211cbaSBram Moolenaar var lines =<< trim END 180839211cbaSBram Moolenaar insert(test_null_list(), 123) 180939211cbaSBram Moolenaar END 181039211cbaSBram Moolenaar CheckDefExecAndScriptFailure(lines, 'E1130:', 1) 181139211cbaSBram Moolenaar 181239211cbaSBram Moolenaar lines =<< trim END 181339211cbaSBram Moolenaar insert(test_null_blob(), 123) 181439211cbaSBram Moolenaar END 181539211cbaSBram Moolenaar CheckDefExecAndScriptFailure(lines, 'E1131:', 1) 181639211cbaSBram Moolenaar 1817ca17453eSBram Moolenaar assert_equal([1, 2, 3], insert([2, 3], 1)) 1818193f6201SBram Moolenaar assert_equal([1, 2, 3], insert([2, 3], s:number_one)) 1819ca17453eSBram Moolenaar assert_equal([1, 2, 3], insert([1, 2], 3, 2)) 1820193f6201SBram Moolenaar assert_equal([1, 2, 3], insert([1, 2], 3, s:number_two)) 1821ca17453eSBram Moolenaar assert_equal(['a', 'b', 'c'], insert(['b', 'c'], 'a')) 1822ca17453eSBram Moolenaar assert_equal(0z1234, insert(0z34, 0x12)) 1823193f6201SBram Moolenaar 182478db17c6SBram Moolenaar CheckDefAndScriptFailure2(['insert("a", 1)'], 'E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1226: List or Blob required for argument 1') 18254490ec4eSYegappan Lakshmanan CheckDefFailure(['insert([2, 3], "a")'], 'E1013: Argument 2: type mismatch, expected number but got string') 18264490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['insert([2, 3], 1, "x")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 182794738d8fSBram Moolenaarenddef 182894738d8fSBram Moolenaar 18297237cab8SYegappan Lakshmanandef Test_invert() 18304490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['invert("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 18317237cab8SYegappan Lakshmananenddef 18327237cab8SYegappan Lakshmanan 1833a26f56f6SYegappan Lakshmanandef Test_isdirectory() 18344490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['isdirectory(1.1)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1') 1835a26f56f6SYegappan Lakshmanan assert_false(isdirectory('NonExistingDir')) 1836f8dbd586SYegappan Lakshmanan assert_false(isdirectory('')) 1837a26f56f6SYegappan Lakshmananenddef 1838a26f56f6SYegappan Lakshmanan 18391a71d31bSYegappan Lakshmanandef Test_islocked() 18401a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['islocked(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1') 18411a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['var n1: number = 10', 'islocked(n1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 18421a71d31bSYegappan Lakshmanan g:v1 = 10 18431a71d31bSYegappan Lakshmanan assert_false(islocked('g:v1')) 18441a71d31bSYegappan Lakshmanan lockvar g:v1 18451a71d31bSYegappan Lakshmanan assert_true(islocked('g:v1')) 18461a71d31bSYegappan Lakshmanan unlet g:v1 1847f8dbd586SYegappan Lakshmanan islocked('')->assert_equal(-1) 18481a71d31bSYegappan Lakshmananenddef 18491a71d31bSYegappan Lakshmanan 1850a26f56f6SYegappan Lakshmanandef Test_items() 1851a26f56f6SYegappan Lakshmanan CheckDefFailure(['[]->items()'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>') 1852a26f56f6SYegappan Lakshmanan assert_equal([['a', 10], ['b', 20]], {'a': 10, 'b': 20}->items()) 1853a26f56f6SYegappan Lakshmanan assert_equal([], {}->items()) 1854a26f56f6SYegappan Lakshmananenddef 1855a26f56f6SYegappan Lakshmanan 18561a71d31bSYegappan Lakshmanandef Test_job_getchannel() 18579ff9c7b9SDominique Pelle if !has('job') 18589ff9c7b9SDominique Pelle CheckFeature job 18599ff9c7b9SDominique Pelle else 18604490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['job_getchannel("a")'], 'E1013: Argument 1: type mismatch, expected job but got string', 'E1218: Job required for argument 1') 18611a71d31bSYegappan Lakshmanan assert_fails('job_getchannel(test_null_job())', 'E916: not a valid job') 18629ff9c7b9SDominique Pelle endif 18631a71d31bSYegappan Lakshmananenddef 18641a71d31bSYegappan Lakshmanan 18651a71d31bSYegappan Lakshmanandef Test_job_info() 18669ff9c7b9SDominique Pelle if !has('job') 18679ff9c7b9SDominique Pelle CheckFeature job 18689ff9c7b9SDominique Pelle else 18694490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['job_info("a")'], 'E1013: Argument 1: type mismatch, expected job but got string', 'E1218: Job required for argument 1') 18701a71d31bSYegappan Lakshmanan assert_fails('job_info(test_null_job())', 'E916: not a valid job') 18719ff9c7b9SDominique Pelle endif 18721a71d31bSYegappan Lakshmananenddef 18731a71d31bSYegappan Lakshmanan 18741a71d31bSYegappan Lakshmanandef Test_job_info_return_type() 18759ff9c7b9SDominique Pelle if !has('job') 18769ff9c7b9SDominique Pelle CheckFeature job 18779ff9c7b9SDominique Pelle else 18781a71d31bSYegappan Lakshmanan job_start(&shell) 18791a71d31bSYegappan Lakshmanan var jobs = job_info() 18801a71d31bSYegappan Lakshmanan assert_equal('list<job>', typename(jobs)) 18811a71d31bSYegappan Lakshmanan assert_equal('dict<any>', typename(job_info(jobs[0]))) 18821a71d31bSYegappan Lakshmanan job_stop(jobs[0]) 18831a71d31bSYegappan Lakshmanan endif 18841a71d31bSYegappan Lakshmananenddef 18851a71d31bSYegappan Lakshmanan 188683494b4aSYegappan Lakshmanandef Test_job_setoptions() 188783494b4aSYegappan Lakshmanan if !has('job') 188883494b4aSYegappan Lakshmanan CheckFeature job 188983494b4aSYegappan Lakshmanan else 18900ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['job_setoptions(test_null_channel(), {})'], 'E1013: Argument 1: type mismatch, expected job but got channel', 'E1218: Job required for argument 1') 189183494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['job_setoptions(test_null_job(), [])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2') 189283494b4aSYegappan Lakshmanan assert_equal('fail', job_status(test_null_job())) 189383494b4aSYegappan Lakshmanan endif 189483494b4aSYegappan Lakshmananenddef 189583494b4aSYegappan Lakshmanan 18961a71d31bSYegappan Lakshmanandef Test_job_status() 18979ff9c7b9SDominique Pelle if !has('job') 18989ff9c7b9SDominique Pelle CheckFeature job 18999ff9c7b9SDominique Pelle else 19004490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['job_status("a")'], 'E1013: Argument 1: type mismatch, expected job but got string', 'E1218: Job required for argument 1') 19011a71d31bSYegappan Lakshmanan assert_equal('fail', job_status(test_null_job())) 19029ff9c7b9SDominique Pelle endif 19031a71d31bSYegappan Lakshmananenddef 19041a71d31bSYegappan Lakshmanan 190583494b4aSYegappan Lakshmanandef Test_job_stop() 190683494b4aSYegappan Lakshmanan if !has('job') 190783494b4aSYegappan Lakshmanan CheckFeature job 190883494b4aSYegappan Lakshmanan else 19090ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['job_stop("a")'], 'E1013: Argument 1: type mismatch, expected job but got string', 'E1218: Job required for argument 1') 19104490ec4eSYegappan Lakshmanan 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') 191183494b4aSYegappan Lakshmanan endif 191283494b4aSYegappan Lakshmananenddef 191383494b4aSYegappan Lakshmanan 191483494b4aSYegappan Lakshmanandef Test_join() 191583494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['join("abc")'], 'E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1') 191683494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['join([], 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 1917f8dbd586SYegappan Lakshmanan join([''], '')->assert_equal('') 191883494b4aSYegappan Lakshmananenddef 191983494b4aSYegappan Lakshmanan 1920a26f56f6SYegappan Lakshmanandef Test_js_decode() 19214490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['js_decode(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 1922a26f56f6SYegappan Lakshmanan assert_equal([1, 2], js_decode('[1,2]')) 1923820d5525SYegappan Lakshmanan js_decode('')->assert_equal(v:none) 1924a26f56f6SYegappan Lakshmananenddef 1925a26f56f6SYegappan Lakshmanan 1926a26f56f6SYegappan Lakshmanandef Test_json_decode() 19274490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['json_decode(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1') 1928a26f56f6SYegappan Lakshmanan assert_equal(1.0, json_decode('1.0')) 1929820d5525SYegappan Lakshmanan json_decode('')->assert_equal(v:none) 1930a26f56f6SYegappan Lakshmananenddef 1931a26f56f6SYegappan Lakshmanan 1932a26f56f6SYegappan Lakshmanandef Test_keys() 19334490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['keys([])'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1') 1934a26f56f6SYegappan Lakshmanan assert_equal(['a'], {a: 'v'}->keys()) 1935a26f56f6SYegappan Lakshmanan assert_equal([], {}->keys()) 1936a26f56f6SYegappan Lakshmananenddef 1937a26f56f6SYegappan Lakshmanan 193894738d8fSBram Moolenaardef Test_keys_return_type() 1939e0de171eSBram Moolenaar const var: list<string> = {a: 1, b: 2}->keys() 194094738d8fSBram Moolenaar var->assert_equal(['a', 'b']) 194194738d8fSBram Moolenaarenddef 194294738d8fSBram Moolenaar 1943a764e73dSYegappan Lakshmanandef Test_len() 1944a764e73dSYegappan Lakshmanan CheckDefAndScriptFailure2(['len(true)'], 'E1013: Argument 1: type mismatch, expected list<any> but got bool', 'E701: Invalid type for len()') 1945a764e73dSYegappan Lakshmanan assert_equal(2, "ab"->len()) 1946a764e73dSYegappan Lakshmanan assert_equal(3, 456->len()) 1947a764e73dSYegappan Lakshmanan assert_equal(0, []->len()) 1948a764e73dSYegappan Lakshmanan assert_equal(1, {a: 10}->len()) 1949a764e73dSYegappan Lakshmanan assert_equal(4, 0z20304050->len()) 1950a764e73dSYegappan Lakshmananenddef 1951a764e73dSYegappan Lakshmanan 19525bca906bSYegappan Lakshmanandef Test_libcall() 19535bca906bSYegappan Lakshmanan CheckFeature libcall 19545bca906bSYegappan Lakshmanan CheckDefAndScriptFailure2(['libcall(1, "b", 3)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 19555bca906bSYegappan Lakshmanan CheckDefAndScriptFailure2(['libcall("a", 2, 3)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 19564490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['libcall("a", "b", 1.1)'], 'E1013: Argument 3: type mismatch, expected string but got float', 'E1220: String or Number required for argument 3') 19575bca906bSYegappan Lakshmananenddef 19585bca906bSYegappan Lakshmanan 19595bca906bSYegappan Lakshmanandef Test_libcallnr() 19605bca906bSYegappan Lakshmanan CheckFeature libcall 19615bca906bSYegappan Lakshmanan CheckDefAndScriptFailure2(['libcallnr(1, "b", 3)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 19625bca906bSYegappan Lakshmanan CheckDefAndScriptFailure2(['libcallnr("a", 2, 3)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 19634490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['libcallnr("a", "b", 1.1)'], 'E1013: Argument 3: type mismatch, expected string but got float', 'E1220: String or Number required for argument 3') 19645bca906bSYegappan Lakshmananenddef 19655bca906bSYegappan Lakshmanan 1966c5809439SBram Moolenaardef Test_line() 1967a26f56f6SYegappan Lakshmanan assert_fails('line(true)', 'E1174:') 19681a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['line(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 19691a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['line(".", "a")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 1970fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['line("")'], 'E1209: Invalid value for a line number') 1971a26f56f6SYegappan Lakshmananenddef 1972a26f56f6SYegappan Lakshmanan 1973a26f56f6SYegappan Lakshmanandef Test_line2byte() 19744490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['line2byte(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1') 1975fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['line2byte("")'], 'E1209: Invalid value for a line number') 1976a26f56f6SYegappan Lakshmanan assert_equal(-1, line2byte(1)) 1977a26f56f6SYegappan Lakshmanan assert_equal(-1, line2byte(10000)) 1978a26f56f6SYegappan Lakshmananenddef 1979a26f56f6SYegappan Lakshmanan 1980a26f56f6SYegappan Lakshmanandef Test_lispindent() 19814490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['lispindent({})'], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1220: String or Number required for argument 1') 1982fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['lispindent("")'], 'E1209: Invalid value for a line number') 1983a26f56f6SYegappan Lakshmanan assert_equal(0, lispindent(1)) 1984c5809439SBram Moolenaarenddef 1985c5809439SBram Moolenaar 19865dfe4674SYegappan Lakshmanandef Test_list2blob() 19875dfe4674SYegappan Lakshmanan CheckDefAndScriptFailure2(['list2blob(10)'], 'E1013: Argument 1: type mismatch, expected list<number> but got number', 'E1211: List required for argument 1') 19885dfe4674SYegappan Lakshmanan CheckDefFailure(['list2blob([0z10, 0z02])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<blob>') 19895dfe4674SYegappan Lakshmananenddef 19905dfe4674SYegappan Lakshmanan 199194738d8fSBram Moolenaardef Test_list2str_str2list_utf8() 199294738d8fSBram Moolenaar var s = "\u3042\u3044" 199394738d8fSBram Moolenaar var l = [0x3042, 0x3044] 199494738d8fSBram Moolenaar str2list(s, true)->assert_equal(l) 199594738d8fSBram Moolenaar list2str(l, true)->assert_equal(s) 199694738d8fSBram Moolenaarenddef 199794738d8fSBram Moolenaar 199883494b4aSYegappan Lakshmanandef Test_list2str() 199983494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['list2str(".", true)'], 'E1013: Argument 1: type mismatch, expected list<number> but got string', 'E1211: List required for argument 1') 200083494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['list2str([1], 0z10)'], 'E1013: Argument 2: type mismatch, expected bool but got blob', 'E1212: Bool required for argument 2') 200183494b4aSYegappan Lakshmananenddef 200283494b4aSYegappan Lakshmanan 200394738d8fSBram Moolenaardef SID(): number 200494738d8fSBram Moolenaar return expand('<SID>') 200594738d8fSBram Moolenaar ->matchstr('<SNR>\zs\d\+\ze_$') 200694738d8fSBram Moolenaar ->str2nr() 200794738d8fSBram Moolenaarenddef 200894738d8fSBram Moolenaar 20095bca906bSYegappan Lakshmanandef Test_listener_add() 20104490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['listener_add("1", true)'], 'E1013: Argument 2: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 2') 20115bca906bSYegappan Lakshmananenddef 20125bca906bSYegappan Lakshmanan 20135b73992dSYegappan Lakshmanandef Test_listener_flush() 20144490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['listener_flush([1])'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1') 20155b73992dSYegappan Lakshmananenddef 20165b73992dSYegappan Lakshmanan 20177237cab8SYegappan Lakshmanandef Test_listener_remove() 20184490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['listener_remove("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 20197237cab8SYegappan Lakshmananenddef 20207237cab8SYegappan Lakshmanan 2021f8dbd586SYegappan Lakshmanandef Test_luaeval() 2022a764e73dSYegappan Lakshmanan if !has('lua') 2023a764e73dSYegappan Lakshmanan CheckFeature lua 2024a764e73dSYegappan Lakshmanan endif 2025a764e73dSYegappan Lakshmanan CheckDefAndScriptFailure2(['luaeval(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 2026f8dbd586SYegappan Lakshmanan if exists_compiled('*luaeval') 2027f8dbd586SYegappan Lakshmanan luaeval('')->assert_equal(v:null) 2028f8dbd586SYegappan Lakshmanan endif 2029a764e73dSYegappan Lakshmananenddef 2030a764e73dSYegappan Lakshmanan 20310ad871dcSYegappan Lakshmanandef Test_map() 203278db17c6SBram Moolenaar CheckDefAndScriptFailure2(['map("x", "1")'], 'E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1228: List, Dictionary or Blob required for argument 1') 203378db17c6SBram Moolenaar CheckDefAndScriptFailure2(['map(1, "1")'], 'E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1228: List, Dictionary or Blob required for argument 1') 20340ad871dcSYegappan Lakshmananenddef 20350ad871dcSYegappan Lakshmanan 203683494b4aSYegappan Lakshmanandef Test_map_failure() 203783494b4aSYegappan Lakshmanan CheckFeature job 203883494b4aSYegappan Lakshmanan 203983494b4aSYegappan Lakshmanan var lines =<< trim END 204083494b4aSYegappan Lakshmanan vim9script 204183494b4aSYegappan Lakshmanan writefile([], 'Xtmpfile') 204283494b4aSYegappan Lakshmanan silent e Xtmpfile 204383494b4aSYegappan Lakshmanan var d = {[bufnr('%')]: {a: 0}} 204483494b4aSYegappan Lakshmanan au BufReadPost * Func() 204583494b4aSYegappan Lakshmanan def Func() 204683494b4aSYegappan Lakshmanan if d->has_key('') 204783494b4aSYegappan Lakshmanan endif 204883494b4aSYegappan Lakshmanan eval d[expand('<abuf>')]->mapnew((_, v: dict<job>) => 0) 204983494b4aSYegappan Lakshmanan enddef 205083494b4aSYegappan Lakshmanan e 205183494b4aSYegappan Lakshmanan END 205283494b4aSYegappan Lakshmanan CheckScriptFailure(lines, 'E1013:') 205383494b4aSYegappan Lakshmanan au! BufReadPost 205483494b4aSYegappan Lakshmanan delete('Xtmpfile') 205583494b4aSYegappan Lakshmananenddef 205683494b4aSYegappan Lakshmanan 205770250fb4SBram Moolenaardef Test_map_function_arg() 205870250fb4SBram Moolenaar var lines =<< trim END 205970250fb4SBram Moolenaar def MapOne(i: number, v: string): string 206070250fb4SBram Moolenaar return i .. ':' .. v 206170250fb4SBram Moolenaar enddef 206270250fb4SBram Moolenaar var l = ['a', 'b', 'c'] 206370250fb4SBram Moolenaar map(l, MapOne) 206470250fb4SBram Moolenaar assert_equal(['0:a', '1:b', '2:c'], l) 206570250fb4SBram Moolenaar END 206670250fb4SBram Moolenaar CheckDefAndScriptSuccess(lines) 20678da6d6dbSBram Moolenaar 20688da6d6dbSBram Moolenaar lines =<< trim END 20698da6d6dbSBram Moolenaar range(3)->map((a, b, c) => a + b + c) 20708da6d6dbSBram Moolenaar END 20718da6d6dbSBram Moolenaar CheckDefExecAndScriptFailure(lines, 'E1190: One argument too few') 20728da6d6dbSBram Moolenaar lines =<< trim END 20738da6d6dbSBram Moolenaar range(3)->map((a, b, c, d) => a + b + c + d) 20748da6d6dbSBram Moolenaar END 20758da6d6dbSBram Moolenaar CheckDefExecAndScriptFailure(lines, 'E1190: 2 arguments too few') 207670250fb4SBram Moolenaarenddef 207770250fb4SBram Moolenaar 207870250fb4SBram Moolenaardef Test_map_item_type() 207970250fb4SBram Moolenaar var lines =<< trim END 208070250fb4SBram Moolenaar var l = ['a', 'b', 'c'] 208170250fb4SBram Moolenaar map(l, (k, v) => k .. '/' .. v ) 208270250fb4SBram Moolenaar assert_equal(['0/a', '1/b', '2/c'], l) 208370250fb4SBram Moolenaar END 208470250fb4SBram Moolenaar CheckDefAndScriptSuccess(lines) 208570250fb4SBram Moolenaar 208670250fb4SBram Moolenaar lines =<< trim END 208770250fb4SBram Moolenaar var l: list<number> = [0] 208870250fb4SBram Moolenaar echo map(l, (_, v) => []) 208970250fb4SBram Moolenaar END 20907a3fe3e1SBram Moolenaar CheckDefExecAndScriptFailure(lines, 'E1012: Type mismatch; expected number but got list<unknown> in map()', 2) 209170250fb4SBram Moolenaar 209270250fb4SBram Moolenaar lines =<< trim END 209370250fb4SBram Moolenaar var l: list<number> = range(2) 209470250fb4SBram Moolenaar echo map(l, (_, v) => []) 209570250fb4SBram Moolenaar END 20967a3fe3e1SBram Moolenaar CheckDefExecAndScriptFailure(lines, 'E1012: Type mismatch; expected number but got list<unknown> in map()', 2) 209770250fb4SBram Moolenaar 209870250fb4SBram Moolenaar lines =<< trim END 209970250fb4SBram Moolenaar var d: dict<number> = {key: 0} 210070250fb4SBram Moolenaar echo map(d, (_, v) => []) 210170250fb4SBram Moolenaar END 21027a3fe3e1SBram Moolenaar CheckDefExecAndScriptFailure(lines, 'E1012: Type mismatch; expected number but got list<unknown> in map()', 2) 210370250fb4SBram Moolenaarenddef 210470250fb4SBram Moolenaar 210594738d8fSBram Moolenaardef Test_maparg() 210694738d8fSBram Moolenaar var lnum = str2nr(expand('<sflnum>')) 210794738d8fSBram Moolenaar map foo bar 2108e0de171eSBram Moolenaar maparg('foo', '', false, true)->assert_equal({ 210994738d8fSBram Moolenaar lnum: lnum + 1, 211094738d8fSBram Moolenaar script: 0, 211194738d8fSBram Moolenaar mode: ' ', 211294738d8fSBram Moolenaar silent: 0, 211394738d8fSBram Moolenaar noremap: 0, 211494738d8fSBram Moolenaar lhs: 'foo', 211594738d8fSBram Moolenaar lhsraw: 'foo', 211694738d8fSBram Moolenaar nowait: 0, 211794738d8fSBram Moolenaar expr: 0, 211894738d8fSBram Moolenaar sid: SID(), 211994738d8fSBram Moolenaar rhs: 'bar', 212094738d8fSBram Moolenaar buffer: 0}) 212194738d8fSBram Moolenaar unmap foo 212283494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['maparg(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 212383494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['maparg("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 212483494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['maparg("a", "b", 2)'], 'E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3') 212583494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['maparg("a", "b", true, 2)'], 'E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4') 2126f8dbd586SYegappan Lakshmanan maparg('')->assert_equal('') 212794738d8fSBram Moolenaarenddef 212894738d8fSBram Moolenaar 212994738d8fSBram Moolenaardef Test_maparg_mapset() 213094738d8fSBram Moolenaar nnoremap <F3> :echo "hit F3"<CR> 213194738d8fSBram Moolenaar var mapsave = maparg('<F3>', 'n', false, true) 213294738d8fSBram Moolenaar mapset('n', false, mapsave) 213394738d8fSBram Moolenaar 213494738d8fSBram Moolenaar nunmap <F3> 213594738d8fSBram Moolenaarenddef 213694738d8fSBram Moolenaar 213783494b4aSYegappan Lakshmanandef Test_mapcheck() 213883494b4aSYegappan Lakshmanan iabbrev foo foobar 213983494b4aSYegappan Lakshmanan mapcheck('foo', 'i', true)->assert_equal('foobar') 214083494b4aSYegappan Lakshmanan iunabbrev foo 214183494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['mapcheck(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 214283494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['mapcheck("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 214383494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['mapcheck("a", "b", 2)'], 'E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3') 2144f8dbd586SYegappan Lakshmanan mapcheck('')->assert_equal('') 2145f8dbd586SYegappan Lakshmanan mapcheck('', '')->assert_equal('') 2146027c4ab4SBram Moolenaarenddef 214783494b4aSYegappan Lakshmanan 21480ad871dcSYegappan Lakshmanandef Test_mapnew() 214978db17c6SBram Moolenaar CheckDefAndScriptFailure2(['mapnew("x", "1")'], 'E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1228: List, Dictionary or Blob required for argument 1') 215078db17c6SBram Moolenaar CheckDefAndScriptFailure2(['mapnew(1, "1")'], 'E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1228: List, Dictionary or Blob required for argument 1') 21510ad871dcSYegappan Lakshmananenddef 21520ad871dcSYegappan Lakshmanan 215383494b4aSYegappan Lakshmanandef Test_mapset() 215483494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['mapset(1, true, {})'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 215583494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['mapset("a", 2, {})'], 'E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2') 215683494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['mapset("a", false, [])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3') 2157027c4ab4SBram Moolenaarenddef 2158027c4ab4SBram Moolenaar 2159a9a7c0c6SYegappan Lakshmanandef Test_match() 21604490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['match(0z12, "p")'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1') 2161a9a7c0c6SYegappan Lakshmanan CheckDefAndScriptFailure2(['match(["s"], [2])'], 'E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2') 2162a9a7c0c6SYegappan Lakshmanan CheckDefAndScriptFailure2(['match("s", "p", "q")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 2163a9a7c0c6SYegappan Lakshmanan CheckDefAndScriptFailure2(['match("s", "p", 1, "r")'], 'E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4') 2164a9a7c0c6SYegappan Lakshmanan assert_equal(2, match('ab12cd', '12')) 2165a9a7c0c6SYegappan Lakshmanan assert_equal(-1, match('ab12cd', '34')) 2166a9a7c0c6SYegappan Lakshmanan assert_equal(6, match('ab12cd12ef', '12', 4)) 2167a9a7c0c6SYegappan Lakshmanan assert_equal(2, match('abcd', '..', 0, 3)) 2168a9a7c0c6SYegappan Lakshmanan assert_equal(1, match(['a', 'b', 'c'], 'b')) 2169a9a7c0c6SYegappan Lakshmanan assert_equal(-1, match(['a', 'b', 'c'], 'd')) 2170a9a7c0c6SYegappan Lakshmanan assert_equal(3, match(['a', 'b', 'c', 'b', 'd', 'b'], 'b', 2)) 2171a9a7c0c6SYegappan Lakshmanan assert_equal(5, match(['a', 'b', 'c', 'b', 'd', 'b'], 'b', 2, 2)) 2172f8dbd586SYegappan Lakshmanan match('', 'a')->assert_equal(-1) 2173f8dbd586SYegappan Lakshmanan match('abc', '')->assert_equal(0) 2174f8dbd586SYegappan Lakshmanan match('', '')->assert_equal(0) 2175a9a7c0c6SYegappan Lakshmananenddef 2176a9a7c0c6SYegappan Lakshmanan 21770ad871dcSYegappan Lakshmanandef Test_matchadd() 21780ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['matchadd(1, "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 21790ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['matchadd("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 21800ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['matchadd("a", "b", "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 21810ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['matchadd("a", "b", 1, "d")'], 'E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4') 21820ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['matchadd("a", "b", 1, 1, [])'], 'E1013: Argument 5: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 5') 2183fc3b7750SYegappan Lakshmanan matchadd('', 'a')->assert_equal(-1) 2184fc3b7750SYegappan Lakshmanan matchadd('Search', '')->assert_equal(-1) 21850ad871dcSYegappan Lakshmananenddef 21860ad871dcSYegappan Lakshmanan 21870ad871dcSYegappan Lakshmanandef Test_matchaddpos() 21880ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['matchaddpos(1, [1])'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 21897973de35SYegappan Lakshmanan CheckDefAndScriptFailure2(['matchaddpos("a", "b")'], 'E1013: Argument 2: type mismatch, expected list<any> but got string', 'E1211: List required for argument 2') 21900ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['matchaddpos("a", [1], "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 21910ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['matchaddpos("a", [1], 1, "d")'], 'E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4') 21920ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['matchaddpos("a", [1], 1, 1, [])'], 'E1013: Argument 5: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 5') 2193fc3b7750SYegappan Lakshmanan matchaddpos('', [1])->assert_equal(-1) 21940ad871dcSYegappan Lakshmananenddef 21950ad871dcSYegappan Lakshmanan 21967237cab8SYegappan Lakshmanandef Test_matcharg() 21974490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['matcharg("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 21987237cab8SYegappan Lakshmananenddef 21997237cab8SYegappan Lakshmanan 22007237cab8SYegappan Lakshmanandef Test_matchdelete() 22014490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['matchdelete("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 22024490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['matchdelete("x", 1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 22034490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['matchdelete(1, "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 22047237cab8SYegappan Lakshmananenddef 22057237cab8SYegappan Lakshmanan 2206a9a7c0c6SYegappan Lakshmanandef Test_matchend() 22074490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['matchend(0z12, "p")'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1') 2208a9a7c0c6SYegappan Lakshmanan CheckDefAndScriptFailure2(['matchend(["s"], [2])'], 'E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2') 2209a9a7c0c6SYegappan Lakshmanan CheckDefAndScriptFailure2(['matchend("s", "p", "q")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 2210a9a7c0c6SYegappan Lakshmanan CheckDefAndScriptFailure2(['matchend("s", "p", 1, "r")'], 'E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4') 2211a9a7c0c6SYegappan Lakshmanan assert_equal(4, matchend('ab12cd', '12')) 2212a9a7c0c6SYegappan Lakshmanan assert_equal(-1, matchend('ab12cd', '34')) 2213a9a7c0c6SYegappan Lakshmanan assert_equal(8, matchend('ab12cd12ef', '12', 4)) 2214a9a7c0c6SYegappan Lakshmanan assert_equal(4, matchend('abcd', '..', 0, 3)) 2215a9a7c0c6SYegappan Lakshmanan assert_equal(1, matchend(['a', 'b', 'c'], 'b')) 2216a9a7c0c6SYegappan Lakshmanan assert_equal(-1, matchend(['a', 'b', 'c'], 'd')) 2217a9a7c0c6SYegappan Lakshmanan assert_equal(3, matchend(['a', 'b', 'c', 'b', 'd', 'b'], 'b', 2)) 2218a9a7c0c6SYegappan Lakshmanan assert_equal(5, matchend(['a', 'b', 'c', 'b', 'd', 'b'], 'b', 2, 2)) 2219f8dbd586SYegappan Lakshmanan matchend('', 'a')->assert_equal(-1) 2220f8dbd586SYegappan Lakshmanan matchend('abc', '')->assert_equal(0) 2221f8dbd586SYegappan Lakshmanan matchend('', '')->assert_equal(0) 2222a9a7c0c6SYegappan Lakshmananenddef 2223a9a7c0c6SYegappan Lakshmanan 222483494b4aSYegappan Lakshmanandef Test_matchfuzzy() 222583494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['matchfuzzy({}, "p")'], 'E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 1') 222683494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['matchfuzzy([], 1)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 222783494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['matchfuzzy([], "a", [])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3') 2228820d5525SYegappan Lakshmanan matchfuzzy(['abc', 'xyz'], '')->assert_equal([]) 222983494b4aSYegappan Lakshmananenddef 223083494b4aSYegappan Lakshmanan 223183494b4aSYegappan Lakshmanandef Test_matchfuzzypos() 223283494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['matchfuzzypos({}, "p")'], 'E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 1') 223383494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['matchfuzzypos([], 1)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 223483494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['matchfuzzypos([], "a", [])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3') 2235820d5525SYegappan Lakshmanan matchfuzzypos(['abc', 'xyz'], '')->assert_equal([[], [], []]) 223683494b4aSYegappan Lakshmananenddef 223783494b4aSYegappan Lakshmanan 2238a9a7c0c6SYegappan Lakshmanandef Test_matchlist() 22394490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['matchlist(0z12, "p")'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1') 2240a9a7c0c6SYegappan Lakshmanan CheckDefAndScriptFailure2(['matchlist(["s"], [2])'], 'E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2') 2241a9a7c0c6SYegappan Lakshmanan CheckDefAndScriptFailure2(['matchlist("s", "p", "q")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 2242a9a7c0c6SYegappan Lakshmanan CheckDefAndScriptFailure2(['matchlist("s", "p", 1, "r")'], 'E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4') 2243a9a7c0c6SYegappan Lakshmanan var l: list<string> = ['12', '', '', '', '', '', '', '', '', ''] 2244a9a7c0c6SYegappan Lakshmanan assert_equal(l, matchlist('ab12cd', '12')) 2245a9a7c0c6SYegappan Lakshmanan assert_equal([], matchlist('ab12cd', '34')) 2246a9a7c0c6SYegappan Lakshmanan assert_equal(l, matchlist('ab12cd12ef', '12', 4)) 2247a9a7c0c6SYegappan Lakshmanan l[0] = 'cd' 2248a9a7c0c6SYegappan Lakshmanan assert_equal(l, matchlist('abcd', '..', 0, 3)) 2249a9a7c0c6SYegappan Lakshmanan l[0] = 'b' 2250a9a7c0c6SYegappan Lakshmanan assert_equal(l, matchlist(['a', 'b', 'c'], 'b')) 2251a9a7c0c6SYegappan Lakshmanan assert_equal([], matchlist(['a', 'b', 'c'], 'd')) 2252a9a7c0c6SYegappan Lakshmanan assert_equal(l, matchlist(['a', 'b', 'c', 'b', 'd', 'b'], 'b', 2)) 2253a9a7c0c6SYegappan Lakshmanan assert_equal(l, matchlist(['a', 'b', 'c', 'b', 'd', 'b'], 'b', 2, 2)) 2254f8dbd586SYegappan Lakshmanan matchlist('', 'a')->assert_equal([]) 2255f8dbd586SYegappan Lakshmanan matchlist('abc', '')->assert_equal(repeat([''], 10)) 2256f8dbd586SYegappan Lakshmanan matchlist('', '')->assert_equal(repeat([''], 10)) 2257a9a7c0c6SYegappan Lakshmananenddef 2258a9a7c0c6SYegappan Lakshmanan 2259a9a7c0c6SYegappan Lakshmanandef Test_matchstr() 22604490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['matchstr(0z12, "p")'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1') 2261a9a7c0c6SYegappan Lakshmanan CheckDefAndScriptFailure2(['matchstr(["s"], [2])'], 'E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2') 2262a9a7c0c6SYegappan Lakshmanan CheckDefAndScriptFailure2(['matchstr("s", "p", "q")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 2263a9a7c0c6SYegappan Lakshmanan CheckDefAndScriptFailure2(['matchstr("s", "p", 1, "r")'], 'E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4') 2264a9a7c0c6SYegappan Lakshmanan assert_equal('12', matchstr('ab12cd', '12')) 2265a9a7c0c6SYegappan Lakshmanan assert_equal('', matchstr('ab12cd', '34')) 2266a9a7c0c6SYegappan Lakshmanan assert_equal('12', matchstr('ab12cd12ef', '12', 4)) 2267a9a7c0c6SYegappan Lakshmanan assert_equal('cd', matchstr('abcd', '..', 0, 3)) 2268a9a7c0c6SYegappan Lakshmanan assert_equal('b', matchstr(['a', 'b', 'c'], 'b')) 2269a9a7c0c6SYegappan Lakshmanan assert_equal('', matchstr(['a', 'b', 'c'], 'd')) 2270a9a7c0c6SYegappan Lakshmanan assert_equal('b', matchstr(['a', 'b', 'c', 'b', 'd', 'b'], 'b', 2)) 2271a9a7c0c6SYegappan Lakshmanan assert_equal('b', matchstr(['a', 'b', 'c', 'b', 'd', 'b'], 'b', 2, 2)) 2272f8dbd586SYegappan Lakshmanan matchstr('', 'a')->assert_equal('') 2273f8dbd586SYegappan Lakshmanan matchstr('abc', '')->assert_equal('') 2274f8dbd586SYegappan Lakshmanan matchstr('', '')->assert_equal('') 2275a9a7c0c6SYegappan Lakshmananenddef 2276a9a7c0c6SYegappan Lakshmanan 2277a9a7c0c6SYegappan Lakshmanandef Test_matchstrpos() 22784490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['matchstrpos(0z12, "p")'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1222: String or List required for argument 1') 2279a9a7c0c6SYegappan Lakshmanan CheckDefAndScriptFailure2(['matchstrpos(["s"], [2])'], 'E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2') 2280a9a7c0c6SYegappan Lakshmanan CheckDefAndScriptFailure2(['matchstrpos("s", "p", "q")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 2281a9a7c0c6SYegappan Lakshmanan CheckDefAndScriptFailure2(['matchstrpos("s", "p", 1, "r")'], 'E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4') 2282a9a7c0c6SYegappan Lakshmanan assert_equal(['12', 2, 4], matchstrpos('ab12cd', '12')) 2283a9a7c0c6SYegappan Lakshmanan assert_equal(['', -1, -1], matchstrpos('ab12cd', '34')) 2284a9a7c0c6SYegappan Lakshmanan assert_equal(['12', 6, 8], matchstrpos('ab12cd12ef', '12', 4)) 2285a9a7c0c6SYegappan Lakshmanan assert_equal(['cd', 2, 4], matchstrpos('abcd', '..', 0, 3)) 2286a9a7c0c6SYegappan Lakshmanan assert_equal(['b', 1, 0, 1], matchstrpos(['a', 'b', 'c'], 'b')) 2287a9a7c0c6SYegappan Lakshmanan assert_equal(['', -1, -1, -1], matchstrpos(['a', 'b', 'c'], 'd')) 2288a9a7c0c6SYegappan Lakshmanan assert_equal(['b', 3, 0, 1], 2289a9a7c0c6SYegappan Lakshmanan matchstrpos(['a', 'b', 'c', 'b', 'd', 'b'], 'b', 2)) 2290a9a7c0c6SYegappan Lakshmanan assert_equal(['b', 5, 0, 1], 2291a9a7c0c6SYegappan Lakshmanan matchstrpos(['a', 'b', 'c', 'b', 'd', 'b'], 'b', 2, 2)) 2292f8dbd586SYegappan Lakshmanan matchstrpos('', 'a')->assert_equal(['', -1, -1]) 2293f8dbd586SYegappan Lakshmanan matchstrpos('abc', '')->assert_equal(['', 0, 0]) 2294f8dbd586SYegappan Lakshmanan matchstrpos('', '')->assert_equal(['', 0, 0]) 2295a9a7c0c6SYegappan Lakshmananenddef 2296a9a7c0c6SYegappan Lakshmanan 22979ae3705bSBram Moolenaardef Test_max() 22989ae3705bSBram Moolenaar g:flag = true 22999ae3705bSBram Moolenaar var l1: list<number> = g:flag 23009ae3705bSBram Moolenaar ? [1, max([2, 3])] 23019ae3705bSBram Moolenaar : [4, 5] 23029ae3705bSBram Moolenaar assert_equal([1, 3], l1) 23039ae3705bSBram Moolenaar 23049ae3705bSBram Moolenaar g:flag = false 23059ae3705bSBram Moolenaar var l2: list<number> = g:flag 23069ae3705bSBram Moolenaar ? [1, max([2, 3])] 23079ae3705bSBram Moolenaar : [4, 5] 23089ae3705bSBram Moolenaar assert_equal([4, 5], l2) 23094490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['max(5)'], 'E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1227: List or Dictionary required for argument 1') 23109ae3705bSBram Moolenaarenddef 23119ae3705bSBram Moolenaar 2312a26f56f6SYegappan Lakshmanandef Test_menu_info() 23134490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['menu_info(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 23144490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['menu_info(10, "n")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 23154490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['menu_info("File", 10)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 2316a26f56f6SYegappan Lakshmanan assert_equal({}, menu_info('aMenu')) 2317a26f56f6SYegappan Lakshmananenddef 2318a26f56f6SYegappan Lakshmanan 23199ae3705bSBram Moolenaardef Test_min() 23209ae3705bSBram Moolenaar g:flag = true 23219ae3705bSBram Moolenaar var l1: list<number> = g:flag 23229ae3705bSBram Moolenaar ? [1, min([2, 3])] 23239ae3705bSBram Moolenaar : [4, 5] 23249ae3705bSBram Moolenaar assert_equal([1, 2], l1) 23259ae3705bSBram Moolenaar 23269ae3705bSBram Moolenaar g:flag = false 23279ae3705bSBram Moolenaar var l2: list<number> = g:flag 23289ae3705bSBram Moolenaar ? [1, min([2, 3])] 23299ae3705bSBram Moolenaar : [4, 5] 23309ae3705bSBram Moolenaar assert_equal([4, 5], l2) 23314490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['min(5)'], 'E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1227: List or Dictionary required for argument 1') 23329ae3705bSBram Moolenaarenddef 23339ae3705bSBram Moolenaar 23345b73992dSYegappan Lakshmanandef Test_mkdir() 23354490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['mkdir(["a"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1') 23364490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['mkdir("a", {})'], 'E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 2') 23374490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['mkdir("a", "b", "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 2338f8dbd586SYegappan Lakshmanan CheckDefExecAndScriptFailure(['mkdir("")'], 'E1175: Non-empty string required for argument 1') 23395b73992dSYegappan Lakshmanan delete('a', 'rf') 23405b73992dSYegappan Lakshmananenddef 23415b73992dSYegappan Lakshmanan 23421a71d31bSYegappan Lakshmanandef Test_mode() 23434490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['mode("1")'], 'E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1') 23444490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['mode(2)'], 'E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1') 23451a71d31bSYegappan Lakshmananenddef 23461a71d31bSYegappan Lakshmanan 23471a71d31bSYegappan Lakshmanandef Test_mzeval() 23481a71d31bSYegappan Lakshmanan if !has('mzscheme') 23491a71d31bSYegappan Lakshmanan CheckFeature mzscheme 23501a71d31bSYegappan Lakshmanan endif 23514490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['mzeval(["a"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1') 23521a71d31bSYegappan Lakshmananenddef 23531a71d31bSYegappan Lakshmanan 2354a26f56f6SYegappan Lakshmanandef Test_nextnonblank() 23554490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['nextnonblank(null)'], 'E1013: Argument 1: type mismatch, expected string but got special', 'E1220: String or Number required for argument 1') 2356fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['nextnonblank("")'], 'E1209: Invalid value for a line number') 2357a26f56f6SYegappan Lakshmanan assert_equal(0, nextnonblank(1)) 2358a26f56f6SYegappan Lakshmananenddef 2359a26f56f6SYegappan Lakshmanan 236094738d8fSBram Moolenaardef Test_nr2char() 236194738d8fSBram Moolenaar nr2char(97, true)->assert_equal('a') 236283494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['nr2char("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 236383494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['nr2char(1, "a")'], 'E1013: Argument 2: type mismatch, expected bool but got string', 'E1212: Bool required for argument 2') 236494738d8fSBram Moolenaarenddef 236594738d8fSBram Moolenaar 23667237cab8SYegappan Lakshmanandef Test_or() 23674490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['or("x", 0x2)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 23684490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['or(0x1, "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 23695b73992dSYegappan Lakshmananenddef 23705b73992dSYegappan Lakshmanan 23711a71d31bSYegappan Lakshmanandef Test_pathshorten() 23721a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['pathshorten(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 23731a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['pathshorten("a", "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 2374f8dbd586SYegappan Lakshmanan pathshorten('')->assert_equal('') 23751a71d31bSYegappan Lakshmananenddef 23761a71d31bSYegappan Lakshmanan 23771a71d31bSYegappan Lakshmanandef Test_perleval() 23781a71d31bSYegappan Lakshmanan if !has('perl') 23791a71d31bSYegappan Lakshmanan CheckFeature perl 23801a71d31bSYegappan Lakshmanan endif 23814490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['perleval(["a"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1') 23821a71d31bSYegappan Lakshmananenddef 23831a71d31bSYegappan Lakshmanan 2384c72bdd28SYegappan Lakshmanandef Test_popup_atcursor() 238578db17c6SBram Moolenaar 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') 23864490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_atcursor("a", [1, 2])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2') 2387841e498cSYegappan Lakshmanan 2388841e498cSYegappan Lakshmanan # Pass variable of type 'any' to popup_atcursor() 2389841e498cSYegappan Lakshmanan var what: any = 'Hello' 2390841e498cSYegappan Lakshmanan var popupID = what->popup_atcursor({moved: 'any'}) 2391841e498cSYegappan Lakshmanan assert_equal(0, popupID->popup_getoptions().tabpage) 2392841e498cSYegappan Lakshmanan popupID->popup_close() 2393c72bdd28SYegappan Lakshmananenddef 2394c72bdd28SYegappan Lakshmanan 2395c72bdd28SYegappan Lakshmanandef Test_popup_beval() 239678db17c6SBram Moolenaar 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') 23974490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_beval("a", [1, 2])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2') 2398c72bdd28SYegappan Lakshmananenddef 2399c72bdd28SYegappan Lakshmanan 24001a71d31bSYegappan Lakshmanandef Test_popup_clear() 24014490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_clear(["a"])'], 'E1013: Argument 1: type mismatch, expected bool but got list<string>', 'E1212: Bool required for argument 1') 24024490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_clear(2)'], 'E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1') 24031a71d31bSYegappan Lakshmananenddef 24041a71d31bSYegappan Lakshmanan 2405a764e73dSYegappan Lakshmanandef Test_popup_close() 2406a764e73dSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_close("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 2407a764e73dSYegappan Lakshmananenddef 2408a764e73dSYegappan Lakshmanan 2409841e498cSYegappan Lakshmanandef Test_popup_create() 2410841e498cSYegappan Lakshmanan # Pass variable of type 'any' to popup_create() 2411841e498cSYegappan Lakshmanan var what: any = 'Hello' 2412841e498cSYegappan Lakshmanan var popupID = what->popup_create({}) 2413841e498cSYegappan Lakshmanan assert_equal(0, popupID->popup_getoptions().tabpage) 2414841e498cSYegappan Lakshmanan popupID->popup_close() 2415841e498cSYegappan Lakshmananenddef 2416841e498cSYegappan Lakshmanan 2417c72bdd28SYegappan Lakshmanandef Test_popup_dialog() 241878db17c6SBram Moolenaar 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') 24194490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_dialog("a", [1, 2])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2') 2420c72bdd28SYegappan Lakshmananenddef 2421c72bdd28SYegappan Lakshmanan 24221a71d31bSYegappan Lakshmanandef Test_popup_filter_menu() 24231a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_filter_menu("x", "")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 24241a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_filter_menu(1, 1)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 2425820d5525SYegappan Lakshmanan var id: number = popup_menu(["one", "two", "three"], {}) 2426820d5525SYegappan Lakshmanan popup_filter_menu(id, '') 2427820d5525SYegappan Lakshmanan popup_close(id) 24281a71d31bSYegappan Lakshmananenddef 24291a71d31bSYegappan Lakshmanan 24301a71d31bSYegappan Lakshmanandef Test_popup_filter_yesno() 24311a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_filter_yesno("x", "")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 24321a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_filter_yesno(1, 1)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 24331a71d31bSYegappan Lakshmananenddef 24341a71d31bSYegappan Lakshmanan 24351a71d31bSYegappan Lakshmanandef Test_popup_getoptions() 24364490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_getoptions("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 24374490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_getoptions(true)'], 'E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1') 24381a71d31bSYegappan Lakshmananenddef 24391a71d31bSYegappan Lakshmanan 24401a71d31bSYegappan Lakshmanandef Test_popup_getpos() 24414490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_getpos("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 24424490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_getpos(true)'], 'E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1') 24431a71d31bSYegappan Lakshmananenddef 24441a71d31bSYegappan Lakshmanan 24451a71d31bSYegappan Lakshmanandef Test_popup_hide() 24464490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_hide("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 24474490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_hide(true)'], 'E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1') 24481a71d31bSYegappan Lakshmananenddef 24491a71d31bSYegappan Lakshmanan 24505b73992dSYegappan Lakshmanandef Test_popup_locate() 24514490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_locate("a", 20)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 24524490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_locate(10, "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 24537237cab8SYegappan Lakshmananenddef 24547237cab8SYegappan Lakshmanan 2455c72bdd28SYegappan Lakshmanandef Test_popup_menu() 245678db17c6SBram Moolenaar 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') 24574490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_menu("a", [1, 2])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2') 2458c72bdd28SYegappan Lakshmananenddef 2459c72bdd28SYegappan Lakshmanan 24601a71d31bSYegappan Lakshmanandef Test_popup_move() 24611a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_move("x", {})'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 24621a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_move(1, [])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2') 24631a71d31bSYegappan Lakshmananenddef 24641a71d31bSYegappan Lakshmanan 2465c72bdd28SYegappan Lakshmanandef Test_popup_notification() 246678db17c6SBram Moolenaar 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') 24674490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_notification("a", [1, 2])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2') 2468c72bdd28SYegappan Lakshmananenddef 2469c72bdd28SYegappan Lakshmanan 24701a71d31bSYegappan Lakshmanandef Test_popup_setoptions() 24711a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_setoptions("x", {})'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 24721a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_setoptions(1, [])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2') 24731a71d31bSYegappan Lakshmananenddef 24741a71d31bSYegappan Lakshmanan 24750ad871dcSYegappan Lakshmanandef Test_popup_settext() 24760ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_settext("x", [])'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 24774490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_settext(1, 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1222: String or List required for argument 2') 24780ad871dcSYegappan Lakshmananenddef 24790ad871dcSYegappan Lakshmanan 24801a71d31bSYegappan Lakshmanandef Test_popup_show() 24814490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_show("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 24824490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['popup_show(true)'], 'E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1') 24831a71d31bSYegappan Lakshmananenddef 24841a71d31bSYegappan Lakshmanan 2485a26f56f6SYegappan Lakshmanandef Test_prevnonblank() 24864490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['prevnonblank(null)'], 'E1013: Argument 1: type mismatch, expected string but got special', 'E1220: String or Number required for argument 1') 2487fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['prevnonblank("")'], 'E1209: Invalid value for a line number') 2488a26f56f6SYegappan Lakshmanan assert_equal(0, prevnonblank(1)) 2489a26f56f6SYegappan Lakshmananenddef 2490a26f56f6SYegappan Lakshmanan 2491a764e73dSYegappan Lakshmanandef Test_printf() 24924490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['printf([1])'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1') 2493a764e73dSYegappan Lakshmanan printf(0x10)->assert_equal('16') 2494a764e73dSYegappan Lakshmanan assert_equal(" abc", "abc"->printf("%4s")) 2495a764e73dSYegappan Lakshmananenddef 2496a764e73dSYegappan Lakshmanan 2497a26f56f6SYegappan Lakshmanandef Test_prompt_getprompt() 24989ff9c7b9SDominique Pelle if !has('channel') 24999ff9c7b9SDominique Pelle CheckFeature channel 25009ff9c7b9SDominique Pelle else 25014490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['prompt_getprompt([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 2502a26f56f6SYegappan Lakshmanan assert_equal('', prompt_getprompt('NonExistingBuf')) 250374509239SDominique Pelle endif 2504a26f56f6SYegappan Lakshmananenddef 2505a26f56f6SYegappan Lakshmanan 25067973de35SYegappan Lakshmanandef Test_prompt_setcallback() 25077973de35SYegappan Lakshmanan if !has('channel') 25087973de35SYegappan Lakshmanan CheckFeature channel 25097973de35SYegappan Lakshmanan else 25104490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['prompt_setcallback(true, "1")'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1') 25117973de35SYegappan Lakshmanan endif 25127973de35SYegappan Lakshmananenddef 25137973de35SYegappan Lakshmanan 25147973de35SYegappan Lakshmanandef Test_prompt_setinterrupt() 25157973de35SYegappan Lakshmanan if !has('channel') 25167973de35SYegappan Lakshmanan CheckFeature channel 25177973de35SYegappan Lakshmanan else 25184490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['prompt_setinterrupt(true, "1")'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1') 25197973de35SYegappan Lakshmanan endif 25207973de35SYegappan Lakshmananenddef 25217973de35SYegappan Lakshmanan 2522a9a7c0c6SYegappan Lakshmanandef Test_prompt_setprompt() 2523a9a7c0c6SYegappan Lakshmanan if !has('channel') 2524a9a7c0c6SYegappan Lakshmanan CheckFeature channel 252583494b4aSYegappan Lakshmanan else 25264490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['prompt_setprompt([], "p")'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 2527a9a7c0c6SYegappan Lakshmanan CheckDefAndScriptFailure2(['prompt_setprompt(1, [])'], 'E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2') 252883494b4aSYegappan Lakshmanan endif 252983494b4aSYegappan Lakshmananenddef 253083494b4aSYegappan Lakshmanan 253183494b4aSYegappan Lakshmanandef Test_prop_add() 253283494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_add("a", 2, {})'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 253383494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_add(1, "b", {})'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 253483494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_add(1, 2, [])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3') 253583494b4aSYegappan Lakshmananenddef 253683494b4aSYegappan Lakshmanan 2537ccfb7c67SYegappan Lakshmanandef Test_prop_add_list() 2538ccfb7c67SYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_add_list([], [])'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1') 2539ccfb7c67SYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_add_list({}, {})'], 'E1013: Argument 2: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 2') 2540ccfb7c67SYegappan Lakshmananenddef 2541ccfb7c67SYegappan Lakshmanan 254283494b4aSYegappan Lakshmanandef Test_prop_clear() 254383494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_clear("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 254483494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_clear(1, "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 254583494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_clear(1, 2, [])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3') 2546a9a7c0c6SYegappan Lakshmananenddef 2547a9a7c0c6SYegappan Lakshmanan 25485b73992dSYegappan Lakshmanandef Test_prop_find() 25494490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_find([1, 2])'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 1') 25504490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_find([1, 2], "k")'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 1') 25514490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_find({"a": 10}, ["a"])'], 'E1013: Argument 2: type mismatch, expected string but got list<string>', 'E1174: String required for argument 2') 2552820d5525SYegappan Lakshmanan assert_fails("prop_find({}, '')", 'E474:') 25535b73992dSYegappan Lakshmananenddef 25545b73992dSYegappan Lakshmanan 25551a71d31bSYegappan Lakshmanandef Test_prop_list() 25561a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_list("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 25571a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_list(1, [])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2') 25581a71d31bSYegappan Lakshmananenddef 25591a71d31bSYegappan Lakshmanan 256083494b4aSYegappan Lakshmanandef Test_prop_remove() 256183494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_remove([])'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1') 256283494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_remove({}, "a")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 256383494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_remove({}, 1, "b")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 256483494b4aSYegappan Lakshmananenddef 256583494b4aSYegappan Lakshmanan 25665b73992dSYegappan Lakshmanandef Test_prop_type_add() 25674490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_type_add({"a": 10}, "b")'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1') 25684490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_type_add("a", "b")'], 'E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2') 2569820d5525SYegappan Lakshmanan assert_fails("prop_type_add('', {highlight: 'Search'})", 'E474:') 25705b73992dSYegappan Lakshmananenddef 25715b73992dSYegappan Lakshmanan 25725b73992dSYegappan Lakshmanandef Test_prop_type_change() 25734490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_type_change({"a": 10}, "b")'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1') 25744490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_type_change("a", "b")'], 'E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2') 2575820d5525SYegappan Lakshmanan assert_fails("prop_type_change('', {highlight: 'Search'})", 'E474:') 25765b73992dSYegappan Lakshmananenddef 25775b73992dSYegappan Lakshmanan 25785b73992dSYegappan Lakshmanandef Test_prop_type_delete() 25794490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_type_delete({"a": 10})'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1') 25804490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_type_delete({"a": 10}, "b")'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1') 25814490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_type_delete("a", "b")'], 'E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2') 2582820d5525SYegappan Lakshmanan assert_fails("prop_type_delete('')", 'E474:') 25835b73992dSYegappan Lakshmananenddef 25845b73992dSYegappan Lakshmanan 25855b73992dSYegappan Lakshmanandef Test_prop_type_get() 25864490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_type_get({"a": 10})'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1') 25874490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_type_get({"a": 10}, "b")'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1') 25884490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_type_get("a", "b")'], 'E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2') 2589820d5525SYegappan Lakshmanan assert_fails("prop_type_get('')", 'E474:') 25905b73992dSYegappan Lakshmananenddef 25915b73992dSYegappan Lakshmanan 25921a71d31bSYegappan Lakshmanandef Test_prop_type_list() 25934490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_type_list(["a"])'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 1') 25944490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['prop_type_list(2)'], 'E1013: Argument 1: type mismatch, expected dict<any> but got number', 'E1206: Dictionary required for argument 1') 25951a71d31bSYegappan Lakshmananenddef 25961a71d31bSYegappan Lakshmanan 25971a71d31bSYegappan Lakshmanandef Test_py3eval() 25981a71d31bSYegappan Lakshmanan if !has('python3') 25991a71d31bSYegappan Lakshmanan CheckFeature python3 26001a71d31bSYegappan Lakshmanan endif 26014490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['py3eval([2])'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1') 26021a71d31bSYegappan Lakshmananenddef 26031a71d31bSYegappan Lakshmanan 26041a71d31bSYegappan Lakshmanandef Test_pyeval() 26051a71d31bSYegappan Lakshmanan if !has('python') 26061a71d31bSYegappan Lakshmanan CheckFeature python 26071a71d31bSYegappan Lakshmanan endif 26084490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['pyeval([2])'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1') 26091a71d31bSYegappan Lakshmananenddef 26101a71d31bSYegappan Lakshmanan 26111a71d31bSYegappan Lakshmanandef Test_pyxeval() 26121a71d31bSYegappan Lakshmanan if !has('python') && !has('python3') 26131a71d31bSYegappan Lakshmanan CheckFeature python 26141a71d31bSYegappan Lakshmanan endif 26154490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['pyxeval([2])'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1') 26161a71d31bSYegappan Lakshmananenddef 26171a71d31bSYegappan Lakshmanan 2618a26f56f6SYegappan Lakshmanandef Test_rand() 26194490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['rand(10)'], 'E1013: Argument 1: type mismatch, expected list<number> but got number', 'E1211: List required for argument 1') 2620a26f56f6SYegappan Lakshmanan CheckDefFailure(['rand(["a"])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<string>') 2621a26f56f6SYegappan Lakshmanan assert_true(rand() >= 0) 2622a26f56f6SYegappan Lakshmanan assert_true(rand(srand()) >= 0) 2623a26f56f6SYegappan Lakshmananenddef 2624a26f56f6SYegappan Lakshmanan 26255b73992dSYegappan Lakshmanandef Test_range() 26264490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['range("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 26274490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['range(10, "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 26284490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['range(10, 20, "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 26295b73992dSYegappan Lakshmananenddef 26305b73992dSYegappan Lakshmanan 263194738d8fSBram Moolenaardef Test_readdir() 26322949cfdbSBram Moolenaar eval expand('sautest')->readdir((e) => e[0] !=# '.') 26332949cfdbSBram Moolenaar eval expand('sautest')->readdirex((e) => e.name[0] !=# '.') 26345bca906bSYegappan Lakshmanan CheckDefAndScriptFailure2(['readdir(["a"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1') 26355bca906bSYegappan Lakshmanan CheckDefAndScriptFailure2(['readdir("a", "1", [3])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3') 2636fc3b7750SYegappan Lakshmanan if has('unix') 2637fc3b7750SYegappan Lakshmanan # only fails on Unix-like systems 2638fc3b7750SYegappan Lakshmanan assert_fails('readdir("")', 'E484: Can''t open file') 2639fc3b7750SYegappan Lakshmanan endif 26405bca906bSYegappan Lakshmananenddef 26415bca906bSYegappan Lakshmanan 26425bca906bSYegappan Lakshmanandef Test_readdirex() 26435bca906bSYegappan Lakshmanan CheckDefAndScriptFailure2(['readdirex(["a"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1') 26445bca906bSYegappan Lakshmanan CheckDefAndScriptFailure2(['readdirex("a", "1", [3])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3') 2645fc3b7750SYegappan Lakshmanan if has('unix') 2646fc3b7750SYegappan Lakshmanan # only fails on Unix-like systems 2647fc3b7750SYegappan Lakshmanan assert_fails('readdirex("")', 'E484: Can''t open file') 2648fc3b7750SYegappan Lakshmanan endif 264994738d8fSBram Moolenaarenddef 265094738d8fSBram Moolenaar 2651c423ad77SBram Moolenaardef Test_readblob() 2652c423ad77SBram Moolenaar var blob = 0z12341234 2653c423ad77SBram Moolenaar writefile(blob, 'Xreadblob') 2654c423ad77SBram Moolenaar var read: blob = readblob('Xreadblob') 2655c423ad77SBram Moolenaar assert_equal(blob, read) 2656c423ad77SBram Moolenaar 2657c423ad77SBram Moolenaar var lines =<< trim END 2658c423ad77SBram Moolenaar var read: list<string> = readblob('Xreadblob') 2659c423ad77SBram Moolenaar END 2660c423ad77SBram Moolenaar CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected list<string> but got blob', 1) 2661fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['readblob("")'], 'E484: Can''t open file <empty>') 2662c423ad77SBram Moolenaar delete('Xreadblob') 2663c423ad77SBram Moolenaarenddef 2664c423ad77SBram Moolenaar 2665c423ad77SBram Moolenaardef Test_readfile() 2666c423ad77SBram Moolenaar var text = ['aaa', 'bbb', 'ccc'] 2667c423ad77SBram Moolenaar writefile(text, 'Xreadfile') 2668c423ad77SBram Moolenaar var read: list<string> = readfile('Xreadfile') 2669c423ad77SBram Moolenaar assert_equal(text, read) 2670c423ad77SBram Moolenaar 2671c423ad77SBram Moolenaar var lines =<< trim END 2672c423ad77SBram Moolenaar var read: dict<string> = readfile('Xreadfile') 2673c423ad77SBram Moolenaar END 2674c423ad77SBram Moolenaar CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected dict<string> but got list<string>', 1) 2675c423ad77SBram Moolenaar delete('Xreadfile') 26765b73992dSYegappan Lakshmanan 26774490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['readfile("a", 0z10)'], 'E1013: Argument 2: type mismatch, expected string but got blob', 'E1174: String required for argument 2') 26784490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['readfile("a", "b", "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 2679f8dbd586SYegappan Lakshmanan CheckDefExecAndScriptFailure(['readfile("")'], 'E1175: Non-empty string required for argument 1') 2680c423ad77SBram Moolenaarenddef 2681c423ad77SBram Moolenaar 26820ad871dcSYegappan Lakshmanandef Test_reduce() 26830ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['reduce({a: 10}, "1")'], 'E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E897: List or Blob required') 26840ad871dcSYegappan Lakshmanan assert_equal(6, [1, 2, 3]->reduce((r, c) => r + c, 0)) 26850ad871dcSYegappan Lakshmanan assert_equal(11, 0z0506->reduce((r, c) => r + c, 0)) 26860ad871dcSYegappan Lakshmananenddef 26870ad871dcSYegappan Lakshmanan 2688a26f56f6SYegappan Lakshmanandef Test_reltime() 2689c816a2c2SBram Moolenaar CheckFeature reltime 2690c816a2c2SBram Moolenaar 2691c816a2c2SBram Moolenaar CheckDefExecAndScriptFailure(['[]->reltime()'], 'E474:') 2692c816a2c2SBram Moolenaar CheckDefExecAndScriptFailure(['[]->reltime([])'], 'E474:') 2693c816a2c2SBram Moolenaar 26944490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['reltime("x")'], 'E1013: Argument 1: type mismatch, expected list<number> but got string', 'E1211: List required for argument 1') 2695a26f56f6SYegappan Lakshmanan CheckDefFailure(['reltime(["x", "y"])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<string>') 26964490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['reltime([1, 2], 10)'], 'E1013: Argument 2: type mismatch, expected list<number> but got number', 'E1211: List required for argument 2') 2697a26f56f6SYegappan Lakshmanan CheckDefFailure(['reltime([1, 2], ["a", "b"])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>') 2698a26f56f6SYegappan Lakshmanan var start: list<any> = reltime() 2699a26f56f6SYegappan Lakshmanan assert_true(type(reltime(start)) == v:t_list) 2700a26f56f6SYegappan Lakshmanan var end: list<any> = reltime() 2701a26f56f6SYegappan Lakshmanan assert_true(type(reltime(start, end)) == v:t_list) 2702a26f56f6SYegappan Lakshmananenddef 2703a26f56f6SYegappan Lakshmanan 2704a26f56f6SYegappan Lakshmanandef Test_reltimefloat() 2705c816a2c2SBram Moolenaar CheckFeature reltime 2706c816a2c2SBram Moolenaar 2707c816a2c2SBram Moolenaar CheckDefExecAndScriptFailure(['[]->reltimefloat()'], 'E474:') 2708c816a2c2SBram Moolenaar 27094490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['reltimefloat("x")'], 'E1013: Argument 1: type mismatch, expected list<number> but got string', 'E1211: List required for argument 1') 2710a26f56f6SYegappan Lakshmanan CheckDefFailure(['reltimefloat([1.1])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<float>') 2711a26f56f6SYegappan Lakshmanan assert_true(type(reltimefloat(reltime())) == v:t_float) 2712a26f56f6SYegappan Lakshmananenddef 2713a26f56f6SYegappan Lakshmanan 2714a26f56f6SYegappan Lakshmanandef Test_reltimestr() 2715c816a2c2SBram Moolenaar CheckFeature reltime 2716c816a2c2SBram Moolenaar 2717c816a2c2SBram Moolenaar CheckDefExecAndScriptFailure(['[]->reltimestr()'], 'E474:') 2718c816a2c2SBram Moolenaar 27194490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['reltimestr(true)'], 'E1013: Argument 1: type mismatch, expected list<number> but got bool', 'E1211: List required for argument 1') 2720a26f56f6SYegappan Lakshmanan CheckDefFailure(['reltimestr([true])'], 'E1013: Argument 1: type mismatch, expected list<number> but got list<bool>') 2721a26f56f6SYegappan Lakshmanan assert_true(type(reltimestr(reltime())) == v:t_string) 2722a26f56f6SYegappan Lakshmananenddef 2723a26f56f6SYegappan Lakshmanan 272483494b4aSYegappan Lakshmanandef Test_remote_expr() 272583494b4aSYegappan Lakshmanan CheckFeature clientserver 272683494b4aSYegappan Lakshmanan CheckEnv DISPLAY 272783494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['remote_expr(1, "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 272883494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['remote_expr("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 272983494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['remote_expr("a", "b", 3)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 273083494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['remote_expr("a", "b", "c", "d")'], 'E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4') 273151491adfSYegappan Lakshmanan CheckDefExecAndScriptFailure(['remote_expr("", "")'], 'E241: Unable to send to ') 273283494b4aSYegappan Lakshmananenddef 273383494b4aSYegappan Lakshmanan 2734a26f56f6SYegappan Lakshmanandef Test_remote_foreground() 2735a26f56f6SYegappan Lakshmanan CheckFeature clientserver 2736a26f56f6SYegappan Lakshmanan # remote_foreground() doesn't fail on MS-Windows 2737a26f56f6SYegappan Lakshmanan CheckNotMSWindows 2738d6fa7bd5SBram Moolenaar CheckEnv DISPLAY 2739d6fa7bd5SBram Moolenaar 27404490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['remote_foreground(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 2741a26f56f6SYegappan Lakshmanan assert_fails('remote_foreground("NonExistingServer")', 'E241:') 274251491adfSYegappan Lakshmanan assert_fails('remote_foreground("")', 'E241:') 2743a26f56f6SYegappan Lakshmananenddef 2744a26f56f6SYegappan Lakshmanan 27455b73992dSYegappan Lakshmanandef Test_remote_peek() 27465b73992dSYegappan Lakshmanan CheckFeature clientserver 27475b73992dSYegappan Lakshmanan CheckEnv DISPLAY 27484490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['remote_peek(0z10)'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1174: String required for argument 1') 27494490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['remote_peek("a5b6c7", [1])'], 'E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2') 2750fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['remote_peek("")'], 'E573: Invalid server id used') 27515b73992dSYegappan Lakshmananenddef 27525b73992dSYegappan Lakshmanan 27531a71d31bSYegappan Lakshmanandef Test_remote_read() 27541a71d31bSYegappan Lakshmanan CheckFeature clientserver 27551a71d31bSYegappan Lakshmanan CheckEnv DISPLAY 27561a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['remote_read(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 27571a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['remote_read("a", "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 2758fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['remote_read("")'], 'E573: Invalid server id used') 27591a71d31bSYegappan Lakshmananenddef 27601a71d31bSYegappan Lakshmanan 276183494b4aSYegappan Lakshmanandef Test_remote_send() 276283494b4aSYegappan Lakshmanan CheckFeature clientserver 276383494b4aSYegappan Lakshmanan CheckEnv DISPLAY 276483494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['remote_send(1, "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 276583494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['remote_send("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 276683494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['remote_send("a", "b", 3)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 276751491adfSYegappan Lakshmanan assert_fails('remote_send("", "")', 'E241:') 276883494b4aSYegappan Lakshmananenddef 276983494b4aSYegappan Lakshmanan 2770a26f56f6SYegappan Lakshmanandef Test_remote_startserver() 27715b73992dSYegappan Lakshmanan CheckFeature clientserver 27725b73992dSYegappan Lakshmanan CheckEnv DISPLAY 27734490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['remote_startserver({})'], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1') 2774a26f56f6SYegappan Lakshmananenddef 2775a26f56f6SYegappan Lakshmanan 2776885971e2SBram Moolenaardef Test_remove_const_list() 2777885971e2SBram Moolenaar var l: list<number> = [1, 2, 3, 4] 2778885971e2SBram Moolenaar assert_equal([1, 2], remove(l, 0, 1)) 2779885971e2SBram Moolenaar assert_equal([3, 4], l) 2780885971e2SBram Moolenaarenddef 2781885971e2SBram Moolenaar 278283494b4aSYegappan Lakshmanandef Test_remove() 278378db17c6SBram Moolenaar CheckDefAndScriptFailure2(['remove("a", 1)'], 'E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1228: List, Dictionary or Blob required for argument 1') 278483494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['remove([], "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 278583494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['remove([], 1, "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 27864490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['remove({}, 1.1)'], 'E1013: Argument 2: type mismatch, expected string but got float', 'E1220: String or Number required for argument 2') 278783494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['remove(0z10, "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 278883494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['remove(0z20, 1, "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 278983494b4aSYegappan Lakshmanan var l: any = [1, 2, 3, 4] 279083494b4aSYegappan Lakshmanan remove(l, 1) 279183494b4aSYegappan Lakshmanan assert_equal([1, 3, 4], l) 279283494b4aSYegappan Lakshmanan remove(l, 0, 1) 279383494b4aSYegappan Lakshmanan assert_equal([4], l) 279483494b4aSYegappan Lakshmanan var b: any = 0z1234.5678.90 279583494b4aSYegappan Lakshmanan remove(b, 1) 279683494b4aSYegappan Lakshmanan assert_equal(0z1256.7890, b) 279783494b4aSYegappan Lakshmanan remove(b, 1, 2) 279883494b4aSYegappan Lakshmanan assert_equal(0z1290, b) 279983494b4aSYegappan Lakshmanan var d: any = {a: 10, b: 20, c: 30} 280083494b4aSYegappan Lakshmanan remove(d, 'b') 280183494b4aSYegappan Lakshmanan assert_equal({a: 10, c: 30}, d) 280283494b4aSYegappan Lakshmanan var d2: any = {1: 'a', 2: 'b', 3: 'c'} 280383494b4aSYegappan Lakshmanan remove(d2, 2) 280483494b4aSYegappan Lakshmanan assert_equal({1: 'a', 3: 'c'}, d2) 280583494b4aSYegappan Lakshmananenddef 280683494b4aSYegappan Lakshmanan 280794738d8fSBram Moolenaardef Test_remove_return_type() 2808e0de171eSBram Moolenaar var l = remove({one: [1, 2], two: [3, 4]}, 'one') 280994738d8fSBram Moolenaar var res = 0 281094738d8fSBram Moolenaar for n in l 281194738d8fSBram Moolenaar res += n 281294738d8fSBram Moolenaar endfor 281394738d8fSBram Moolenaar res->assert_equal(3) 281494738d8fSBram Moolenaarenddef 281594738d8fSBram Moolenaar 2816a26f56f6SYegappan Lakshmanandef Test_rename() 28174490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['rename(1, "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 28184490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['rename("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 2819f8dbd586SYegappan Lakshmanan rename('', '')->assert_equal(0) 2820a26f56f6SYegappan Lakshmananenddef 2821a26f56f6SYegappan Lakshmanan 28220ad871dcSYegappan Lakshmanandef Test_repeat() 282378db17c6SBram Moolenaar CheckDefAndScriptFailure2(['repeat(1.1, 2)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1224: String, Number or List required for argument 1') 282478db17c6SBram Moolenaar CheckDefAndScriptFailure2(['repeat({a: 10}, 2)'], 'E1013: Argument 1: type mismatch, expected string but got dict<', 'E1224: String, Number or List required for argument 1') 28251780f08bSBram Moolenaar var lines =<< trim END 28260ad871dcSYegappan Lakshmanan assert_equal('aaa', repeat('a', 3)) 28270ad871dcSYegappan Lakshmanan assert_equal('111', repeat(1, 3)) 28280ad871dcSYegappan Lakshmanan assert_equal([1, 1, 1], repeat([1], 3)) 28291780f08bSBram Moolenaar var s = '-' 28301780f08bSBram Moolenaar s ..= repeat(5, 3) 28311780f08bSBram Moolenaar assert_equal('-555', s) 28321780f08bSBram Moolenaar END 28331780f08bSBram Moolenaar CheckDefAndScriptSuccess(lines) 28340ad871dcSYegappan Lakshmananenddef 28350ad871dcSYegappan Lakshmanan 2836a26f56f6SYegappan Lakshmanandef Test_resolve() 28374490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['resolve([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1') 2838a26f56f6SYegappan Lakshmanan assert_equal('SomeFile', resolve('SomeFile')) 2839f8dbd586SYegappan Lakshmanan resolve('')->assert_equal('') 2840a26f56f6SYegappan Lakshmananenddef 2841a26f56f6SYegappan Lakshmanan 28425b73992dSYegappan Lakshmanandef Test_reverse() 284378db17c6SBram Moolenaar CheckDefAndScriptFailure2(['reverse(10)'], 'E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1226: List or Blob required for argument 1') 284478db17c6SBram Moolenaar CheckDefAndScriptFailure2(['reverse("abc")'], 'E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1226: List or Blob required for argument 1') 28455b73992dSYegappan Lakshmananenddef 28465b73992dSYegappan Lakshmanan 284794738d8fSBram Moolenaardef Test_reverse_return_type() 284894738d8fSBram Moolenaar var l = reverse([1, 2, 3]) 284994738d8fSBram Moolenaar var res = 0 285094738d8fSBram Moolenaar for n in l 285194738d8fSBram Moolenaar res += n 285294738d8fSBram Moolenaar endfor 285394738d8fSBram Moolenaar res->assert_equal(6) 285494738d8fSBram Moolenaarenddef 285594738d8fSBram Moolenaar 28561a71d31bSYegappan Lakshmanandef Test_rubyeval() 28571a71d31bSYegappan Lakshmanan if !has('ruby') 28581a71d31bSYegappan Lakshmanan CheckFeature ruby 28591a71d31bSYegappan Lakshmanan endif 28604490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['rubyeval([2])'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1') 28611a71d31bSYegappan Lakshmananenddef 28621a71d31bSYegappan Lakshmanan 28637237cab8SYegappan Lakshmanandef Test_screenattr() 28644490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['screenattr("x", 1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 28654490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['screenattr(1, "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 28667237cab8SYegappan Lakshmananenddef 28677237cab8SYegappan Lakshmanan 28687237cab8SYegappan Lakshmanandef Test_screenchar() 28694490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['screenchar("x", 1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 28704490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['screenchar(1, "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 28717237cab8SYegappan Lakshmananenddef 28727237cab8SYegappan Lakshmanan 28737237cab8SYegappan Lakshmanandef Test_screenchars() 28744490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['screenchars("x", 1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 28754490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['screenchars(1, "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 28767237cab8SYegappan Lakshmananenddef 28777237cab8SYegappan Lakshmanan 2878a26f56f6SYegappan Lakshmanandef Test_screenpos() 28794490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['screenpos("a", 1, 1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 28804490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['screenpos(1, "b", 1)'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 28814490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['screenpos(1, 1, "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 2882a26f56f6SYegappan Lakshmanan assert_equal({col: 1, row: 1, endcol: 1, curscol: 1}, screenpos(1, 1, 1)) 2883a26f56f6SYegappan Lakshmananenddef 2884a26f56f6SYegappan Lakshmanan 28857237cab8SYegappan Lakshmanandef Test_screenstring() 28864490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['screenstring("x", 1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 28874490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['screenstring(1, "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 28887237cab8SYegappan Lakshmananenddef 28897237cab8SYegappan Lakshmanan 289094738d8fSBram Moolenaardef Test_search() 289194738d8fSBram Moolenaar new 289294738d8fSBram Moolenaar setline(1, ['foo', 'bar']) 289394738d8fSBram Moolenaar var val = 0 289494738d8fSBram Moolenaar # skip expr returns boolean 28952949cfdbSBram Moolenaar search('bar', 'W', 0, 0, () => val == 1)->assert_equal(2) 289694738d8fSBram Moolenaar :1 28972949cfdbSBram Moolenaar search('bar', 'W', 0, 0, () => val == 0)->assert_equal(0) 289894738d8fSBram Moolenaar # skip expr returns number, only 0 and 1 are accepted 289994738d8fSBram Moolenaar :1 29002949cfdbSBram Moolenaar search('bar', 'W', 0, 0, () => 0)->assert_equal(2) 290194738d8fSBram Moolenaar :1 29022949cfdbSBram Moolenaar search('bar', 'W', 0, 0, () => 1)->assert_equal(0) 29032949cfdbSBram Moolenaar assert_fails("search('bar', '', 0, 0, () => -1)", 'E1023:') 29042949cfdbSBram Moolenaar assert_fails("search('bar', '', 0, 0, () => -1)", 'E1023:') 2905f06ab6baSBram Moolenaar 2906f06ab6baSBram Moolenaar setline(1, "find this word") 2907f06ab6baSBram Moolenaar normal gg 2908f06ab6baSBram Moolenaar var col = 7 2909f06ab6baSBram Moolenaar assert_equal(1, search('this', '', 0, 0, 'col(".") > col')) 2910f06ab6baSBram Moolenaar normal 0 2911f06ab6baSBram Moolenaar assert_equal([1, 6], searchpos('this', '', 0, 0, 'col(".") > col')) 2912f06ab6baSBram Moolenaar 2913f06ab6baSBram Moolenaar col = 5 2914f06ab6baSBram Moolenaar normal 0 2915f06ab6baSBram Moolenaar assert_equal(0, search('this', '', 0, 0, 'col(".") > col')) 2916f06ab6baSBram Moolenaar normal 0 2917f06ab6baSBram Moolenaar assert_equal([0, 0], searchpos('this', '', 0, 0, 'col(".") > col')) 2918f06ab6baSBram Moolenaar bwipe! 29190ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['search(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 29200ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['search("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 29210ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['search("a", "b", "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 29220ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['search("a", "b", 3, "d")'], 'E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4') 292394738d8fSBram Moolenaarenddef 292494738d8fSBram Moolenaar 292594738d8fSBram Moolenaardef Test_searchcount() 292694738d8fSBram Moolenaar new 292794738d8fSBram Moolenaar setline(1, "foo bar") 292894738d8fSBram Moolenaar :/foo 2929e0de171eSBram Moolenaar searchcount({recompute: true}) 2930e0de171eSBram Moolenaar ->assert_equal({ 293194738d8fSBram Moolenaar exact_match: 1, 293294738d8fSBram Moolenaar current: 1, 293394738d8fSBram Moolenaar total: 1, 293494738d8fSBram Moolenaar maxcount: 99, 293594738d8fSBram Moolenaar incomplete: 0}) 293694738d8fSBram Moolenaar bwipe! 29374490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['searchcount([1])'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 1') 293894738d8fSBram Moolenaarenddef 293994738d8fSBram Moolenaar 294083494b4aSYegappan Lakshmanandef Test_searchdecl() 294183494b4aSYegappan Lakshmanan searchdecl('blah', true, true)->assert_equal(1) 294283494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['searchdecl(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 294383494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['searchdecl("a", 2)'], 'E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2') 294483494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['searchdecl("a", true, 2)'], 'E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3') 294583494b4aSYegappan Lakshmananenddef 294683494b4aSYegappan Lakshmanan 2947f18332fbSBram Moolenaardef Test_searchpair() 2948f18332fbSBram Moolenaar new 2949f18332fbSBram Moolenaar setline(1, "here { and } there") 2950f06ab6baSBram Moolenaar 2951f18332fbSBram Moolenaar normal f{ 2952f18332fbSBram Moolenaar var col = 15 2953f18332fbSBram Moolenaar assert_equal(1, searchpair('{', '', '}', '', 'col(".") > col')) 2954f18332fbSBram Moolenaar assert_equal(12, col('.')) 2955f06ab6baSBram Moolenaar normal 0f{ 2956f06ab6baSBram Moolenaar assert_equal([1, 12], searchpairpos('{', '', '}', '', 'col(".") > col')) 2957f06ab6baSBram Moolenaar 2958f18332fbSBram Moolenaar col = 8 2959f18332fbSBram Moolenaar normal 0f{ 2960f18332fbSBram Moolenaar assert_equal(0, searchpair('{', '', '}', '', 'col(".") > col')) 2961f18332fbSBram Moolenaar assert_equal(6, col('.')) 2962f06ab6baSBram Moolenaar normal 0f{ 2963f06ab6baSBram Moolenaar assert_equal([0, 0], searchpairpos('{', '', '}', '', 'col(".") > col')) 2964f06ab6baSBram Moolenaar 2965f8dbd586SYegappan Lakshmanan # searchpair with empty strings 2966f8dbd586SYegappan Lakshmanan normal 8| 2967f8dbd586SYegappan Lakshmanan assert_equal(0, searchpair('', '', '')) 2968f8dbd586SYegappan Lakshmanan assert_equal([0, 0], searchpairpos('', '', '')) 2969f8dbd586SYegappan Lakshmanan 2970ff65288aSBram Moolenaar var lines =<< trim END 2971ff65288aSBram Moolenaar vim9script 2972ff65288aSBram Moolenaar setline(1, '()') 2973ff65288aSBram Moolenaar normal gg 2974ff65288aSBram Moolenaar def Fail() 2975ff65288aSBram Moolenaar try 2976ff65288aSBram Moolenaar searchpairpos('(', '', ')', 'nW', '[0]->map("")') 2977ff65288aSBram Moolenaar catch 2978cbe178e3SBram Moolenaar g:caught = 'yes' 2979ff65288aSBram Moolenaar endtry 2980ff65288aSBram Moolenaar enddef 2981ff65288aSBram Moolenaar Fail() 2982ff65288aSBram Moolenaar END 2983cbe178e3SBram Moolenaar CheckScriptSuccess(lines) 2984cbe178e3SBram Moolenaar assert_equal('yes', g:caught) 2985cbe178e3SBram Moolenaar unlet g:caught 29865bca906bSYegappan Lakshmanan bwipe! 29875a234eb1SBram Moolenaar 29885a234eb1SBram Moolenaar lines =<< trim END 2989dd0b287cSBram Moolenaar echo searchpair("a", "b", "c", "d", "f", 33) 29905a234eb1SBram Moolenaar END 2991dd0b287cSBram Moolenaar CheckDefAndScriptFailure2(lines, 'E1001: Variable not found: f', 'E475: Invalid argument: d') 2992dd0b287cSBram Moolenaar 29937973de35SYegappan Lakshmanan CheckDefAndScriptFailure2(['searchpair(1, "b", "c")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 29947973de35SYegappan Lakshmanan CheckDefAndScriptFailure2(['searchpair("a", 2, "c")'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 29957973de35SYegappan Lakshmanan CheckDefAndScriptFailure2(['searchpair("a", "b", 3)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 29967973de35SYegappan Lakshmanan CheckDefAndScriptFailure2(['searchpair("a", "b", "c", 4)'], 'E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4') 29975bca906bSYegappan Lakshmanan CheckDefAndScriptFailure2(['searchpair("a", "b", "c", "r", "1", "f")'], 'E1013: Argument 6: type mismatch, expected number but got string', 'E1210: Number required for argument 6') 29985bca906bSYegappan Lakshmanan 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') 2999f18332fbSBram Moolenaarenddef 3000f18332fbSBram Moolenaar 30010ad871dcSYegappan Lakshmanandef Test_searchpos() 30020ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['searchpos(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 30030ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['searchpos("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 30040ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['searchpos("a", "b", "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 30050ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['searchpos("a", "b", 3, "d")'], 'E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4') 30060ad871dcSYegappan Lakshmananenddef 30070ad871dcSYegappan Lakshmanan 30085b73992dSYegappan Lakshmanandef Test_server2client() 30095b73992dSYegappan Lakshmanan CheckFeature clientserver 30105b73992dSYegappan Lakshmanan CheckEnv DISPLAY 30114490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['server2client(10, "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 30124490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['server2client("a", 10)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 3013fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['server2client("", "a")'], 'E573: Invalid server id used') 301451491adfSYegappan Lakshmanan CheckDefExecAndScriptFailure(['server2client("", "")'], 'E573: Invalid server id used') 30155b73992dSYegappan Lakshmananenddef 30165b73992dSYegappan Lakshmanan 301783494b4aSYegappan Lakshmanandef Test_shellescape() 301883494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['shellescape(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 301983494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['shellescape("a", 2)'], 'E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2') 3020f8dbd586SYegappan Lakshmanan if has('unix') 3021f8dbd586SYegappan Lakshmanan assert_equal("''", shellescape('')) 3022f8dbd586SYegappan Lakshmanan endif 302383494b4aSYegappan Lakshmananenddef 302483494b4aSYegappan Lakshmanan 302534453208SBram Moolenaardef Test_set_get_bufline() 302634453208SBram Moolenaar # similar to Test_setbufline_getbufline() 302734453208SBram Moolenaar var lines =<< trim END 302834453208SBram Moolenaar new 302934453208SBram Moolenaar var b = bufnr('%') 303034453208SBram Moolenaar hide 303134453208SBram Moolenaar assert_equal(0, setbufline(b, 1, ['foo', 'bar'])) 303234453208SBram Moolenaar assert_equal(['foo'], getbufline(b, 1)) 303334453208SBram Moolenaar assert_equal(['bar'], getbufline(b, '$')) 303434453208SBram Moolenaar assert_equal(['foo', 'bar'], getbufline(b, 1, 2)) 303534453208SBram Moolenaar exe "bd!" b 303634453208SBram Moolenaar assert_equal([], getbufline(b, 1, 2)) 303734453208SBram Moolenaar 303834453208SBram Moolenaar split Xtest 303934453208SBram Moolenaar setline(1, ['a', 'b', 'c']) 304034453208SBram Moolenaar b = bufnr('%') 304134453208SBram Moolenaar wincmd w 304234453208SBram Moolenaar 304334453208SBram Moolenaar assert_equal(1, setbufline(b, 5, 'x')) 304434453208SBram Moolenaar assert_equal(1, setbufline(b, 5, ['x'])) 304534453208SBram Moolenaar assert_equal(1, setbufline(b, 5, [])) 304634453208SBram Moolenaar assert_equal(1, setbufline(b, 5, test_null_list())) 304734453208SBram Moolenaar 304834453208SBram Moolenaar assert_equal(1, 'x'->setbufline(bufnr('$') + 1, 1)) 304934453208SBram Moolenaar assert_equal(1, ['x']->setbufline(bufnr('$') + 1, 1)) 305034453208SBram Moolenaar assert_equal(1, []->setbufline(bufnr('$') + 1, 1)) 305134453208SBram Moolenaar assert_equal(1, test_null_list()->setbufline(bufnr('$') + 1, 1)) 305234453208SBram Moolenaar 305334453208SBram Moolenaar assert_equal(['a', 'b', 'c'], getbufline(b, 1, '$')) 305434453208SBram Moolenaar 305534453208SBram Moolenaar assert_equal(0, setbufline(b, 4, ['d', 'e'])) 305634453208SBram Moolenaar assert_equal(['c'], b->getbufline(3)) 305734453208SBram Moolenaar assert_equal(['d'], getbufline(b, 4)) 305834453208SBram Moolenaar assert_equal(['e'], getbufline(b, 5)) 305934453208SBram Moolenaar assert_equal([], getbufline(b, 6)) 306034453208SBram Moolenaar assert_equal([], getbufline(b, 2, 1)) 306134453208SBram Moolenaar 306200385114SBram Moolenaar if has('job') 30631328bde9SBram Moolenaar setbufline(b, 2, [function('eval'), {key: 123}, string(test_null_job())]) 306434453208SBram Moolenaar assert_equal(["function('eval')", 306534453208SBram Moolenaar "{'key': 123}", 306634453208SBram Moolenaar "no process"], 306734453208SBram Moolenaar getbufline(b, 2, 4)) 306800385114SBram Moolenaar endif 306934453208SBram Moolenaar 307034453208SBram Moolenaar exe 'bwipe! ' .. b 307134453208SBram Moolenaar END 307234453208SBram Moolenaar CheckDefAndScriptSuccess(lines) 307334453208SBram Moolenaarenddef 307434453208SBram Moolenaar 307594738d8fSBram Moolenaardef Test_setbufvar() 307694738d8fSBram Moolenaar setbufvar(bufnr('%'), '&syntax', 'vim') 307794738d8fSBram Moolenaar &syntax->assert_equal('vim') 307894738d8fSBram Moolenaar setbufvar(bufnr('%'), '&ts', 16) 307994738d8fSBram Moolenaar &ts->assert_equal(16) 308031a201a0SBram Moolenaar setbufvar(bufnr('%'), '&ai', true) 308131a201a0SBram Moolenaar &ai->assert_equal(true) 308231a201a0SBram Moolenaar setbufvar(bufnr('%'), '&ft', 'filetype') 308331a201a0SBram Moolenaar &ft->assert_equal('filetype') 308431a201a0SBram Moolenaar 308594738d8fSBram Moolenaar settabwinvar(1, 1, '&syntax', 'vam') 308694738d8fSBram Moolenaar &syntax->assert_equal('vam') 308794738d8fSBram Moolenaar settabwinvar(1, 1, '&ts', 15) 308894738d8fSBram Moolenaar &ts->assert_equal(15) 308994738d8fSBram Moolenaar setlocal ts=8 3090b0d8182fSBram Moolenaar settabwinvar(1, 1, '&list', false) 3091b0d8182fSBram Moolenaar &list->assert_equal(false) 309231a201a0SBram Moolenaar settabwinvar(1, 1, '&list', true) 309331a201a0SBram Moolenaar &list->assert_equal(true) 309431a201a0SBram Moolenaar setlocal list& 309594738d8fSBram Moolenaar 309694738d8fSBram Moolenaar setbufvar('%', 'myvar', 123) 309794738d8fSBram Moolenaar getbufvar('%', 'myvar')->assert_equal(123) 30987973de35SYegappan Lakshmanan 30994490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['setbufvar(true, "v", 3)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1') 31007973de35SYegappan Lakshmanan CheckDefAndScriptFailure2(['setbufvar(1, 2, 3)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 3101fc3b7750SYegappan Lakshmanan assert_fails('setbufvar("%", "", 10)', 'E461: Illegal variable name') 310294738d8fSBram Moolenaarenddef 310394738d8fSBram Moolenaar 31041a71d31bSYegappan Lakshmanandef Test_setbufline() 31051a71d31bSYegappan Lakshmanan new 31061a71d31bSYegappan Lakshmanan var bnum = bufnr('%') 31071a71d31bSYegappan Lakshmanan :wincmd w 31081a71d31bSYegappan Lakshmanan setbufline(bnum, 1, range(1, 3)) 31091a71d31bSYegappan Lakshmanan setbufline(bnum, 4, 'one') 31101a71d31bSYegappan Lakshmanan setbufline(bnum, 5, 10) 31111a71d31bSYegappan Lakshmanan setbufline(bnum, 6, ['two', 11]) 31121a71d31bSYegappan Lakshmanan assert_equal(['1', '2', '3', 'one', '10', 'two', '11'], getbufline(bnum, 1, '$')) 31134490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['setbufline([1], 1, "x")'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1') 31144490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['setbufline(1, [1], "x")'], 'E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 2') 311578db17c6SBram Moolenaar 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') 31161a71d31bSYegappan Lakshmanan bnum->bufwinid()->win_gotoid() 311751491adfSYegappan Lakshmanan setbufline('', 1, 'nombres') 311851491adfSYegappan Lakshmanan getline(1)->assert_equal('nombres') 31191a71d31bSYegappan Lakshmanan bw! 31201a71d31bSYegappan Lakshmananenddef 31211a71d31bSYegappan Lakshmanan 31221a71d31bSYegappan Lakshmanandef Test_setcellwidths() 31234490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['setcellwidths(1)'], 'E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1211: List required for argument 1') 31244490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['setcellwidths({"a": 10})'], 'E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1211: List required for argument 1') 31251a71d31bSYegappan Lakshmananenddef 31261a71d31bSYegappan Lakshmanan 312783494b4aSYegappan Lakshmanandef Test_setcharpos() 312883494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['setcharpos(1, [])'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 312983494b4aSYegappan Lakshmanan CheckDefFailure(['setcharpos(".", ["a"])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>') 313083494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['setcharpos(".", 1)'], 'E1013: Argument 2: type mismatch, expected list<number> but got number', 'E1211: List required for argument 2') 3131fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['setcharpos("", [0, 1, 1, 1])'], 'E474: Invalid argument') 313283494b4aSYegappan Lakshmananenddef 313383494b4aSYegappan Lakshmanan 313483494b4aSYegappan Lakshmanandef Test_setcharsearch() 31354490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['setcharsearch("x")'], 'E1013: Argument 1: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 1') 31364490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['setcharsearch([])'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1') 313783494b4aSYegappan Lakshmanan var d: dict<any> = {char: 'x', forward: 1, until: 1} 313883494b4aSYegappan Lakshmanan setcharsearch(d) 313983494b4aSYegappan Lakshmanan assert_equal(d, getcharsearch()) 314083494b4aSYegappan Lakshmananenddef 314183494b4aSYegappan Lakshmanan 314283494b4aSYegappan Lakshmanandef Test_setcmdpos() 31434490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['setcmdpos("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 314483494b4aSYegappan Lakshmananenddef 314583494b4aSYegappan Lakshmanan 314683494b4aSYegappan Lakshmanandef Test_setcursorcharpos() 314778db17c6SBram Moolenaar CheckDefAndScriptFailure2(['setcursorcharpos(0z10, 1)'], 'E1013: Argument 1: type mismatch, expected number but got blob', 'E1224: String, Number or List required for argument 1') 314883494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['setcursorcharpos(1, "2")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 314983494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['setcursorcharpos(1, 2, "3")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 3150fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['setcursorcharpos("", 10)'], 'E1209: Invalid value for a line number') 315183494b4aSYegappan Lakshmananenddef 315283494b4aSYegappan Lakshmanan 3153a764e73dSYegappan Lakshmanandef Test_setenv() 3154a764e73dSYegappan Lakshmanan CheckDefAndScriptFailure2(['setenv(1, 2)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3155f8dbd586SYegappan Lakshmanan assert_equal(0, setenv('', '')) 3156f8dbd586SYegappan Lakshmanan assert_equal(0, setenv('', v:null)) 3157a764e73dSYegappan Lakshmananenddef 3158a764e73dSYegappan Lakshmanan 315983494b4aSYegappan Lakshmanandef Test_setfperm() 31604490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['setfperm(1, "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 31614490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['setfperm("a", 0z10)'], 'E1013: Argument 2: type mismatch, expected string but got blob', 'E1174: String required for argument 2') 3162fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['setfperm("Xfile", "")'], 'E475: Invalid argument') 3163f8dbd586SYegappan Lakshmanan CheckDefExecAndScriptFailure(['setfperm("", "")'], 'E475: Invalid argument') 3164f8dbd586SYegappan Lakshmanan assert_equal(0, setfperm('', 'rw-r--r--')) 316583494b4aSYegappan Lakshmananenddef 316683494b4aSYegappan Lakshmanan 3167c72bdd28SYegappan Lakshmanandef Test_setline() 3168c72bdd28SYegappan Lakshmanan new 3169c72bdd28SYegappan Lakshmanan setline(1, range(1, 4)) 3170c72bdd28SYegappan Lakshmanan assert_equal(['1', '2', '3', '4'], getline(1, '$')) 3171c72bdd28SYegappan Lakshmanan setline(1, ['a', 'b', 'c', 'd']) 3172c72bdd28SYegappan Lakshmanan assert_equal(['a', 'b', 'c', 'd'], getline(1, '$')) 3173c72bdd28SYegappan Lakshmanan setline(1, 'one') 3174c72bdd28SYegappan Lakshmanan assert_equal(['one', 'b', 'c', 'd'], getline(1, '$')) 31751a71d31bSYegappan Lakshmanan setline(1, 10) 31761a71d31bSYegappan Lakshmanan assert_equal(['10', 'b', 'c', 'd'], getline(1, '$')) 31774490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['setline([1], "x")'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1') 3178fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['setline("", "x")'], 'E1209: Invalid value for a line number') 3179c72bdd28SYegappan Lakshmanan bw! 3180c72bdd28SYegappan Lakshmananenddef 3181c72bdd28SYegappan Lakshmanan 318294738d8fSBram Moolenaardef Test_setloclist() 3183e0de171eSBram Moolenaar var items = [{filename: '/tmp/file', lnum: 1, valid: true}] 3184e0de171eSBram Moolenaar var what = {items: items} 318594738d8fSBram Moolenaar setqflist([], ' ', what) 318694738d8fSBram Moolenaar setloclist(0, [], ' ', what) 318783494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['setloclist("1", [])'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 318883494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['setloclist(1, 2)'], 'E1013: Argument 2: type mismatch, expected list<any> but got number', 'E1211: List required for argument 2') 318983494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['setloclist(1, [], 3)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 319083494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['setloclist(1, [], "a", [])'], 'E1013: Argument 4: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 4') 319183494b4aSYegappan Lakshmananenddef 319283494b4aSYegappan Lakshmanan 319383494b4aSYegappan Lakshmanandef Test_setmatches() 319483494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['setmatches({})'], 'E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 1') 319583494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['setmatches([], "1")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 319683494b4aSYegappan Lakshmananenddef 319783494b4aSYegappan Lakshmanan 319883494b4aSYegappan Lakshmanandef Test_setpos() 319983494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['setpos(1, [])'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 320083494b4aSYegappan Lakshmanan CheckDefFailure(['setpos(".", ["a"])'], 'E1013: Argument 2: type mismatch, expected list<number> but got list<string>') 320183494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['setpos(".", 1)'], 'E1013: Argument 2: type mismatch, expected list<number> but got number', 'E1211: List required for argument 2') 3202fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['setpos("", [0, 1, 1, 1])'], 'E474: Invalid argument') 320383494b4aSYegappan Lakshmananenddef 320483494b4aSYegappan Lakshmanan 320583494b4aSYegappan Lakshmanandef Test_setqflist() 320683494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['setqflist(1, "")'], 'E1013: Argument 1: type mismatch, expected list<any> but got number', 'E1211: List required for argument 1') 320783494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['setqflist([], 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 320883494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['setqflist([], "", [])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3') 320994738d8fSBram Moolenaarenddef 321094738d8fSBram Moolenaar 321194738d8fSBram Moolenaardef Test_setreg() 321294738d8fSBram Moolenaar setreg('a', ['aaa', 'bbb', 'ccc']) 321394738d8fSBram Moolenaar var reginfo = getreginfo('a') 321494738d8fSBram Moolenaar setreg('a', reginfo) 321594738d8fSBram Moolenaar getreginfo('a')->assert_equal(reginfo) 3216418a29f0SBram Moolenaar assert_fails('setreg("ab", 0)', 'E1162:') 3217a764e73dSYegappan Lakshmanan CheckDefAndScriptFailure2(['setreg(1, "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3218a764e73dSYegappan Lakshmanan CheckDefAndScriptFailure2(['setreg("a", "b", 3)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 3219f8dbd586SYegappan Lakshmanan setreg('', '1a2b3c') 3220f8dbd586SYegappan Lakshmanan assert_equal('1a2b3c', @") 322194738d8fSBram Moolenaarenddef 322294738d8fSBram Moolenaar 322383494b4aSYegappan Lakshmanandef Test_settabvar() 322483494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['settabvar("a", "b", 1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 322583494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['settabvar(1, 2, "c")'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 3226fc3b7750SYegappan Lakshmanan assert_fails('settabvar(1, "", 10)', 'E461: Illegal variable name') 322783494b4aSYegappan Lakshmananenddef 322883494b4aSYegappan Lakshmanan 322983494b4aSYegappan Lakshmanandef Test_settabwinvar() 323083494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['settabwinvar("a", 2, "c", true)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 323183494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['settabwinvar(1, "b", "c", [])'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 323283494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['settabwinvar(1, 1, 3, {})'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 3233fc3b7750SYegappan Lakshmanan assert_fails('settabwinvar(1, 1, "", 10)', 'E461: Illegal variable name') 323483494b4aSYegappan Lakshmananenddef 323583494b4aSYegappan Lakshmanan 323683494b4aSYegappan Lakshmanandef Test_settagstack() 323783494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['settagstack(true, {})'], 'E1013: Argument 1: type mismatch, expected number but got bool', 'E1210: Number required for argument 1') 323883494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['settagstack(1, [1])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 2') 323983494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['settagstack(1, {}, 2)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 3240f8dbd586SYegappan Lakshmanan assert_fails('settagstack(1, {}, "")', 'E962: Invalid action') 324183494b4aSYegappan Lakshmananenddef 324283494b4aSYegappan Lakshmanan 324383494b4aSYegappan Lakshmanandef Test_setwinvar() 324483494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['setwinvar("a", "b", 1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 324583494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['setwinvar(1, 2, "c")'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 3246fc3b7750SYegappan Lakshmanan assert_fails('setwinvar(1, "", 10)', 'E461: Illegal variable name') 324783494b4aSYegappan Lakshmananenddef 324883494b4aSYegappan Lakshmanan 3249a26f56f6SYegappan Lakshmanandef Test_sha256() 32504490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['sha256(100)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 32514490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['sha256(0zABCD)'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1174: String required for argument 1') 3252a26f56f6SYegappan Lakshmanan assert_equal('ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad', sha256('abc')) 3253f8dbd586SYegappan Lakshmanan assert_equal('e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', sha256('')) 3254a26f56f6SYegappan Lakshmananenddef 3255a26f56f6SYegappan Lakshmanan 32567237cab8SYegappan Lakshmanandef Test_shiftwidth() 32574490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['shiftwidth("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 32585b73992dSYegappan Lakshmananenddef 32595b73992dSYegappan Lakshmanan 32605b73992dSYegappan Lakshmanandef Test_sign_define() 32614490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['sign_define({"a": 10})'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1222: String or List required for argument 1') 32624490ec4eSYegappan Lakshmanan 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') 32630ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['sign_define("a", ["b"])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 2') 32645b73992dSYegappan Lakshmananenddef 32655b73992dSYegappan Lakshmanan 32661a71d31bSYegappan Lakshmanandef Test_sign_getdefined() 32671a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['sign_getdefined(["x"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1') 32681a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['sign_getdefined(2)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3269820d5525SYegappan Lakshmanan sign_getdefined('')->assert_equal([]) 32701a71d31bSYegappan Lakshmananenddef 32711a71d31bSYegappan Lakshmanan 327283494b4aSYegappan Lakshmanandef Test_sign_getplaced() 32734490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['sign_getplaced(["x"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1220: String or Number required for argument 1') 327483494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['sign_getplaced(1, ["a"])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 2') 327583494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['sign_getplaced("a", 1.1)'], 'E1013: Argument 2: type mismatch, expected dict<any> but got float', 'E1206: Dictionary required for argument 2') 327651491adfSYegappan Lakshmanan CheckDefExecAndScriptFailure(['sign_getplaced(bufnr(), {lnum: ""})'], 'E1030: Using a String as a Number:') 327751491adfSYegappan Lakshmanan sign_getplaced('')->assert_equal([{signs: [], bufnr: bufnr()}]) 327883494b4aSYegappan Lakshmananenddef 327983494b4aSYegappan Lakshmanan 32800ad871dcSYegappan Lakshmanandef Test_sign_jump() 32810ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['sign_jump("a", "b", "c")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 32820ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['sign_jump(1, 2, 3)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 32834490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['sign_jump(1, "b", true)'], 'E1013: Argument 3: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 3') 32840ad871dcSYegappan Lakshmananenddef 32850ad871dcSYegappan Lakshmanan 32860ad871dcSYegappan Lakshmanandef Test_sign_place() 32870ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['sign_place("a", "b", "c", "d")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 32880ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['sign_place(1, 2, "c", "d")'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 32890ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['sign_place(1, "b", 3, "d")'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 32904490ec4eSYegappan Lakshmanan 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') 32910ad871dcSYegappan Lakshmanan 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') 329251491adfSYegappan Lakshmanan CheckDefExecAndScriptFailure(['sign_place(0, "", "MySign", bufnr(), {lnum: ""})'], 'E1209: Invalid value for a line number: ""') 3293820d5525SYegappan Lakshmanan assert_fails("sign_place(0, '', '', '')", 'E155:') 32940ad871dcSYegappan Lakshmananenddef 32950ad871dcSYegappan Lakshmanan 32961a71d31bSYegappan Lakshmanandef Test_sign_placelist() 32974490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['sign_placelist("x")'], 'E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1') 32984490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['sign_placelist({"a": 10})'], 'E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1211: List required for argument 1') 329951491adfSYegappan Lakshmanan CheckDefExecAndScriptFailure(['sign_placelist([{"name": "MySign", "buffer": bufnr(), "lnum": ""}])'], 'E1209: Invalid value for a line number: ""') 3300*2a16dc66SYegappan Lakshmanan assert_fails('sign_placelist([{name: "MySign", buffer: "", lnum: 1}])', 'E155:') 33011a71d31bSYegappan Lakshmananenddef 33021a71d31bSYegappan Lakshmanan 33035b73992dSYegappan Lakshmanandef Test_sign_undefine() 33044490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['sign_undefine({})'], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1222: String or List required for argument 1') 33055b73992dSYegappan Lakshmanan CheckDefAndScriptFailure2(['sign_undefine([1])'], 'E1013: Argument 1: type mismatch, expected list<string> but got list<number>', 'E155: Unknown sign:') 33065b73992dSYegappan Lakshmananenddef 33075b73992dSYegappan Lakshmanan 33085b73992dSYegappan Lakshmanandef Test_sign_unplace() 33094490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['sign_unplace({"a": 10})'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1') 33104490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['sign_unplace({"a": 10}, "b")'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1') 33114490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['sign_unplace("a", ["b"])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 2') 33127237cab8SYegappan Lakshmananenddef 33137237cab8SYegappan Lakshmanan 33141a71d31bSYegappan Lakshmanandef Test_sign_unplacelist() 33154490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['sign_unplacelist("x")'], 'E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1') 33164490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['sign_unplacelist({"a": 10})'], 'E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1211: List required for argument 1') 33171a71d31bSYegappan Lakshmananenddef 33181a71d31bSYegappan Lakshmanan 3319a26f56f6SYegappan Lakshmanandef Test_simplify() 33204490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['simplify(100)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3321a26f56f6SYegappan Lakshmanan call assert_equal('NonExistingFile', simplify('NonExistingFile')) 3322f8dbd586SYegappan Lakshmanan simplify('')->assert_equal('') 3323a26f56f6SYegappan Lakshmananenddef 3324a26f56f6SYegappan Lakshmanan 33256601b629SBram Moolenaardef Test_slice() 33266601b629SBram Moolenaar assert_equal('12345', slice('012345', 1)) 33276601b629SBram Moolenaar assert_equal('123', slice('012345', 1, 4)) 33286601b629SBram Moolenaar assert_equal('1234', slice('012345', 1, -1)) 33296601b629SBram Moolenaar assert_equal('1', slice('012345', 1, -4)) 33306601b629SBram Moolenaar assert_equal('', slice('012345', 1, -5)) 33316601b629SBram Moolenaar assert_equal('', slice('012345', 1, -6)) 33326601b629SBram Moolenaar 33336601b629SBram Moolenaar assert_equal([1, 2, 3, 4, 5], slice(range(6), 1)) 33346601b629SBram Moolenaar assert_equal([1, 2, 3], slice(range(6), 1, 4)) 33356601b629SBram Moolenaar assert_equal([1, 2, 3, 4], slice(range(6), 1, -1)) 33366601b629SBram Moolenaar assert_equal([1], slice(range(6), 1, -4)) 33376601b629SBram Moolenaar assert_equal([], slice(range(6), 1, -5)) 33386601b629SBram Moolenaar assert_equal([], slice(range(6), 1, -6)) 33396601b629SBram Moolenaar 33406601b629SBram Moolenaar assert_equal(0z1122334455, slice(0z001122334455, 1)) 33416601b629SBram Moolenaar assert_equal(0z112233, slice(0z001122334455, 1, 4)) 33426601b629SBram Moolenaar assert_equal(0z11223344, slice(0z001122334455, 1, -1)) 33436601b629SBram Moolenaar assert_equal(0z11, slice(0z001122334455, 1, -4)) 33446601b629SBram Moolenaar assert_equal(0z, slice(0z001122334455, 1, -5)) 33456601b629SBram Moolenaar assert_equal(0z, slice(0z001122334455, 1, -6)) 334683494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['slice({"a": 10}, 1)'], 'E1013: Argument 1: type mismatch, expected list<any> but got dict<number>', 'E1211: List required for argument 1') 334783494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['slice([1, 2, 3], "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 334883494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['slice("abc", 1, "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 33496601b629SBram Moolenaarenddef 33506601b629SBram Moolenaar 335194738d8fSBram Moolenaardef Test_spellsuggest() 335294738d8fSBram Moolenaar if !has('spell') 33539ff9c7b9SDominique Pelle CheckFeature spell 335494738d8fSBram Moolenaar else 335594738d8fSBram Moolenaar spellsuggest('marrch', 1, true)->assert_equal(['March']) 335694738d8fSBram Moolenaar endif 335783494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['spellsuggest(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 335883494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['spellsuggest("a", "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 335983494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['spellsuggest("a", 1, 0z01)'], 'E1013: Argument 3: type mismatch, expected bool but got blob', 'E1212: Bool required for argument 3') 3360fc3b7750SYegappan Lakshmanan spellsuggest('')->assert_equal([]) 336194738d8fSBram Moolenaarenddef 336294738d8fSBram Moolenaar 33635bca906bSYegappan Lakshmanandef Test_sound_playevent() 33645bca906bSYegappan Lakshmanan CheckFeature sound 33655bca906bSYegappan Lakshmanan CheckDefAndScriptFailure2(['sound_playevent(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 33665bca906bSYegappan Lakshmananenddef 33675bca906bSYegappan Lakshmanan 33685bca906bSYegappan Lakshmanandef Test_sound_playfile() 33695bca906bSYegappan Lakshmanan CheckFeature sound 33705bca906bSYegappan Lakshmanan CheckDefAndScriptFailure2(['sound_playfile(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 33715bca906bSYegappan Lakshmananenddef 33725bca906bSYegappan Lakshmanan 3373a26f56f6SYegappan Lakshmanandef Test_sound_stop() 3374a26f56f6SYegappan Lakshmanan CheckFeature sound 33754490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['sound_stop("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3376a26f56f6SYegappan Lakshmananenddef 3377a26f56f6SYegappan Lakshmanan 3378a26f56f6SYegappan Lakshmanandef Test_soundfold() 33794490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['soundfold(20)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3380a26f56f6SYegappan Lakshmanan assert_equal('abc', soundfold('abc')) 3381f8dbd586SYegappan Lakshmanan assert_equal('', soundfold('')) 3382a26f56f6SYegappan Lakshmananenddef 3383a26f56f6SYegappan Lakshmanan 338494738d8fSBram Moolenaardef Test_sort_return_type() 338594738d8fSBram Moolenaar var res: list<number> 338694738d8fSBram Moolenaar res = [1, 2, 3]->sort() 338794738d8fSBram Moolenaarenddef 338894738d8fSBram Moolenaar 338994738d8fSBram Moolenaardef Test_sort_argument() 339008cf0c0dSBram Moolenaar var lines =<< trim END 339194738d8fSBram Moolenaar var res = ['b', 'a', 'c']->sort('i') 339294738d8fSBram Moolenaar res->assert_equal(['a', 'b', 'c']) 339308cf0c0dSBram Moolenaar 339408cf0c0dSBram Moolenaar def Compare(a: number, b: number): number 339508cf0c0dSBram Moolenaar return a - b 339608cf0c0dSBram Moolenaar enddef 339708cf0c0dSBram Moolenaar var l = [3, 6, 7, 1, 8, 2, 4, 5] 339808cf0c0dSBram Moolenaar sort(l, Compare) 339908cf0c0dSBram Moolenaar assert_equal([1, 2, 3, 4, 5, 6, 7, 8], l) 340008cf0c0dSBram Moolenaar END 340108cf0c0dSBram Moolenaar CheckDefAndScriptSuccess(lines) 34020ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['sort("a")'], 'E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1') 34030ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['sort([1], "", [1])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3') 340494738d8fSBram Moolenaarenddef 340594738d8fSBram Moolenaar 3406a26f56f6SYegappan Lakshmanandef Test_spellbadword() 34074490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['spellbadword(100)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3408a26f56f6SYegappan Lakshmanan spellbadword('good')->assert_equal(['', '']) 3409f8dbd586SYegappan Lakshmanan spellbadword('')->assert_equal(['', '']) 3410a26f56f6SYegappan Lakshmananenddef 3411a26f56f6SYegappan Lakshmanan 341294738d8fSBram Moolenaardef Test_split() 341394738d8fSBram Moolenaar split(' aa bb ', '\W\+', true)->assert_equal(['', 'aa', 'bb', '']) 341483494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['split(1, "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 341583494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['split("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 341683494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['split("a", "b", 2)'], 'E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3') 3417f8dbd586SYegappan Lakshmanan split('')->assert_equal([]) 3418f8dbd586SYegappan Lakshmanan split('', '')->assert_equal([]) 341994738d8fSBram Moolenaarenddef 342094738d8fSBram Moolenaar 3421a26f56f6SYegappan Lakshmanandef Test_srand() 34224490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['srand("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3423a26f56f6SYegappan Lakshmanan type(srand(100))->assert_equal(v:t_list) 3424a26f56f6SYegappan Lakshmananenddef 3425a26f56f6SYegappan Lakshmanan 3426a26f56f6SYegappan Lakshmanandef Test_state() 34274490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['state({})'], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1') 3428a26f56f6SYegappan Lakshmanan assert_equal('', state('a')) 3429a26f56f6SYegappan Lakshmananenddef 3430a26f56f6SYegappan Lakshmanan 3431820d5525SYegappan Lakshmanandef Test_str2float() 343280ad3e25SBram Moolenaar if !has('float') 34339ff9c7b9SDominique Pelle CheckFeature float 3434820d5525SYegappan Lakshmanan else 343580ad3e25SBram Moolenaar str2float("1.00")->assert_equal(1.00) 343680ad3e25SBram Moolenaar str2float("2e-2")->assert_equal(0.02) 3437820d5525SYegappan Lakshmanan str2float('')->assert_equal(0.0) 343880ad3e25SBram Moolenaar 34394490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['str2float(123)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 344080ad3e25SBram Moolenaar endif 344180ad3e25SBram Moolenaarenddef 344280ad3e25SBram Moolenaar 3443a9a7c0c6SYegappan Lakshmanandef Test_str2list() 3444a9a7c0c6SYegappan Lakshmanan CheckDefAndScriptFailure2(['str2list(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 344598c2eaedSBram Moolenaar CheckDefAndScriptFailure2(['str2list("a", 2)'], 'E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2') 3446a9a7c0c6SYegappan Lakshmanan assert_equal([97], str2list('a')) 3447a9a7c0c6SYegappan Lakshmanan assert_equal([97], str2list('a', 1)) 3448a9a7c0c6SYegappan Lakshmanan assert_equal([97], str2list('a', true)) 3449820d5525SYegappan Lakshmanan str2list('')->assert_equal([]) 3450a9a7c0c6SYegappan Lakshmananenddef 3451a9a7c0c6SYegappan Lakshmanan 345294738d8fSBram Moolenaardef Test_str2nr() 345394738d8fSBram Moolenaar str2nr("1'000'000", 10, true)->assert_equal(1000000) 3454820d5525SYegappan Lakshmanan str2nr('')->assert_equal(0) 3455f2b26bcfSBram Moolenaar 34564490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['str2nr(123)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 34574490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['str2nr("123", "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 34584490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['str2nr("123", 10, "x")'], 'E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3') 345994738d8fSBram Moolenaarenddef 346094738d8fSBram Moolenaar 34611a71d31bSYegappan Lakshmanandef Test_strcharlen() 34624490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['strcharlen([1])'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1') 34631a71d31bSYegappan Lakshmanan "abc"->strcharlen()->assert_equal(3) 34641a71d31bSYegappan Lakshmanan strcharlen(99)->assert_equal(2) 34651a71d31bSYegappan Lakshmananenddef 34661a71d31bSYegappan Lakshmanan 346783494b4aSYegappan Lakshmanandef Test_strcharpart() 346883494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['strcharpart(1, 2)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 346983494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['strcharpart("a", "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 347083494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['strcharpart("a", 1, "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 347183494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['strcharpart("a", 1, 1, 2)'], 'E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4') 3472820d5525SYegappan Lakshmanan strcharpart('', 0)->assert_equal('') 347383494b4aSYegappan Lakshmananenddef 347483494b4aSYegappan Lakshmanan 347594738d8fSBram Moolenaardef Test_strchars() 347694738d8fSBram Moolenaar strchars("A\u20dd", true)->assert_equal(1) 3477a9a7c0c6SYegappan Lakshmanan CheckDefAndScriptFailure2(['strchars(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 347898c2eaedSBram Moolenaar CheckDefAndScriptFailure2(['strchars("a", 2)'], 'E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2') 3479a9a7c0c6SYegappan Lakshmanan assert_equal(3, strchars('abc')) 3480a9a7c0c6SYegappan Lakshmanan assert_equal(3, strchars('abc', 1)) 3481a9a7c0c6SYegappan Lakshmanan assert_equal(3, strchars('abc', true)) 3482820d5525SYegappan Lakshmanan strchars('')->assert_equal(0) 348394738d8fSBram Moolenaarenddef 348494738d8fSBram Moolenaar 34851a71d31bSYegappan Lakshmanandef Test_strdisplaywidth() 34861a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['strdisplaywidth(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 34871a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['strdisplaywidth("a", "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3488820d5525SYegappan Lakshmanan strdisplaywidth('')->assert_equal(0) 34891a71d31bSYegappan Lakshmananenddef 34901a71d31bSYegappan Lakshmanan 34911a71d31bSYegappan Lakshmanandef Test_strftime() 3492820d5525SYegappan Lakshmanan if exists('*strftime') 34931a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['strftime(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 34941a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['strftime("a", "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3495820d5525SYegappan Lakshmanan strftime('')->assert_equal('') 3496820d5525SYegappan Lakshmanan endif 34971a71d31bSYegappan Lakshmananenddef 34981a71d31bSYegappan Lakshmanan 34991a71d31bSYegappan Lakshmanandef Test_strgetchar() 35001a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['strgetchar(1, 1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 35011a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['strgetchar("a", "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3502820d5525SYegappan Lakshmanan strgetchar('', 0)->assert_equal(-1) 3503820d5525SYegappan Lakshmanan strgetchar('', 1)->assert_equal(-1) 35041a71d31bSYegappan Lakshmananenddef 35051a71d31bSYegappan Lakshmanan 35065b73992dSYegappan Lakshmanandef Test_stridx() 35074490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['stridx([1], "b")'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1') 35084490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['stridx("a", {})'], 'E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 2') 35094490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['stridx("a", "b", "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 3510820d5525SYegappan Lakshmanan stridx('', '')->assert_equal(0) 3511820d5525SYegappan Lakshmanan stridx('', 'a')->assert_equal(-1) 3512820d5525SYegappan Lakshmanan stridx('a', '')->assert_equal(0) 35135b73992dSYegappan Lakshmananenddef 35145b73992dSYegappan Lakshmanan 3515a26f56f6SYegappan Lakshmanandef Test_strlen() 35164490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['strlen([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 3517a26f56f6SYegappan Lakshmanan "abc"->strlen()->assert_equal(3) 3518a26f56f6SYegappan Lakshmanan strlen(99)->assert_equal(2) 3519a26f56f6SYegappan Lakshmananenddef 3520a26f56f6SYegappan Lakshmanan 352183494b4aSYegappan Lakshmanandef Test_strpart() 352283494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['strpart(1, 2)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 352383494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['strpart("a", "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 352483494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['strpart("a", 1, "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 352583494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['strpart("a", 1, 1, 2)'], 'E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4') 3526820d5525SYegappan Lakshmanan strpart('', 0)->assert_equal('') 352783494b4aSYegappan Lakshmananenddef 352883494b4aSYegappan Lakshmanan 3529a26f56f6SYegappan Lakshmanandef Test_strptime() 3530a26f56f6SYegappan Lakshmanan CheckFunction strptime 3531820d5525SYegappan Lakshmanan if exists_compiled('*strptime') 35324490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['strptime(10, "2021")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 35334490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['strptime("%Y", 2021)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 3534820d5525SYegappan Lakshmanan assert_true(strptime('%Y', '2021') != 0) 3535820d5525SYegappan Lakshmanan assert_true(strptime('%Y', '') == 0) 3536820d5525SYegappan Lakshmanan endif 3537a26f56f6SYegappan Lakshmananenddef 3538a26f56f6SYegappan Lakshmanan 35395b73992dSYegappan Lakshmanandef Test_strridx() 35404490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['strridx([1], "b")'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1') 35414490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['strridx("a", {})'], 'E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 2') 35424490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['strridx("a", "b", "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 3543820d5525SYegappan Lakshmanan strridx('', '')->assert_equal(0) 3544820d5525SYegappan Lakshmanan strridx('', 'a')->assert_equal(-1) 3545820d5525SYegappan Lakshmanan strridx('a', '')->assert_equal(1) 35465b73992dSYegappan Lakshmananenddef 35475b73992dSYegappan Lakshmanan 3548a26f56f6SYegappan Lakshmanandef Test_strtrans() 35494490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['strtrans(20)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3550a26f56f6SYegappan Lakshmanan assert_equal('abc', strtrans('abc')) 3551820d5525SYegappan Lakshmanan strtrans('')->assert_equal('') 3552a26f56f6SYegappan Lakshmananenddef 3553a26f56f6SYegappan Lakshmanan 3554a26f56f6SYegappan Lakshmanandef Test_strwidth() 35554490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['strwidth(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3556a26f56f6SYegappan Lakshmanan assert_equal(4, strwidth('abcd')) 3557820d5525SYegappan Lakshmanan strwidth('')->assert_equal(0) 3558a26f56f6SYegappan Lakshmananenddef 3559a26f56f6SYegappan Lakshmanan 356094738d8fSBram Moolenaardef Test_submatch() 356194738d8fSBram Moolenaar var pat = 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)' 356275ab91ffSBram Moolenaar var Rep = () => range(10)->mapnew((_, v) => submatch(v, true))->string() 356394738d8fSBram Moolenaar var actual = substitute('A123456789', pat, Rep, '') 356494738d8fSBram Moolenaar var expected = "[['A123456789'], ['1'], ['2'], ['3'], ['4'], ['5'], ['6'], ['7'], ['8'], ['9']]" 356594738d8fSBram Moolenaar actual->assert_equal(expected) 356683494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['submatch("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 356783494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['submatch(1, "a")'], 'E1013: Argument 2: type mismatch, expected bool but got string', 'E1212: Bool required for argument 2') 356894738d8fSBram Moolenaarenddef 356994738d8fSBram Moolenaar 35701328bde9SBram Moolenaardef Test_substitute() 35711328bde9SBram Moolenaar var res = substitute('A1234', '\d', 'X', '') 35721328bde9SBram Moolenaar assert_equal('AX234', res) 35731328bde9SBram Moolenaar 35741328bde9SBram Moolenaar if has('job') 357507329325SBram Moolenaar assert_fails('"text"->substitute(".*", () => test_null_job(), "")', 'E908: using an invalid value as a String: job') 357607329325SBram Moolenaar assert_fails('"text"->substitute(".*", () => test_null_channel(), "")', 'E908: using an invalid value as a String: channel') 35771328bde9SBram Moolenaar endif 35785bca906bSYegappan Lakshmanan CheckDefAndScriptFailure2(['substitute(1, "b", "1", "d")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 35795bca906bSYegappan Lakshmanan CheckDefAndScriptFailure2(['substitute("a", 2, "1", "d")'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 35805bca906bSYegappan Lakshmanan CheckDefAndScriptFailure2(['substitute("a", "b", "1", 4)'], 'E1013: Argument 4: type mismatch, expected string but got number', 'E1174: String required for argument 4') 3581f8dbd586SYegappan Lakshmanan substitute('', '', '', '')->assert_equal('') 35821328bde9SBram Moolenaarenddef 35831328bde9SBram Moolenaar 3584a26f56f6SYegappan Lakshmanandef Test_swapinfo() 35854490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['swapinfo({})'], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 1') 3586fc3b7750SYegappan Lakshmanan call swapinfo('x')->assert_equal({error: 'Cannot open file'}) 3587fc3b7750SYegappan Lakshmanan call swapinfo('')->assert_equal({error: 'Cannot open file'}) 3588a26f56f6SYegappan Lakshmananenddef 3589a26f56f6SYegappan Lakshmanan 3590a26f56f6SYegappan Lakshmanandef Test_swapname() 35914490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['swapname([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 3592a26f56f6SYegappan Lakshmanan assert_fails('swapname("NonExistingBuf")', 'E94:') 3593a26f56f6SYegappan Lakshmananenddef 3594a26f56f6SYegappan Lakshmanan 359594738d8fSBram Moolenaardef Test_synID() 359694738d8fSBram Moolenaar new 359794738d8fSBram Moolenaar setline(1, "text") 359894738d8fSBram Moolenaar synID(1, 1, true)->assert_equal(0) 359994738d8fSBram Moolenaar bwipe! 36004490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['synID(0z10, 1, true)'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1') 360183494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['synID("a", true, false)'], 'E1013: Argument 2: type mismatch, expected number but got bool', 'E1210: Number required for argument 2') 360283494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['synID(1, 1, 2)'], 'E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3') 3603fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['synID("", 10, true)'], 'E1209: Invalid value for a line number') 360494738d8fSBram Moolenaarenddef 360594738d8fSBram Moolenaar 36067973de35SYegappan Lakshmanandef Test_synIDattr() 36077973de35SYegappan Lakshmanan CheckDefAndScriptFailure2(['synIDattr("a", "b")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 36087973de35SYegappan Lakshmanan CheckDefAndScriptFailure2(['synIDattr(1, 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 36097973de35SYegappan Lakshmanan CheckDefAndScriptFailure2(['synIDattr(1, "b", 3)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 3610f8dbd586SYegappan Lakshmanan synIDattr(1, '', '')->assert_equal('') 36117973de35SYegappan Lakshmananenddef 36127973de35SYegappan Lakshmanan 3613a26f56f6SYegappan Lakshmanandef Test_synIDtrans() 36144490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['synIDtrans("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3615a26f56f6SYegappan Lakshmananenddef 3616a26f56f6SYegappan Lakshmanan 3617a9a7c0c6SYegappan Lakshmanandef Test_synconcealed() 36184490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['synconcealed(0z10, 1)'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1') 3619a9a7c0c6SYegappan Lakshmanan CheckDefAndScriptFailure2(['synconcealed(1, "a")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3620fc3b7750SYegappan Lakshmanan if has('conceal') 3621fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['synconcealed("", 4)'], 'E1209: Invalid value for a line number') 3622fc3b7750SYegappan Lakshmanan endif 3623a9a7c0c6SYegappan Lakshmananenddef 3624a9a7c0c6SYegappan Lakshmanan 3625a9a7c0c6SYegappan Lakshmanandef Test_synstack() 36264490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['synstack(0z10, 1)'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1') 3627a9a7c0c6SYegappan Lakshmanan CheckDefAndScriptFailure2(['synstack(1, "a")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3628fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['synstack("", 4)'], 'E1209: Invalid value for a line number') 3629a9a7c0c6SYegappan Lakshmananenddef 3630a9a7c0c6SYegappan Lakshmanan 36310ad871dcSYegappan Lakshmanandef Test_system() 36320ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['system(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 363378db17c6SBram Moolenaar CheckDefAndScriptFailure2(['system("a", {})'], 'E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1224: String, Number or List required for argument 2') 36347e6a2a64SYegappan Lakshmanan assert_equal("123\n", system('echo 123')) 36350ad871dcSYegappan Lakshmananenddef 36360ad871dcSYegappan Lakshmanan 36370ad871dcSYegappan Lakshmanandef Test_systemlist() 36380ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['systemlist(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 363978db17c6SBram Moolenaar CheckDefAndScriptFailure2(['systemlist("a", {})'], 'E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1224: String, Number or List required for argument 2') 36407e6a2a64SYegappan Lakshmanan if has('win32') 36417e6a2a64SYegappan Lakshmanan call assert_equal(["123\r"], systemlist('echo 123')) 36427e6a2a64SYegappan Lakshmanan else 36437e6a2a64SYegappan Lakshmanan call assert_equal(['123'], systemlist('echo 123')) 36447e6a2a64SYegappan Lakshmanan endif 36450ad871dcSYegappan Lakshmananenddef 36460ad871dcSYegappan Lakshmanan 3647a26f56f6SYegappan Lakshmanandef Test_tabpagebuflist() 36484490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['tabpagebuflist("t")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3649a26f56f6SYegappan Lakshmanan assert_equal([bufnr('')], tabpagebuflist()) 3650a26f56f6SYegappan Lakshmanan assert_equal([bufnr('')], tabpagebuflist(1)) 3651a26f56f6SYegappan Lakshmananenddef 3652a26f56f6SYegappan Lakshmanan 3653a26f56f6SYegappan Lakshmanandef Test_tabpagenr() 36544490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['tabpagenr(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3655fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['tabpagenr("")'], 'E15: Invalid expression') 3656a26f56f6SYegappan Lakshmanan assert_equal(1, tabpagenr('$')) 3657a26f56f6SYegappan Lakshmanan assert_equal(1, tabpagenr()) 3658a26f56f6SYegappan Lakshmananenddef 3659a26f56f6SYegappan Lakshmanan 36601a71d31bSYegappan Lakshmanandef Test_tabpagewinnr() 36611a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['tabpagewinnr("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 36621a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['tabpagewinnr(1, 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 3663fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['tabpagewinnr(1, "")'], 'E15: Invalid expression') 36641a71d31bSYegappan Lakshmananenddef 36651a71d31bSYegappan Lakshmanan 36665b73992dSYegappan Lakshmanandef Test_taglist() 36674490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['taglist([1])'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1') 36684490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['taglist("a", [2])'], 'E1013: Argument 2: type mismatch, expected string but got list<number>', 'E1174: String required for argument 2') 3669f8dbd586SYegappan Lakshmanan taglist('')->assert_equal(0) 3670f8dbd586SYegappan Lakshmanan taglist('', '')->assert_equal(0) 36715b73992dSYegappan Lakshmananenddef 36725b73992dSYegappan Lakshmanan 36735b73992dSYegappan Lakshmanandef Test_term_dumpload() 36745b73992dSYegappan Lakshmanan CheckRunVimInTerminal 36755b73992dSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_dumpload({"a": 10})'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1') 36765b73992dSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_dumpload({"a": 10}, "b")'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1') 36775b73992dSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_dumpload("a", ["b"])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<string>', 'E1206: Dictionary required for argument 2') 3678fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['term_dumpload("")'], 'E485: Can''t read file') 36795b73992dSYegappan Lakshmananenddef 36805b73992dSYegappan Lakshmanan 36810ad871dcSYegappan Lakshmanandef Test_term_dumpdiff() 36820ad871dcSYegappan Lakshmanan CheckRunVimInTerminal 36830ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_dumpdiff(1, "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 36840ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_dumpdiff("a", 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 36850ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_dumpdiff("a", "b", [1])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3') 3686fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['term_dumpdiff("", "")'], 'E485: Can''t read file') 36870ad871dcSYegappan Lakshmananenddef 36880ad871dcSYegappan Lakshmanan 36890ad871dcSYegappan Lakshmanandef Test_term_dumpwrite() 36900ad871dcSYegappan Lakshmanan CheckRunVimInTerminal 36914490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_dumpwrite(true, "b")'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1') 36920ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_dumpwrite(1, 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 36930ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_dumpwrite("a", "b", [1])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3') 36940ad871dcSYegappan Lakshmananenddef 36950ad871dcSYegappan Lakshmanan 36965b73992dSYegappan Lakshmanandef Test_term_getaltscreen() 36975b73992dSYegappan Lakshmanan CheckRunVimInTerminal 36984490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_getaltscreen(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1220: String or Number required for argument 1') 36995b73992dSYegappan Lakshmananenddef 37005b73992dSYegappan Lakshmanan 37015b73992dSYegappan Lakshmanandef Test_term_getansicolors() 37025b73992dSYegappan Lakshmanan CheckRunVimInTerminal 3703ee41052cSDominique Pelle CheckFeature termguicolors 37044490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_getansicolors(["a"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1220: String or Number required for argument 1') 37055b73992dSYegappan Lakshmananenddef 37065b73992dSYegappan Lakshmanan 37071a71d31bSYegappan Lakshmanandef Test_term_getattr() 37081a71d31bSYegappan Lakshmanan CheckRunVimInTerminal 37091a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_getattr("x", "a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 37101a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_getattr(1, 2)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 37111a71d31bSYegappan Lakshmananenddef 37121a71d31bSYegappan Lakshmanan 37135b73992dSYegappan Lakshmanandef Test_term_getcursor() 37145b73992dSYegappan Lakshmanan CheckRunVimInTerminal 37154490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_getcursor({"a": 10})'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1220: String or Number required for argument 1') 37165b73992dSYegappan Lakshmananenddef 37175b73992dSYegappan Lakshmanan 37185b73992dSYegappan Lakshmanandef Test_term_getjob() 37195b73992dSYegappan Lakshmanan CheckRunVimInTerminal 37204490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_getjob(0z10)'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1') 37215b73992dSYegappan Lakshmananenddef 37225b73992dSYegappan Lakshmanan 3723cd917207SYegappan Lakshmanandef Test_term_getline() 3724cd917207SYegappan Lakshmanan CheckRunVimInTerminal 37254490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_getline(1.1, 1)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1') 37264490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_getline(1, 1.1)'], 'E1013: Argument 2: type mismatch, expected string but got float', 'E1220: String or Number required for argument 2') 3727cd917207SYegappan Lakshmananenddef 3728cd917207SYegappan Lakshmanan 37295b73992dSYegappan Lakshmanandef Test_term_getscrolled() 37305b73992dSYegappan Lakshmanan CheckRunVimInTerminal 37314490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_getscrolled(1.1)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1') 37325b73992dSYegappan Lakshmananenddef 37335b73992dSYegappan Lakshmanan 37345b73992dSYegappan Lakshmanandef Test_term_getsize() 37355b73992dSYegappan Lakshmanan CheckRunVimInTerminal 37364490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_getsize(1.1)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1') 37375b73992dSYegappan Lakshmananenddef 37385b73992dSYegappan Lakshmanan 37395b73992dSYegappan Lakshmanandef Test_term_getstatus() 37405b73992dSYegappan Lakshmanan CheckRunVimInTerminal 37414490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_getstatus(1.1)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1') 37425b73992dSYegappan Lakshmananenddef 37435b73992dSYegappan Lakshmanan 37445b73992dSYegappan Lakshmanandef Test_term_gettitle() 37455b73992dSYegappan Lakshmanan CheckRunVimInTerminal 37464490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_gettitle(1.1)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1') 37475b73992dSYegappan Lakshmananenddef 37485b73992dSYegappan Lakshmanan 374994738d8fSBram Moolenaardef Test_term_gettty() 375094738d8fSBram Moolenaar if !has('terminal') 37519ff9c7b9SDominique Pelle CheckFeature terminal 375294738d8fSBram Moolenaar else 375394738d8fSBram Moolenaar var buf = Run_shell_in_terminal({}) 375494738d8fSBram Moolenaar term_gettty(buf, true)->assert_notequal('') 375594738d8fSBram Moolenaar StopShellInTerminal(buf) 375694738d8fSBram Moolenaar endif 37574490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_gettty([1])'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1220: String or Number required for argument 1') 375883494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_gettty(1, 2)'], 'E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2') 375994738d8fSBram Moolenaarenddef 376094738d8fSBram Moolenaar 3761cd917207SYegappan Lakshmanandef Test_term_scrape() 3762cd917207SYegappan Lakshmanan CheckRunVimInTerminal 37634490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_scrape(1.1, 1)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1220: String or Number required for argument 1') 37644490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_scrape(1, 1.1)'], 'E1013: Argument 2: type mismatch, expected string but got float', 'E1220: String or Number required for argument 2') 3765cd917207SYegappan Lakshmananenddef 3766cd917207SYegappan Lakshmanan 3767a9a7c0c6SYegappan Lakshmanandef Test_term_sendkeys() 3768a9a7c0c6SYegappan Lakshmanan CheckRunVimInTerminal 37694490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_sendkeys([], "p")'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 3770a9a7c0c6SYegappan Lakshmanan CheckDefAndScriptFailure2(['term_sendkeys(1, [])'], 'E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2') 3771a9a7c0c6SYegappan Lakshmananenddef 3772a9a7c0c6SYegappan Lakshmanan 377383494b4aSYegappan Lakshmanandef Test_term_setansicolors() 377483494b4aSYegappan Lakshmanan CheckRunVimInTerminal 37752ec28aecSDominique Pelle 37762ec28aecSDominique Pelle if has('termguicolors') || has('gui') 37774490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_setansicolors([], "p")'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 377883494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_setansicolors(10, {})'], 'E1013: Argument 2: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 2') 37792ec28aecSDominique Pelle else 37802ec28aecSDominique Pelle throw 'Skipped: Only works with termguicolors or gui feature' 37812ec28aecSDominique Pelle endif 378283494b4aSYegappan Lakshmananenddef 378383494b4aSYegappan Lakshmanan 3784a9a7c0c6SYegappan Lakshmanandef Test_term_setapi() 3785a9a7c0c6SYegappan Lakshmanan CheckRunVimInTerminal 37864490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_setapi([], "p")'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 3787a9a7c0c6SYegappan Lakshmanan CheckDefAndScriptFailure2(['term_setapi(1, [])'], 'E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2') 3788a9a7c0c6SYegappan Lakshmananenddef 3789a9a7c0c6SYegappan Lakshmanan 3790a9a7c0c6SYegappan Lakshmanandef Test_term_setkill() 3791a9a7c0c6SYegappan Lakshmanan CheckRunVimInTerminal 37924490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_setkill([], "p")'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 3793a9a7c0c6SYegappan Lakshmanan CheckDefAndScriptFailure2(['term_setkill(1, [])'], 'E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2') 3794a9a7c0c6SYegappan Lakshmananenddef 3795a9a7c0c6SYegappan Lakshmanan 3796a9a7c0c6SYegappan Lakshmanandef Test_term_setrestore() 3797a9a7c0c6SYegappan Lakshmanan CheckRunVimInTerminal 37984490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_setrestore([], "p")'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1220: String or Number required for argument 1') 3799a9a7c0c6SYegappan Lakshmanan CheckDefAndScriptFailure2(['term_setrestore(1, [])'], 'E1013: Argument 2: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 2') 3800a9a7c0c6SYegappan Lakshmananenddef 3801cd917207SYegappan Lakshmanan 3802cd917207SYegappan Lakshmanandef Test_term_setsize() 3803cd917207SYegappan Lakshmanan CheckRunVimInTerminal 38044490ec4eSYegappan Lakshmanan 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') 3805cd917207SYegappan Lakshmanan CheckDefAndScriptFailure2(['term_setsize(1, "2", 3)'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3806cd917207SYegappan Lakshmanan CheckDefAndScriptFailure2(['term_setsize(1, 2, "3")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 3807cd917207SYegappan Lakshmananenddef 3808cd917207SYegappan Lakshmanan 380994738d8fSBram Moolenaardef Test_term_start() 381094738d8fSBram Moolenaar if !has('terminal') 38119ff9c7b9SDominique Pelle CheckFeature terminal 381294738d8fSBram Moolenaar else 381394738d8fSBram Moolenaar botright new 381494738d8fSBram Moolenaar var winnr = winnr() 3815e0de171eSBram Moolenaar term_start(&shell, {curwin: true}) 381694738d8fSBram Moolenaar winnr()->assert_equal(winnr) 381794738d8fSBram Moolenaar bwipe! 381894738d8fSBram Moolenaar endif 38194490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_start({})'], 'E1013: Argument 1: type mismatch, expected string but got dict<unknown>', 'E1222: String or List required for argument 1') 3820cd917207SYegappan Lakshmanan CheckDefAndScriptFailure2(['term_start([], [])'], 'E1013: Argument 2: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 2') 3821cd917207SYegappan Lakshmanan CheckDefAndScriptFailure2(['term_start("", "")'], 'E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2') 3822fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['term_start("")'], 'E474: Invalid argument') 382394738d8fSBram Moolenaarenddef 382494738d8fSBram Moolenaar 3825a9a7c0c6SYegappan Lakshmanandef Test_term_wait() 3826a9a7c0c6SYegappan Lakshmanan CheckRunVimInTerminal 38274490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['term_wait(0z10, 1)'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1220: String or Number required for argument 1') 3828a9a7c0c6SYegappan Lakshmanan CheckDefAndScriptFailure2(['term_wait(1, "a")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 3829a9a7c0c6SYegappan Lakshmananenddef 3830a9a7c0c6SYegappan Lakshmanan 38315b73992dSYegappan Lakshmanandef Test_test_alloc_fail() 38324490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['test_alloc_fail("a", 10, 20)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 38334490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['test_alloc_fail(10, "b", 20)'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 38344490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['test_alloc_fail(10, 20, "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 38355b73992dSYegappan Lakshmananenddef 38365b73992dSYegappan Lakshmanan 38375b73992dSYegappan Lakshmanandef Test_test_feedinput() 38384490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['test_feedinput(test_void())'], 'E1013: Argument 1: type mismatch, expected string but got void', 'E1174: String required for argument 1') 38394490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['test_feedinput(["a"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1') 38405b73992dSYegappan Lakshmananenddef 38415b73992dSYegappan Lakshmanan 38425b73992dSYegappan Lakshmanandef Test_test_getvalue() 38434490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['test_getvalue(1.1)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1174: String required for argument 1') 38445b73992dSYegappan Lakshmananenddef 38455b73992dSYegappan Lakshmanan 38465bca906bSYegappan Lakshmanandef Test_test_gui_drop_files() 38475bca906bSYegappan Lakshmanan CheckGui 38485bca906bSYegappan Lakshmanan 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') 38495bca906bSYegappan Lakshmanan CheckDefAndScriptFailure2(['test_gui_drop_files(["x"], "", 1, 0)'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 38505bca906bSYegappan Lakshmanan CheckDefAndScriptFailure2(['test_gui_drop_files(["x"], 1, "", 0)'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 38515bca906bSYegappan Lakshmanan CheckDefAndScriptFailure2(['test_gui_drop_files(["x"], 1, 1, "")'], 'E1013: Argument 4: type mismatch, expected number but got string', 'E1210: Number required for argument 4') 38525bca906bSYegappan Lakshmananenddef 38535bca906bSYegappan Lakshmanan 385483494b4aSYegappan Lakshmanandef Test_test_gui_mouse_event() 385583494b4aSYegappan Lakshmanan CheckGui 385683494b4aSYegappan Lakshmanan 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') 385783494b4aSYegappan Lakshmanan 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') 385883494b4aSYegappan Lakshmanan 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') 385983494b4aSYegappan Lakshmanan 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') 386083494b4aSYegappan Lakshmanan 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') 386183494b4aSYegappan Lakshmananenddef 386283494b4aSYegappan Lakshmanan 38635b73992dSYegappan Lakshmanandef Test_test_ignore_error() 38644490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['test_ignore_error([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1') 38655b73992dSYegappan Lakshmanan test_ignore_error('RESET') 38665b73992dSYegappan Lakshmananenddef 38675b73992dSYegappan Lakshmanan 38685b73992dSYegappan Lakshmanandef Test_test_option_not_set() 38694490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['test_option_not_set([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1') 38705b73992dSYegappan Lakshmananenddef 38715b73992dSYegappan Lakshmanan 38721a71d31bSYegappan Lakshmanandef Test_test_override() 38731a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['test_override(1, 1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 38741a71d31bSYegappan Lakshmanan CheckDefAndScriptFailure2(['test_override("a", "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 38751a71d31bSYegappan Lakshmananenddef 38761a71d31bSYegappan Lakshmanan 38775bca906bSYegappan Lakshmanandef Test_test_scrollbar() 38785bca906bSYegappan Lakshmanan CheckGui 38795bca906bSYegappan Lakshmanan CheckDefAndScriptFailure2(['test_scrollbar(1, 2, 3)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 38805bca906bSYegappan Lakshmanan CheckDefAndScriptFailure2(['test_scrollbar("a", "b", 3)'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 38815bca906bSYegappan Lakshmanan CheckDefAndScriptFailure2(['test_scrollbar("a", 2, "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 38825bca906bSYegappan Lakshmananenddef 38835bca906bSYegappan Lakshmanan 38845b73992dSYegappan Lakshmanandef Test_test_setmouse() 38854490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['test_setmouse("a", 10)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 38864490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['test_setmouse(10, "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 38875b73992dSYegappan Lakshmananenddef 38885b73992dSYegappan Lakshmanan 38895b73992dSYegappan Lakshmanandef Test_test_settime() 38904490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['test_settime([1])'], 'E1013: Argument 1: type mismatch, expected number but got list<number>', 'E1210: Number required for argument 1') 38915b73992dSYegappan Lakshmananenddef 38925b73992dSYegappan Lakshmanan 38935b73992dSYegappan Lakshmanandef Test_test_srand_seed() 38944490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['test_srand_seed([1])'], 'E1013: Argument 1: type mismatch, expected number but got list<number>', 'E1210: Number required for argument 1') 38954490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['test_srand_seed("10")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 38965b73992dSYegappan Lakshmananenddef 38975b73992dSYegappan Lakshmanan 3898a26f56f6SYegappan Lakshmanandef Test_timer_info() 38994490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['timer_info("id")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3900a26f56f6SYegappan Lakshmanan assert_equal([], timer_info(100)) 3901a26f56f6SYegappan Lakshmanan assert_equal([], timer_info()) 3902a26f56f6SYegappan Lakshmananenddef 3903a26f56f6SYegappan Lakshmanan 390483494b4aSYegappan Lakshmanandef Test_timer_pause() 390583494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['timer_pause("x", 1)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 390683494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['timer_pause(1, "a")'], 'E1013: Argument 2: type mismatch, expected bool but got string', 'E1212: Bool required for argument 2') 390783494b4aSYegappan Lakshmananenddef 390883494b4aSYegappan Lakshmanan 390994738d8fSBram Moolenaardef Test_timer_paused() 39102949cfdbSBram Moolenaar var id = timer_start(50, () => 0) 391194738d8fSBram Moolenaar timer_pause(id, true) 391294738d8fSBram Moolenaar var info = timer_info(id) 391394738d8fSBram Moolenaar info[0]['paused']->assert_equal(1) 391494738d8fSBram Moolenaar timer_stop(id) 391594738d8fSBram Moolenaarenddef 391694738d8fSBram Moolenaar 39177973de35SYegappan Lakshmanandef Test_timer_start() 39187973de35SYegappan Lakshmanan CheckDefAndScriptFailure2(['timer_start("a", "1")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 39197973de35SYegappan Lakshmanan CheckDefAndScriptFailure2(['timer_start(1, "1", [1])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3') 39207973de35SYegappan Lakshmananenddef 39217973de35SYegappan Lakshmanan 3922a26f56f6SYegappan Lakshmanandef Test_timer_stop() 39234490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['timer_stop("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 3924a26f56f6SYegappan Lakshmanan assert_equal(0, timer_stop(100)) 3925a26f56f6SYegappan Lakshmananenddef 3926a26f56f6SYegappan Lakshmanan 39277237cab8SYegappan Lakshmanandef Test_tolower() 39284490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['tolower(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3929820d5525SYegappan Lakshmanan tolower('')->assert_equal('') 39307237cab8SYegappan Lakshmananenddef 39317237cab8SYegappan Lakshmanan 39327237cab8SYegappan Lakshmanandef Test_toupper() 39334490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['toupper(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3934820d5525SYegappan Lakshmanan toupper('')->assert_equal('') 39357237cab8SYegappan Lakshmananenddef 39367237cab8SYegappan Lakshmanan 39377237cab8SYegappan Lakshmanandef Test_tr() 39384490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['tr(1, "a", "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 39394490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['tr("a", 1, "b")'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2') 39404490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['tr("a", "a", 1)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 3941820d5525SYegappan Lakshmanan tr('', '', '')->assert_equal('') 3942820d5525SYegappan Lakshmanan tr('ab', '', '')->assert_equal('ab') 3943820d5525SYegappan Lakshmanan assert_fails("tr('ab', 'ab', '')", 'E475:') 3944820d5525SYegappan Lakshmanan assert_fails("tr('ab', '', 'AB')", 'E475:') 39455b73992dSYegappan Lakshmananenddef 39465b73992dSYegappan Lakshmanan 39475b73992dSYegappan Lakshmanandef Test_trim() 39484490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['trim(["a"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1') 39494490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['trim("a", ["b"])'], 'E1013: Argument 2: type mismatch, expected string but got list<string>', 'E1174: String required for argument 2') 39504490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['trim("a", "b", "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3') 3951820d5525SYegappan Lakshmanan trim('')->assert_equal('') 3952820d5525SYegappan Lakshmanan trim('', '')->assert_equal('') 39537237cab8SYegappan Lakshmananenddef 39547237cab8SYegappan Lakshmanan 39559da32e4dSBram Moolenaardef Test_typename() 39569da32e4dSBram Moolenaar if has('float') 39579da32e4dSBram Moolenaar assert_equal('func([unknown], [unknown]): float', typename(function('pow'))) 39589da32e4dSBram Moolenaar endif 3959c8103b4cSBram Moolenaar assert_equal('func', test_null_partial()->typename()) 3960c8103b4cSBram Moolenaar assert_equal('list<unknown>', test_null_list()->typename()) 3961c8103b4cSBram Moolenaar assert_equal('dict<unknown>', test_null_dict()->typename()) 3962c8103b4cSBram Moolenaar if has('job') 3963c8103b4cSBram Moolenaar assert_equal('job', test_null_job()->typename()) 3964c8103b4cSBram Moolenaar endif 3965c8103b4cSBram Moolenaar if has('channel') 3966c8103b4cSBram Moolenaar assert_equal('channel', test_null_channel()->typename()) 3967c8103b4cSBram Moolenaar endif 39689da32e4dSBram Moolenaarenddef 39699da32e4dSBram Moolenaar 3970a26f56f6SYegappan Lakshmanandef Test_undofile() 39714490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['undofile(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1') 3972a26f56f6SYegappan Lakshmanan assert_equal('.abc.un~', fnamemodify(undofile('abc'), ':t')) 3973820d5525SYegappan Lakshmanan undofile('')->assert_equal('') 3974a26f56f6SYegappan Lakshmananenddef 3975a26f56f6SYegappan Lakshmanan 39760ad871dcSYegappan Lakshmanandef Test_uniq() 39770ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['uniq("a")'], 'E1013: Argument 1: type mismatch, expected list<any> but got string', 'E1211: List required for argument 1') 39780ad871dcSYegappan Lakshmanan CheckDefAndScriptFailure2(['uniq([1], "", [1])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 3') 39790ad871dcSYegappan Lakshmananenddef 39800ad871dcSYegappan Lakshmanan 3981a26f56f6SYegappan Lakshmanandef Test_values() 39824490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['values([])'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1') 3983a26f56f6SYegappan Lakshmanan assert_equal([], {}->values()) 3984a26f56f6SYegappan Lakshmanan assert_equal(['sun'], {star: 'sun'}->values()) 3985a26f56f6SYegappan Lakshmananenddef 3986a26f56f6SYegappan Lakshmanan 39875b73992dSYegappan Lakshmanandef Test_virtcol() 39884490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['virtcol(1.1)'], 'E1013: Argument 1: type mismatch, expected string but got float', 'E1222: String or List required for argument 1') 3989fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['virtcol("")'], 'E1209: Invalid value for a line number') 3990c72bdd28SYegappan Lakshmanan new 3991c72bdd28SYegappan Lakshmanan setline(1, ['abcdefgh']) 3992c72bdd28SYegappan Lakshmanan cursor(1, 4) 3993c72bdd28SYegappan Lakshmanan assert_equal(4, virtcol('.')) 3994841e498cSYegappan Lakshmanan assert_equal(4, virtcol([1, 4])) 3995c72bdd28SYegappan Lakshmanan assert_equal(9, virtcol([1, '$'])) 3996c72bdd28SYegappan Lakshmanan assert_equal(0, virtcol([10, '$'])) 3997c72bdd28SYegappan Lakshmanan bw! 39985b73992dSYegappan Lakshmananenddef 39995b73992dSYegappan Lakshmanan 40001a71d31bSYegappan Lakshmanandef Test_visualmode() 40014490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['visualmode("1")'], 'E1013: Argument 1: type mismatch, expected bool but got string', 'E1212: Bool required for argument 1') 40024490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['visualmode(2)'], 'E1013: Argument 1: type mismatch, expected bool but got number', 'E1212: Bool required for argument 1') 40031a71d31bSYegappan Lakshmananenddef 40041a71d31bSYegappan Lakshmanan 400537487e16SBram Moolenaardef Test_win_execute() 400637487e16SBram Moolenaar assert_equal("\n" .. winnr(), win_execute(win_getid(), 'echo winnr()')) 40075231224eSBram Moolenaar assert_equal("\n" .. winnr(), 'echo winnr()'->win_execute(win_getid())) 40085231224eSBram Moolenaar assert_equal("\n" .. winnr(), win_execute(win_getid(), 'echo winnr()', 'silent')) 400937487e16SBram Moolenaar assert_equal('', win_execute(342343, 'echo winnr()')) 40104490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['win_execute("a", "b", "c")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 40114490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['win_execute(1, 2, "c")'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1222: String or List required for argument 2') 40124490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['win_execute(1, "b", 3)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3') 401337487e16SBram Moolenaarenddef 401437487e16SBram Moolenaar 4015a26f56f6SYegappan Lakshmanandef Test_win_findbuf() 40164490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['win_findbuf("a")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 4017a26f56f6SYegappan Lakshmanan assert_equal([], win_findbuf(1000)) 4018a26f56f6SYegappan Lakshmanan assert_equal([win_getid()], win_findbuf(bufnr(''))) 4019a26f56f6SYegappan Lakshmananenddef 4020a26f56f6SYegappan Lakshmanan 4021a26f56f6SYegappan Lakshmanandef Test_win_getid() 40224490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['win_getid(".")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 40234490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['win_getid(1, ".")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 4024a26f56f6SYegappan Lakshmanan assert_equal(win_getid(), win_getid(1, 1)) 4025a26f56f6SYegappan Lakshmananenddef 4026a26f56f6SYegappan Lakshmanan 40271a71d31bSYegappan Lakshmanandef Test_win_gettype() 40284490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['win_gettype("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 40291a71d31bSYegappan Lakshmananenddef 40301a71d31bSYegappan Lakshmanan 40311a71d31bSYegappan Lakshmanandef Test_win_gotoid() 40324490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['win_gotoid("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 40331a71d31bSYegappan Lakshmananenddef 40341a71d31bSYegappan Lakshmanan 40351a71d31bSYegappan Lakshmanandef Test_win_id2tabwin() 40364490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['win_id2tabwin("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 40371a71d31bSYegappan Lakshmananenddef 40381a71d31bSYegappan Lakshmanan 40391a71d31bSYegappan Lakshmanandef Test_win_id2win() 40404490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['win_id2win("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 40411a71d31bSYegappan Lakshmananenddef 40421a71d31bSYegappan Lakshmanan 40431a71d31bSYegappan Lakshmanandef Test_win_screenpos() 40444490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['win_screenpos("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 40451a71d31bSYegappan Lakshmananenddef 40461a71d31bSYegappan Lakshmanan 404794738d8fSBram Moolenaardef Test_win_splitmove() 404894738d8fSBram Moolenaar split 4049e0de171eSBram Moolenaar win_splitmove(1, 2, {vertical: true, rightbelow: true}) 405094738d8fSBram Moolenaar close 405183494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['win_splitmove("a", 2)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 405283494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['win_splitmove(1, "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 405383494b4aSYegappan Lakshmanan CheckDefAndScriptFailure2(['win_splitmove(1, 2, [])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3') 405494738d8fSBram Moolenaarenddef 405594738d8fSBram Moolenaar 40561a71d31bSYegappan Lakshmanandef Test_winbufnr() 40574490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['winbufnr("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 40581a71d31bSYegappan Lakshmananenddef 40591a71d31bSYegappan Lakshmanan 40601a71d31bSYegappan Lakshmanandef Test_winheight() 40614490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['winheight("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 40621a71d31bSYegappan Lakshmananenddef 40631a71d31bSYegappan Lakshmanan 40641a71d31bSYegappan Lakshmanandef Test_winlayout() 40654490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['winlayout("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 40661a71d31bSYegappan Lakshmananenddef 40671a71d31bSYegappan Lakshmanan 4068a26f56f6SYegappan Lakshmanandef Test_winnr() 40694490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['winnr([])'], 'E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1') 4070fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['winnr("")'], 'E15: Invalid expression') 4071a26f56f6SYegappan Lakshmanan assert_equal(1, winnr()) 4072a26f56f6SYegappan Lakshmanan assert_equal(1, winnr('$')) 4073a26f56f6SYegappan Lakshmananenddef 4074a26f56f6SYegappan Lakshmanan 4075285b15fcSBram Moolenaardef Test_winrestcmd() 4076285b15fcSBram Moolenaar split 4077285b15fcSBram Moolenaar var cmd = winrestcmd() 4078285b15fcSBram Moolenaar wincmd _ 4079285b15fcSBram Moolenaar exe cmd 4080285b15fcSBram Moolenaar assert_equal(cmd, winrestcmd()) 4081285b15fcSBram Moolenaar close 4082285b15fcSBram Moolenaarenddef 4083285b15fcSBram Moolenaar 4084a26f56f6SYegappan Lakshmanandef Test_winrestview() 40854490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['winrestview([])'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 1') 4086a26f56f6SYegappan Lakshmanan :%d _ 4087a26f56f6SYegappan Lakshmanan setline(1, 'Hello World') 4088a26f56f6SYegappan Lakshmanan winrestview({lnum: 1, col: 6}) 4089a26f56f6SYegappan Lakshmanan assert_equal([1, 7], [line('.'), col('.')]) 4090a26f56f6SYegappan Lakshmananenddef 4091a26f56f6SYegappan Lakshmanan 409243b69b39SBram Moolenaardef Test_winsaveview() 409343b69b39SBram Moolenaar var view: dict<number> = winsaveview() 409443b69b39SBram Moolenaar 409543b69b39SBram Moolenaar var lines =<< trim END 409643b69b39SBram Moolenaar var view: list<number> = winsaveview() 409743b69b39SBram Moolenaar END 409843b69b39SBram Moolenaar CheckDefAndScriptFailure(lines, 'E1012: Type mismatch; expected list<number> but got dict<number>', 1) 409943b69b39SBram Moolenaarenddef 410043b69b39SBram Moolenaar 41017237cab8SYegappan Lakshmanandef Test_winwidth() 41024490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['winwidth("x")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 41037237cab8SYegappan Lakshmananenddef 41047237cab8SYegappan Lakshmanan 41057237cab8SYegappan Lakshmanandef Test_xor() 41064490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['xor("x", 0x2)'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1') 41074490ec4eSYegappan Lakshmanan CheckDefAndScriptFailure2(['xor(0x1, "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2') 41087237cab8SYegappan Lakshmananenddef 410994738d8fSBram Moolenaar 4110fc3b7750SYegappan Lakshmanandef Test_writefile() 4111fc3b7750SYegappan Lakshmanan CheckDefExecAndScriptFailure(['writefile(["a"], "")'], 'E482: Can''t create file <empty>') 4112fc3b7750SYegappan Lakshmananenddef 4113fc3b7750SYegappan Lakshmanan 411494738d8fSBram Moolenaar" vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker 4115