]> git.lizzy.rs Git - minetest.git/blobdiff - games/devtest/mods/unittests/misc.lua
Add `minetest.get_mapgen_edges` (#12999)
[minetest.git] / games / devtest / mods / unittests / misc.lua
index 7c16b7c8201e20c76432083a4146754544ac3cc1..3f327edece5ad5c5a186cd0fab6fcebe3f5eebd9 100644 (file)
@@ -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})