script_name = "Test table.copy_deep"
script_description = "Tests the Auto4 Lua utils.lua table.copy_deep function"
script_author = "Niels Martin Hansen"

include "utils.lua"

function test_tablecopy_deep()
	local function test_table(tab, desc)
		local l = aegisub.log
		l("--- %15s -------------\n", desc)
		l("tab.a = %d\n", tab.a)
		l("type(tab.b) = %s\n", type(tab.b))
		l("tab.b.a = %s\n", tab.b.a)
		l("tab.c==tab.b ? %d\n", (tab.c==tab.b) and 1 or 0)
		l("type(tab.b.b) = %s\n", type(tab.b.b))
		l("type(tab.d) = %s\n", type(tab.d))
		l("tab.d.a == tab.d ? %d\n", (tab.d.a==tab.d) and 1 or 0)
		l("tab.e == tab ? %d\n", (tab.e==tab) and 1 or 0)
		l("\n")
	end
	
	local orgtab = {}
	orgtab.a = 1
	orgtab.b = {}
	orgtab.b.a = "hi"
	orgtab.c = orgtab.b
	orgtab.c.b = test_table
	orgtab.d = {}
	orgtab.d.a = orgtab.d
	orgtab.e = orgtab
	test_table(orgtab, "Original table")
	
	local cpytab = table.copy_deep(orgtab)
	test_table(cpytab, "Copied table")
end

aegisub.register_macro("TEST table.copy_deep", "", test_tablecopy_deep)