#include #include "market.h" #include "tests.h" #include #include #include #include #include #include #include #include #include #include #include #include #include static void test_market_curse(CuTest * tc) { region *r; building *b; unit *u; faction *f; int x, y; const terrain_type *terrain; item_type *htype, *ltype; luxury_type *lux; building_type *btype; test_setup(); htype = test_create_itemtype("herb"); htype->flags |= ITF_HERB; htype->rtype->flags |= (RTF_ITEM | RTF_POOLED); ltype = test_create_itemtype("balm"); ltype->rtype->flags |= (RTF_ITEM | RTF_POOLED); lux = new_luxurytype(ltype, 0); config_set("rules.region_owners", "1"); btype = (building_type *)calloc(1, sizeof(building_type)); btype->_name = strdup("market"); bt_register(btype); terrain = get_terrain("plain"); 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); } rsetpeasants(r, 5000); r_setdemand(r, lux, 0); rsetherbtype(r, htype); } } r = findregion(1, 1); b = test_create_building(r, btype); b->flags |= BLD_MAINTAINED; b->size = b->type->maxsize; f = test_create_faction(0); u = test_create_unit(f, r); u_set_building(u, b); do_markets(); CuAssertIntEquals(tc, 70, i_get(u->items, htype)); CuAssertIntEquals(tc, 35, i_get(u->items, ltype)); test_cleanup(); } static void test_rc_trade(CuTest *tc) { race *rc; test_setup(); rc = test_create_race("human"); CuAssertIntEquals(tc, 1000, rc_luxury_trade(rc)); CuAssertIntEquals(tc, 500, rc_herb_trade(rc)); rc_set_param(rc, "luxury_trade", "100"); rc_set_param(rc, "herb_trade", "50"); CuAssertIntEquals(tc, 100, rc_luxury_trade(rc)); CuAssertIntEquals(tc, 50, rc_herb_trade(rc)); test_cleanup(); } CuSuite *get_market_suite(void) { CuSuite *suite = CuSuiteNew(); SUITE_ADD_TEST(suite, test_market_curse); SUITE_ADD_TEST(suite, test_rc_trade); return suite; }