Adds unit tests for bar sign datums (#68046)

This commit is contained in:
Tastyfish
2022-07-08 08:36:10 -04:00
committed by GitHub
parent e22526e502
commit c070dd4ffd
3 changed files with 51 additions and 8 deletions
+13 -8
View File
@@ -22,7 +22,7 @@
icon_state = sign.icon
if(sign.name)
if(sign.rename_area)
name = "[initial(name)] ([sign.name])"
else
name = "[initial(name)]"
@@ -30,7 +30,7 @@
if(sign.desc)
desc = sign.desc
if(sign.rename_area && sign.name)
if(sign.rename_area)
rename_area(src, sign.name)
return sign
@@ -138,15 +138,20 @@
var/list/names = list()
for(var/d in subtypesof(/datum/barsign))
var/datum/barsign/D = d
if(initial(D.name) && !initial(D.hidden))
if(!initial(D.hidden))
names += initial(D.name)
. = names
/datum/barsign
var/name = "Name"
var/icon = "Icon"
var/desc = "desc"
/// User-visible name of the sign.
var/name
/// Icon state associated with this sign
var/icon
/// Description shown in the sign's examine text.
var/desc
/// Hidden from list of selectable options.
var/hidden = FALSE
/// Rename the area when this sign is selected.
var/rename_area = TRUE
/datum/barsign/New()
@@ -304,7 +309,7 @@
/datum/barsign/hiddensigns/empbarsign
name = null
name = "EMP'd"
icon = "empbarsign"
desc = "Something has gone very wrong."
rename_area = FALSE
@@ -315,7 +320,7 @@
desc = "Syndicate or die."
/datum/barsign/hiddensigns/signoff
name = null
name = "Off"
icon = "empty"
desc = "This sign doesn't seem to be on."
rename_area = FALSE
+1
View File
@@ -70,6 +70,7 @@
#include "anchored_mobs.dm"
#include "anonymous_themes.dm"
#include "autowiki.dm"
#include "barsigns.dm"
#include "bespoke_id.dm"
#include "binary_insert.dm"
#include "bloody_footprints.dm"
+37
View File
@@ -0,0 +1,37 @@
/**
* Test if icon states for each datum actually exist in the DMI.
*/
/datum/unit_test/barsigns_icon
/datum/unit_test/barsigns_icon/Run()
var/obj/structure/sign/barsign_type = /obj/structure/sign/barsign
var/icon/barsign_icon = initial(barsign_type.icon)
var/list/barsign_icon_states = icon_states(barsign_icon)
// Check every datum real bar sign
for(var/sign_type in (subtypesof(/datum/barsign) - /datum/barsign/hiddensigns))
var/datum/barsign/sign = new sign_type()
if(!(sign.icon in barsign_icon_states))
TEST_FAIL("Icon state for [sign_type] does not exist in [barsign_icon].")
/**
* Check that bar signs have a name and desc, and that the name is unique.
*/
/datum/unit_test/barsigns_name
/datum/unit_test/barsigns_name/Run()
var/list/existing_names = list()
for(var/sign_type in subtypesof(/datum/barsign) - /datum/barsign/hiddensigns)
var/datum/barsign/sign = new sign_type()
if(!sign.name)
TEST_FAIL("[sign_type] does not have a name.")
if(!sign.desc)
TEST_FAIL("[sign_type] does not have a desc.")
if(sign.name in existing_names)
TEST_FAIL("[sign_type] does not have a unique name.")
existing_names += sign.name