aboutsummaryrefslogtreecommitdiff
path: root/test/functional/lua/utility_functions_spec.lua
diff options
context:
space:
mode:
authorZyX <kp-pav@yandex.ru>2017-08-15 16:31:11 +0300
committerZyX <kp-pav@yandex.ru>2017-08-15 16:34:25 +0300
commit96b1600bc822d72f5a1defa1dafda562ff208b7e (patch)
tree235bc33605dcb4c5b538f520bf56e8d19d268e08 /test/functional/lua/utility_functions_spec.lua
parentef6641ba6952fd868d3efafb2a23234ac9bd0d3f (diff)
downloadrneovim-96b1600bc822d72f5a1defa1dafda562ff208b7e.tar.gz
rneovim-96b1600bc822d72f5a1defa1dafda562ff208b7e.tar.bz2
rneovim-96b1600bc822d72f5a1defa1dafda562ff208b7e.zip
functests: Add test for stricmp
Diffstat (limited to 'test/functional/lua/utility_functions_spec.lua')
-rw-r--r--test/functional/lua/utility_functions_spec.lua102
1 files changed, 102 insertions, 0 deletions
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)