mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
57 lines
2.9 KiB
Plaintext
57 lines
2.9 KiB
Plaintext
/// converted unit test, maybe should be fully refactored
|
|
/// MIGHT REQUIRE BIGGER REWORK
|
|
|
|
/// Test that tests that all cosmetics have unique name entries
|
|
/datum/unit_test/sprite_accessories_shall_be_unique
|
|
|
|
/datum/unit_test/sprite_accessories_shall_be_unique/Run()
|
|
validate_accessory_list(/datum/sprite_accessory/ears)
|
|
validate_accessory_list(/datum/sprite_accessory/facial_hair)
|
|
validate_accessory_list(/datum/sprite_accessory/hair)
|
|
validate_accessory_list(/datum/sprite_accessory/hair_accessory)
|
|
validate_accessory_list(/datum/sprite_accessory/marking)
|
|
validate_accessory_list(/datum/sprite_accessory/tail)
|
|
validate_accessory_list(/datum/sprite_accessory/wing)
|
|
|
|
/datum/unit_test/sprite_accessories_shall_be_unique/proc/validate_accessory_list(path)
|
|
var/list/collection = list()
|
|
for(var/datum/sprite_accessory/accessory as anything in subtypesof(path))
|
|
if(accessory::name == DEVELOPER_WARNING_NAME)
|
|
continue
|
|
|
|
TEST_ASSERT(accessory::name, "[accessory::name] - [accessory::type]: Cosmetic - Missing name.")
|
|
|
|
TEST_ASSERT(!collection[accessory::name], "[accessory::name] - [accessory::type]: Cosmetic - Name defined twice. Original def [collection[accessory::name]]")
|
|
if(!collection[accessory::name])
|
|
collection[accessory::name] = accessory::type
|
|
|
|
if(ispath(accessory, text2path("[path]/invisible")))
|
|
TEST_ASSERT(!accessory::icon_state, "[accessory::name] - [accessory::type]: Cosmetic - Invisible subtype has icon_state.")
|
|
else if(!accessory::icon_state)
|
|
TEST_FAIL("[accessory::name] - [accessory::type]: Cosmetic - Has no icon_state.")
|
|
else
|
|
// Check if valid icon
|
|
validate_icons(accessory)
|
|
|
|
/datum/unit_test/sprite_accessories_shall_be_unique/proc/validate_icons(datum/sprite_accessory/accessory)
|
|
var/actual_icon_state = accessory::icon_state
|
|
|
|
if(istype(accessory, /datum/sprite_accessory/hair))
|
|
actual_icon_state += "_s"
|
|
TEST_ASSERT(icon_exists(accessory::icon, actual_icon_state), "[accessory::name] - [accessory::type]: Cosmetic - Icon_state \"[actual_icon_state]\" is not present in [accessory::icon].")
|
|
return
|
|
|
|
if(istype(accessory, /datum/sprite_accessory/facial_hair))
|
|
actual_icon_state += "_s"
|
|
TEST_ASSERT(icon_exists(accessory::icon, actual_icon_state), "[accessory::name] - [accessory::type]: Cosmetic - Icon_state \"[actual_icon_state]\" is not present in [accessory::icon].")
|
|
return
|
|
|
|
if(istype(accessory, /datum/sprite_accessory/marking))
|
|
var/datum/sprite_accessory/marking/marking = accessory
|
|
for(var/body_part in marking.body_parts)
|
|
TEST_ASSERT(body_part in BP_ALL, "[accessory::name] - [accessory::type]: Cosmetic - Has an illegal bodypart \"[body_part]\". ONLY use parts listed in BP_ALL.")
|
|
|
|
actual_icon_state = "[accessory::icon_state]-[body_part]"
|
|
TEST_ASSERT(icon_exists(accessory::icon, actual_icon_state), "[accessory::name] - [accessory::type]: Cosmetic - Icon_state \"[actual_icon_state]\" is not present in [accessory::icon].")
|
|
return
|