2014-08-20 07:00:58 +02:00
|
|
|
#include <platform.h>
|
2014-10-16 08:13:56 +02:00
|
|
|
|
2014-10-17 19:56:26 +02:00
|
|
|
#include <kernel/ally.h>
|
2015-06-21 17:49:22 +02:00
|
|
|
#include <kernel/alliance.h>
|
2018-02-14 20:00:48 +01:00
|
|
|
#include <kernel/calendar.h>
|
2014-10-16 08:13:56 +02:00
|
|
|
#include <kernel/faction.h>
|
2017-12-25 19:11:12 +01:00
|
|
|
#include <kernel/item.h>
|
2017-02-04 23:16:16 +01:00
|
|
|
#include <kernel/plane.h>
|
2014-08-20 23:42:33 +02:00
|
|
|
#include <kernel/race.h>
|
2014-10-16 08:13:56 +02:00
|
|
|
#include <kernel/region.h>
|
2017-02-04 23:16:16 +01:00
|
|
|
#include <kernel/unit.h>
|
2014-08-20 07:00:58 +02:00
|
|
|
#include <kernel/config.h>
|
2017-08-06 19:02:57 +02:00
|
|
|
#include <util/goodies.h>
|
2014-08-20 23:42:33 +02:00
|
|
|
#include <util/language.h>
|
2016-01-12 23:52:30 +01:00
|
|
|
#include <util/password.h>
|
2014-10-16 08:13:56 +02:00
|
|
|
|
2017-12-25 19:11:12 +01:00
|
|
|
#include <attributes/racename.h>
|
|
|
|
|
2016-12-23 18:05:38 +01:00
|
|
|
#include "monsters.h"
|
2014-08-20 07:00:58 +02:00
|
|
|
#include <CuTest.h>
|
2014-10-16 08:13:56 +02:00
|
|
|
#include <tests.h>
|
2017-01-26 17:41:21 +01:00
|
|
|
#include <selist.h>
|
2014-10-16 08:13:56 +02:00
|
|
|
|
|
|
|
#include <assert.h>
|
2014-08-20 07:00:58 +02:00
|
|
|
#include <stdio.h>
|
|
|
|
|
2016-01-11 15:08:36 +01:00
|
|
|
static void test_destroyfaction_allies(CuTest *tc) {
|
2014-10-17 19:56:26 +02:00
|
|
|
faction *f1, *f2;
|
|
|
|
region *r;
|
2016-01-11 15:08:36 +01:00
|
|
|
ally *al;
|
2014-10-17 19:56:26 +02:00
|
|
|
|
2017-12-27 19:58:39 +01:00
|
|
|
test_setup();
|
2018-01-14 09:38:26 +01:00
|
|
|
r = test_create_region(0, 0, NULL);
|
|
|
|
f1 = test_create_faction(NULL);
|
2014-10-17 19:56:26 +02:00
|
|
|
test_create_unit(f1, r);
|
2018-01-14 09:38:26 +01:00
|
|
|
f2 = test_create_faction(NULL);
|
2016-01-11 15:08:36 +01:00
|
|
|
al = ally_add(&f1->allies, f2);
|
|
|
|
al->status = HELP_FIGHT;
|
|
|
|
CuAssertIntEquals(tc, HELP_FIGHT, alliedgroup(0, f1, f2, f1->allies, HELP_ALL));
|
|
|
|
CuAssertPtrEquals(tc, f2, f1->next);
|
|
|
|
destroyfaction(&f1->next);
|
|
|
|
CuAssertIntEquals(tc, false, faction_alive(f2));
|
|
|
|
CuAssertIntEquals(tc, 0, alliedgroup(0, f1, f2, f1->allies, HELP_ALL));
|
2017-12-27 19:58:39 +01:00
|
|
|
test_teardown();
|
2014-10-17 19:56:26 +02:00
|
|
|
}
|
|
|
|
|
2015-06-21 17:49:22 +02:00
|
|
|
static void test_remove_empty_factions_alliance(CuTest *tc) {
|
|
|
|
faction *f;
|
|
|
|
struct alliance *al;
|
|
|
|
|
2017-12-27 19:58:39 +01:00
|
|
|
test_setup();
|
2018-01-14 09:38:26 +01:00
|
|
|
f = test_create_faction(NULL);
|
2015-06-21 17:49:22 +02:00
|
|
|
al = makealliance(0, "Hodor");
|
|
|
|
setalliance(f, al);
|
|
|
|
CuAssertPtrEquals(tc, f, alliance_get_leader(al));
|
2017-01-26 17:41:21 +01:00
|
|
|
CuAssertIntEquals(tc, 1, selist_length(al->members));
|
2015-06-21 17:49:22 +02:00
|
|
|
remove_empty_factions();
|
|
|
|
CuAssertPtrEquals(tc, 0, al->_leader);
|
2017-01-26 17:41:21 +01:00
|
|
|
CuAssertIntEquals(tc, 0, selist_length(al->members));
|
2017-12-27 19:58:39 +01:00
|
|
|
test_teardown();
|
2015-06-21 17:49:22 +02:00
|
|
|
}
|
|
|
|
|
2014-10-16 08:13:56 +02:00
|
|
|
static void test_remove_empty_factions(CuTest *tc) {
|
|
|
|
faction *f, *fm;
|
|
|
|
int fno;
|
|
|
|
|
2017-12-27 19:58:39 +01:00
|
|
|
test_setup();
|
2014-10-16 08:13:56 +02:00
|
|
|
fm = get_or_create_monsters();
|
|
|
|
assert(fm);
|
2018-01-14 09:38:26 +01:00
|
|
|
f = test_create_faction(NULL);
|
2014-10-16 08:13:56 +02:00
|
|
|
fno = f->no;
|
|
|
|
remove_empty_factions();
|
2016-04-03 12:37:26 +02:00
|
|
|
CuAssertIntEquals(tc, false, f->_alive);
|
|
|
|
CuAssertPtrEquals(tc, fm, factions);
|
|
|
|
CuAssertPtrEquals(tc, NULL, fm->next);
|
2014-10-16 08:13:56 +02:00
|
|
|
CuAssertPtrEquals(tc, 0, findfaction(fno));
|
|
|
|
CuAssertPtrEquals(tc, fm, get_monsters());
|
2017-12-27 19:58:39 +01:00
|
|
|
test_teardown();
|
2014-10-16 08:13:56 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
static void test_remove_dead_factions(CuTest *tc) {
|
|
|
|
faction *f, *fm;
|
|
|
|
region *r;
|
2014-10-31 22:10:41 +01:00
|
|
|
int fno;
|
2014-10-16 08:13:56 +02:00
|
|
|
|
2017-12-27 19:58:39 +01:00
|
|
|
test_setup();
|
2018-01-14 09:38:26 +01:00
|
|
|
r = test_create_region(0, 0, NULL);
|
2014-10-16 08:13:56 +02:00
|
|
|
fm = get_or_create_monsters();
|
2018-01-14 09:38:26 +01:00
|
|
|
f = test_create_faction(NULL);
|
2014-10-16 08:13:56 +02:00
|
|
|
assert(fm && r && f);
|
|
|
|
test_create_unit(f, r);
|
|
|
|
test_create_unit(fm, r);
|
|
|
|
remove_empty_factions();
|
|
|
|
CuAssertPtrEquals(tc, f, findfaction(f->no));
|
|
|
|
CuAssertPtrNotNull(tc, get_monsters());
|
2016-01-11 09:55:47 +01:00
|
|
|
fm->units = 0;
|
2016-01-11 11:54:45 +01:00
|
|
|
f->_alive = false;
|
2014-10-31 22:10:41 +01:00
|
|
|
fno = f->no;
|
2014-10-16 08:13:56 +02:00
|
|
|
remove_empty_factions();
|
2014-10-31 22:10:41 +01:00
|
|
|
CuAssertPtrEquals(tc, 0, findfaction(fno));
|
2014-10-16 08:13:56 +02:00
|
|
|
CuAssertPtrEquals(tc, fm, get_monsters());
|
2017-12-27 19:58:39 +01:00
|
|
|
test_teardown();
|
2014-10-16 08:13:56 +02:00
|
|
|
}
|
|
|
|
|
2014-08-20 23:42:33 +02:00
|
|
|
static void test_addfaction(CuTest *tc) {
|
|
|
|
faction *f = 0;
|
2015-02-11 22:41:10 +01:00
|
|
|
const struct race *rc;
|
|
|
|
const struct locale *lang;
|
2014-08-20 23:42:33 +02:00
|
|
|
|
2017-12-27 19:58:39 +01:00
|
|
|
test_setup();
|
2015-02-11 22:41:10 +01:00
|
|
|
rc = rc_get_or_create("human");
|
2016-03-23 22:24:11 +01:00
|
|
|
lang = test_create_locale();
|
2014-08-20 23:42:33 +02:00
|
|
|
f = addfaction("test@eressea.de", "hurrdurr", rc, lang, 1234);
|
|
|
|
CuAssertPtrNotNull(tc, f);
|
|
|
|
CuAssertPtrNotNull(tc, f->name);
|
|
|
|
CuAssertPtrEquals(tc, NULL, (void *)f->units);
|
|
|
|
CuAssertPtrEquals(tc, NULL, (void *)f->next);
|
|
|
|
CuAssertPtrEquals(tc, NULL, (void *)f->banner);
|
|
|
|
CuAssertPtrEquals(tc, NULL, (void *)f->spellbook);
|
|
|
|
CuAssertPtrEquals(tc, NULL, (void *)f->ursprung);
|
|
|
|
CuAssertPtrEquals(tc, (void *)factions, (void *)f);
|
|
|
|
CuAssertStrEquals(tc, "test@eressea.de", f->email);
|
2016-02-12 07:14:12 +01:00
|
|
|
CuAssertTrue(tc, checkpasswd(f, "hurrdurr"));
|
2014-08-20 23:42:33 +02:00
|
|
|
CuAssertPtrEquals(tc, (void *)lang, (void *)f->locale);
|
|
|
|
CuAssertIntEquals(tc, 1234, f->subscription);
|
2017-01-22 18:51:20 +01:00
|
|
|
CuAssertIntEquals(tc, FFL_ISNEW|FFL_PWMSG, f->flags);
|
2014-08-20 23:42:33 +02:00
|
|
|
CuAssertIntEquals(tc, 0, f->age);
|
2016-02-12 07:14:12 +01:00
|
|
|
CuAssertTrue(tc, faction_alive(f));
|
2014-08-20 23:42:33 +02:00
|
|
|
CuAssertIntEquals(tc, M_GRAY, f->magiegebiet);
|
|
|
|
CuAssertIntEquals(tc, turn, f->lastorders);
|
|
|
|
CuAssertPtrEquals(tc, f, findfaction(f->no));
|
2017-12-27 19:58:39 +01:00
|
|
|
test_teardown();
|
2014-08-20 23:42:33 +02:00
|
|
|
}
|
|
|
|
|
2016-01-12 00:52:42 +01:00
|
|
|
static void test_check_passwd(CuTest *tc) {
|
|
|
|
faction *f;
|
|
|
|
|
2018-01-14 09:38:26 +01:00
|
|
|
f = test_create_faction(NULL);
|
2016-02-12 08:31:42 +01:00
|
|
|
faction_setpassword(f, password_encode("password", PASSWORD_DEFAULT));
|
2016-02-12 07:14:12 +01:00
|
|
|
CuAssertTrue(tc, checkpasswd(f, "password"));
|
|
|
|
CuAssertTrue(tc, !checkpasswd(f, "assword"));
|
|
|
|
CuAssertTrue(tc, !checkpasswd(f, "PASSWORD"));
|
2016-01-12 00:52:42 +01:00
|
|
|
}
|
|
|
|
|
2014-08-20 23:42:33 +02:00
|
|
|
static void test_get_monsters(CuTest *tc) {
|
2014-08-20 07:00:58 +02:00
|
|
|
faction *f;
|
2014-11-07 21:28:58 +01:00
|
|
|
|
2017-12-27 19:58:39 +01:00
|
|
|
test_setup();
|
2014-11-07 21:28:58 +01:00
|
|
|
CuAssertPtrNotNull(tc, (f = get_monsters()));
|
2014-08-20 07:00:58 +02:00
|
|
|
CuAssertPtrEquals(tc, f, get_monsters());
|
|
|
|
CuAssertIntEquals(tc, 666, f->no);
|
2014-11-07 21:28:58 +01:00
|
|
|
CuAssertStrEquals(tc, "Monster", f->name);
|
2017-12-27 19:58:39 +01:00
|
|
|
test_teardown();
|
2014-08-20 07:00:58 +02:00
|
|
|
}
|
|
|
|
|
2015-05-05 18:33:59 +02:00
|
|
|
static void test_set_origin(CuTest *tc) {
|
|
|
|
faction *f;
|
2015-05-19 08:02:32 +02:00
|
|
|
int x = 0, y = 0;
|
2015-05-20 08:15:12 +02:00
|
|
|
plane *pl;
|
2015-05-05 18:33:59 +02:00
|
|
|
|
2017-03-11 14:22:21 +01:00
|
|
|
test_setup();
|
2015-05-20 08:15:12 +02:00
|
|
|
pl = create_new_plane(0, "", 0, 19, 0, 19, 0);
|
2018-01-14 09:38:26 +01:00
|
|
|
f = test_create_faction(NULL);
|
2015-05-05 18:33:59 +02:00
|
|
|
CuAssertPtrEquals(tc, 0, f->ursprung);
|
2015-05-19 08:02:32 +02:00
|
|
|
faction_setorigin(f, 0, 1, 1);
|
2015-05-05 18:33:59 +02:00
|
|
|
CuAssertIntEquals(tc, 0, f->ursprung->id);
|
|
|
|
CuAssertIntEquals(tc, 1, f->ursprung->x);
|
|
|
|
CuAssertIntEquals(tc, 1, f->ursprung->y);
|
2015-05-19 08:02:32 +02:00
|
|
|
faction_getorigin(f, 0, &x, &y);
|
|
|
|
CuAssertIntEquals(tc, 1, x);
|
|
|
|
CuAssertIntEquals(tc, 1, y);
|
2015-05-20 08:15:12 +02:00
|
|
|
adjust_coordinates(f, &x, &y, pl);
|
|
|
|
CuAssertIntEquals(tc, -9, x);
|
|
|
|
CuAssertIntEquals(tc, -9, y);
|
|
|
|
adjust_coordinates(f, &x, &y, 0);
|
|
|
|
CuAssertIntEquals(tc, -10, x);
|
|
|
|
CuAssertIntEquals(tc, -10, y);
|
2017-12-27 19:58:39 +01:00
|
|
|
test_teardown();
|
2015-05-19 08:02:32 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
static void test_set_origin_bug(CuTest *tc) {
|
|
|
|
faction *f;
|
|
|
|
plane *pl;
|
|
|
|
int x = 17, y = 10;
|
|
|
|
|
2017-03-11 14:22:21 +01:00
|
|
|
test_setup();
|
2015-05-19 08:02:32 +02:00
|
|
|
pl = create_new_plane(0, "", 0, 19, 0, 19, 0);
|
2018-01-14 09:38:26 +01:00
|
|
|
f = test_create_faction(NULL);
|
2015-05-19 08:02:32 +02:00
|
|
|
faction_setorigin(f, 0, -10, 3);
|
|
|
|
faction_setorigin(f, 0, -13, -4);
|
|
|
|
adjust_coordinates(f, &x, &y, pl);
|
|
|
|
CuAssertIntEquals(tc, 0, f->ursprung->id);
|
|
|
|
CuAssertIntEquals(tc, -9, x);
|
|
|
|
CuAssertIntEquals(tc, 2, y);
|
2017-12-27 19:58:39 +01:00
|
|
|
test_teardown();
|
2015-05-05 18:33:59 +02:00
|
|
|
}
|
|
|
|
|
2017-02-04 23:16:16 +01:00
|
|
|
static void test_max_migrants(CuTest *tc) {
|
|
|
|
faction *f;
|
|
|
|
unit *u;
|
|
|
|
race *rc;
|
|
|
|
|
|
|
|
test_setup();
|
|
|
|
rc = test_create_race("human");
|
|
|
|
f = test_create_faction(rc);
|
2018-01-14 09:38:26 +01:00
|
|
|
u = test_create_unit(f, test_create_region(0, 0, NULL));
|
2017-02-04 23:16:16 +01:00
|
|
|
CuAssertIntEquals(tc, 0, count_maxmigrants(f));
|
2017-02-04 23:42:50 +01:00
|
|
|
rc->flags |= RCF_MIGRANTS;
|
2017-02-04 23:16:16 +01:00
|
|
|
CuAssertIntEquals(tc, 0, count_maxmigrants(f));
|
|
|
|
scale_number(u, 250);
|
|
|
|
CuAssertIntEquals(tc, 13, count_maxmigrants(f));
|
2017-12-27 19:58:39 +01:00
|
|
|
test_teardown();
|
2017-02-04 23:16:16 +01:00
|
|
|
}
|
|
|
|
|
2017-02-05 16:55:51 +01:00
|
|
|
static void test_valid_race(CuTest *tc) {
|
|
|
|
race * rc1, *rc2;
|
|
|
|
faction *f;
|
|
|
|
|
|
|
|
test_setup();
|
|
|
|
rc1 = test_create_race("human");
|
|
|
|
rc2 = test_create_race("elf");
|
|
|
|
f = test_create_faction(rc1);
|
|
|
|
CuAssertTrue(tc, valid_race(f, rc1));
|
|
|
|
CuAssertTrue(tc, !valid_race(f, rc2));
|
|
|
|
rc_set_param(rc1, "other_race", "elf");
|
|
|
|
CuAssertTrue(tc, valid_race(f, rc1));
|
|
|
|
CuAssertTrue(tc, valid_race(f, rc2));
|
2017-12-27 19:58:39 +01:00
|
|
|
test_teardown();
|
2017-02-05 16:55:51 +01:00
|
|
|
}
|
|
|
|
|
2017-08-06 19:02:57 +02:00
|
|
|
static void test_set_email(CuTest *tc) {
|
2017-11-14 16:20:31 +01:00
|
|
|
faction *f;
|
|
|
|
char email[10];
|
2017-08-06 19:02:57 +02:00
|
|
|
test_setup();
|
2017-11-14 16:20:31 +01:00
|
|
|
CuAssertIntEquals(tc, 0, check_email("enno@eressea.de"));
|
|
|
|
CuAssertIntEquals(tc, 0, check_email("bugs@eressea.de"));
|
|
|
|
CuAssertIntEquals(tc, -1, check_email("bad@@eressea.de"));
|
|
|
|
CuAssertIntEquals(tc, -1, check_email("eressea.de"));
|
|
|
|
CuAssertIntEquals(tc, -1, check_email("eressea@"));
|
|
|
|
CuAssertIntEquals(tc, -1, check_email(""));
|
|
|
|
CuAssertIntEquals(tc, -1, check_email(NULL));
|
2018-01-14 09:38:26 +01:00
|
|
|
f = test_create_faction(NULL);
|
2017-11-14 16:20:31 +01:00
|
|
|
|
|
|
|
sprintf(email, "enno");
|
|
|
|
faction_setemail(f, email);
|
2018-02-25 17:58:45 +01:00
|
|
|
CuAssertTrue(tc, email != f->email);
|
2017-11-14 16:20:31 +01:00
|
|
|
CuAssertStrEquals(tc, "enno", f->email);
|
|
|
|
CuAssertStrEquals(tc, "enno", faction_getemail(f));
|
|
|
|
faction_setemail(f, "bugs@eressea.de");
|
|
|
|
CuAssertStrEquals(tc, "bugs@eressea.de", f->email);
|
|
|
|
faction_setemail(f, NULL);
|
|
|
|
CuAssertPtrEquals(tc, 0, f->email);
|
|
|
|
CuAssertStrEquals(tc, "", faction_getemail(f));
|
2017-12-27 19:58:39 +01:00
|
|
|
test_teardown();
|
2017-08-06 19:02:57 +02:00
|
|
|
}
|
|
|
|
|
2018-01-02 20:34:42 +01:00
|
|
|
static void test_save_special_items(CuTest *tc) {
|
2017-12-25 19:11:12 +01:00
|
|
|
unit *u, *ug;
|
|
|
|
race * rc;
|
|
|
|
struct item_type *itype, *it_silver, *it_horse;
|
|
|
|
|
|
|
|
test_setup();
|
|
|
|
it_horse = test_create_horse();
|
|
|
|
it_silver = test_create_silver();
|
|
|
|
itype = test_create_itemtype("banana");
|
|
|
|
itype->flags |= ITF_NOTLOST;
|
|
|
|
rc = test_create_race("template");
|
|
|
|
u = test_create_unit(test_create_faction(NULL), test_create_region(0, 0, NULL));
|
|
|
|
i_change(&u->items, itype, 1);
|
2018-01-02 20:34:42 +01:00
|
|
|
|
|
|
|
/* when there is no monster in the region, a ghost of the dead unit is created: */
|
2017-12-25 19:11:12 +01:00
|
|
|
save_special_items(u);
|
|
|
|
CuAssertPtrNotNull(tc, u->next);
|
|
|
|
ug = u->next;
|
|
|
|
CuAssertPtrEquals(tc, NULL, ug->next);
|
|
|
|
CuAssertPtrEquals(tc, rc, (void *)ug->_race);
|
2018-01-02 20:34:42 +01:00
|
|
|
CuAssertIntEquals(tc, 1, u->number);
|
2017-12-25 19:11:12 +01:00
|
|
|
CuAssertIntEquals(tc, 0, i_get(u->items, itype));
|
|
|
|
CuAssertIntEquals(tc, 1, i_get(ug->items, itype));
|
|
|
|
CuAssertStrEquals(tc, "ghost", get_racename(ug->attribs));
|
2018-01-02 20:34:42 +01:00
|
|
|
CuAssertStrEquals(tc, u->_name, ug->_name);
|
2017-12-25 19:11:12 +01:00
|
|
|
|
|
|
|
i_change(&u->items, itype, 1);
|
2018-01-02 20:34:42 +01:00
|
|
|
/* when there is a monster, it takes all special items: */
|
2017-12-25 19:11:12 +01:00
|
|
|
save_special_items(u);
|
|
|
|
CuAssertPtrEquals(tc, NULL, ug->next);
|
|
|
|
CuAssertIntEquals(tc, 2, i_get(ug->items, itype));
|
|
|
|
CuAssertPtrEquals(tc, NULL, u->items);
|
|
|
|
|
|
|
|
i_change(&u->items, itype, 1);
|
|
|
|
i_change(&u->items, it_horse, 5);
|
|
|
|
i_change(&u->items, it_silver, 10);
|
2018-01-02 20:34:42 +01:00
|
|
|
/* horses and money need to go to the region and are not taken: */
|
2017-12-25 19:11:12 +01:00
|
|
|
save_special_items(u);
|
|
|
|
CuAssertIntEquals(tc, 3, i_get(ug->items, itype));
|
|
|
|
CuAssertIntEquals(tc, 5, i_get(u->items, it_horse));
|
|
|
|
CuAssertIntEquals(tc, 10, i_get(u->items, it_silver));
|
2017-12-27 19:58:39 +01:00
|
|
|
test_teardown();
|
2017-12-25 19:11:12 +01:00
|
|
|
}
|
|
|
|
|
2014-08-20 07:00:58 +02:00
|
|
|
CuSuite *get_faction_suite(void)
|
|
|
|
{
|
|
|
|
CuSuite *suite = CuSuiteNew();
|
2017-02-04 23:16:16 +01:00
|
|
|
SUITE_ADD_TEST(suite, test_max_migrants);
|
2014-08-20 23:42:33 +02:00
|
|
|
SUITE_ADD_TEST(suite, test_addfaction);
|
2014-10-16 08:13:56 +02:00
|
|
|
SUITE_ADD_TEST(suite, test_remove_empty_factions);
|
2016-01-11 15:08:36 +01:00
|
|
|
SUITE_ADD_TEST(suite, test_destroyfaction_allies);
|
2015-06-21 17:49:22 +02:00
|
|
|
SUITE_ADD_TEST(suite, test_remove_empty_factions_alliance);
|
2014-10-16 08:13:56 +02:00
|
|
|
SUITE_ADD_TEST(suite, test_remove_dead_factions);
|
2014-08-20 07:00:58 +02:00
|
|
|
SUITE_ADD_TEST(suite, test_get_monsters);
|
2015-05-05 18:33:59 +02:00
|
|
|
SUITE_ADD_TEST(suite, test_set_origin);
|
2015-05-19 08:02:32 +02:00
|
|
|
SUITE_ADD_TEST(suite, test_set_origin_bug);
|
2016-01-12 00:52:42 +01:00
|
|
|
SUITE_ADD_TEST(suite, test_check_passwd);
|
2017-02-05 16:55:51 +01:00
|
|
|
SUITE_ADD_TEST(suite, test_valid_race);
|
2017-08-06 19:02:57 +02:00
|
|
|
SUITE_ADD_TEST(suite, test_set_email);
|
2018-01-02 20:34:42 +01:00
|
|
|
SUITE_ADD_TEST(suite, test_save_special_items);
|
2014-08-20 07:00:58 +02:00
|
|
|
return suite;
|
|
|
|
}
|