diff options
Diffstat (limited to 'games/devtest/mods/unittests/misc.lua')
-rw-r--r-- | games/devtest/mods/unittests/misc.lua | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/games/devtest/mods/unittests/misc.lua b/games/devtest/mods/unittests/misc.lua index 7c16b7c82..3f327edec 100644 --- a/games/devtest/mods/unittests/misc.lua +++ b/games/devtest/mods/unittests/misc.lua @@ -110,3 +110,40 @@ local function test_game_info() assert(info.title == game_conf:get("title")) end unittests.register("test_game_info", test_game_info) + +local function test_mapgen_edges(cb) + -- Test that the map can extend to the expected edges and no further. + local min_edge, max_edge = minetest.get_mapgen_edges() + local min_finished = {} + local max_finished = {} + local function finish() + if #min_finished ~= 1 then + return cb("Expected 1 block to emerge around mapgen minimum edge") + end + if min_finished[1] ~= (min_edge / minetest.MAP_BLOCKSIZE):floor() then + return cb("Expected block within minimum edge to emerge") + end + if #max_finished ~= 1 then + return cb("Expected 1 block to emerge around mapgen maximum edge") + end + if max_finished[1] ~= (max_edge / minetest.MAP_BLOCKSIZE):floor() then + return cb("Expected block within maximum edge to emerge") + end + return cb() + end + local emerges_left = 2 + local function emerge_block(blockpos, action, blocks_left, finished) + if action ~= minetest.EMERGE_CANCELLED then + table.insert(finished, blockpos) + end + if blocks_left == 0 then + emerges_left = emerges_left - 1 + if emerges_left == 0 then + return finish() + end + end + end + minetest.emerge_area(min_edge:subtract(1), min_edge, emerge_block, min_finished) + 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}) |