From dcf6c28b0e3b969fd7c80e39db6498e6c198b1cb Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Mon, 12 Oct 2015 13:27:39 +0200 Subject: [PATCH] testing all the error cases for PIRACY --- src/alchemy.test.c | 16 +++++----------- src/give.test.c | 4 +--- src/piracy.test.c | 30 +++++++++++++++++++++++------- src/tests.c | 5 +++++ src/tests.h | 1 + 5 files changed, 35 insertions(+), 21 deletions(-) diff --git a/src/alchemy.test.c b/src/alchemy.test.c index 7c01be81b..7e2e5b399 100644 --- a/src/alchemy.test.c +++ b/src/alchemy.test.c @@ -4,7 +4,6 @@ #include "move.h" #include -#include #include #include #include @@ -39,16 +38,14 @@ static void test_herbsearch(CuTest * tc) herbsearch(u, INT_MAX); CuAssertPtrNotNull(tc, test_find_messagetype(f->msgs, "error59")); - free_messagelist(f->msgs); - f->msgs = 0; + test_clear_messages(f); set_level(u, SK_HERBALISM, 1); CuAssertPtrEquals(tc, u2, is_guarded(r, u, GUARD_PRODUCE)); herbsearch(u, INT_MAX); CuAssertPtrNotNull(tc, test_find_messagetype(f->msgs, "error70")); CuAssertPtrEquals(tc, 0, test_find_messagetype(f->msgs, "error59")); - free_messagelist(f->msgs); - f->msgs = 0; + test_clear_messages(f); guard(u2, GUARD_NONE); CuAssertPtrEquals(tc, 0, is_guarded(r, u, GUARD_PRODUCE)); @@ -57,8 +54,7 @@ static void test_herbsearch(CuTest * tc) CuAssertPtrNotNull(tc, test_find_messagetype(f->msgs, "error108")); CuAssertPtrEquals(tc, 0, test_find_messagetype(f->msgs, "error70")); CuAssertPtrEquals(tc, 0, test_find_messagetype(f->msgs, "error59")); - free_messagelist(f->msgs); - f->msgs = 0; + test_clear_messages(f); rsetherbtype(r, itype); CuAssertPtrEquals(tc, (void *)itype, (void *)rherbtype(r)); @@ -68,8 +64,7 @@ static void test_herbsearch(CuTest * tc) CuAssertPtrEquals(tc, 0, test_find_messagetype(f->msgs, "error108")); CuAssertPtrEquals(tc, 0, test_find_messagetype(f->msgs, "error70")); CuAssertPtrEquals(tc, 0, test_find_messagetype(f->msgs, "error59")); - free_messagelist(f->msgs); - f->msgs = 0; + test_clear_messages(f); rsetherbs(r, 100); CuAssertIntEquals(tc, 100, rherbs(r)); @@ -81,8 +76,7 @@ static void test_herbsearch(CuTest * tc) CuAssertPtrEquals(tc, 0, test_find_messagetype(f->msgs, "error108")); CuAssertPtrEquals(tc, 0, test_find_messagetype(f->msgs, "error70")); CuAssertPtrEquals(tc, 0, test_find_messagetype(f->msgs, "error59")); - free_messagelist(f->msgs); - f->msgs = 0; + test_clear_messages(f); test_cleanup(); } diff --git a/src/give.test.c b/src/give.test.c index a81278edd..c9e005b8f 100644 --- a/src/give.test.c +++ b/src/give.test.c @@ -7,7 +7,6 @@ #include #include #include -#include #include #include #include @@ -214,8 +213,7 @@ static void test_give_men_requires_contact(CuTest * tc) { _snprintf(cmd, sizeof(cmd), "%s ALLES PERSONEN", itoa36(env.dst->no)); ord = create_order(K_GIVE, env.f1->locale, cmd); - free_messagelist(env.f1->msgs); - env.f1->msgs = 0; + test_clear_messages(env.f1); give_cmd(env.src, ord); CuAssertPtrEquals(tc, 0, test_find_messagetype(env.f1->msgs, "give_person")); CuAssertPtrNotNull(tc, test_find_messagetype(env.f1->msgs, "feedback_no_contact")); diff --git a/src/piracy.test.c b/src/piracy.test.c index 144bb8c3d..bea1068d6 100644 --- a/src/piracy.test.c +++ b/src/piracy.test.c @@ -2,6 +2,7 @@ #include "piracy.h" #include +#include #include #include @@ -11,17 +12,32 @@ #include #include -static void test_piracy_cmd(CuTest * tc) { - unit *u; +static void test_piracy_cmd_errors(CuTest * tc) { + faction *f; + unit *u, *u2; order *ord; test_cleanup(); - u = test_create_unit(test_create_faction(0), test_create_region(0, 0, 0)); - u->faction->locale = get_or_create_locale("de"); - ord = create_order(K_PIRACY, u->faction->locale, ""); + u = test_create_unit(f = test_create_faction(0), test_create_region(0, 0, 0)); + f->locale = get_or_create_locale("de"); + ord = create_order(K_PIRACY, f->locale, ""); assert(u); piracy_cmd(u, ord); - CuAssertPtrNotNull(tc, test_find_messagetype(u->faction->msgs, "error144")); + CuAssertPtrNotNullMsg(tc, "must be on a ship for PIRACY", test_find_messagetype(f->msgs, "error144")); + + u_set_ship(u, test_create_ship(u->region, 0)); + + u2 = test_create_unit(u->faction, u->region); + u_set_ship(u2, u->ship); + + test_clear_messages(f); + piracy_cmd(u2, ord); + CuAssertPtrNotNullMsg(tc, "must be owner for PIRACY", test_find_messagetype(f->msgs, "error146")); + + test_clear_messages(f); + piracy_cmd(u, ord); + CuAssertPtrNotNullMsg(tc, "must specify target for PIRACY", test_find_messagetype(f->msgs, "piratenovictim")); + test_cleanup(); } @@ -29,6 +45,6 @@ static void test_piracy_cmd(CuTest * tc) { CuSuite *get_piracy_suite(void) { CuSuite *suite = CuSuiteNew(); - SUITE_ADD_TEST(suite, test_piracy_cmd); + SUITE_ADD_TEST(suite, test_piracy_cmd_errors); return suite; } diff --git a/src/tests.c b/src/tests.c index 05e0e99d9..b8c5f06c1 100644 --- a/src/tests.c +++ b/src/tests.c @@ -279,6 +279,11 @@ struct message * test_find_messagetype(struct message_list *msgs, const char *na return 0; } +void test_clear_messages(faction *f) { + free_messagelist(f->msgs); + f->msgs = 0; +} + void disabled_test(void *suite, void (*test)(CuTest *), const char *name) { (void)test; fprintf(stderr, "%s: SKIP\n", name); diff --git a/src/tests.h b/src/tests.h index 27f5de2db..a458e4eab 100644 --- a/src/tests.h +++ b/src/tests.h @@ -43,6 +43,7 @@ extern "C" { const char * test_get_messagetype(const struct message *msg); struct message * test_find_messagetype(struct message_list *msgs, const char *name); struct message * test_get_last_message(struct message_list *mlist); + void test_clear_messages(struct faction *f); void disabled_test(void *suite, void (*)(struct CuTest *), const char *name);