From 96b1600bc822d72f5a1defa1dafda562ff208b7e Mon Sep 17 00:00:00 2001 From: ZyX Date: Tue, 15 Aug 2017 16:31:11 +0300 Subject: functests: Add test for stricmp --- test/functional/lua/utility_functions_spec.lua | 102 +++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 test/functional/lua/utility_functions_spec.lua (limited to 'test/functional/lua/utility_functions_spec.lua') diff --git a/test/functional/lua/utility_functions_spec.lua b/test/functional/lua/utility_functions_spec.lua new file mode 100644 index 0000000000..c89a21a968 --- /dev/null +++ b/test/functional/lua/utility_functions_spec.lua @@ -0,0 +1,102 @@ +-- Test suite for testing interactions with API bindings +local helpers = require('test.functional.helpers')(after_each) + +local funcs = helpers.funcs +local clear = helpers.clear +local eq = helpers.eq + +before_each(clear) + +describe('stricmp', function() + -- İ: `tolower("İ")` is `i` which has length 1 while `İ` itself has + -- length 2 (in bytes). + -- Ⱥ: `tolower("Ⱥ")` is `ⱥ` which has length 2 while `Ⱥ` itself has + -- length 3 (in bytes). + -- For some reason 'i' !=? 'İ' and 'ⱥ' !=? 'Ⱥ' on some systems. Also built-in + -- Neovim comparison (i.e. when there is no strcasecmp) works only on ASCII + -- characters. + it('works', function() + eq(0, funcs.luaeval('stricmp("a", "A")')) + eq(0, funcs.luaeval('stricmp("A", "a")')) + eq(0, funcs.luaeval('stricmp("a", "a")')) + eq(0, funcs.luaeval('stricmp("A", "A")')) + + eq(0, funcs.luaeval('stricmp("", "")')) + eq(0, funcs.luaeval('stricmp("\\0", "\\0")')) + eq(0, funcs.luaeval('stricmp("\\0\\0", "\\0\\0")')) + eq(0, funcs.luaeval('stricmp("\\0\\0\\0", "\\0\\0\\0")')) + eq(0, funcs.luaeval('stricmp("\\0\\0\\0A", "\\0\\0\\0a")')) + eq(0, funcs.luaeval('stricmp("\\0\\0\\0a", "\\0\\0\\0A")')) + eq(0, funcs.luaeval('stricmp("\\0\\0\\0a", "\\0\\0\\0a")')) + + eq(0, funcs.luaeval('stricmp("a\\0", "A\\0")')) + eq(0, funcs.luaeval('stricmp("A\\0", "a\\0")')) + eq(0, funcs.luaeval('stricmp("a\\0", "a\\0")')) + eq(0, funcs.luaeval('stricmp("A\\0", "A\\0")')) + + eq(0, funcs.luaeval('stricmp("\\0a", "\\0A")')) + eq(0, funcs.luaeval('stricmp("\\0A", "\\0a")')) + eq(0, funcs.luaeval('stricmp("\\0a", "\\0a")')) + eq(0, funcs.luaeval('stricmp("\\0A", "\\0A")')) + + eq(0, funcs.luaeval('stricmp("\\0a\\0", "\\0A\\0")')) + eq(0, funcs.luaeval('stricmp("\\0A\\0", "\\0a\\0")')) + eq(0, funcs.luaeval('stricmp("\\0a\\0", "\\0a\\0")')) + eq(0, funcs.luaeval('stricmp("\\0A\\0", "\\0A\\0")')) + + eq(-1, funcs.luaeval('stricmp("a", "B")')) + eq(-1, funcs.luaeval('stricmp("A", "b")')) + eq(-1, funcs.luaeval('stricmp("a", "b")')) + eq(-1, funcs.luaeval('stricmp("A", "B")')) + + eq(-1, funcs.luaeval('stricmp("", "\\0")')) + eq(-1, funcs.luaeval('stricmp("\\0", "\\0\\0")')) + eq(-1, funcs.luaeval('stricmp("\\0\\0", "\\0\\0\\0")')) + eq(-1, funcs.luaeval('stricmp("\\0\\0\\0A", "\\0\\0\\0b")')) + eq(-1, funcs.luaeval('stricmp("\\0\\0\\0a", "\\0\\0\\0B")')) + eq(-1, funcs.luaeval('stricmp("\\0\\0\\0a", "\\0\\0\\0b")')) + + eq(-1, funcs.luaeval('stricmp("a\\0", "B\\0")')) + eq(-1, funcs.luaeval('stricmp("A\\0", "b\\0")')) + eq(-1, funcs.luaeval('stricmp("a\\0", "b\\0")')) + eq(-1, funcs.luaeval('stricmp("A\\0", "B\\0")')) + + eq(-1, funcs.luaeval('stricmp("\\0a", "\\0B")')) + eq(-1, funcs.luaeval('stricmp("\\0A", "\\0b")')) + eq(-1, funcs.luaeval('stricmp("\\0a", "\\0b")')) + eq(-1, funcs.luaeval('stricmp("\\0A", "\\0B")')) + + eq(-1, funcs.luaeval('stricmp("\\0a\\0", "\\0B\\0")')) + eq(-1, funcs.luaeval('stricmp("\\0A\\0", "\\0b\\0")')) + eq(-1, funcs.luaeval('stricmp("\\0a\\0", "\\0b\\0")')) + eq(-1, funcs.luaeval('stricmp("\\0A\\0", "\\0B\\0")')) + + eq(1, funcs.luaeval('stricmp("c", "B")')) + eq(1, funcs.luaeval('stricmp("C", "b")')) + eq(1, funcs.luaeval('stricmp("c", "b")')) + eq(1, funcs.luaeval('stricmp("C", "B")')) + + eq(1, funcs.luaeval('stricmp("\\0", "")')) + eq(1, funcs.luaeval('stricmp("\\0\\0", "\\0")')) + eq(1, funcs.luaeval('stricmp("\\0\\0\\0", "\\0\\0")')) + eq(1, funcs.luaeval('stricmp("\\0\\0\\0\\0", "\\0\\0\\0")')) + eq(1, funcs.luaeval('stricmp("\\0\\0\\0C", "\\0\\0\\0b")')) + eq(1, funcs.luaeval('stricmp("\\0\\0\\0c", "\\0\\0\\0B")')) + eq(1, funcs.luaeval('stricmp("\\0\\0\\0c", "\\0\\0\\0b")')) + + eq(1, funcs.luaeval('stricmp("c\\0", "B\\0")')) + eq(1, funcs.luaeval('stricmp("C\\0", "b\\0")')) + eq(1, funcs.luaeval('stricmp("c\\0", "b\\0")')) + eq(1, funcs.luaeval('stricmp("C\\0", "B\\0")')) + + eq(1, funcs.luaeval('stricmp("\\0c", "\\0B")')) + eq(1, funcs.luaeval('stricmp("\\0C", "\\0b")')) + eq(1, funcs.luaeval('stricmp("\\0c", "\\0b")')) + eq(1, funcs.luaeval('stricmp("\\0C", "\\0B")')) + + eq(1, funcs.luaeval('stricmp("\\0c\\0", "\\0B\\0")')) + eq(1, funcs.luaeval('stricmp("\\0C\\0", "\\0b\\0")')) + eq(1, funcs.luaeval('stricmp("\\0c\\0", "\\0b\\0")')) + eq(1, funcs.luaeval('stricmp("\\0C\\0", "\\0B\\0")')) + end) +end) -- cgit From 93ef823f5e5347e685b4a69fff487278d0b4ed87 Mon Sep 17 00:00:00 2001 From: ZyX Date: Tue, 15 Aug 2017 16:32:06 +0300 Subject: lua/executor: Move stricmp to vim “module” and document it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/functional/lua/utility_functions_spec.lua | 166 ++++++++++++------------- 1 file changed, 83 insertions(+), 83 deletions(-) (limited to 'test/functional/lua/utility_functions_spec.lua') diff --git a/test/functional/lua/utility_functions_spec.lua b/test/functional/lua/utility_functions_spec.lua index c89a21a968..c2c61299b1 100644 --- a/test/functional/lua/utility_functions_spec.lua +++ b/test/functional/lua/utility_functions_spec.lua @@ -7,7 +7,7 @@ local eq = helpers.eq before_each(clear) -describe('stricmp', function() +describe('vim.stricmp', function() -- İ: `tolower("İ")` is `i` which has length 1 while `İ` itself has -- length 2 (in bytes). -- Ⱥ: `tolower("Ⱥ")` is `ⱥ` which has length 2 while `Ⱥ` itself has @@ -16,87 +16,87 @@ describe('stricmp', function() -- Neovim comparison (i.e. when there is no strcasecmp) works only on ASCII -- characters. it('works', function() - eq(0, funcs.luaeval('stricmp("a", "A")')) - eq(0, funcs.luaeval('stricmp("A", "a")')) - eq(0, funcs.luaeval('stricmp("a", "a")')) - eq(0, funcs.luaeval('stricmp("A", "A")')) - - eq(0, funcs.luaeval('stricmp("", "")')) - eq(0, funcs.luaeval('stricmp("\\0", "\\0")')) - eq(0, funcs.luaeval('stricmp("\\0\\0", "\\0\\0")')) - eq(0, funcs.luaeval('stricmp("\\0\\0\\0", "\\0\\0\\0")')) - eq(0, funcs.luaeval('stricmp("\\0\\0\\0A", "\\0\\0\\0a")')) - eq(0, funcs.luaeval('stricmp("\\0\\0\\0a", "\\0\\0\\0A")')) - eq(0, funcs.luaeval('stricmp("\\0\\0\\0a", "\\0\\0\\0a")')) - - eq(0, funcs.luaeval('stricmp("a\\0", "A\\0")')) - eq(0, funcs.luaeval('stricmp("A\\0", "a\\0")')) - eq(0, funcs.luaeval('stricmp("a\\0", "a\\0")')) - eq(0, funcs.luaeval('stricmp("A\\0", "A\\0")')) - - eq(0, funcs.luaeval('stricmp("\\0a", "\\0A")')) - eq(0, funcs.luaeval('stricmp("\\0A", "\\0a")')) - eq(0, funcs.luaeval('stricmp("\\0a", "\\0a")')) - eq(0, funcs.luaeval('stricmp("\\0A", "\\0A")')) - - eq(0, funcs.luaeval('stricmp("\\0a\\0", "\\0A\\0")')) - eq(0, funcs.luaeval('stricmp("\\0A\\0", "\\0a\\0")')) - eq(0, funcs.luaeval('stricmp("\\0a\\0", "\\0a\\0")')) - eq(0, funcs.luaeval('stricmp("\\0A\\0", "\\0A\\0")')) - - eq(-1, funcs.luaeval('stricmp("a", "B")')) - eq(-1, funcs.luaeval('stricmp("A", "b")')) - eq(-1, funcs.luaeval('stricmp("a", "b")')) - eq(-1, funcs.luaeval('stricmp("A", "B")')) - - eq(-1, funcs.luaeval('stricmp("", "\\0")')) - eq(-1, funcs.luaeval('stricmp("\\0", "\\0\\0")')) - eq(-1, funcs.luaeval('stricmp("\\0\\0", "\\0\\0\\0")')) - eq(-1, funcs.luaeval('stricmp("\\0\\0\\0A", "\\0\\0\\0b")')) - eq(-1, funcs.luaeval('stricmp("\\0\\0\\0a", "\\0\\0\\0B")')) - eq(-1, funcs.luaeval('stricmp("\\0\\0\\0a", "\\0\\0\\0b")')) - - eq(-1, funcs.luaeval('stricmp("a\\0", "B\\0")')) - eq(-1, funcs.luaeval('stricmp("A\\0", "b\\0")')) - eq(-1, funcs.luaeval('stricmp("a\\0", "b\\0")')) - eq(-1, funcs.luaeval('stricmp("A\\0", "B\\0")')) - - eq(-1, funcs.luaeval('stricmp("\\0a", "\\0B")')) - eq(-1, funcs.luaeval('stricmp("\\0A", "\\0b")')) - eq(-1, funcs.luaeval('stricmp("\\0a", "\\0b")')) - eq(-1, funcs.luaeval('stricmp("\\0A", "\\0B")')) - - eq(-1, funcs.luaeval('stricmp("\\0a\\0", "\\0B\\0")')) - eq(-1, funcs.luaeval('stricmp("\\0A\\0", "\\0b\\0")')) - eq(-1, funcs.luaeval('stricmp("\\0a\\0", "\\0b\\0")')) - eq(-1, funcs.luaeval('stricmp("\\0A\\0", "\\0B\\0")')) - - eq(1, funcs.luaeval('stricmp("c", "B")')) - eq(1, funcs.luaeval('stricmp("C", "b")')) - eq(1, funcs.luaeval('stricmp("c", "b")')) - eq(1, funcs.luaeval('stricmp("C", "B")')) - - eq(1, funcs.luaeval('stricmp("\\0", "")')) - eq(1, funcs.luaeval('stricmp("\\0\\0", "\\0")')) - eq(1, funcs.luaeval('stricmp("\\0\\0\\0", "\\0\\0")')) - eq(1, funcs.luaeval('stricmp("\\0\\0\\0\\0", "\\0\\0\\0")')) - eq(1, funcs.luaeval('stricmp("\\0\\0\\0C", "\\0\\0\\0b")')) - eq(1, funcs.luaeval('stricmp("\\0\\0\\0c", "\\0\\0\\0B")')) - eq(1, funcs.luaeval('stricmp("\\0\\0\\0c", "\\0\\0\\0b")')) - - eq(1, funcs.luaeval('stricmp("c\\0", "B\\0")')) - eq(1, funcs.luaeval('stricmp("C\\0", "b\\0")')) - eq(1, funcs.luaeval('stricmp("c\\0", "b\\0")')) - eq(1, funcs.luaeval('stricmp("C\\0", "B\\0")')) - - eq(1, funcs.luaeval('stricmp("\\0c", "\\0B")')) - eq(1, funcs.luaeval('stricmp("\\0C", "\\0b")')) - eq(1, funcs.luaeval('stricmp("\\0c", "\\0b")')) - eq(1, funcs.luaeval('stricmp("\\0C", "\\0B")')) - - eq(1, funcs.luaeval('stricmp("\\0c\\0", "\\0B\\0")')) - eq(1, funcs.luaeval('stricmp("\\0C\\0", "\\0b\\0")')) - eq(1, funcs.luaeval('stricmp("\\0c\\0", "\\0b\\0")')) - eq(1, funcs.luaeval('stricmp("\\0C\\0", "\\0B\\0")')) + eq(0, funcs.luaeval('vim.stricmp("a", "A")')) + eq(0, funcs.luaeval('vim.stricmp("A", "a")')) + eq(0, funcs.luaeval('vim.stricmp("a", "a")')) + eq(0, funcs.luaeval('vim.stricmp("A", "A")')) + + eq(0, funcs.luaeval('vim.stricmp("", "")')) + eq(0, funcs.luaeval('vim.stricmp("\\0", "\\0")')) + eq(0, funcs.luaeval('vim.stricmp("\\0\\0", "\\0\\0")')) + eq(0, funcs.luaeval('vim.stricmp("\\0\\0\\0", "\\0\\0\\0")')) + eq(0, funcs.luaeval('vim.stricmp("\\0\\0\\0A", "\\0\\0\\0a")')) + eq(0, funcs.luaeval('vim.stricmp("\\0\\0\\0a", "\\0\\0\\0A")')) + eq(0, funcs.luaeval('vim.stricmp("\\0\\0\\0a", "\\0\\0\\0a")')) + + eq(0, funcs.luaeval('vim.stricmp("a\\0", "A\\0")')) + eq(0, funcs.luaeval('vim.stricmp("A\\0", "a\\0")')) + eq(0, funcs.luaeval('vim.stricmp("a\\0", "a\\0")')) + eq(0, funcs.luaeval('vim.stricmp("A\\0", "A\\0")')) + + eq(0, funcs.luaeval('vim.stricmp("\\0a", "\\0A")')) + eq(0, funcs.luaeval('vim.stricmp("\\0A", "\\0a")')) + eq(0, funcs.luaeval('vim.stricmp("\\0a", "\\0a")')) + eq(0, funcs.luaeval('vim.stricmp("\\0A", "\\0A")')) + + eq(0, funcs.luaeval('vim.stricmp("\\0a\\0", "\\0A\\0")')) + eq(0, funcs.luaeval('vim.stricmp("\\0A\\0", "\\0a\\0")')) + eq(0, funcs.luaeval('vim.stricmp("\\0a\\0", "\\0a\\0")')) + eq(0, funcs.luaeval('vim.stricmp("\\0A\\0", "\\0A\\0")')) + + eq(-1, funcs.luaeval('vim.stricmp("a", "B")')) + eq(-1, funcs.luaeval('vim.stricmp("A", "b")')) + eq(-1, funcs.luaeval('vim.stricmp("a", "b")')) + eq(-1, funcs.luaeval('vim.stricmp("A", "B")')) + + eq(-1, funcs.luaeval('vim.stricmp("", "\\0")')) + eq(-1, funcs.luaeval('vim.stricmp("\\0", "\\0\\0")')) + eq(-1, funcs.luaeval('vim.stricmp("\\0\\0", "\\0\\0\\0")')) + eq(-1, funcs.luaeval('vim.stricmp("\\0\\0\\0A", "\\0\\0\\0b")')) + eq(-1, funcs.luaeval('vim.stricmp("\\0\\0\\0a", "\\0\\0\\0B")')) + eq(-1, funcs.luaeval('vim.stricmp("\\0\\0\\0a", "\\0\\0\\0b")')) + + eq(-1, funcs.luaeval('vim.stricmp("a\\0", "B\\0")')) + eq(-1, funcs.luaeval('vim.stricmp("A\\0", "b\\0")')) + eq(-1, funcs.luaeval('vim.stricmp("a\\0", "b\\0")')) + eq(-1, funcs.luaeval('vim.stricmp("A\\0", "B\\0")')) + + eq(-1, funcs.luaeval('vim.stricmp("\\0a", "\\0B")')) + eq(-1, funcs.luaeval('vim.stricmp("\\0A", "\\0b")')) + eq(-1, funcs.luaeval('vim.stricmp("\\0a", "\\0b")')) + eq(-1, funcs.luaeval('vim.stricmp("\\0A", "\\0B")')) + + eq(-1, funcs.luaeval('vim.stricmp("\\0a\\0", "\\0B\\0")')) + eq(-1, funcs.luaeval('vim.stricmp("\\0A\\0", "\\0b\\0")')) + eq(-1, funcs.luaeval('vim.stricmp("\\0a\\0", "\\0b\\0")')) + eq(-1, funcs.luaeval('vim.stricmp("\\0A\\0", "\\0B\\0")')) + + eq(1, funcs.luaeval('vim.stricmp("c", "B")')) + eq(1, funcs.luaeval('vim.stricmp("C", "b")')) + eq(1, funcs.luaeval('vim.stricmp("c", "b")')) + eq(1, funcs.luaeval('vim.stricmp("C", "B")')) + + eq(1, funcs.luaeval('vim.stricmp("\\0", "")')) + eq(1, funcs.luaeval('vim.stricmp("\\0\\0", "\\0")')) + eq(1, funcs.luaeval('vim.stricmp("\\0\\0\\0", "\\0\\0")')) + eq(1, funcs.luaeval('vim.stricmp("\\0\\0\\0\\0", "\\0\\0\\0")')) + eq(1, funcs.luaeval('vim.stricmp("\\0\\0\\0C", "\\0\\0\\0b")')) + eq(1, funcs.luaeval('vim.stricmp("\\0\\0\\0c", "\\0\\0\\0B")')) + eq(1, funcs.luaeval('vim.stricmp("\\0\\0\\0c", "\\0\\0\\0b")')) + + eq(1, funcs.luaeval('vim.stricmp("c\\0", "B\\0")')) + eq(1, funcs.luaeval('vim.stricmp("C\\0", "b\\0")')) + eq(1, funcs.luaeval('vim.stricmp("c\\0", "b\\0")')) + eq(1, funcs.luaeval('vim.stricmp("C\\0", "B\\0")')) + + eq(1, funcs.luaeval('vim.stricmp("\\0c", "\\0B")')) + eq(1, funcs.luaeval('vim.stricmp("\\0C", "\\0b")')) + eq(1, funcs.luaeval('vim.stricmp("\\0c", "\\0b")')) + eq(1, funcs.luaeval('vim.stricmp("\\0C", "\\0B")')) + + eq(1, funcs.luaeval('vim.stricmp("\\0c\\0", "\\0B\\0")')) + eq(1, funcs.luaeval('vim.stricmp("\\0C\\0", "\\0b\\0")')) + eq(1, funcs.luaeval('vim.stricmp("\\0c\\0", "\\0b\\0")')) + eq(1, funcs.luaeval('vim.stricmp("\\0C\\0", "\\0B\\0")')) end) end) -- cgit From b1a8dcefeee0bb999a350de2cc38fc08df679bf6 Mon Sep 17 00:00:00 2001 From: ZyX Date: Tue, 15 Aug 2017 16:41:43 +0300 Subject: lua/executor: Fix crash when first string contains NUL and second not --- test/functional/lua/utility_functions_spec.lua | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'test/functional/lua/utility_functions_spec.lua') diff --git a/test/functional/lua/utility_functions_spec.lua b/test/functional/lua/utility_functions_spec.lua index c2c61299b1..9855a05e8c 100644 --- a/test/functional/lua/utility_functions_spec.lua +++ b/test/functional/lua/utility_functions_spec.lua @@ -89,6 +89,11 @@ describe('vim.stricmp', function() eq(1, funcs.luaeval('vim.stricmp("c\\0", "b\\0")')) eq(1, funcs.luaeval('vim.stricmp("C\\0", "B\\0")')) + eq(1, funcs.luaeval('vim.stricmp("c\\0", "B")')) + eq(1, funcs.luaeval('vim.stricmp("C\\0", "b")')) + eq(1, funcs.luaeval('vim.stricmp("c\\0", "b")')) + eq(1, funcs.luaeval('vim.stricmp("C\\0", "B")')) + eq(1, funcs.luaeval('vim.stricmp("\\0c", "\\0B")')) eq(1, funcs.luaeval('vim.stricmp("\\0C", "\\0b")')) eq(1, funcs.luaeval('vim.stricmp("\\0c", "\\0b")')) -- cgit