diff options
Diffstat (limited to 'crawl-ref/source')
-rw-r--r-- | crawl-ref/source/dat/clua/iter.lua | 4 | ||||
-rw-r--r-- | crawl-ref/source/dat/clua/test.lua | 11 | ||||
-rw-r--r-- | crawl-ref/source/test/rune-gen.lua | 31 |
3 files changed, 44 insertions, 2 deletions
diff --git a/crawl-ref/source/dat/clua/iter.lua b/crawl-ref/source/dat/clua/iter.lua index e4d1409781..8adf548a15 100644 --- a/crawl-ref/source/dat/clua/iter.lua +++ b/crawl-ref/source/dat/clua/iter.lua @@ -338,7 +338,7 @@ function iter.stack_search (coord, term, extra) local stack = dgn.items_at(_x, _y) if #stack == 0 then - error("no stack at " .. _x .. "/" .. _y) + return nil end for _, item in ipairs(stack) do @@ -347,7 +347,7 @@ function iter.stack_search (coord, term, extra) end end - return false + return nil end function iter.stack_destroy(coord, extra) diff --git a/crawl-ref/source/dat/clua/test.lua b/crawl-ref/source/dat/clua/test.lua index 404b2e1d1f..22a4005d20 100644 --- a/crawl-ref/source/dat/clua/test.lua +++ b/crawl-ref/source/dat/clua/test.lua @@ -20,4 +20,15 @@ function test.regenerate_level(place) debug.flush_map_memory() dgn.reset_level() debug.generate_level() +end + +function test.level_contains_item(item) + for y = 1, dgn.GYM - 2 do + for x = 1, dgn.GXM - 2 do + if iter.stack_search(x, y, item) then + return true + end + end + end + return false end
\ No newline at end of file diff --git a/crawl-ref/source/test/rune-gen.lua b/crawl-ref/source/test/rune-gen.lua new file mode 100644 index 0000000000..ef81d22b4e --- /dev/null +++ b/crawl-ref/source/test/rune-gen.lua @@ -0,0 +1,31 @@ +local niters = 100 + +local function test_item_level(place, item, nlevels) + debug.goto_place(place) + for i = 1, nlevels do + crawl.mesclr() + crawl.mpr(place .. " rune test " .. i .. " of " .. nlevels) + test.regenerate_level() + test.map_assert(test.level_contains_item(item), + "No " .. item .. " created at " .. place) + end +end + +local function test_item_places(nlevels, level_items) + for _, place in ipairs(level_items) do + test_item_level(place[1], place[2], nlevels) + end +end + +test_item_places(niters, + { { "Snake:$", "serpentine rune" }, + { "Shoal:$", "barnacled rune" }, + { "Swamp:$", "decaying rune" }, + { "Slime:$", "slimy rune" }, + { "Vault:$", "silver rune" }, + { "Coc:$", "icy rune" }, + { "Tar:$", "bone rune" }, + { "Dis:$", "iron rune" }, + { "Geh:$", "obsidian rune" }, + { "Tomb:$", "golden rune" }, + { "Zot:$", "Orb of Zot" } }) |