diff options
author | Yegappan Lakshmanan <yegappan@yahoo.com> | 2023-06-08 17:09:45 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2023-06-08 17:09:45 +0100 |
commit | 577922b917e48285a7a312daf7b5bbc6e272939c (patch) | |
tree | f7cc5d7eb4c47da733a1fcf24a3393881889b7b2 /src/testdir/test_vim9_builtin.vim | |
parent | 5bf042810b19a627eda2f170624a0cfd7b4f6ed6 (diff) |
patch 9.0.1617: charidx() result is not consistent with byteidx()v9.0.1617
Problem: charidx() and utf16idx() result is not consistent with byteidx().
Solution: When the index is equal to the length of the text return the
lenght of the text instead of -1. (Yegappan Lakshmanan,
closes #12503)
Diffstat (limited to 'src/testdir/test_vim9_builtin.vim')
-rw-r--r-- | src/testdir/test_vim9_builtin.vim | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/testdir/test_vim9_builtin.vim b/src/testdir/test_vim9_builtin.vim index 8cf16a2cf6..a226bb2cab 100644 --- a/src/testdir/test_vim9_builtin.vim +++ b/src/testdir/test_vim9_builtin.vim @@ -460,6 +460,7 @@ enddef def Test_byteidx() v9.CheckDefAndScriptFailure(['byteidx(1, 2)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) v9.CheckDefAndScriptFailure(['byteidx("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) + v9.CheckDefAndScriptFailure(['byteidx("a", 0, "")'], ['E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3']) byteidx('', 0)->assert_equal(0) byteidx('', 1)->assert_equal(-1) enddef @@ -467,6 +468,7 @@ enddef def Test_byteidxcomp() v9.CheckDefAndScriptFailure(['byteidxcomp(1, 2)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) v9.CheckDefAndScriptFailure(['byteidxcomp("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) + v9.CheckDefAndScriptFailure(['byteidxcomp("a", 0, "")'], ['E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3']) enddef def Test_call_call() @@ -702,7 +704,8 @@ def Test_charidx() v9.CheckDefAndScriptFailure(['charidx(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1174: String required for argument 1']) v9.CheckDefAndScriptFailure(['charidx("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) v9.CheckDefAndScriptFailure(['charidx("a", 1, "")'], ['E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3']) - charidx('', 0)->assert_equal(-1) + v9.CheckDefAndScriptFailure(['charidx("a", 1, 0, "")'], ['E1013: Argument 4: type mismatch, expected bool but got string', 'E1212: Bool required for argument 4']) + charidx('', 0)->assert_equal(0) charidx('', 1)->assert_equal(-1) enddef @@ -4305,6 +4308,14 @@ def Test_strtrans() strtrans('')->assert_equal('') enddef +def Test_strutf16len() + v9.CheckDefAndScriptFailure(['strutf16len([])'], ['E1013: Argument 1: type mismatch, expected string but got list<unknown>', 'E1174: String required for argument 1']) + v9.CheckDefAndScriptFailure(['strutf16len("a", "")'], ['E1013: Argument 2: type mismatch, expected bool but got string', 'E1212: Bool required for argument 2']) + ""->strutf16len()->assert_equal(0) + '-ą́-ą́'->strutf16len(true)->assert_equal(8) + '-ą́-ą́'->strutf16len(false)->assert_equal(4) +enddef + def Test_strwidth() v9.CheckDefAndScriptFailure(['strwidth(10)'], ['E1013: Argument 1: type mismatch, expected string but got number', 'E1174: String required for argument 1']) assert_equal(4, strwidth('abcd')) @@ -4727,6 +4738,15 @@ def Test_uniq() v9.CheckDefFailure(['var l: list<number> = uniq(["a", "b"])'], 'E1012: Type mismatch; expected list<number> but got list<string>') enddef +def Test_utf16idx() + v9.CheckDefAndScriptFailure(['utf16idx(0z10, 1)'], ['E1013: Argument 1: type mismatch, expected string but got blob', 'E1174: String required for argument 1']) + v9.CheckDefAndScriptFailure(['utf16idx("a", "b")'], ['E1013: Argument 2: type mismatch, expected number but got string', 'E1210: Number required for argument 2']) + v9.CheckDefAndScriptFailure(['utf16idx("a", 1, "")'], ['E1013: Argument 3: type mismatch, expected bool but got string', 'E1212: Bool required for argument 3']) + v9.CheckDefAndScriptFailure(['utf16idx("a", 1, 0, "")'], ['E1013: Argument 4: type mismatch, expected bool but got string', 'E1212: Bool required for argument 4']) + utf16idx('', 0)->assert_equal(0) + utf16idx('', 1)->assert_equal(-1) +enddef + def Test_uniq_const() var lines =<< trim END const l = [1, 2, 3, 4] |