static void testTeamDefsModelScriptData (void) { int i; linkedList_t *armourPaths = NULL; for (i = 0; i < csi.numTeamDefs; i++) { int j; const teamDef_t *teamDef = &csi.teamDef[i]; if (!teamDef->armour) continue; for (j = 0; j < csi.numODs; j++) { const objDef_t *od = INVSH_GetItemByIDX(j); if (!INV_IsArmour(od)) continue; /* not for this team */ if (!CHRSH_IsArmourUseableForTeam(od, teamDef)) continue; if (!LIST_ContainsString(armourPaths, od->armourPath)) LIST_AddString(&armourPaths, od->armourPath); } UFO_CU_ASSERT_TRUE_MSG(!LIST_IsEmpty(armourPaths), va("no armour definitions found for team %s - but armour is set to true", teamDef->id)); LIST_Foreach(armourPaths, char const, armourPath) { int l; for (l = NAME_NEUTRAL; l < NAME_LAST; l++) { /* no models for this gender */ if (!teamDef->numModels[l]) continue; CU_ASSERT_PTR_NOT_NULL_FATAL(teamDef->models[l]); for (linkedList_t const* list = teamDef->models[l]; list; list = list->next) { teamDef_t::model_t const& m = *static_cast<teamDef_t::model_t const*>(list->data); UFO_CU_ASSERT_TRUE_MSG(TEST_CheckModel(va("%s/%s", m.path, m.body)), va("%s does not exist in models/%s (teamDef: %s)", m.body, m.path, teamDef->id)); UFO_CU_ASSERT_TRUE_MSG(TEST_CheckModel(va("%s%s/%s", m.path, armourPath, m.body)), va("%s does not exist in models/%s%s (teamDef: %s)", m.body, m.path, armourPath, teamDef->id)); UFO_CU_ASSERT_TRUE_MSG(TEST_CheckModel(va("%s/%s", m.path, m.head)), va("%s does not exist in models/%s (teamDef: %s)", m.head, m.path, teamDef->id)); UFO_CU_ASSERT_TRUE_MSG(TEST_CheckModel(va("%s%s/%s", m.path, armourPath, m.head)), va("%s does not exist in models/%s%s (teamDef: %s)", m.head, m.path, armourPath, teamDef->id)); } } } LIST_Delete(&armourPaths); }
/** * @brief Unhide those options that are stored in the linked list and hide the others * @param[in,out] option Option list we want to update * @param[in] stringList List of option name (ID) we want to display */ void UI_UpdateInvisOptions (uiNode_t *option, const linkedList_t *stringList) { if (option == NULL || stringList == NULL) return; while (option) { if (LIST_ContainsString(stringList, option->name)) option->invis = qfalse; else option->invis = qtrue; option = option->next; } }
static void testLinkedList (void) { linkedList_t *list = NULL; const char* data = "SomeDataForTheLinkedList"; const size_t length = strlen(data); linkedList_t *entry; const linkedList_t *entry2; const char *returnedData; entry = LIST_Add(&list, (const byte*)data, length); CU_ASSERT_EQUAL(LIST_Count(list), 1); CU_ASSERT_TRUE(entry != NULL); returnedData = (const char *)LIST_GetByIdx(list, 0); CU_ASSERT_TRUE(returnedData != NULL); entry2 = LIST_ContainsString(list, returnedData); CU_ASSERT_TRUE(entry2 != NULL); CU_ASSERT_EQUAL((const void*)entry2->data, (const void*)returnedData); CU_ASSERT_STRING_EQUAL(entry2->data, returnedData); LIST_RemoveEntry(&list, entry); CU_ASSERT_EQUAL(LIST_Count(list), 0); }
static void testTeamDefsModelScriptData (void) { int i; linkedList_t *armourPaths = NULL; for (i = 0; i < csi.numTeamDefs; i++) { int j; const teamDef_t *teamDef = &csi.teamDef[i]; if (!teamDef->armour) continue; for (j = 0; j < csi.numODs; j++) { const objDef_t *od = INVSH_GetItemByIDX(j); if (!INV_IsArmour(od)) continue; /* not for this team */ if (!CHRSH_IsArmourUseableForTeam(od, teamDef)) continue; if (!LIST_ContainsString(armourPaths, od->armourPath)) LIST_AddString(&armourPaths, od->armourPath); } UFO_CU_ASSERT_TRUE_MSG(!LIST_IsEmpty(armourPaths), va("no armour definitions found for team %s - but armour is set to true", teamDef->id)); LIST_Foreach(armourPaths, char const, armourPath) { nametypes_t l; for (l = NAME_NEUTRAL; l < NAME_LAST; l++) { linkedList_t *list = teamDef->models[l]; int k; /* no models for this gender */ if (!teamDef->numModels[l]) continue; CU_ASSERT_PTR_NOT_NULL(list); for (k = 0; k < teamDef->numModels[l]; k++) { const char *path; CU_ASSERT_PTR_NOT_NULL_FATAL(list); path = (const char*)list->data; /* body */ list = list->next; CU_ASSERT_PTR_NOT_NULL_FATAL(list); UFO_CU_ASSERT_TRUE_MSG(TEST_CheckModel(va("%s/%s", path, list->data)), va("%s does not exist in models/%s (teamDef: %s)", list->data, path, teamDef->id)); UFO_CU_ASSERT_TRUE_MSG(TEST_CheckModel(va("%s%s/%s", path, armourPath, list->data)), va("%s does not exist in models/%s%s (teamDef: %s)", list->data, path, armourPath, teamDef->id)); list = list->next; CU_ASSERT_PTR_NOT_NULL_FATAL(list); /* head */ UFO_CU_ASSERT_TRUE_MSG(TEST_CheckModel(va("%s/%s", path, list->data)), va("%s does not exist in models/%s (teamDef: %s)", list->data, path, teamDef->id)); UFO_CU_ASSERT_TRUE_MSG(TEST_CheckModel(va("%s%s/%s", path, armourPath, list->data)), va("%s does not exist in models/%s%s (teamDef: %s)", list->data, path, armourPath, teamDef->id)); /* skip skin */ /** @todo check that the skin is valid for the given model */ list = list->next; CU_ASSERT_PTR_NOT_NULL_FATAL(list); /* new path */ list = list->next; } } } LIST_Delete(&armourPaths); }