From b41049da5325d90318807485d8994df04decc43f Mon Sep 17 00:00:00 2001 From: Steffen Mecke Date: Wed, 6 May 2015 17:36:20 +0200 Subject: [PATCH] test good/bad dreams --- src/CMakeLists.txt | 3 +- src/kernel/unit.test.c | 18 +++++++--- src/spells.h | 7 ++++ src/spells.test.c | 78 ++++++++++++++++++++++++++++++++++++++++++ src/test_eressea.c | 1 + 5 files changed, 101 insertions(+), 6 deletions(-) create mode 100644 src/spells.test.c diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 44d781db3..9e1a7bfca 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -177,8 +177,9 @@ set(TESTS_SRC market.test.c move.test.c skill.test.c - upkeep.test.c + spells.test.c spy.test.c + upkeep.test.c ${ATTRIBUTES_TESTS} ${UTIL_TESTS} ${KERNEL_TESTS} diff --git a/src/kernel/unit.test.c b/src/kernel/unit.test.c index 9583ce9bd..7f281fc36 100644 --- a/src/kernel/unit.test.c +++ b/src/kernel/unit.test.c @@ -1,13 +1,20 @@ #include #include +#include +#include +#include +#include +#include +#include +#include #include #include -#include "alchemy.h" -#include "faction.h" +#include +#include +#include +#include +#include #include "unit.h" -#include "item.h" -#include "race.h" -#include "region.h" #include #include @@ -232,6 +239,7 @@ static void test_default_name(CuTest *tc) { test_cleanup(); } + CuSuite *get_unit_suite(void) { CuSuite *suite = CuSuiteNew(); diff --git a/src/spells.h b/src/spells.h index a23558e96..65270a164 100644 --- a/src/spells.h +++ b/src/spells.h @@ -14,6 +14,10 @@ #ifndef H_SPL_SPELLS #define H_SPL_SPELLS + +#include "magic.h" + + #ifdef __cplusplus extern "C" { #endif @@ -26,6 +30,9 @@ extern "C" { void register_spells(void); void set_spelldata(struct spell *sp); + int sp_baddreams(castorder * co); + int sp_gooddreams(castorder * co); + #define ACTION_RESET 0x01 /* reset the one-time-flag FFL_SELECT (on first pass) */ #define ACTION_CANSEE 0x02 /* to people who can see the actor */ #define ACTION_CANNOTSEE 0x04 /* to people who can not see the actor */ diff --git a/src/spells.test.c b/src/spells.test.c new file mode 100644 index 000000000..ff67dd58d --- /dev/null +++ b/src/spells.test.c @@ -0,0 +1,78 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "spells.h" + +#include +#include + +#include +#include +#include +#include + + +static struct castorder *test_create_castorder(castorder *order, unit *u, const char *name, int level, float force, int range) { + struct locale * lang; + spell *sp; + + lang = get_or_create_locale("en"); + sp = create_spell(name, 0); + return order = create_castorder(order, u, NULL, sp, u->region, level, force, range, create_order(K_CAST, lang, ""), NULL); +} + +static void test_dreams(CuTest *tc) { + struct region *r; + struct faction *f1, *f2; + unit *u1, *u2; + int level; + castorder order; + + test_cleanup(); + test_create_world(); + r=findregion(0, 0); + f1 = test_create_faction(test_create_race("human")); + f2 = test_create_faction(test_create_race("human")); + u1 = test_create_unit(f1, r); + u2 = test_create_unit(f2, r); + + test_create_castorder(&order, u1, "goodreams", 10, 10., 0); + level = sp_gooddreams(&order); + CuAssertIntEquals(tc, 10, level); + + curse *curse = get_curse(r->attribs, ct_find("gbdream")); + CuAssertTrue(tc, curse && curse->duration > 1); + CuAssertTrue(tc, curse->effect == 1); + + a_age(&r->attribs); + + CuAssertIntEquals(tc, 1, get_modifier(u1, SK_MELEE, 11, r, false)); + CuAssertIntEquals(tc, 0, get_modifier(u2, SK_MELEE, 11, r, false)); + + test_create_castorder(&order, u1, "baddreams", 10, 10., 0); + level = sp_baddreams(&order); + CuAssertIntEquals(tc, 10, level); + + a_age(&r->attribs); + + CuAssertIntEquals(tc, 1, get_modifier(u1, SK_MELEE, 11, r, false)); + CuAssertIntEquals(tc, -1, get_modifier(u2, SK_MELEE, 11, r, false)); + + free_castorder(&order); + test_cleanup(); +} + +CuSuite *get_spells_suite(void) +{ + CuSuite *suite = CuSuiteNew(); + SUITE_ADD_TEST(suite, test_dreams); + return suite; +} diff --git a/src/test_eressea.c b/src/test_eressea.c index 5f6d380e7..9c8cfa8bc 100644 --- a/src/test_eressea.c +++ b/src/test_eressea.c @@ -71,6 +71,7 @@ int RunAllTests(void) RUN_TESTS(suite, spellbook); RUN_TESTS(suite, building); RUN_TESTS(suite, spell); + RUN_TESTS(suite, spells); RUN_TESTS(suite, ally); RUN_TESTS(suite, messages); /* gamecode */