server/scripts/tests/items.lua
Enno Rehling 4c67e0603b remove attribs from rtype (it's only in rtype->construction that we use it?)
test to verify that mine bonus for iron works as advertised.
change the oder of arguments for faction.create (race is the only thing not optional).
2017-03-17 22:46:10 +01:00

169 lines
5.3 KiB
Lua

require "lunit"
module("tests.items", package.seeall, lunit.testcase )
function setup()
eressea.free_game()
eressea.settings.set("nmr.timeout", "0")
eressea.settings.set("rules.food.flags", "4")
eressea.settings.set("rules.ship.storms", "0")
eressea.settings.set("rules.encounters", "0")
eressea.settings.set("magic.regeneration.enable", "0")
end
function test_mistletoe_okay()
local r = region.create(0, 0, "plain")
local f = faction.create("human", "noreply@eressea.de", "de")
local u = unit.create(f, r, 1)
turn_begin()
u:add_item('mistletoe', 2)
u:clear_orders()
u:add_order("BENUTZEN 1 Mistelzweig")
assert_false(u:has_attrib('fleechance'))
turn_process()
assert_true(u:has_attrib('fleechance'))
assert_equal(1, u:get_item('mistletoe'))
assert_equal(1, f:count_msg_type('use_item'))
turn_end()
end
function test_mistletoe_fail()
local r = region.create(0, 0, "plain")
local f = faction.create("human", "noreply@eressea.de", "de")
local u = unit.create(f, r, 1)
turn_begin()
u:add_item('mistletoe', 1)
u:clear_orders()
u:add_order("BENUTZEN 1 Mistelzweig")
assert_false(u:has_attrib('fleechance'))
u.number = 2
turn_process()
assert_false(u:has_attrib('fleechance'))
assert_equal(1, u:get_item('mistletoe'))
assert_equal(1, f:count_msg_type('use_singleperson'))
turn_end()
end
function test_dreameye()
local r = region.create(0, 0, "plain")
local f = faction.create("human", "noreply@eressea.de", "de")
local u = unit.create(f, r, 1)
u:add_item("dreameye", 2)
u:clear_orders()
u:add_order("BENUTZEN 1 Traumauge")
assert_nil(u:get_curse('skillmod'))
turn_begin()
turn_process()
assert_not_nil(u:get_curse('skillmod'))
assert_equal(1, u:get_item("dreameye"))
assert_equal(1, f:count_msg_type('use_tacticcrystal'))
turn_end()
assert_nil(u:get_curse('skillmod'))
end
function test_manacrystal()
local r = region.create(0, 0, "plain")
local f = faction.create("human", "noreply@eressea.de", "de")
local u = unit.create(f, r, 1)
u:add_item("manacrystal", 2)
u:clear_orders()
u.magic = "gwyrrd"
u:set_skill('magic', 1)
u.aura = 0
u:add_order("BENUTZEN 1 Astralkristall")
turn_begin()
turn_process()
assert_equal(1, u:get_item("manacrystal"))
assert_equal(25, u.aura)
assert_equal(1, f:count_msg_type('manacrystal_use'))
turn_end()
end
function test_skillpotion()
local r = region.create(0, 0, "plain")
local f = faction.create("human", "noreply@eressea.de", "de")
local u = unit.create(f, r, 1)
u:add_item("skillpotion", 2)
u:clear_orders()
u:add_order("BENUTZEN 1 Talenttrunk")
process_orders()
assert_equal(1, u:get_item("skillpotion"))
assert_equal(1, f:count_msg_type('skillpotion_use'))
end
function test_studypotion()
local r = region.create(0, 0, "plain")
local f = faction.create("human", "noreply@eressea.de", "de")
local u = unit.create(f, r, 1)
turn_begin()
u:add_item("studypotion", 2)
u:clear_orders()
u:add_order("LERNE Unterhaltung")
u:add_order("BENUTZEN 1 Lerntrank")
turn_process()
-- cannot sense the "learning" attribute, because study_cmd
-- removes it during processing :(
assert_equal(1, u:get_item("studypotion"))
turn_end()
end
function test_antimagic()
local r = region.create(0, 0, "plain")
local f = faction.create("human", "noreply@eressea.de", "de")
local u = unit.create(f, r, 1)
turn_begin()
u:add_item("antimagic", 2)
u:clear_orders()
u:add_order("BENUTZEN 1 Antimagiekristall")
assert_equal(nil, r:get_curse('antimagiczone'))
turn_process()
assert_equal(5, r:get_curse('antimagiczone'))
assert_equal(1, r:count_msg_type('use_antimagiccrystal'))
assert_equal(1, u:get_item("antimagic"))
turn_end()
assert_equal(5, r:get_curse('antimagiczone')) -- haelt zwei wochen
turn_end() -- hack: age the curse again
assert_equal(nil, r:get_curse('antimagiczone'))
end
function test_ointment()
local r = region.create(0, 0, "plain")
local f = faction.create("human", "noreply@eressea.de", "de")
local u = unit.create(f, r, 1)
local hp = u.hp
u.hp = 1
u:add_item("ointment", 1)
u:clear_orders()
u:add_order("BENUTZEN 1 Wundsalbe")
process_orders()
assert_equal(0, u:get_item("ointment"))
assert_equal(1, f:count_msg_type('usepotion'))
assert_equal(hp, u.hp)
end
function test_bloodpotion_demon()
local r = region.create(0, 0, "plain")
local f = faction.create("demon", "noreply@eressea.de", "de")
local u = unit.create(f, r, 1)
u:add_item("peasantblood", 1)
u:clear_orders()
u:add_order("BENUTZEN 1 Bauernblut")
process_orders()
assert_equal(0, u:get_item("peasantblood"))
assert_equal(1, f:count_msg_type('usepotion'))
assert_equal("demon", u.race)
end
function test_bloodpotion_other()
local r = region.create(0, 0, "plain")
local f = faction.create("human", "noreply@eressea.de", "de")
local u = unit.create(f, r, 1)
u:add_item("peasantblood", 1)
u:clear_orders()
u:add_order("BENUTZEN 1 Bauernblut")
process_orders()
assert_equal(0, u:get_item("peasantblood"))
assert_equal(1, f:count_msg_type('usepotion'))
assert_equal("smurf", u.race)
end