diff options
author | Jude Melton-Houghton <jwmhjwmh@gmail.com> | 2022-12-03 10:40:46 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-03 10:40:46 -0500 |
commit | b3ffc4b327622bec63793476191b95bc174bf33c (patch) | |
tree | f528352d914b5aacb8b4d8b31f2e702efe18d0dc /games/devtest/mods/unittests/misc.lua | |
parent | e84d259ec7fcc00466bd947070cb4ed77cd83c52 (diff) | |
download | minetest-b3ffc4b327622bec63793476191b95bc174bf33c.tar.xz |
Add `minetest.get_mapgen_edges` (#12999)
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}) |