2012-05-23 21:42:14 +02:00
|
|
|
#include <platform.h>
|
|
|
|
|
|
|
|
#include <kernel/types.h>
|
2012-05-24 09:56:54 +02:00
|
|
|
#include <kernel/faction.h>
|
2012-05-25 21:46:00 +02:00
|
|
|
#include <kernel/item.h>
|
2012-05-23 21:42:14 +02:00
|
|
|
#include <kernel/magic.h>
|
2012-05-25 21:46:00 +02:00
|
|
|
#include <kernel/region.h>
|
2012-05-23 21:42:14 +02:00
|
|
|
#include <kernel/spell.h>
|
|
|
|
#include <kernel/spellbook.h>
|
2012-05-25 21:46:00 +02:00
|
|
|
#include <kernel/unit.h>
|
|
|
|
#include <kernel/pool.h>
|
2012-05-23 21:42:14 +02:00
|
|
|
#include <util/quicklist.h>
|
|
|
|
#include <util/language.h>
|
|
|
|
|
|
|
|
#include <cutest/CuTest.h>
|
|
|
|
#include <tests.h>
|
|
|
|
|
|
|
|
void test_updatespells(CuTest * tc)
|
|
|
|
{
|
2012-05-24 09:56:54 +02:00
|
|
|
faction * f;
|
2012-05-23 21:42:14 +02:00
|
|
|
spell * sp;
|
2012-05-24 05:22:12 +02:00
|
|
|
spellbook *book = 0;
|
2012-05-23 21:42:14 +02:00
|
|
|
|
|
|
|
test_cleanup();
|
|
|
|
|
|
|
|
f = test_create_faction(0);
|
|
|
|
sp = create_spell("testspell", 0);
|
|
|
|
CuAssertPtrNotNull(tc, sp);
|
2012-05-24 05:22:12 +02:00
|
|
|
|
|
|
|
book = create_spellbook("spells");
|
|
|
|
CuAssertPtrNotNull(tc, book);
|
|
|
|
spellbook_add(book, sp, 1);
|
2012-05-23 21:42:14 +02:00
|
|
|
|
2012-05-25 05:35:13 +02:00
|
|
|
CuAssertPtrEquals(tc, 0, f->spellbook);
|
2012-05-24 09:56:54 +02:00
|
|
|
pick_random_spells(f, 1, book, 1);
|
|
|
|
CuAssertPtrNotNull(tc, f->spellbook);
|
|
|
|
CuAssertIntEquals(tc, 1, ql_length(f->spellbook->spells));
|
|
|
|
CuAssertPtrNotNull(tc, spellbook_get(f->spellbook, sp));
|
2012-05-23 21:42:14 +02:00
|
|
|
}
|
|
|
|
|
2012-05-24 05:22:12 +02:00
|
|
|
void test_spellbooks(CuTest * tc)
|
|
|
|
{
|
|
|
|
spell *sp;
|
|
|
|
spellbook *herp, *derp;
|
|
|
|
spellbook_entry *entry;
|
|
|
|
const char * sname = "herpderp";
|
|
|
|
test_cleanup();
|
|
|
|
|
|
|
|
herp = get_spellbook("herp");
|
|
|
|
derp = get_spellbook("derp");
|
|
|
|
CuAssertPtrNotNull(tc, herp);
|
|
|
|
CuAssertPtrNotNull(tc, derp);
|
|
|
|
CuAssertTrue(tc, derp!=herp);
|
|
|
|
CuAssertStrEquals(tc, "herp", herp->name);
|
|
|
|
CuAssertStrEquals(tc, "derp", derp->name);
|
|
|
|
|
|
|
|
sp = create_spell(sname, 0);
|
|
|
|
spellbook_add(herp, sp, 1);
|
|
|
|
CuAssertPtrNotNull(tc, sp);
|
2012-05-24 09:56:54 +02:00
|
|
|
entry = spellbook_get(herp, sp);
|
2012-05-24 05:22:12 +02:00
|
|
|
CuAssertPtrNotNull(tc, entry);
|
|
|
|
CuAssertPtrEquals(tc, sp, entry->sp);
|
2012-05-24 09:56:54 +02:00
|
|
|
/* CuAssertPtrEquals(tc, 0, spellbook_get(derp, sname)); */
|
2012-05-24 05:22:12 +02:00
|
|
|
|
|
|
|
test_cleanup();
|
|
|
|
herp = get_spellbook("herp");
|
|
|
|
CuAssertPtrNotNull(tc, herp);
|
2012-05-24 09:56:54 +02:00
|
|
|
/* CuAssertPtrEquals(tc, 0, spellbook_get(herp, sname)); */
|
2012-05-24 05:22:12 +02:00
|
|
|
}
|
|
|
|
|
2012-05-25 21:46:00 +02:00
|
|
|
void test_pay_spell(CuTest * tc)
|
|
|
|
{
|
|
|
|
spell *sp;
|
|
|
|
unit * u;
|
|
|
|
faction * f;
|
|
|
|
region * r;
|
|
|
|
|
|
|
|
test_cleanup();
|
|
|
|
test_create_world();
|
|
|
|
r = findregion(0, 0);
|
|
|
|
f = test_create_faction(0);
|
|
|
|
u = test_create_unit(f, r);
|
|
|
|
CuAssertPtrNotNull(tc, u);
|
|
|
|
|
|
|
|
sp = create_spell("testspell", 0);
|
|
|
|
CuAssertPtrNotNull(tc, sp);
|
|
|
|
|
|
|
|
sp->components = (spell_component *) calloc(4, sizeof(spell_component));
|
|
|
|
sp->components[0].amount = 1;
|
|
|
|
sp->components[0].type = rt_find("money");
|
|
|
|
sp->components[0].cost = SPC_FIX;
|
|
|
|
sp->components[1].amount = 1;
|
|
|
|
sp->components[1].type = rt_find("aura");
|
|
|
|
sp->components[1].cost = SPC_LEVEL;
|
|
|
|
sp->components[2].amount = 1;
|
|
|
|
sp->components[2].type = rt_find("horse");
|
|
|
|
sp->components[2].cost = SPC_LINEAR;
|
|
|
|
|
|
|
|
set_level(u, SK_MAGIC, 5);
|
|
|
|
unit_add_spell(u, 0, sp);
|
|
|
|
|
|
|
|
change_resource(u, rt_find("money"), 1); /* fix costs of 1 money */
|
|
|
|
change_resource(u, rt_find("aura"), 3); /* leveled costs of 3 money */
|
|
|
|
change_resource(u, rt_find("horse"), 3); /* leveled costs of 3 money */
|
|
|
|
|
|
|
|
pay_spell(u, sp, 3, 1);
|
|
|
|
CuAssertIntEquals(tc, 0, get_resource(u, rt_find("money")));
|
|
|
|
CuAssertIntEquals(tc, 0, get_resource(u, rt_find("aura")));
|
|
|
|
CuAssertIntEquals(tc, 0, get_resource(u, rt_find("horse")));
|
|
|
|
}
|
|
|
|
|
2012-05-23 21:42:14 +02:00
|
|
|
CuSuite *get_magic_suite(void)
|
|
|
|
{
|
|
|
|
CuSuite *suite = CuSuiteNew();
|
|
|
|
SUITE_ADD_TEST(suite, test_updatespells);
|
2012-05-24 05:22:12 +02:00
|
|
|
SUITE_ADD_TEST(suite, test_spellbooks);
|
2012-05-25 21:46:00 +02:00
|
|
|
SUITE_ADD_TEST(suite, test_pay_spell);
|
2012-05-23 21:42:14 +02:00
|
|
|
return suite;
|
|
|
|
}
|