From 929ee605e13ce0a07a0ee22cf212cb2853c04cf6 Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Wed, 9 Mar 2011 20:49:55 +0100 Subject: [PATCH] insects trying to land in glaciers should not damage ships (cf. #1729) --- res/config-example.xml | 3 +- scripts/example/modules.lua | 1 + scripts/tests/rules.lua | 98 +++++++++++++++++++++++++++++++++++++ 3 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 scripts/tests/rules.lua diff --git a/res/config-example.xml b/res/config-example.xml index 18ce55011..8a298e716 100644 --- a/res/config-example.xml +++ b/res/config-example.xml @@ -13,7 +13,8 @@ - + + diff --git a/scripts/example/modules.lua b/scripts/example/modules.lua index 9d62abb01..81b285902 100644 --- a/scripts/example/modules.lua +++ b/scripts/example/modules.lua @@ -2,6 +2,7 @@ require "example.rules" local srcpath = config.source_dir tests = { + srcpath .. '/example/scripts/tests/rules.lua', srcpath .. '/shared/scripts/tests/common.lua', srcpath .. '/shared/scripts/tests/bson.lua', } diff --git a/scripts/tests/rules.lua b/scripts/tests/rules.lua new file mode 100644 index 000000000..1ddb6d1fc --- /dev/null +++ b/scripts/tests/rules.lua @@ -0,0 +1,98 @@ +require "lunit" + +module("tests.rules", package.seeall, lunit.testcase) + +function setup() + free_game() + settings.set("nmr.removenewbie", "0") + settings.set("nmr.timeout", "0") + settings.set("NewbieImmunity", "0") +end + +function test_landing1() + local ocean = region.create(1, 0, "ocean") + local r = region.create(0, 0, "plain") + local f = faction.create("noreply@eressea.de", "insects", "de") + local f2 = faction.create("noreply@eressea.de", "human", "de") + local s = ship.create(ocean, "longboat") + local u1 = unit.create(f, ocean, 1) + local u2 = unit.create(f2, r, 1) + assert_not_nil(u2) + u1:add_item("money", 1000) + u2:add_item("money", 1000) + + u1.ship = s + u1:set_skill("sailing", 10) + u1:clear_orders() + u1:add_order("NACH w") + process_orders() + + assert_equal(r.id, u1.region.id) -- the plain case: okay +end + +function test_landing2() + local ocean = region.create(1, 0, "ocean") + local r = region.create(0, 0, "glacier") + local harbour = building.create(r, "harbour") + harbour.size = 25 + local f = faction.create("noreply@eressea.de", "human", "de") + local f2 = faction.create("noreply@eressea.de", "human", "de") + local s = ship.create(ocean, "longboat") + local u1 = unit.create(f, ocean, 1) + local u2 = unit.create(f2, r, 1) + assert_not_nil(u2) + u1:add_item("money", 1000) + u2:add_item("money", 1000) + + u1.ship = s + u1:set_skill("sailing", 10) + u1:clear_orders() + u1:add_order("NACH w") + process_orders() + + assert_equal(r.id, u1.region.id) -- glacier with harbour -- okay +end + +function test_landing3() + local ocean = region.create(1, 0, "ocean") + local r = region.create(0, 0, "glacier") + local f = faction.create("noreply@eressea.de", "human", "de") + local f2 = faction.create("noreply@eressea.de", "human", "de") + local s = ship.create(ocean, "longboat") + local u1 = unit.create(f, ocean, 1) + local u2 = unit.create(f2, r, 1) + assert_not_nil(u2) + u1:add_item("money", 1000) + u2:add_item("money", 1000) + + u1.ship = s + u1:set_skill("sailing", 10) + u1:clear_orders() + u1:add_order("NACH w") + process_orders() + + assert_equal(ocean.id, u1.region.id) -- cannot land in glacier without harbour +end + +function test_landing3() + local ocean = region.create(1, 0, "ocean") + local r = region.create(0, 0, "glacier") + local harbour = building.create(r, "harbour") + harbour.size = 25 + local f = faction.create("noreply@eressea.de", "insects", "de") + local f2 = faction.create("noreply@eressea.de", "human", "de") + local s = ship.create(ocean, "longboat") + local u1 = unit.create(f, ocean, 1) + local u2 = unit.create(f2, r, 1) + assert_not_nil(u2) + u1:add_item("money", 1000) + u2:add_item("money", 1000) + + u1.ship = s + u1:set_skill("sailing", 10) + u1:clear_orders() + u1:add_order("NACH w") + process_orders() + + assert_equal(ocean.id, u1.region.id) -- insects cannot land in glaciers +end