mirror of
				https://github.com/minetest-mods/mesecons.git
				synced 2025-10-31 11:25:22 +01:00 
			
		
		
		
	Add automated tests for some mods (#605)
Depends on mineunit from https://github.com/S-S-X/mineunit mesecons, mesecons_mvps, mesecons_fpga, and mesecons_luacontroller are now tested.
This commit is contained in:
		
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							2ede29df9c
						
					
				
				
					commit
					c10ce2dbc5
				
			
							
								
								
									
										59
									
								
								.test_fixtures/mesecons_fpga.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								.test_fixtures/mesecons_fpga.lua
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,59 @@ | ||||
| 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 | ||||
		Reference in New Issue
	
	Block a user