diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/functional/lua/vim_spec.lua | 38 | ||||
-rw-r--r-- | test/old/testdir/test_user_func.vim | 40 |
2 files changed, 64 insertions, 14 deletions
diff --git a/test/functional/lua/vim_spec.lua b/test/functional/lua/vim_spec.lua index e5caf6f6f7..e37d477376 100644 --- a/test/functional/lua/vim_spec.lua +++ b/test/functional/lua/vim_spec.lua @@ -3374,13 +3374,45 @@ describe('lua stdlib', function() end) it('handles map-like tables', function() - local t = { a = 1, b = 2, c = 3 } - local it = vim.iter(t):map(function(k, v) + local it = vim.iter({ a = 1, b = 2, c = 3 }):map(function(k, v) if v % 2 ~= 0 then return k:upper(), v * 2 end end) - eq({ A = 2, C = 6 }, it:totable()) + + local t = it:fold({}, function(t, k, v) + t[k] = v + return t + end) + eq({ A = 2, C = 6 }, t) + end) + + it('handles table values mid-pipeline', function() + local map = { + item = { + file = 'test', + }, + item_2 = { + file = 'test', + }, + item_3 = { + file = 'test', + }, + } + + local output = vim.iter(map):map(function(key, value) + return { [key] = value.file } + end):totable() + + table.sort(output, function(a, b) + return next(a) < next(b) + end) + + eq({ + { item = 'test' }, + { item_2 = 'test' }, + { item_3 = 'test' }, + }, output) end) end) end) diff --git a/test/old/testdir/test_user_func.vim b/test/old/testdir/test_user_func.vim index 5f6229258d..dc36ab98cb 100644 --- a/test/old/testdir/test_user_func.vim +++ b/test/old/testdir/test_user_func.vim @@ -663,20 +663,37 @@ endfunc func Test_defer_quitall_autocmd() let lines =<< trim END - autocmd User DeferAutocmdThree qa! + func DeferLevelFive() + defer writefile(['5'], 'XQuitallAutocmd', 'a') + qa! + endfunc + autocmd User DeferAutocmdFive call DeferLevelFive() + + " def DeferLevelFour() + func DeferLevelFour() + defer writefile(['4'], 'XQuitallAutocmd', 'a') + doautocmd User DeferAutocmdFive + " enddef + endfunc + + func DeferLevelThree() + defer writefile(['3'], 'XQuitallAutocmd', 'a') + call DeferLevelFour() + endfunc + + autocmd User DeferAutocmdThree ++nested call DeferLevelThree() + + " def DeferLevelTwo() func DeferLevelTwo() - call writefile(['text'], 'XQuitallAutocmdTwo', 'D') + defer writefile(['2'], 'XQuitallAutocmd', 'a') doautocmd User DeferAutocmdThree + " enddef endfunc - autocmd User DeferAutocmdTwo ++nested call DeferLevelTwo() - - " def DeferLevelOne() func DeferLevelOne() - call writefile(['text'], 'XQuitallAutocmdOne', 'D') - doautocmd User DeferAutocmdTwo - " enddef + defer writefile(['1'], 'XQuitallAutocmd', 'a') + call DeferLevelTwo() endfunc autocmd User DeferAutocmdOne ++nested call DeferLevelOne() @@ -684,10 +701,11 @@ func Test_defer_quitall_autocmd() doautocmd User DeferAutocmdOne END call writefile(lines, 'XdeferQuitallAutocmd', 'D') - let res = system(GetVimCommand() .. ' -X -S XdeferQuitallAutocmd') + call system(GetVimCommand() .. ' -X -S XdeferQuitallAutocmd') call assert_equal(0, v:shell_error) - call assert_false(filereadable('XQuitallAutocmdOne')) - call assert_false(filereadable('XQuitallAutocmdTwo')) + call assert_equal(['5', '4', '3', '2', '1'], readfile('XQuitallAutocmd')) + + call delete('XQuitallAutocmd') endfunc func Test_defer_quitall_in_expr_func() |