server/src/gamecode/market_test.c

87 lines
1.9 KiB
C
Raw Normal View History

#include "platform.h"
#include "market.h"
#include "tests.h"
#include <kernel/building.h>
#include <kernel/config.h>
#include <kernel/faction.h>
#include <kernel/item.h>
#include <kernel/race.h>
#include <kernel/region.h>
2010-08-08 10:06:34 +02:00
#include <kernel/terrain.h>
#include <kernel/unit.h>
#include <util/language.h>
#include <cutest/CuTest.h>
#include <tests.h>
#include <stdlib.h>
2010-08-08 10:06:34 +02:00
static void test_market_curse(CuTest * tc)
2011-03-07 08:02:35 +01:00
{
region *r;
building *b;
unit *u;
faction *f;
2010-08-08 10:06:34 +02:00
int x, y;
2011-03-07 08:02:35 +01:00
const char *names[4] = { "herb", "herbs", "balm", "balms" };
const terrain_type *terrain;
resource_type *hres, *lres;
item_type *htype, *ltype;
luxury_type *lux;
2011-03-07 08:02:35 +01:00
building_type *btype;
2010-08-08 10:06:34 +02:00
free_gamedata();
test_cleanup();
test_create_world();
hres = new_resourcetype(names, 0, RTF_ITEM | RTF_POOLED);
htype = new_itemtype(hres, ITF_HERB, 0, 0);
lres = new_resourcetype(names + 2, 0, RTF_ITEM | RTF_POOLED);
ltype = new_itemtype(lres, ITF_NONE, 0, 0);
lux = new_luxurytype(ltype, 0);
2010-08-08 10:06:34 +02:00
set_param(&global.parameters, "rules.region_owners", "1");
btype = calloc(sizeof(building_type), 1);
btype->_name = "market";
bt_register(btype);
terrain = get_terrain("plain");
2010-08-08 10:06:34 +02:00
2011-03-07 08:02:35 +01:00
for (x = 0; x != 3; ++x) {
for (y = 0; y != 3; ++y) {
r = findregion(x, y);
if (!r) {
r = test_create_region(x, y, terrain);
} else {
terraform_region(r, terrain);
}
2010-08-08 10:06:34 +02:00
rsetpeasants(r, 5000);
r_setdemand(r, lux, 0);
rsetherbtype(r, htype);
}
}
r = findregion(1, 1);
b = test_create_building(r, btype);
2010-08-08 10:06:34 +02:00
b->flags |= BLD_WORKING;
b->size = b->type->maxsize;
f = test_create_faction(0);
u = test_create_unit(f, r);
u_set_building(u, b);
2010-08-08 10:06:34 +02:00
do_markets();
CuAssertIntEquals(tc, 70, i_get(u->items, htype));
CuAssertIntEquals(tc, 35, i_get(u->items, ltype));
}
2011-03-07 08:02:35 +01:00
CuSuite *get_market_suite(void)
2010-08-08 10:06:34 +02:00
{
2011-03-07 08:02:35 +01:00
CuSuite *suite = CuSuiteNew();
SUITE_ADD_TEST(suite, test_market_curse);
2010-08-08 10:06:34 +02:00
return suite;
}