minetest.emerge_area(max_edge, max_edge:add(1), emerge_block, max_finished)
end
unittests.register("test_mapgen_edges", test_mapgen_edges, {map=true, async=true})
+
+local finish_test_on_mapblocks_changed
+minetest.register_on_mapblocks_changed(function(modified_blocks, modified_block_count)
+ if finish_test_on_mapblocks_changed then
+ finish_test_on_mapblocks_changed(modified_blocks, modified_block_count)
+ finish_test_on_mapblocks_changed = nil
+ end
+end)
+local function test_on_mapblocks_changed(cb, player, pos)
+ local bp1 = (pos / minetest.MAP_BLOCKSIZE):floor()
+ local bp2 = bp1:add(1)
+ for _, bp in ipairs({bp1, bp2}) do
+ -- Make a modification in the block.
+ local p = bp * minetest.MAP_BLOCKSIZE
+ minetest.load_area(p)
+ local meta = minetest.get_meta(p)
+ meta:set_int("test_on_mapblocks_changed", meta:get_int("test_on_mapblocks_changed") + 1)
+ end
+ finish_test_on_mapblocks_changed = function(modified_blocks, modified_block_count)
+ if modified_block_count < 2 then
+ return cb("Expected at least two mapblocks to be recorded as modified")
+ end
+ if not modified_blocks[minetest.hash_node_position(bp1)] or
+ not modified_blocks[minetest.hash_node_position(bp2)] then
+ return cb("The expected mapblocks were not recorded as modified")
+ end
+ cb()
+ end
+end
+unittests.register("test_on_mapblocks_changed", test_on_mapblocks_changed, {map=true, async=true})