technic-cd2025/technic/spec/nodes_spec.lua
SX d6802c2a48 Update tests for network code refactoring
Drop coverage stats for sources outside of technic directory (technic_cnc, technic_worldgen)
Update technic API functions for tests (were exported just for tests, now part of API)

Move CNC tests, use shared fixtures for tests
2021-11-30 07:29:05 +02:00

259 lines
7.2 KiB
Lua

require("mineunit")
--[[
Technic network unit tests.
Execute mineunit at technic source directory.
--]]
-- Load complete technic mod
fixture("technic")
sourcefile("init")
describe("Technic node placement", function()
world.set_default_node({name="air",param2=0})
local function placement_test(player, name, xpos)
return function()
player:get_inventory():set_stack("main", 1, name)
player:do_place({x=xpos, y=1, z=0})
end
end
local player = Player("SX")
-- Execute on mods loaded callbacks to finish loading.
mineunit:mods_loaded()
-- Tell mods that 1 minute passed already to execute all weird minetest.after hacks.
mineunit:execute_globalstep(60)
local nodes = {}
for nodename, def in pairs(minetest.registered_nodes) do
if not (def.groups and def.groups.not_in_creative_inventory) and nodename:find("^technic:") then
table.insert(nodes, nodename)
end
end
setup(function()
mineunit:execute_on_joinplayer(player)
end)
teardown(function()
mineunit:execute_on_leaveplayer(player)
end)
for x, nodename in ipairs(nodes) do
it("player can place "..nodename, placement_test(player, nodename, x))
end
describe("cable plates", function()
world.set_node({x=10,y=10,z=10}, "default:stone")
world.set_node({x=10,y=20,z=10}, "default:stone")
world.set_node({x=10,y=30,z=10}, "default:stone")
world.set_node({x=10,y=40,z=10}, "default:stone")
describe("normal placement", function()
setup(function()
player:get_inventory():set_stack("main", 1, "technic:hv_cable_plate_1 6")
player:_reset_player_controls()
end)
it("plate_1", function()
local pointed_thing = {
type = "node",
above = {y = 10,x = 11,z = 10},
under = {y = 10,x = 10,z = 10}
}
player:do_place(pointed_thing)
assert.equals("technic:hv_cable_plate_1", minetest.get_node(pointed_thing.above).name)
end)
it("plate_2", function()
local pointed_thing = {
type = "node",
above = {y = 11,x = 10,z = 10},
under = {y = 10,x = 10,z = 10}
}
player:do_place(pointed_thing)
assert.equals("technic:hv_cable_plate_2", minetest.get_node(pointed_thing.above).name)
end)
it("plate_3", function()
local pointed_thing = {
type = "node",
above = {y = 10,x = 10,z = 11},
under = {y = 10,x = 10,z = 10}
}
player:do_place(pointed_thing)
assert.equals("technic:hv_cable_plate_3", minetest.get_node(pointed_thing.above).name)
end)
it("plate_4", function()
local pointed_thing = {
type = "node",
above = {y = 10,x = 9,z = 10},
under = {y = 10,x = 10,z = 10}
}
player:do_place(pointed_thing)
assert.equals("technic:hv_cable_plate_4", minetest.get_node(pointed_thing.above).name)
end)
it("plate_5", function()
local pointed_thing = {
type = "node",
above = {y = 9,x = 10,z = 10},
under = {y = 10,x = 10,z = 10}
}
player:do_place(pointed_thing)
assert.equals("technic:hv_cable_plate_5", minetest.get_node(pointed_thing.above).name)
end)
it("plate_6", function()
local pointed_thing = {
type = "node",
above = {y = 10,x = 10,z = 9},
under = {y = 10,x = 10,z = 10}
}
player:do_place(pointed_thing)
assert.equals("technic:hv_cable_plate_6", minetest.get_node(pointed_thing.above).name)
end)
end)
describe("middle aux1 placement", function()
setup(function()
player:get_inventory():set_stack("main", 1, "technic:hv_cable_plate_1 6")
player:_set_player_control_state("aux1", true)
end)
it("heading X-", function()
local pos = {y = 20,x = 11,z = 10}
player:do_set_pos_fp(vector.add(pos, {y=0, x=2, z=0}))
player:do_set_look_xyz("X-")
player:do_place(pos)
assert.equals("technic:hv_cable_plate_4", minetest.get_node(pos).name)
end)
it("heading Y-", function()
local pos = {y = 21,x = 10,z = 10}
player:do_set_pos_fp(vector.add(pos, {y=2, x=0, z=0}))
player:do_set_look_xyz("Y-")
player:do_place(pos)
assert.equals("technic:hv_cable_plate_5", minetest.get_node(pos).name)
end)
it("heading Z-", function()
local pos = {y = 20,x = 10,z = 11}
player:do_set_pos_fp(vector.add(pos, {y=0, x=0, z=2}))
player:do_set_look_xyz("Z-")
player:do_place(pos)
assert.equals("technic:hv_cable_plate_6", minetest.get_node(pos).name)
end)
it("heading X+", function()
local pos = {y = 20,x = 9,z = 10}
player:do_set_pos_fp(vector.add(pos, {y=0, x=-2, z=0}))
player:do_set_look_xyz("X+")
player:do_place(pos)
assert.equals("technic:hv_cable_plate_1", minetest.get_node(pos).name)
end)
it("heading Y+", function()
local pos = {y = 19,x = 10,z = 10}
player:do_set_pos_fp(vector.add(pos, {y=-2, x=0, z=0}))
player:do_set_look_xyz("Y+")
player:do_place(pos)
assert.equals("technic:hv_cable_plate_2", minetest.get_node(pos).name)
end)
it("heading Z+", function()
local pos = {y = 20,x = 10,z = 9}
player:do_set_pos_fp(vector.add(pos, {y=0, x=0, z=-2}))
player:do_set_look_xyz("Z+")
player:do_place(pos)
assert.equals("technic:hv_cable_plate_3", minetest.get_node(pos).name)
end)
end)
describe("aux1 placement pointing X+ edge", function()
setup(function()
player:get_inventory():set_stack("main", 1, "technic:hv_cable_plate_1 2")
player:_set_player_control_state("aux1", true)
end)
it("heading Z+", function()
local pos = {y = 30,x = 10,z = 9}
player:do_set_pos_fp(vector.add(pos, {y=0, x=0.4, z=-2}))
player:do_set_look_xyz("Z+")
player:do_place(pos)
assert.equals("technic:hv_cable_plate_4", minetest.get_node(pos).name)
end)
it("heading Y-", function()
local pos = {y = 31,x = 10,z = 10}
player:do_set_pos_fp(vector.add(pos, {y=2, x=0.4, z=0}))
player:do_set_look_xyz("Y-")
player:do_place(pos)
assert.equals("technic:hv_cable_plate_4", minetest.get_node(pos).name)
end)
end)
describe("aux1 placement pointing Z+ edge", function()
setup(function()
player:get_inventory():set_stack("main", 1, "technic:hv_cable_plate_1 4")
player:_set_player_control_state("aux1", true)
end)
it("heading X-", function()
local pos = {y = 40,x = 11,z = 10}
player:do_set_pos_fp(vector.add(pos, {y=0, x=2, z=0.4}))
player:do_set_look_xyz("X-")
player:do_place(pos)
assert.equals("technic:hv_cable_plate_6", minetest.get_node(pos).name)
end)
it("heading Y-", function()
local pos = {y = 41,x = 10,z = 10}
player:do_set_pos_fp(vector.add(pos, {y=2, x=0, z=0.4}))
player:do_set_look_xyz("Y-")
player:do_place(pos)
assert.equals("technic:hv_cable_plate_6", minetest.get_node(pos).name)
end)
it("heading X+", function()
local pos = {y = 40,x = 9,z = 10}
player:do_set_pos_fp(vector.add(pos, {y=0, x=-2, z=0.4}))
player:do_set_look_xyz("X+")
player:do_place(pos)
assert.equals("technic:hv_cable_plate_6", minetest.get_node(pos).name)
end)
it("heading Y+", function()
local pos = {y = 39,x = 10,z = 10}
player:do_set_pos_fp(vector.add(pos, {y=-2, x=0, z=0.4}))
player:do_set_look_xyz("Y+")
player:do_place(pos)
assert.equals("technic:hv_cable_plate_6", minetest.get_node(pos).name)
end)
end)
end)
it("gloabalstep works", function()
for _=1,60 do
mineunit:execute_globalstep(1)
end
end)
end)