building naming function configured from JSON (this needs work).

started writing tests for castles.
This commit is contained in:
Enno Rehling 2014-06-28 16:55:28 -07:00
parent ba53c90b9c
commit a48cca5db8
3 changed files with 66 additions and 0 deletions

View File

@ -133,6 +133,14 @@ void json_building(cJSON *json, building_type *bt) {
json_construction(child, &bt->construction); json_construction(child, &bt->construction);
} }
break; break;
case cJSON_String:
if (strcmp(child->string, "name")==0) {
bt->name = (const char *(*)(const struct building_type *,
const struct building *, int))get_function(child->valuestring);
break;
}
log_error_n("building %s contains unknown attribute %s", json->string, child->string);
break;
default: default:
log_error_n("building %s contains unknown attribute %s", json->string, child->string); log_error_n("building %s contains unknown attribute %s", json->string, child->string);
} }

57
tests/castles.lua Normal file
View File

@ -0,0 +1,57 @@
require "lunit"
module("tests.castles", package.seeall, lunit.testcase )
function setup()
eressea.game.reset()
eressea.config.reset()
eressea.settings.set("nmr.removenewbie", "0")
eressea.settings.set("nmr.timeout", "0")
eressea.settings.set("rules.ships.storms", "0")
conf = [[{
"races": {
"human" : {},
"halfling" : {}
},
"buildings" : {
"castle" : {
"name" : "castle_name",
"construction" : [
{ "maxsize" : 2 },
{ "maxsize" : 10 },
{ "maxsize" : 50 },
{ "maxsize" : 250 }
]
}
},
"terrains" : {
"plain": { "flags" : [ "land" ] }
},
"keywords" : {
"de" : {
"make" : "MACHEN"
}
}
}]]
assert(eressea.config.parse(conf)==0)
end
function disable_test_small_castles()
local r = region.create(0, 0, "plain")
local f1 = faction.create("test@eressea.de", "human", "de")
local u1 = unit.create(f1, r, 1)
local f2 = faction.create("test@eressea.de", "halfling", "de")
local u2 = unit.create(f2, r, 1)
u1:add_item("money", 10000)
local b = building.create(r, "castle")
u2.building = b
u1.building = b
b.owner = u2
assert_equal("site", b:get_typename(7))
assert_equal("fortification", b:get_typename(8))
b.owner = u1
assert_equal("site", b:get_typename(9))
assert_equal("fortification", b:get_typename(10))
end

View File

@ -3,6 +3,7 @@ require "tests.settings"
require "tests.config" require "tests.config"
require "tests.locale" require "tests.locale"
require "tests.regions" require "tests.regions"
require "tests.castles"
require "tests.ships" require "tests.ships"
require "tests.study" require "tests.study"
require "tests.movement" require "tests.movement"