summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/test
diff options
context:
space:
mode:
authorJude Brown <bookofjude@users.sourceforge.net>2010-04-23 16:20:38 +1000
committerJude Brown <bookofjude@users.sourceforge.net>2010-04-23 16:24:57 +1000
commit3e8b9e467c7da790122421e83df3a9ee367769d5 (patch)
tree71c31b36090217884b174e597359b759340e4fc2 /crawl-ref/source/test
parent542e290bdf73551865a9882c9195b62e92575ff3 (diff)
downloadcrawl-ref-3e8b9e467c7da790122421e83df3a9ee367769d5.tar.gz
crawl-ref-3e8b9e467c7da790122421e83df3a9ee367769d5.zip
"not_cursed" tag for Vault items, test suite. (#1397).
As requested by felirx, applying "not_cursed" to an item description prevents it from being generated as cursed (or rather, it removes a curse if there is one). Also includes a test suite that generates a hundred iterations of an item and reports on cursed status: 302 or so out of 5000 "short sword" items were generated cursed, while 0 out of 5000 "short sword not_cursed" items were generated cursed.
Diffstat (limited to 'crawl-ref/source/test')
-rw-r--r--crawl-ref/source/test/item_curse.lua33
1 files changed, 33 insertions, 0 deletions
diff --git a/crawl-ref/source/test/item_curse.lua b/crawl-ref/source/test/item_curse.lua
new file mode 100644
index 0000000000..64a0514e30
--- /dev/null
+++ b/crawl-ref/source/test/item_curse.lua
@@ -0,0 +1,33 @@
+-- Test handling of not_cursed in item curse status generation.
+
+local niters = 5000
+local item_type = "short sword not_cursed"
+local place = dgn.point(20, 20)
+local curse_count = 0
+
+local function test_item (place, item_type)
+ dgn.create_item(place.x, place.y, item_type)
+ local item = dgn.items_at(place.x, place.y)[1]
+ if item.is_cursed then
+ curse_count = curse_count + 1
+ end
+end
+
+local function do_item_tests (niters, item_type, place)
+ debug.goto_place("D:1")
+ dgn.dismiss_monsters()
+ dgn.grid(place.x, place.y, "floor")
+
+ for i=1, niters do
+ if #dgn.items_at(place.x, place.y) ~= 0 then
+ iter.stack_destroy(place)
+ end
+ test_item(place, item_type)
+ end
+
+ if curse_count ~= 0 then
+ error("Generated " .. curse_count .. " cursed '" .. item_type .. "' out of " .. niters .. ".")
+ end
+end
+
+do_item_tests (niters, item_type, place)