From cb27da578ca75e651c033381d9d830f1d0db6e2f Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Sun, 26 Jan 2025 22:22:20 +0100 Subject: add table helper utility functions --- util_test.lua | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'util_test.lua') diff --git a/util_test.lua b/util_test.lua index a0f4218..661b9f5 100755 --- a/util_test.lua +++ b/util_test.lua @@ -30,4 +30,42 @@ function test_visual_chars_in_line() -- luacheck: ignore 111 lunatest.assert_equal(util.visual_chars_in_line(win, s, #s), 6) end +function test_table_deep_copy() -- luacheck: ignore 111 + local t = {1, 2, 3, foo = {4, 5, bar = 'bar'}} + local cpy = util.table.deep_copy(t) + + lunatest.assert_table(cpy) + lunatest.assert_len(3, cpy) + lunatest.assert_table(cpy.foo) + lunatest.assert_len(2, cpy.foo) + for i, v in ipairs(t) do + lunatest.assert_equal(v, cpy[i]) + end + + t[2] = 12 + lunatest.assert_not_equal(t[2], cpy[2]) + t.foo[2] = 13 + lunatest.assert_not_equal(t.foo[2], cpy.foo[2]) +end + +function test_table_merge() -- luacheck: ignore 111 + local t = {1, 2, foo = {bar = {nose = 'nose'}}} + local t2 = {3, foo = {4, 5, bar = {bar = 'bar'}}} + lunatest.assert_table(t) + lunatest.assert_table(t2) + + util.table.merge(t, t2) + + lunatest.assert_table(t) + lunatest.assert_len(2, t) + lunatest.assert_table(t.foo) + lunatest.assert_len(2, t.foo) + + lunatest.assert_equal(t[1], t2[1]) + lunatest.assert_equal(t[2], 2) + + lunatest.assert_equal(t.foo.bar.bar, 'bar') + lunatest.assert_equal(t.foo.bar.nose, 'nose') +end + lunatest.run() -- cgit v1.2.3 From 99093835a557cd04de0c37206debdcd345801199 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Thu, 20 Mar 2025 15:24:32 -0300 Subject: append numbered members when merging Overriding numbered members is not intuitive. Merging {1} and {2} should return {1,2} not {2}. --- util_test.lua | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'util_test.lua') diff --git a/util_test.lua b/util_test.lua index 661b9f5..63393b1 100755 --- a/util_test.lua +++ b/util_test.lua @@ -57,11 +57,16 @@ function test_table_merge() -- luacheck: ignore 111 util.table.merge(t, t2) lunatest.assert_table(t) - lunatest.assert_len(2, t) + lunatest.assert_len(3, t) + + lunatest.assert_equal(1, t[1]) + lunatest.assert_equal(2, t[2]) + lunatest.assert_equal(3, t[3]) + lunatest.assert_table(t.foo) lunatest.assert_len(2, t.foo) - lunatest.assert_equal(t[1], t2[1]) + lunatest.assert_equal(t[3], t2[1]) lunatest.assert_equal(t[2], 2) lunatest.assert_equal(t.foo.bar.bar, 'bar') -- cgit v1.2.3