mirror of
https://github.com/minetest-mods/mesecons.git
synced 2024-11-17 23:58:27 +01:00
c10ce2dbc5
Depends on mineunit from https://github.com/S-S-X/mineunit mesecons, mesecons_mvps, mesecons_fpga, and mesecons_luacontroller are now tested.
60 lines
1.8 KiB
Lua
60 lines
1.8 KiB
Lua
mineunit("player")
|
|
|
|
fixture("mesecons")
|
|
fixture("mesecons_gamecompat")
|
|
|
|
local registered_on_player_receive_fields = {}
|
|
local old_register_on_player_receive_fields = minetest.register_on_player_receive_fields
|
|
function minetest.register_on_player_receive_fields(func)
|
|
old_register_on_player_receive_fields(func)
|
|
table.insert(registered_on_player_receive_fields, func)
|
|
end
|
|
|
|
mineunit:set_current_modname("mesecons_fpga")
|
|
mineunit:set_modpath("mesecons_fpga", "../mesecons_fpga")
|
|
sourcefile("../mesecons_fpga/init")
|
|
|
|
local fpga_user = Player("mesecons_fpga_user")
|
|
|
|
function mesecon._test_program_fpga(pos, program)
|
|
local node = minetest.get_node(pos)
|
|
assert.equal("mesecons_fpga:fpga", node.name:sub(1, 18))
|
|
|
|
local fields = {program = true}
|
|
for i, instr in ipairs(program) do
|
|
-- Translate the instruction into formspec fields.
|
|
local op1, act, op2, dst
|
|
if #instr == 3 then
|
|
act, op2, dst = unpack(instr)
|
|
else
|
|
assert.equal(4, #instr)
|
|
op1, act, op2, dst = unpack(instr)
|
|
end
|
|
fields[i .. "op1"] = op1
|
|
fields[i .. "act"] = (" "):rep(4 - #act) .. act
|
|
fields[i .. "op2"] = op2
|
|
fields[i .. "dst"] = dst
|
|
end
|
|
|
|
minetest.registered_nodes[node.name].on_rightclick(pos, node, fpga_user)
|
|
|
|
for _, func in ipairs(registered_on_player_receive_fields) do
|
|
if func(fpga_user, "mesecons:fpga", fields) then
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
function mesecon._test_copy_fpga_program(pos)
|
|
fpga_user:get_inventory():set_stack("main", 1, "mesecons_fpga:programmer")
|
|
local pt = {type = "node", under = vector.new(pos), above = vector.offset(pos, 0, 1, 0)}
|
|
fpga_user:do_place(pt)
|
|
return fpga_user:get_wielded_item()
|
|
end
|
|
|
|
function mesecon._test_paste_fpga_program(pos, tool)
|
|
fpga_user:get_inventory():set_stack("main", 1, tool)
|
|
local pt = {type = "node", under = vector.new(pos), above = vector.offset(pos, 0, 1, 0)}
|
|
fpga_user:do_use(pt)
|
|
end
|