voxelizer/test.lua

68 lines
2.2 KiB
Lua

math.randomseed(os.time())
local function random_color()
color={}
for i=1, 3 do color[i]=math.random(0, 255) end
return color
end
local function random_colors(k)
local random_colors={}
for i=1, k or 10000 do
table.insert(random_colors, random_color())
end
return random_colors
end
local function test_correctness()
local k=0
for i = 1, 1000 do
local colors=random_colors(1000)
local tree=kd_closest_color_finder(colors)
local color=random_color() --colors[math.random(1, 20)]
local linear, lin_distance=linear_closest_color_finder(colors)(color)
local kd, kd_distance=tree(color)
if lin_distance == kd_distance then
k=k+1
end
end
print(tostring(k).." of 1000 samples")
end
local function test_performance()
local color=random_color() --colors[math.random(1, 20)]
local colors=random_colors(10000)
local tree=kd_closest_color_finder(colors)
local linear=linear_closest_color_finder(colors)
for _, tree in ipairs({tree, linear}) do
local x = os.clock()
local s = 0
for i = 1, 1000 do kd, kd_distance=tree(color) end
print(string.format("elapsed time: %.2f", os.clock() - x))
end
end
print("Closest Color Finder Test : ")
test_correctness()
test_performance()
local function test_texture_reader()
image = read_texture(get_resource("voxelizer", "test/image.png"))
print("Texture Reader Test : ")
print(color_to_number(color_to_table(get_texture_color_at(image, 0, 0))) == 0x00000000)
print(color_to_number(color_to_table(get_texture_color_at(image, 1, 0))) == 0xFFFF0000)
print(color_to_number(color_to_table(get_texture_color_at(image, 0, 1))) == 0xFF00FF00)
print(color_to_number(color_to_table(get_texture_color_at(image, 1, 1))) == 0xFF0000FF)
end
test_texture_reader()
local function test_nodemap_reader()
print("Nodemap Reader Test : ")
local color_to_cid = read_node_map(modlib.file.read("/usr/share/games/minetest/minetestmapper-colors.txt"))
for c, cid in pairs(color_to_cid) do
print(string.format("%x", c).." -> "..minetest.get_name_from_content_id(cid))
end
end
test_nodemap_reader()