You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/testdir/test_vim9_builtin.vim
+60-11Lines changed: 60 additions & 11 deletions
Original file line number
Diff line number
Diff line change
@@ -380,12 +380,14 @@ enddef
380
380
defTest_byte2line()
381
381
CheckDefAndScriptFailure2(['byte2line("1")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1')
382
382
CheckDefAndScriptFailure2(['byte2line([])'], 'E1013: Argument 1: type mismatch, expected number but got list<unknown>', 'E1210: Number required for argument 1')
383
-
assert_equal(-1, byte2line(0))
383
+
byte2line(0)->assert_equal(-1)
384
384
enddef
385
385
386
386
defTest_byteidx()
387
387
CheckDefAndScriptFailure2(['byteidx(1, 2)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1')
388
388
CheckDefAndScriptFailure2(['byteidx("a", "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2')
389
+
byteidx('', 0)->assert_equal(0)
390
+
byteidx('', 1)->assert_equal(-1)
389
391
enddef
390
392
391
393
defTest_byteidxcomp()
@@ -600,6 +602,8 @@ def Test_charidx()
600
602
CheckDefAndScriptFailure2(['charidx(0z10, 1)'], 'E1013: Argument 1: type mismatch, expected string but got blob', 'E1174: String required for argument 1')
601
603
CheckDefAndScriptFailure2(['charidx("a", "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2')
602
604
CheckDefAndScriptFailure2(['charidx("a", 1, "")'], 'E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3')
605
+
charidx('', 0)->assert_equal(-1)
606
+
charidx('', 1)->assert_equal(-1)
603
607
enddef
604
608
605
609
defTest_chdir()
@@ -896,6 +900,7 @@ def Test_expand()
896
900
CheckDefAndScriptFailure2(['expand(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1')
897
901
CheckDefAndScriptFailure2(['expand("a", 2)'], 'E1013: Argument 2: type mismatch, expected bool but got number', 'E1212: Bool required for argument 2')
898
902
CheckDefAndScriptFailure2(['expand("a", true, 2)'], 'E1013: Argument 3: type mismatch, expected bool but got number', 'E1212: Bool required for argument 3')
903
+
expand('')->assert_equal('')
899
904
enddef
900
905
901
906
defTest_expandcmd()
@@ -1275,6 +1280,7 @@ def Test_fullcommand()
1275
1280
assert_equal('srewind', fullcommand('sre'))
1276
1281
assert_equal('scriptnames', fullcommand('scr'))
1277
1282
assert_equal('', fullcommand('scg'))
1283
+
fullcommand('')->assert_equal('')
1278
1284
enddef
1279
1285
1280
1286
defTest_funcref()
@@ -1867,11 +1873,13 @@ enddef
1867
1873
defTest_js_decode()
1868
1874
CheckDefAndScriptFailure2(['js_decode(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1')
1869
1875
assert_equal([1, 2], js_decode('[1,2]'))
1876
+
js_decode('')->assert_equal(v:none)
1870
1877
enddef
1871
1878
1872
1879
defTest_json_decode()
1873
1880
CheckDefAndScriptFailure2(['json_decode(true)'], 'E1013: Argument 1: type mismatch, expected string but got bool', 'E1174: String required for argument 1')
1874
1881
assert_equal(1.0, json_decode('1.0'))
1882
+
json_decode('')->assert_equal(v:none)
1875
1883
enddef
1876
1884
1877
1885
defTest_keys()
@@ -2158,12 +2166,14 @@ def Test_matchfuzzy()
2158
2166
CheckDefAndScriptFailure2(['matchfuzzy({}, "p")'], 'E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 1')
2159
2167
CheckDefAndScriptFailure2(['matchfuzzy([], 1)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2')
2160
2168
CheckDefAndScriptFailure2(['matchfuzzy([], "a", [])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3')
2169
+
matchfuzzy(['abc', 'xyz'], '')->assert_equal([])
2161
2170
enddef
2162
2171
2163
2172
defTest_matchfuzzypos()
2164
2173
CheckDefAndScriptFailure2(['matchfuzzypos({}, "p")'], 'E1013: Argument 1: type mismatch, expected list<any> but got dict<unknown>', 'E1211: List required for argument 1')
2165
2174
CheckDefAndScriptFailure2(['matchfuzzypos([], 1)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2')
2166
2175
CheckDefAndScriptFailure2(['matchfuzzypos([], "a", [])'], 'E1013: Argument 3: type mismatch, expected dict<any> but got list<unknown>', 'E1206: Dictionary required for argument 3')
CheckDefAndScriptFailure2(['popup_filter_menu("x", "")'], 'E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1')
2344
2354
CheckDefAndScriptFailure2(['popup_filter_menu(1, 1)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2')
2355
+
var id: number=popup_menu(["one", "two", "three"], {})
2356
+
popup_filter_menu(id, '')
2357
+
popup_close(id)
2345
2358
enddef
2346
2359
2347
2360
defTest_popup_filter_yesno()
@@ -2466,6 +2479,7 @@ def Test_prop_find()
2466
2479
CheckDefAndScriptFailure2(['prop_find([1, 2])'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 1')
2467
2480
CheckDefAndScriptFailure2(['prop_find([1, 2], "k")'], 'E1013: Argument 1: type mismatch, expected dict<any> but got list<number>', 'E1206: Dictionary required for argument 1')
2468
2481
CheckDefAndScriptFailure2(['prop_find({"a": 10}, ["a"])'], 'E1013: Argument 2: type mismatch, expected string but got list<string>', 'E1174: String required for argument 2')
2482
+
assert_fails("prop_find({}, '')", 'E474:')
2469
2483
enddef
2470
2484
2471
2485
defTest_prop_list()
@@ -2482,23 +2496,27 @@ enddef
2482
2496
defTest_prop_type_add()
2483
2497
CheckDefAndScriptFailure2(['prop_type_add({"a": 10}, "b")'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1')
2484
2498
CheckDefAndScriptFailure2(['prop_type_add("a", "b")'], 'E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2')
CheckDefAndScriptFailure2(['prop_type_delete({"a": 10})'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1')
2494
2510
CheckDefAndScriptFailure2(['prop_type_delete({"a": 10}, "b")'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1')
2495
2511
CheckDefAndScriptFailure2(['prop_type_delete("a", "b")'], 'E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2')
2512
+
assert_fails("prop_type_delete('')", 'E474:')
2496
2513
enddef
2497
2514
2498
2515
defTest_prop_type_get()
2499
2516
CheckDefAndScriptFailure2(['prop_type_get({"a": 10})'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1')
2500
2517
CheckDefAndScriptFailure2(['prop_type_get({"a": 10}, "b")'], 'E1013: Argument 1: type mismatch, expected string but got dict<number>', 'E1174: String required for argument 1')
2501
2518
CheckDefAndScriptFailure2(['prop_type_get("a", "b")'], 'E1013: Argument 2: type mismatch, expected dict<any> but got string', 'E1206: Dictionary required for argument 2')
2519
+
assert_fails("prop_type_get('')", 'E474:')
2502
2520
enddef
2503
2521
2504
2522
defTest_prop_type_list()
@@ -3153,6 +3171,7 @@ enddef
3153
3171
defTest_sign_getdefined()
3154
3172
CheckDefAndScriptFailure2(['sign_getdefined(["x"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1')
3155
3173
CheckDefAndScriptFailure2(['sign_getdefined(2)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1')
3174
+
sign_getdefined('')->assert_equal([])
3156
3175
enddef
3157
3176
3158
3177
defTest_sign_getplaced()
@@ -3173,6 +3192,7 @@ def Test_sign_place()
3173
3192
CheckDefAndScriptFailure2(['sign_place(1, "b", 3, "d")'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3')
3174
3193
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')
3175
3194
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')
CheckDefAndScriptFailure2(['str2nr(123)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1')
3329
3352
CheckDefAndScriptFailure2(['str2nr("123", "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2')
@@ -3341,6 +3364,7 @@ def Test_strcharpart()
3341
3364
CheckDefAndScriptFailure2(['strcharpart("a", "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2')
3342
3365
CheckDefAndScriptFailure2(['strcharpart("a", 1, "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3')
3343
3366
CheckDefAndScriptFailure2(['strcharpart("a", 1, 1, 2)'], 'E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4')
3367
+
strcharpart('', 0)->assert_equal('')
3344
3368
enddef
3345
3369
3346
3370
defTest_strchars()
@@ -3350,27 +3374,37 @@ def Test_strchars()
3350
3374
assert_equal(3, strchars('abc'))
3351
3375
assert_equal(3, strchars('abc', 1))
3352
3376
assert_equal(3, strchars('abc', true))
3377
+
strchars('')->assert_equal(0)
3353
3378
enddef
3354
3379
3355
3380
defTest_strdisplaywidth()
3356
3381
CheckDefAndScriptFailure2(['strdisplaywidth(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1')
3357
3382
CheckDefAndScriptFailure2(['strdisplaywidth("a", "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2')
3383
+
strdisplaywidth('')->assert_equal(0)
3358
3384
enddef
3359
3385
3360
3386
defTest_strftime()
3361
-
CheckDefAndScriptFailure2(['strftime(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1')
3362
-
CheckDefAndScriptFailure2(['strftime("a", "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2')
3387
+
ifexists('*strftime')
3388
+
CheckDefAndScriptFailure2(['strftime(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1')
3389
+
CheckDefAndScriptFailure2(['strftime("a", "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2')
3390
+
strftime('')->assert_equal('')
3391
+
endif
3363
3392
enddef
3364
3393
3365
3394
defTest_strgetchar()
3366
3395
CheckDefAndScriptFailure2(['strgetchar(1, 1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1')
3367
3396
CheckDefAndScriptFailure2(['strgetchar("a", "x")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2')
3397
+
strgetchar('', 0)->assert_equal(-1)
3398
+
strgetchar('', 1)->assert_equal(-1)
3368
3399
enddef
3369
3400
3370
3401
defTest_stridx()
3371
3402
CheckDefAndScriptFailure2(['stridx([1], "b")'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1')
3372
3403
CheckDefAndScriptFailure2(['stridx("a", {})'], 'E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 2')
3373
3404
CheckDefAndScriptFailure2(['stridx("a", "b", "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3')
3405
+
stridx('', '')->assert_equal(0)
3406
+
stridx('', 'a')->assert_equal(-1)
3407
+
stridx('a', '')->assert_equal(0)
3374
3408
enddef
3375
3409
3376
3410
defTest_strlen()
@@ -3384,32 +3418,38 @@ def Test_strpart()
3384
3418
CheckDefAndScriptFailure2(['strpart("a", "b")'], 'E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2')
3385
3419
CheckDefAndScriptFailure2(['strpart("a", 1, "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3')
3386
3420
CheckDefAndScriptFailure2(['strpart("a", 1, 1, 2)'], 'E1013: Argument 4: type mismatch, expected bool but got number', 'E1212: Bool required for argument 4')
3421
+
strpart('', 0)->assert_equal('')
3387
3422
enddef
3388
3423
3389
3424
defTest_strptime()
3390
3425
CheckFunction strptime
3391
-
CheckDefAndScriptFailure2(['strptime(10, "2021")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1')
3392
-
CheckDefAndScriptFailure2(['strptime("%Y", 2021)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2')
3393
-
# BUG: Directly calling strptime() in this function gives an"E117: Unknown
3394
-
# function" error on MS-Windows even with the above CheckFunction call for
3395
-
# strptime().
3396
-
#assert_true(strptime('%Y', '2021') !=0)
3426
+
ifexists_compiled('*strptime')
3427
+
CheckDefAndScriptFailure2(['strptime(10, "2021")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1')
3428
+
CheckDefAndScriptFailure2(['strptime("%Y", 2021)'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2')
3429
+
assert_true(strptime('%Y', '2021') !=0)
3430
+
assert_true(strptime('%Y', '') ==0)
3431
+
endif
3397
3432
enddef
3398
3433
3399
3434
defTest_strridx()
3400
3435
CheckDefAndScriptFailure2(['strridx([1], "b")'], 'E1013: Argument 1: type mismatch, expected string but got list<number>', 'E1174: String required for argument 1')
3401
3436
CheckDefAndScriptFailure2(['strridx("a", {})'], 'E1013: Argument 2: type mismatch, expected string but got dict<unknown>', 'E1174: String required for argument 2')
3402
3437
CheckDefAndScriptFailure2(['strridx("a", "b", "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3')
3438
+
strridx('', '')->assert_equal(0)
3439
+
strridx('', 'a')->assert_equal(-1)
3440
+
strridx('a', '')->assert_equal(1)
3403
3441
enddef
3404
3442
3405
3443
defTest_strtrans()
3406
3444
CheckDefAndScriptFailure2(['strtrans(20)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1')
3407
3445
assert_equal('abc', strtrans('abc'))
3446
+
strtrans('')->assert_equal('')
3408
3447
enddef
3409
3448
3410
3449
defTest_strwidth()
3411
3450
CheckDefAndScriptFailure2(['strwidth(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1')
3412
3451
assert_equal(4, strwidth('abcd'))
3452
+
strwidth('')->assert_equal(0)
3413
3453
enddef
3414
3454
3415
3455
defTest_submatch()
@@ -3777,22 +3817,30 @@ enddef
3777
3817
3778
3818
defTest_tolower()
3779
3819
CheckDefAndScriptFailure2(['tolower(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1')
3820
+
tolower('')->assert_equal('')
3780
3821
enddef
3781
3822
3782
3823
defTest_toupper()
3783
3824
CheckDefAndScriptFailure2(['toupper(1)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1')
3825
+
toupper('')->assert_equal('')
3784
3826
enddef
3785
3827
3786
3828
defTest_tr()
3787
3829
CheckDefAndScriptFailure2(['tr(1, "a", "b")'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1')
3788
3830
CheckDefAndScriptFailure2(['tr("a", 1, "b")'], 'E1013: Argument 2: type mismatch, expected string but got number', 'E1174: String required for argument 2')
3789
3831
CheckDefAndScriptFailure2(['tr("a", "a", 1)'], 'E1013: Argument 3: type mismatch, expected string but got number', 'E1174: String required for argument 3')
3832
+
tr('', '', '')->assert_equal('')
3833
+
tr('ab', '', '')->assert_equal('ab')
3834
+
assert_fails("tr('ab', 'ab', '')", 'E475:')
3835
+
assert_fails("tr('ab', '', 'AB')", 'E475:')
3790
3836
enddef
3791
3837
3792
3838
defTest_trim()
3793
3839
CheckDefAndScriptFailure2(['trim(["a"])'], 'E1013: Argument 1: type mismatch, expected string but got list<string>', 'E1174: String required for argument 1')
3794
3840
CheckDefAndScriptFailure2(['trim("a", ["b"])'], 'E1013: Argument 2: type mismatch, expected string but got list<string>', 'E1174: String required for argument 2')
3795
3841
CheckDefAndScriptFailure2(['trim("a", "b", "c")'], 'E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3')
3842
+
trim('')->assert_equal('')
3843
+
trim('', '')->assert_equal('')
3796
3844
enddef
3797
3845
3798
3846
defTest_typename()
@@ -3813,6 +3861,7 @@ enddef
3813
3861
defTest_undofile()
3814
3862
CheckDefAndScriptFailure2(['undofile(10)'], 'E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1')
0 commit comments