Move and remove test files

This commit is contained in:
Pasi Kallinen
2019-11-07 19:32:36 +02:00
parent 4e438e0146
commit 6f5a50a538
6 changed files with 0 additions and 309 deletions

377
test/test_des.lua Normal file
View File

@@ -0,0 +1,377 @@
-- Test the des-file commands
-- reset_level is only needed here, not in normal special level scripts.
function is_map_at(x,y, mapch, lit)
local rm = nh.getmap(x + 1, y); -- + 1 == g.xstart
if rm.mapchr ~= mapch then
error("Terrain at (" .. x .. "," .. y .. ") is not \"" .. mapch .. "\", but \"" .. rm.mapchr .. "\"");
end
if lit ~= nil then
if rm.lit ~= lit then
error("light state at (" .. x .. "," .. y .. ") is not \"" .. lit .. "\", but \"" .. tostring(rm.lit) .. "\"");
end
end
end
function test_level_init()
des.reset_level();
des.level_init();
des.reset_level();
des.level_init({ style = "solidfill" });
des.reset_level();
des.level_init({ style = "solidfill", fg = " " });
des.reset_level();
des.level_init({ style = "mazegrid", bg ="-" });
des.reset_level();
des.level_init({ style = "rogue" });
des.reset_level();
des.level_init({ style = "mines" });
des.reset_level();
des.level_init({ style = "mines", fg = ".", bg = " ", smoothed = true });
des.reset_level();
des.level_init({ style = "mines", fg = ".", bg = "}", joined = true });
des.reset_level();
des.level_init({ style = "mines", fg = ".", bg = "L", smoothed = 1, joined = 1, lit = 0 });
des.reset_level();
des.level_init({ style = "mines", fg = ".", bg = " ", smoothed = true, joined = true, walled = true });
des.reset_level();
des.level_init({ style = "solidfill", fg = ".", lit = 1 });
end
function test_message()
des.message("Test message");
des.message("Message 2");
end
function test_monster()
des.monster();
des.monster("gnome")
des.monster("S")
des.monster("giant eel",11,06);
des.monster("hill giant", {08,06});
des.monster({ id = "ogre" })
des.monster({ class = "D" })
des.monster({ id = "ogre", x = 10, y = 15 })
des.monster({ class = "D", coord = {11,16} })
des.monster({ x = 73, y = 16 });
des.monster({ id = "watchman", peaceful = 1 })
des.monster({ class = "H", peaceful = 0 })
des.monster({ id = "giant mimic", appear_as = "obj:boulder" });
des.monster({ id = "giant mimic", appear_as = "ter:altar" });
des.monster({ id = "chameleon", appear_as = "mon:bat" });
des.monster({ class = "H", asleep = 1, female = 1, invisible = 1, cancelled = 1, revived = 1, avenge = 1, fleeing = 20, blinded = 20, paralyzed = 20, stunned = 20, confused = 20 })
des.monster({ id = "ogre", x = 10, y = 15, name = "Fred",
inventory = function()
des.object();
des.object("[");
des.object({ class = "/" });
des.object({ id = "statue", contents=0 })
end
});
des.reset_level();
des.level_init();
end
function test_object()
des.reset_level();
des.level_init();
des.object()
des.object("*")
des.object({ class = "%" });
des.object({ id = "statue", contents=0 })
des.object("sack")
des.object({ x = 41, y = 03 })
des.object({ coord = {42, 03} });
des.object({ id = "boulder", coord = {03,12} });
des.object("diamond", 69, 04)
des.object("diamond", {68, 04})
des.object({ id = "egg", x = 05, y = 04, montype = "yellow dragon" });
des.object({ id = "egg", x = 06, y = 04, montype = "yellow dragon", laid_by_you = true });
des.object({ id = "corpse", montype = "valkyrie" })
des.object({ id = "statue", montype = "C", historic = true, male = true });
des.object({ id = "statue", montype = "C", historic = true, female = true });
des.object({ id = "chest", buried = true, locked = true,
contents = function()
des.object();
des.object("*")
des.object({ class = "%" });
des.object({ id = "statue", contents=0 })
end
});
des.object({ id = "chest", greased = true, broken = true, contents = 0 });
des.object({ id = "chest", trapped = 1, broken = true, contents = 0 });
des.object({ id = "oil lamp", lit = 1 });
des.object({ id = "silver dagger", spe = 127, buc = "cursed" });
des.object({ id = "silver dagger", spe = -127, buc = "blessed" });
des.object({ id = "bamboo arrow", quantity = 100 });
des.object({ id = "leather armor", eroded = 1 });
des.object({ id = "probing", recharged = 2, spe = 3 });
des.object({ name = "Random object" });
des.object({ class = "*", name = "Random stone" });
des.object({ id ="broadsword", name = "Dragonbane" })
des.reset_level();
des.level_init();
end
function test_level_flags()
des.level_flags("noteleport")
des.level_flags("noteleport", "hardfloor", "nommap", "shortsighted", "arboreal")
des.level_flags("mazelevel", "shroud", "graveyard", "icedpools", "corrmaze")
des.level_flags("premapped", "solidify", "inaccessibles")
end
function test_engraving()
des.engraving({02,04},"engrave","Trespassers will be persecuted!")
des.engraving({ x = 1, y = 2, type = "burn", text = "Elbereth" });
des.engraving({ type = "dust", text = "X marks the spot." })
des.engraving({ text = "Foobar" })
des.engraving({ type = "mark", text = "X" })
des.engraving({ type = "blood", text = "redrum" })
end
function test_mineralize()
des.mineralize();
des.mineralize({ gem_prob = 1, gold_prob = 10, kelp_moat = 25, kelp_pool = 100 })
end
function test_grave()
des.grave();
des.grave({ text = "Lil Miss Marker" });
des.grave({ x = 40, y = 11 });
des.grave({ x = 41, y = 12, text = "Bongo" });
des.grave({ x = 42, y = 13, text = "" });
end
function test_altar()
des.altar();
des.altar({ x = 44, y = 20 });
des.altar({ coord = {46, 20 } });
des.altar({ coord = {48, 20 }, type = "altar", align = "law" });
des.altar({ coord = {50, 20 }, type = "shrine", align = "noalign" });
des.altar({ coord = {52, 20 }, type = "sanctum", align = "coaligned" });
end
function test_map()
des.map([[
TTT
LTL
LTL]])
des.map({ x = 60, y = 5, map = [[
FFF
F.F
FFF]] })
des.map({ halign = "left", valign = "bottom", map = [[
III
.I.
III]] })
end
function test_feature()
des.feature("fountain", 40, 08);
des.feature("sink", {41, 08});
des.feature({ type = "pool", x = 42, y = 08 });
end
function test_gold()
des.gold({ amount = 999, x = 40, y = 07 });
end
function test_trap()
des.trap("pit", 41, 06);
des.trap("level teleport", {42, 06});
des.trap({ type = "hole", x = 43, y = 06 });
des.trap({ type = "hole", coord = {44, 06} });
des.trap();
des.trap("rust");
end
function test_wall_prop()
des.wall_property({ x1 = 0, y1 = 0, x2 = 78, y2 = 20, property = "nondiggable" });
des.wall_property({ region={0,0, 78,20}, property = "nondiggable" });
des.non_diggable();
des.non_diggable(selection.area(5,5, 15, 15));
des.non_passwall();
des.non_passwall(selection.area(5,5, 15, 15));
end
function test_wallify()
des.wallify();
des.wallify({ x1 = 0, y1 = 0, x2 = 78, y2 = 20 });
end
function test_teleport_region()
des.teleport_region({ region = {69,00,79,20} })
des.teleport_region({ region = {69,00,79,20}, dir="up" })
des.teleport_region({ region = {69,00,79,20}, region_islev=1, dir="up" })
des.teleport_region({ region = {01,00,10,20}, region_islev=1, exclude={1,1,61,15}, dir="down" })
des.teleport_region({ region = {01,00,10,20}, region_islev=1, exclude={1,1,61,15}, exclude_islev=1 })
end
function test_region()
des.region(selection.area(08,03,54,03),"unlit")
des.region(selection.area(56,02,60,03),"lit")
des.region({ region={16,05, 25,06}, lit=1, type="barracks", prefilled=0 })
des.region({ region={1,5, 3,7}, lit=1, irregular=true, prefilled=true, joined=false })
end
function test_door()
des.door("nodoor", 12,12);
des.door({ x = 13, y = 12, state = "open" });
des.room({ type = "graveyard", contents = function()
des.door({ wall = "north", pos = 1 });
des.door({ wall = "random", state = "locked" });
end
});
end
function test_mazewalk()
des.reset_level();
des.level_init({ style = "mazegrid", bg ="-" });
des.mazewalk(01,10,"east")
des.reset_level();
des.level_init({ style = "mazegrid", bg ="-" });
des.mazewalk({ x=2,y=10, dir="north", typ="L", stocked=true });
end
function test_room()
des.reset_level();
des.level_init({ style = "solidfill", fg=" " });
des.room({ type = " ordinary", lit = 1,
x=3, y=3, xalign="center", yalign="center",
w=11, h=9, contents = function()
des.room({ x=4, y=3, w=3,h=3 });
end
});
des.room();
des.room({ contents = function()
des.object();
des.monster();
end
});
des.random_corridors();
end
function test_stair()
des.reset_level();
des.level_init();
des.stair("up");
des.stair("down", 4, 7);
des.stair({ dir = "down", x = 5, y = 7 });
des.stair({ dir = "down", coord = {6, 7} });
end
function test_ladder()
des.reset_level();
des.level_init();
des.ladder("up");
des.ladder("down", 4, 7);
des.ladder({ dir = "down", x = 5, y = 7 });
des.ladder({ dir = "down", coord = {6, 7} });
end
function test_terrain()
des.reset_level();
des.level_init();
des.terrain(2, 2, "L");
is_map_at(2,2, "L");
des.terrain({6,7}, "L");
is_map_at(6,7, "L");
des.terrain({ x = 5, y = 5, typ = "L" });
is_map_at(5,5, "L");
-- TODO: allow lit = false
-- des.terrain({ x = 5, y = 5, typ = ".", lit = false });
-- is_map_at(5,5, ".", false);
des.terrain({ x = 5, y = 5, typ = ".", lit = 1 });
is_map_at(5,5, ".", true);
des.terrain({ x = 5, y = 5, typ = " ", lit = 0 });
is_map_at(5,5, " ", false);
des.terrain({ selection = selection.area(4,4, 6,6), typ = "L", lit = 0 });
for x = 4,6 do
for y = 4,6 do
is_map_at(x,y, "L", true);
end
end
des.terrain(selection.area(2,2, 4,4), "T");
for x = 2,4 do
for y = 2,4 do
is_map_at(x,y, "T");
end
end
end
function test_replace_terrain()
des.replace_terrain({ x1=1, y1=1, x2=70,y2=19, fromterrain=".", toterrain="I", lit=1 });
des.replace_terrain({ x1=1, y1=1, x2=70,y2=19, fromterrain=".", toterrain="I", chance=50 });
des.replace_terrain({ region={1,1, 70,19}, fromterrain=".", toterrain="L", chance=25 });
end
function test_corridor()
des.reset_level();
des.level_init({ style = "solidfill", fg=" " });
des.room({ x=2, y=2, xalign="center", yalign="center", w=4, h=4,
contents = function()
des.door({ wall = "south", pos = 2 });
end
});
des.room({ x=1, y=3, xalign="center", yalign="center", w=6, h=6,
contents = function()
des.door({ wall = "north", pos = 1 });
end
});
des.corridor({ srcroom=0, srcwall="south", srcdoor=0, destroom=1, destwall="north", destdoor=0 });
end
function run_tests()
test_level_init();
test_message();
test_monster();
test_object();
test_level_flags();
test_engraving();
test_mineralize();
test_grave();
test_altar();
test_feature();
test_gold();
test_trap();
test_door();
test_map();
test_wall_prop();
test_wallify();
test_teleport_region();
test_region();
test_mazewalk();
test_room();
test_stair();
test_ladder();
test_terrain();
test_replace_terrain();
test_corridor();
des.reset_level();
des.level_init();
end
run_tests();

75
test/test_lev.lua Normal file
View File

@@ -0,0 +1,75 @@
-- Test all of the special levels
local special_levels = {
"air",
"asmodeus",
"astral",
"baalz",
"bigrm-10",
"bigrm-1",
"bigrm-2",
"bigrm-3",
"bigrm-4",
"bigrm-5",
"bigrm-6",
"bigrm-7",
"bigrm-8",
"bigrm-9",
"castle",
"earth",
"fakewiz1",
"fakewiz2",
"fire",
"juiblex",
"knox",
"medusa-1",
"medusa-2",
"medusa-3",
"medusa-4",
"minefill",
"minend-1",
"minend-2",
"minend-3",
"minetn-1",
"minetn-2",
"minetn-3",
"minetn-4",
"minetn-5",
"minetn-6",
"minetn-7",
"oracle",
"orcus",
"sanctum",
"soko1-1",
"soko1-2",
"soko2-1",
"soko2-2",
"soko3-1",
"soko3-2",
"soko4-1",
"soko4-2",
"tower1",
"tower2",
"tower3",
"valley",
"water",
"wizard1",
"wizard2",
"wizard3"
}
local roles = { "Arc", "Bar", "Cav", "Hea", "Kni", "Mon", "Pri", "Ran", "Rog", "Sam", "Tou", "Val", "Wiz" }
local questlevs = { "fila", "filb", "goal", "loca", "strt" }
for _,role in ipairs(roles) do
for _,qlev in ipairs(questlevs) do
local lev = role .. "-" .. qlev
table.insert(special_levels, lev)
end
end
for _,lev in ipairs(special_levels) do
des.reset_level();
require(lev)
end

85
test/test_sel.lua Normal file
View File

@@ -0,0 +1,85 @@
-- Test the selection
function test_selection()
local sel = selection.new();
-- test set & get
local ret = sel:get(1,2)
if ret == 1 then
error("sel:get returned " .. ret .. " instead of 0");
end
sel:set(1, 2);
ret = sel:get(1, 2);
if ret ~= 1 then
error("sel:get returned " .. ret .. " instead of 1");
end
local x,y = sel:rndcoord(1);
if x ~= 1 or y ~= 2 then
error("sel:rndcoord returned unset coordinate");
end
x,y = sel:rndcoord(1);
if x ~= -2 and y ~= -1 then
error("sel:rndcoord returned (" .. x .. "," .. y .. ") coordinate");
end
-- OO style
sel:negate();
sel:percentage(50);
sel:rndcoord(1);
sel:line(1,2, 50,20);
sel:randline(1,2, 50,20, 7);
sel:rect(1,2, 7,8);
sel:fillrect(1,2, 7,8);
sel:area(1,2, 7,8);
sel:grow();
sel:filter_mapchar(' ');
sel:floodfill(1,1);
sel:circle(40, 10, 9);
sel:circle(40, 10, 9, 1);
sel:ellipse(40, 10, 20, 8);
sel:ellipse(40, 10, 20, 8, 1);
-- variable as param
selection.get(sel, 1, 2);
selection.set(sel, 1, 2);
selection.negate(sel);
selection.percentage(sel, 50);
selection.rndcoord(sel, 1);
selection.line(sel, 1,2, 50,20);
selection.randline(sel, 1,2, 50,20, 7);
selection.rect(sel, 1,2, 7,8);
selection.fillrect(sel, 1,2, 7,8);
selection.area(sel, 1,2, 7,8);
selection.grow(sel);
selection.filter_mapchar(sel, ' ');
selection.floodfill(sel, 1,1);
selection.circle(sel, 40, 10, 9);
selection.circle(sel, 40, 10, 9, 1);
selection.ellipse(sel, 40, 10, 20, 8);
selection.ellipse(sel, 40, 10, 20, 8, 1);
-- initializers
selection.set(1, 2);
selection.negate();
selection.line(1,2, 50,20);
selection.randline(1,2, 50,20, 7);
selection.rect(1,2, 7,8);
selection.fillrect(1,2, 7,8);
selection.area(1,2, 7,8);
selection.floodfill(1,1);
selection.circle(40, 10, 9);
selection.circle(40, 10, 9, 1);
selection.ellipse(40, 10, 20, 8);
selection.ellipse(40, 10, 20, 8, 1);
local sel2 = selection.clone(sel);
local sel3 = sel2:clone();
end -- selection_tests()
test_selection();

88
test/test_src.lua Normal file
View File

@@ -0,0 +1,88 @@
-- Test different src functions
local tests = {
makeplural = {
stamen = "stamens",
caveman = "cavemen",
zorkmid = "zorkmids",
shaman = "shamans",
algae = "algae",
larvae = "larvae",
woman = "women",
nerf = "nerfs",
serf = "serfs",
knife = "knives",
baluchitherium = "baluchitheria",
mycelium = "mycelia",
hyphae = "hyphae",
amoeba = "amoebae",
vertebra = "vertebrae",
fungus = "fungi",
homunculus = "homunculi",
bus = "buses",
lotus = "lotuses",
wumpus = "wumpuses",
nemesis = "nemeses",
matzoh = "matzot",
matzah = "matzot",
gateau = "gateaus",
gateaux = "gateauxes",
bordeau = "bordeaus",
ox = "oxen",
VAX = "VAXES",
goose = "geese",
tomato = "tomatoes",
potato = "potatoes",
dingo = "dingoes",
fox = "foxes",
cookie = "cookies",
["bunch of grapes"] = "bunches of grapes",
candelabrum = "candelabra",
deer = "deer",
fish = "fish",
foot = "feet",
tuna = "tuna",
manes = "manes",
ninja = "ninja",
sheep = "sheep",
ronin = "ronin",
roshi = "roshi",
shito = "shito",
tengu = "tengu",
vortex = "vortices",
child = "children",
scale = "scales",
tooth = "teeth",
gauntlet = "gauntlets",
["gauntlet of power"] = "gauntlets of power",
priestess = "priestesses",
valkyrie = "valkyries",
hoof = "hooves",
louse = "lice",
mouse = "mice",
["slice of cake"] = "slices of cake",
},
an = {
a = "an a",
b = "a b",
["the foo"] = "the foo",
["molten lava"] = "molten lava",
["iron bars"] = "iron bars",
ice = "ice",
unicorn = "a unicorn",
uranium = "a uranium",
["one-eyed"] = "a one-eyed",
candy = "a candy",
eucalyptus = "a eucalyptus",
}
}
for func, fval in pairs(tests) do
for instr, outstr in pairs(fval) do
local ret = nh[func](instr)
if ret ~= outstr then
error(func .. "(\"" .. instr .. "\") != \"" .. outstr .. "\" (returned \"" .. ret .. "\") instead")
end
end
end