aboutsummaryrefslogtreecommitdiff
path: root/test/functional/lua_spec.lua
diff options
context:
space:
mode:
authorZyX <kp-pav@yandex.ru>2016-07-16 00:48:25 +0300
committerZyX <kp-pav@yandex.ru>2017-03-27 00:11:27 +0300
commit7a013e93e0364f78a2bc04eadaaeeaa689d0258a (patch)
tree3f5a1b42dc9847ddc39f844f76b6c946f4ed4a05 /test/functional/lua_spec.lua
parent425d348f0f9f680a44af31fc3cecd20a07374bb5 (diff)
downloadrneovim-7a013e93e0364f78a2bc04eadaaeeaa689d0258a.tar.gz
rneovim-7a013e93e0364f78a2bc04eadaaeeaa689d0258a.tar.bz2
rneovim-7a013e93e0364f78a2bc04eadaaeeaa689d0258a.zip
executor/converter: Make it possible to supply `{}` to Dictionary arg
Diffstat (limited to 'test/functional/lua_spec.lua')
-rw-r--r--test/functional/lua_spec.lua20
1 files changed, 19 insertions, 1 deletions
diff --git a/test/functional/lua_spec.lua b/test/functional/lua_spec.lua
index bd1ed51c2d..082efe4c0e 100644
--- a/test/functional/lua_spec.lua
+++ b/test/functional/lua_spec.lua
@@ -234,11 +234,29 @@ describe('luaeval() function', function()
eq({}, funcs.luaeval('vim.api._vim_id_array({[vim.type_idx]=vim.types.array})'))
- -- Presence of type_idx makes Vim ignore some keys
eq({42}, funcs.luaeval('vim.api._vim_id_array({[vim.type_idx]=vim.types.array, [vim.val_idx]=10, [5]=1, foo=2, [1]=42})'))
eq({{foo=2}}, funcs.luaeval('vim.api._vim_id_array({{[vim.type_idx]=vim.types.dictionary, [vim.val_idx]=10, [5]=1, foo=2, [1]=42}})'))
eq({10}, funcs.luaeval('vim.api._vim_id_array({{[vim.type_idx]=vim.types.float, [vim.val_idx]=10, [5]=1, foo=2, [1]=42}})'))
eq({}, funcs.luaeval('vim.api._vim_id_array({[vim.type_idx]=vim.types.array, [vim.val_idx]=10, [5]=1, foo=2})'))
+
+ eq({}, funcs.luaeval('vim.api._vim_id_array({})'))
+ eq(3, eval([[type(luaeval('vim.api._vim_id_array({})'))]]))
+ end)
+
+ it('correctly converts dictionaries with type_idx to API objects', function()
+ eq(4, eval([[type(luaeval('vim.api._vim_id_dictionary({[vim.type_idx]=vim.types.dictionary})'))]]))
+
+ eq({}, funcs.luaeval('vim.api._vim_id_dictionary({[vim.type_idx]=vim.types.dictionary})'))
+
+ eq({v={42}}, funcs.luaeval('vim.api._vim_id_dictionary({v={[vim.type_idx]=vim.types.array, [vim.val_idx]=10, [5]=1, foo=2, [1]=42}})'))
+ eq({foo=2}, funcs.luaeval('vim.api._vim_id_dictionary({[vim.type_idx]=vim.types.dictionary, [vim.val_idx]=10, [5]=1, foo=2, [1]=42})'))
+ eq({v=10}, funcs.luaeval('vim.api._vim_id_dictionary({v={[vim.type_idx]=vim.types.float, [vim.val_idx]=10, [5]=1, foo=2, [1]=42}})'))
+ eq({v={}}, funcs.luaeval('vim.api._vim_id_dictionary({v={[vim.type_idx]=vim.types.array, [vim.val_idx]=10, [5]=1, foo=2}})'))
+
+ -- If API requests dictionary, then empty table will be the one. This is not
+ -- the case normally because empty table is an empty arrray.
+ eq({}, funcs.luaeval('vim.api._vim_id_dictionary({})'))
+ eq(4, eval([[type(luaeval('vim.api._vim_id_dictionary({})'))]]))
end)
it('correctly converts self-containing containers', function()