prevent memory leak of cJSON structures in tests

This commit is contained in:
Enno Rehling 2015-10-13 21:21:31 +02:00
parent 422476409c
commit 3741a19437
1 changed files with 23 additions and 0 deletions

View File

@ -31,6 +31,7 @@ static const struct race * race_with_flag(const char * name) {
json = cJSON_Parse(data); json = cJSON_Parse(data);
free_races(); free_races();
json_config(json); json_config(json);
cJSON_Delete(json);
return rc_find("orc"); return rc_find("orc");
} }
@ -78,6 +79,7 @@ static void test_settings(CuTest * tc)
CuAssertStrEquals(tc, "1d4", get_param(global.parameters, "string")); CuAssertStrEquals(tc, "1d4", get_param(global.parameters, "string"));
CuAssertIntEquals(tc, 14, get_param_int(global.parameters, "integer", 0)); CuAssertIntEquals(tc, 14, get_param_int(global.parameters, "integer", 0));
CuAssertDblEquals(tc, 1.5f, get_param_flt(global.parameters, "float", 0), 0.01); CuAssertDblEquals(tc, 1.5f, get_param_flt(global.parameters, "float", 0), 0.01);
cJSON_Delete(json);
test_cleanup(); test_cleanup();
} }
@ -96,6 +98,7 @@ static void test_prefixes(CuTest * tc)
CuAssertStrEquals(tc, "snow", race_prefixes[0]); CuAssertStrEquals(tc, "snow", race_prefixes[0]);
CuAssertStrEquals(tc, "dark", race_prefixes[2]); CuAssertStrEquals(tc, "dark", race_prefixes[2]);
CuAssertPtrEquals(tc, 0, race_prefixes[3]); CuAssertPtrEquals(tc, 0, race_prefixes[3]);
cJSON_Delete(json);
test_cleanup(); test_cleanup();
} }
@ -121,6 +124,7 @@ static void test_disable(CuTest * tc)
CuAssertTrue(tc, keyword_disabled(K_PAY)); CuAssertTrue(tc, keyword_disabled(K_PAY));
CuAssertTrue(tc, keyword_disabled(K_BESIEGE)); CuAssertTrue(tc, keyword_disabled(K_BESIEGE));
CuAssertIntEquals(tc, 0, get_param_int(global.parameters, "module.enabled", 1)); CuAssertIntEquals(tc, 0, get_param_int(global.parameters, "module.enabled", 1));
cJSON_Delete(json);
test_cleanup(); test_cleanup();
} }
@ -164,6 +168,7 @@ static void test_races(CuTest * tc)
CuAssertIntEquals(tc, 4, rc->capacity); CuAssertIntEquals(tc, 4, rc->capacity);
CuAssertIntEquals(tc, 5, rc->hitpoints); CuAssertIntEquals(tc, 5, rc->hitpoints);
CuAssertIntEquals(tc, 6, rc->armor); CuAssertIntEquals(tc, 6, rc->armor);
cJSON_Delete(json);
test_cleanup(); test_cleanup();
} }
@ -183,6 +188,7 @@ static void test_findrace(CuTest *tc) {
rc = findrace("Zwerg", lang); rc = findrace("Zwerg", lang);
CuAssertPtrNotNull(tc, rc); CuAssertPtrNotNull(tc, rc);
CuAssertStrEquals(tc, "dwarf", rc->_name); CuAssertStrEquals(tc, "dwarf", rc->_name);
cJSON_Delete(json);
test_cleanup(); test_cleanup();
} }
@ -216,6 +222,8 @@ static void test_items(CuTest * tc)
CuAssertPtrNotNull(tc, rt_find("axe")); CuAssertPtrNotNull(tc, rt_find("axe"));
CuAssertPtrNotNull(tc, (void *)get_resourcetype(R_HORSE)); CuAssertPtrNotNull(tc, (void *)get_resourcetype(R_HORSE));
cJSON_Delete(json);
test_cleanup();
} }
static void test_ships(CuTest * tc) static void test_ships(CuTest * tc)
@ -254,6 +262,7 @@ static void test_ships(CuTest * tc)
CuAssertPtrEquals(tc, (void *)ter, (void *)st->coasts[0]); CuAssertPtrEquals(tc, (void *)ter, (void *)st->coasts[0]);
CuAssertPtrEquals(tc, 0, (void *)st->coasts[1]); CuAssertPtrEquals(tc, 0, (void *)st->coasts[1]);
cJSON_Delete(json);
test_cleanup(); test_cleanup();
} }
@ -281,6 +290,8 @@ static void test_castles(CuTest *tc) {
CuAssertPtrNotNull(tc, bt->construction->improvement); CuAssertPtrNotNull(tc, bt->construction->improvement);
CuAssertIntEquals(tc, 6, bt->construction->improvement->maxsize); CuAssertIntEquals(tc, 6, bt->construction->improvement->maxsize);
CuAssertPtrEquals(tc, 0, bt->construction->improvement->improvement); CuAssertPtrEquals(tc, 0, bt->construction->improvement->improvement);
cJSON_Delete(json);
test_cleanup();
} }
static void test_spells(CuTest * tc) static void test_spells(CuTest * tc)
@ -299,6 +310,7 @@ static void test_spells(CuTest * tc)
CuAssertPtrNotNull(tc, sp); CuAssertPtrNotNull(tc, sp);
CuAssertStrEquals(tc, "u+", sp->syntax); CuAssertStrEquals(tc, "u+", sp->syntax);
cJSON_Delete(json);
test_cleanup(); test_cleanup();
CuAssertPtrEquals(tc, 0, find_spell("fireball")); CuAssertPtrEquals(tc, 0, find_spell("fireball"));
} }
@ -364,6 +376,7 @@ static void test_buildings(CuTest * tc)
CuAssertIntEquals(tc, 20, bt->construction->maxsize); CuAssertIntEquals(tc, 20, bt->construction->maxsize);
CuAssertIntEquals(tc, 1, bt->construction->minskill); CuAssertIntEquals(tc, 1, bt->construction->minskill);
CuAssertPtrEquals(tc, 0, bt->construction->improvement); CuAssertPtrEquals(tc, 0, bt->construction->improvement);
cJSON_Delete(json);
test_cleanup(); test_cleanup();
} }
@ -388,6 +401,7 @@ static void test_buildings_default(CuTest * tc)
CuAssertPtrEquals(tc, (void *)bt, (void *)bt_find("house")); CuAssertPtrEquals(tc, (void *)bt, (void *)bt_find("house"));
CuAssertIntEquals(tc, 0, memcmp(bt, &clone, sizeof(building_type))); CuAssertIntEquals(tc, 0, memcmp(bt, &clone, sizeof(building_type)));
cJSON_Delete(json);
test_cleanup(); test_cleanup();
} }
@ -412,6 +426,7 @@ static void test_ships_default(CuTest * tc)
CuAssertPtrEquals(tc, (void *)st, (void *)st_find("hodor")); CuAssertPtrEquals(tc, (void *)st, (void *)st_find("hodor"));
CuAssertIntEquals(tc, 0, memcmp(st, &clone, sizeof(ship_type))); CuAssertIntEquals(tc, 0, memcmp(st, &clone, sizeof(ship_type)));
cJSON_Delete(json);
test_cleanup(); test_cleanup();
} }
@ -431,6 +446,7 @@ static void test_configs(CuTest * tc)
json_config(json); json_config(json);
CuAssertPtrNotNull(tc, buildingtypes); CuAssertPtrNotNull(tc, buildingtypes);
unlink("test.json"); unlink("test.json");
cJSON_Delete(json);
test_cleanup(); test_cleanup();
} }
@ -472,6 +488,7 @@ static void test_terrains(CuTest * tc)
CuAssertPtrEquals(tc, rt_get_or_create("iron"), (resource_type *)ter->production[1].type); CuAssertPtrEquals(tc, rt_get_or_create("iron"), (resource_type *)ter->production[1].type);
CuAssertPtrEquals(tc, 0, (void *)ter->production[2].type); CuAssertPtrEquals(tc, 0, (void *)ter->production[2].type);
cJSON_Delete(json);
test_cleanup(); test_cleanup();
} }
@ -493,6 +510,7 @@ static void test_directions(CuTest * tc)
CuAssertIntEquals(tc, D_NORTHWEST, get_direction("nordwest", lang)); CuAssertIntEquals(tc, D_NORTHWEST, get_direction("nordwest", lang));
CuAssertIntEquals(tc, D_PAUSE, get_direction("pause", lang)); CuAssertIntEquals(tc, D_PAUSE, get_direction("pause", lang));
cJSON_Delete(json);
test_cleanup(); test_cleanup();
} }
@ -517,6 +535,7 @@ static void test_skills(CuTest * tc)
CuAssertStrEquals(tc, "ALCHEMIE", LOC(lang, "skill::alchemy")); CuAssertStrEquals(tc, "ALCHEMIE", LOC(lang, "skill::alchemy"));
CuAssertStrEquals(tc, "ARMBRUST", LOC(lang, "skill::crossbow")); CuAssertStrEquals(tc, "ARMBRUST", LOC(lang, "skill::crossbow"));
cJSON_Delete(json);
test_cleanup(); test_cleanup();
} }
@ -540,6 +559,7 @@ static void test_keywords(CuTest * tc)
CuAssertStrEquals(tc, "LERNEN", LOC(lang, "keyword::study")); CuAssertStrEquals(tc, "LERNEN", LOC(lang, "keyword::study"));
CuAssertStrEquals(tc, "NACH", LOC(lang, "keyword::move")); CuAssertStrEquals(tc, "NACH", LOC(lang, "keyword::move"));
cJSON_Delete(json);
test_cleanup(); test_cleanup();
} }
@ -558,6 +578,8 @@ static void test_strings(CuTest * tc)
json_config(json); json_config(json);
CuAssertStrEquals(tc, "NACH", LOC(lang, "move")); CuAssertStrEquals(tc, "NACH", LOC(lang, "move"));
CuAssertStrEquals(tc, "LERNEN", LOC(lang, "study")); CuAssertStrEquals(tc, "LERNEN", LOC(lang, "study"));
cJSON_Delete(json);
test_cleanup();
} }
static void test_infinitive_from_config(CuTest *tc) { static void test_infinitive_from_config(CuTest *tc) {
@ -578,6 +600,7 @@ static void test_infinitive_from_config(CuTest *tc) {
ord = create_order(K_STUDY, lang, ""); ord = create_order(K_STUDY, lang, "");
CuAssertStrEquals(tc, "LERNE", get_command(ord, buffer, sizeof(buffer))); CuAssertStrEquals(tc, "LERNE", get_command(ord, buffer, sizeof(buffer)));
free_order(ord); free_order(ord);
cJSON_Delete(json);
test_cleanup(); test_cleanup();
} }