add tests for get_param functions

This commit is contained in:
Enno Rehling 2014-06-25 07:22:39 -07:00
parent a75d91fb6d
commit 07d10d9ab0
4 changed files with 84 additions and 24 deletions

View File

@ -1,6 +1,7 @@
project(kernel C)
SET(_TEST_FILES
config.test.c
ship.test.c
spell.test.c
ally.test.c

View File

@ -1808,22 +1808,23 @@ int getid(void)
const char *get_param(const struct param *p, const char *key)
{
while (p != NULL) {
if (strcmp(p->name, key) == 0)
return p->data;
p = p->next;
}
return NULL;
while (p != NULL) {
int cmp = strcmp(p->name, key);
if (cmp == 0) {
return p->data;
}
else if (cmp>0) {
break;
}
p = p->next;
}
return NULL;
}
int get_param_int(const struct param *p, const char *key, int def)
{
while (p != NULL) {
if (strcmp(p->name, key) == 0)
return atoi(p->data);
p = p->next;
}
return def;
const char * str = get_param(p, key);
return str ? atoi(str) : def;
}
static const char *g_datadir;
@ -1879,19 +1880,26 @@ float get_param_flt(const struct param *p, const char *key, float def)
void set_param(struct param **p, const char *key, const char *data)
{
++global.cookie;
while (*p != NULL) {
if (strcmp((*p)->name, key) == 0) {
free((*p)->data);
(*p)->data = _strdup(data);
return;
struct param *par;
++global.cookie;
while (*p != NULL) {
int cmp = strcmp((*p)->name, key);
if (cmp == 0) {
free((*p)->data);
(*p)->data = _strdup(data);
return;
}
else if (cmp>0) {
break;
}
p = &(*p)->next;
}
p = &(*p)->next;
}
*p = malloc(sizeof(param));
(*p)->name = _strdup(key);
(*p)->data = _strdup(data);
(*p)->next = NULL;
par = malloc(sizeof(param));
par->name = _strdup(key);
par->data = _strdup(data);
par->next = *p;
*p = par;
}
void kernel_done(void)

49
src/kernel/config.test.c Normal file
View File

@ -0,0 +1,49 @@
#include <platform.h>
#include <stdlib.h>
#include <kernel/config.h>
#include <CuTest.h>
#include <tests.h>
static void test_get_set_param(CuTest * tc)
{
struct param *par = 0;
test_cleanup();
CuAssertStrEquals(tc, 0, get_param(par, "foo"));
set_param(&par, "foo", "bar");
set_param(&par, "bar", "foo");
CuAssertStrEquals(tc, "bar", get_param(par, "foo"));
CuAssertStrEquals(tc, "foo", get_param(par, "bar"));
}
static void test_param_int(CuTest * tc)
{
struct param *par = 0;
test_cleanup();
CuAssertIntEquals(tc, 13, get_param_int(par, "foo", 13));
set_param(&par, "foo", "23");
set_param(&par, "bar", "42");
CuAssertIntEquals(tc, 23, get_param_int(par, "foo", 0));
CuAssertIntEquals(tc, 42, get_param_int(par, "bar", 0));
}
static void test_param_flt(CuTest * tc)
{
struct param *par = 0;
test_cleanup();
CuAssertDblEquals(tc, 13, get_param_flt(par, "foo", 13), 0.01);
set_param(&par, "foo", "23.0");
set_param(&par, "bar", "42.0");
CuAssertDblEquals(tc, 23.0, get_param_flt(par, "foo", 0.0), 0.01);
CuAssertDblEquals(tc, 42.0, get_param_flt(par, "bar", 0.0), 0.01);
}
CuSuite *get_config_suite(void)
{
CuSuite *suite = CuSuiteNew();
SUITE_ADD_TEST(suite, test_get_set_param);
SUITE_ADD_TEST(suite, test_param_int);
SUITE_ADD_TEST(suite, test_param_flt);
return suite;
}

View File

@ -21,6 +21,7 @@ CuSuite *get_ship_suite(void);
CuSuite *get_spellbook_suite(void);
CuSuite *get_spell_suite(void);
CuSuite *get_base36_suite(void);
CuSuite *get_config_suite(void);
CuSuite *get_bsdstring_suite(void);
CuSuite *get_functions_suite(void);
CuSuite *get_umlaut_suite(void);
@ -45,6 +46,7 @@ int RunAllTests(void)
CuSuiteAddSuite(suite, get_skill_suite());
CuSuiteAddSuite(suite, get_keyword_suite());
/* util */
CuSuiteAddSuite(suite, get_config_suite());
CuSuiteAddSuite(suite, get_base36_suite());
CuSuiteAddSuite(suite, get_bsdstring_suite());
CuSuiteAddSuite(suite, get_functions_suite());