From 047a10bfde531f433b9c8a07e6b380f376a7ec70 Mon Sep 17 00:00:00 2001 From: Maria José Solano Date: Sat, 3 May 2025 16:53:44 -0500 Subject: feat(lua): function `behavior` for tbl_extend, tbl_deep_extend #33819 --- test/functional/lua/vim_spec.lua | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'test/functional/lua/vim_spec.lua') diff --git a/test/functional/lua/vim_spec.lua b/test/functional/lua/vim_spec.lua index c499f8bf25..9693beb242 100644 --- a/test/functional/lua/vim_spec.lua +++ b/test/functional/lua/vim_spec.lua @@ -1036,6 +1036,20 @@ describe('lua stdlib', function() return c.x.a == 1 and c.x.b == 2 and c.x.c == nil and count == 1 ]])) + ok(exec_lua([[ + local a = { a = 1, b = 2, c = 1 } + local b = { a = -1, b = 5, c = 3, d = 4 } + -- Return the maximum value for each key. + local c = vim.tbl_extend(function(k, v, prev_v) + if prev_v then + return v > prev_v and v or prev_v + else + return v + end + end, a, b) + return vim.deep_equal(c, { a = 1, b = 5, c = 3, d = 4 }) + ]])) + matches( 'invalid "behavior": nil', pcall_err( @@ -1177,6 +1191,20 @@ describe('lua stdlib', function() return vim.deep_equal(c, { sub = { 'b', 'c' } }) ]])) + ok(exec_lua([[ + local a = { a = 1, b = 2, c = { d = 1, e = -2} } + local b = { a = -1, b = 5, c = { d = 6 } } + -- Return the maximum value for each key. + local c = vim.tbl_deep_extend(function(k, v, prev_v) + if prev_v then + return v > prev_v and v or prev_v + else + return v + end + end, a, b) + return vim.deep_equal(c, { a = 1, b = 5, c = { d = 6, e = -2 } }) + ]])) + matches('invalid "behavior": nil', pcall_err(exec_lua, [[return vim.tbl_deep_extend()]])) matches( -- cgit