1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-07-17 17:08:39 +00:00

Rename “Minimal development test” to “Development Test” (#9928)

This commit is contained in:
Wuzzy 2020-05-26 00:17:52 +02:00 committed by GitHub
parent b546e8938d
commit 083b285f43
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
371 changed files with 25 additions and 25 deletions

View file

@ -0,0 +1,120 @@
-- Test minetest.clear_craft function
local function test_clear_craft()
minetest.log("info", "[unittests] Testing minetest.clear_craft")
-- Clearing by output
minetest.register_craft({
output = "foo",
recipe = {{"bar"}}
})
minetest.register_craft({
output = "foo 4",
recipe = {{"foo", "bar"}}
})
assert(#minetest.get_all_craft_recipes("foo") == 2)
minetest.clear_craft({output="foo"})
assert(minetest.get_all_craft_recipes("foo") == nil)
-- Clearing by input
minetest.register_craft({
output = "foo 4",
recipe = {{"foo", "bar"}}
})
assert(#minetest.get_all_craft_recipes("foo") == 1)
minetest.clear_craft({recipe={{"foo", "bar"}}})
assert(minetest.get_all_craft_recipes("foo") == nil)
end
-- Test minetest.get_craft_result function
local function test_get_craft_result()
minetest.log("info", "[unittests] Testing minetest.get_craft_result")
-- normal
local input = {
method = "normal",
width = 2,
items = {"", "unittests:coal_lump", "", "unittests:stick"}
}
minetest.log("info", "[unittests] torch crafting input: "..dump(input))
local output, decremented_input = minetest.get_craft_result(input)
minetest.log("info", "[unittests] torch crafting output: "..dump(output))
minetest.log("info", "[unittests] torch crafting decremented input: "..dump(decremented_input))
assert(output.item)
minetest.log("info", "[unittests] torch crafting output.item:to_table(): "..dump(output.item:to_table()))
assert(output.item:get_name() == "unittests:torch")
assert(output.item:get_count() == 4)
-- fuel
input = {
method = "fuel",
width = 1,
items = {"unittests:coal_lump"}
}
minetest.log("info", "[unittests] coal fuel input: "..dump(input))
output, decremented_input = minetest.get_craft_result(input)
minetest.log("info", "[unittests] coal fuel output: "..dump(output))
minetest.log("info", "[unittests] coal fuel decremented input: "..dump(decremented_input))
assert(output.time)
assert(output.time > 0)
-- cooking
input = {
method = "cooking",
width = 1,
items = {"unittests:iron_lump"}
}
minetest.log("info", "[unittests] iron lump cooking input: "..dump(output))
output, decremented_input = minetest.get_craft_result(input)
minetest.log("info", "[unittests] iron lump cooking output: "..dump(output))
minetest.log("info", "[unittests] iron lump cooking decremented input: "..dump(decremented_input))
assert(output.time)
assert(output.time > 0)
assert(output.item)
minetest.log("info", "[unittests] iron lump cooking output.item:to_table(): "..dump(output.item:to_table()))
assert(output.item:get_name() == "unittests:steel_ingot")
assert(output.item:get_count() == 1)
-- tool repair (repairable)
input = {
method = "normal",
width = 2,
-- Using a wear of 60000
items = {"unittests:repairable_tool 1 60000", "unittests:repairable_tool 1 60000"}
}
minetest.log("info", "[unittests] repairable tool crafting input: "..dump(input))
output, decremented_input = minetest.get_craft_result(input)
minetest.log("info", "[unittests] repairable tool crafting output: "..dump(output))
minetest.log("info", "[unittests] repairable tool crafting decremented input: "..dump(decremented_input))
assert(output.item)
minetest.log("info", "[unittests] repairable tool crafting output.item:to_table(): "..dump(output.item:to_table()))
assert(output.item:get_name() == "unittests:repairable_tool")
-- Test the wear value.
-- See src/craftdef.cpp in Minetest source code for the formula. The formula to calculate
-- the value 51187 is:
-- 65536 - ((65536-60000)+(65536-60000)) + floor(additonal_wear * 65536 + 0.5) = 51187
-- where additional_wear = 0.05
assert(output.item:get_wear() == 51187)
assert(output.item:get_count() == 1)
-- failing tool repair (unrepairable)
input = {
method = "normal",
width = 2,
items = {"unittests:unrepairable_tool 1 60000", "unittests:unrepairable_tool 1 60000"}
}
minetest.log("info", "[unittests] unrepairable tool crafting input: "..dump(input))
output, decremented_input = minetest.get_craft_result(input)
minetest.log("info", "[unittests] unrepairable tool crafting output: "..dump(output))
minetest.log("info", "[unittests] unrepairable tool crafting decremented input: "..dump(decremented_input))
assert(output.item)
minetest.log("info", "[unittests] unrepairable tool crafting output.item:to_table(): "..dump(output.item:to_table()))
-- unrepairable tool must not yield any output
assert(output.item:get_name() == "")
end
function unittests.test_crafting()
test_clear_craft()
test_get_craft_result()
minetest.log("action", "[unittests] Crafting tests passed!")
return true
end

View file

@ -0,0 +1,88 @@
-- Registering some dummy items and recipes for the crafting tests
minetest.register_craftitem("unittests:torch", {
description = "Crafting Test Item: Torch",
inventory_image = "unittests_torch.png",
groups = { dummy = 1 },
})
minetest.register_craftitem("unittests:coal_lump", {
description = "Crafting Test Item: Coal Lump",
inventory_image = "unittests_coal_lump.png",
groups = { dummy = 1 },
})
minetest.register_craftitem("unittests:stick", {
description = "Crafting Test Item: Stick",
inventory_image = "unittests_stick.png",
groups = { dummy = 1 },
})
minetest.register_craftitem("unittests:iron_lump", {
description = "Crafting Test Item: Iron Lump",
inventory_image = "unittests_iron_lump.png",
groups = { dummy = 1 },
})
minetest.register_craftitem("unittests:steel_ingot", {
description = "Crafting Test Item: Steel Ingot",
inventory_image = "unittests_steel_ingot.png",
groups = { dummy = 1 },
})
-- Recipes for tests: Normal crafting, cooking and fuel
minetest.register_craft({
output = 'unittests:torch 4',
recipe = {
{'unittests:coal_lump'},
{'unittests:stick'},
}
})
minetest.register_craft({
type = "cooking",
output = "unittests:steel_ingot",
recipe = "unittests:iron_lump",
})
minetest.register_craft({
type = "fuel",
recipe = "unittests:coal_lump",
burntime = 40,
})
-- Test tool repair
minetest.register_craft({
type = "toolrepair",
additional_wear = -0.05,
})
-- Test the disable_repair=1 group
minetest.register_tool("unittests:unrepairable_tool", {
description = "Crafting Test Item: Unrepairable Tool",
inventory_image = "unittests_unrepairable_tool.png",
tool_capabilities = {
groupcaps = {
cracky = {
times = {3, 2, 1},
}
}
},
groups = { disable_repair = 1, dummy = 1 }
})
minetest.register_tool("unittests:repairable_tool", {
description = "Crafting Test Item: Repairable Tool",
inventory_image = "unittests_repairable_tool.png",
tool_capabilities = {
groupcaps = {
cracky = {
times = {3, 2, 1},
}
}
},
groups = { dummy = 1 },
})

View file

@ -0,0 +1,16 @@
unittests = {}
local modpath = minetest.get_modpath("unittests")
dofile(modpath .. "/random.lua")
dofile(modpath .. "/player.lua")
dofile(modpath .. "/crafting_prepare.lua")
dofile(modpath .. "/crafting.lua")
if minetest.settings:get_bool("devtest_unittests_autostart", false) then
unittests.test_random()
unittests.test_crafting()
minetest.register_on_joinplayer(function(player)
unittests.test_player(player)
end)
end

View file

@ -0,0 +1,2 @@
name = unittests
description = Adds automated unit tests for the engine

View file

@ -0,0 +1,73 @@
--
-- HP Change Reasons
--
local expect = nil
local function run_hpchangereason_tests(player)
expect = { type = "set_hp", from = "mod" }
player:set_hp(3)
assert(expect == nil)
expect = { a = 234, type = "set_hp", from = "mod" }
player:set_hp(7, { a= 234 })
assert(expect == nil)
expect = { df = 3458973454, type = "fall", from = "mod" }
player:set_hp(10, { type = "fall", df = 3458973454 })
assert(expect == nil)
player:set_hp(20)
end
local function run_player_meta_tests(player)
local meta = player:get_meta()
meta:set_string("foo", "bar")
assert(meta:contains("foo"))
assert(meta:get_string("foo") == "bar")
assert(meta:get("foo") == "bar")
local meta2 = player:get_meta()
assert(meta2:get_string("foo") == "bar")
assert(meta2:get("foo") == "bar")
assert(meta:equals(meta2))
meta:set_string("bob", "dillan")
assert(meta:get_string("foo") == "bar")
assert(meta:get_string("bob") == "dillan")
assert(meta:get("bob") == "dillan")
assert(meta2:get_string("foo") == "bar")
assert(meta2:get_string("bob") == "dillan")
assert(meta2:get("bob") == "dillan")
assert(meta:equals(meta2))
meta:set_string("foo", "")
assert(not meta:contains("foo"))
assert(meta:get("foo") == nil)
assert(meta:get_string("foo") == "")
assert(meta:equals(meta2))
end
function unittests.test_player(player)
minetest.register_on_player_hpchange(function(player, hp, reason)
if not expect then
return
end
for key, value in pairs(reason) do
assert(expect[key] == value)
end
for key, value in pairs(expect) do
assert(reason[key] == value)
end
expect = nil
end)
run_hpchangereason_tests(player)
run_player_meta_tests(player)
local msg = "Player tests passed for player '"..player:get_player_name().."'!"
minetest.chat_send_all(msg)
minetest.log("action", "[unittests] "..msg)
return true
end

View file

@ -0,0 +1,10 @@
function unittests.test_random()
-- Try out PseudoRandom
minetest.log("action", "[unittests] Testing PseudoRandom ...")
local pseudo = PseudoRandom(13)
assert(pseudo:next() == 22290)
assert(pseudo:next() == 13854)
minetest.log("action", "[unittests] PseudoRandom test passed!")
return true
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 B