Move and remove test files
This commit is contained in:
377
test/test_des.lua
Normal file
377
test/test_des.lua
Normal 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
75
test/test_lev.lua
Normal 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
85
test/test_sel.lua
Normal 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
88
test/test_src.lua
Normal 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
|
||||
Reference in New Issue
Block a user