From 356bc047a473ddd4f3bbd90962240896f190feef Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Tue, 29 Dec 2020 03:38:18 +0100 Subject: [PATCH] [MIRROR] Add Designs Unit Test (#2352) * Add Designs Unit Test (#55760) * Add Designs Unit Test Co-authored-by: Gamer025 <33846895+Gamer025@users.noreply.github.com> --- .../research/designs/medical_designs.dm | 1 + code/modules/unit_tests/_unit_tests.dm | 1 + code/modules/unit_tests/designs.dm | 38 +++++++++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 code/modules/unit_tests/designs.dm diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index 33233cb1721..1f4f7e9fd29 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -690,6 +690,7 @@ name = "Tend Wounds" desc = "An upgraded version of the original surgery." id = "surgery_healing_base" //holder because CI cries otherwise. Not used in techweb unlocks. + surgery = /datum/surgery/healing research_icon_state = "surgery_chest" /datum/design/surgery/healing/brute_upgrade diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index 27cf984fbc8..df69991f7b9 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -40,6 +40,7 @@ #include "combat.dm" #include "component_tests.dm" #include "confusion.dm" +#include "designs.dm" #include "emoting.dm" #include "heretic_knowledge.dm" #include "holidays.dm" diff --git a/code/modules/unit_tests/designs.dm b/code/modules/unit_tests/designs.dm new file mode 100644 index 00000000000..7ef6658959e --- /dev/null +++ b/code/modules/unit_tests/designs.dm @@ -0,0 +1,38 @@ +/datum/unit_test/designs + +/datum/unit_test/designs/Run() +//Can't use allocate because of bug with certain datums + var/datum/design/default_design = new /datum/design() + var/datum/design/nanites/default_design_nanites = new /datum/design/nanites() + var/datum/design/surgery/default_design_surgery = new /datum/design/surgery() + + for(var/path in subtypesof(/datum/design)) + if (ispath(path, /datum/design/nanites) || ispath(path, /datum/design/surgery)) //We are checking nanites and surgery design separatly later since they work differently + continue + var/datum/design/current_design = new path //Create an instance of each design + if (current_design.id == DESIGN_ID_IGNORE) //Don't check designs with ignore ID + continue + if (isnull(current_design.name) || current_design.name == default_design.name) //Designs with ID must have non default/null Name + Fail("Design [current_design.type] has default or null name var but has an ID") + if ((!isnull(current_design.materials) && LAZYLEN(current_design.materials)) || (!isnull(current_design.reagents_list) && LAZYLEN(current_design.reagents_list))) //Design requires materials + if ((isnull(current_design.build_path) || current_design.build_path == default_design.build_path) && (isnull(current_design.make_reagents) || current_design.make_reagents == default_design.make_reagents)) //Check if design gives any output + Fail("Design [current_design.type] requires materials but does not have have any build_path or make_reagents set") + else if (!isnull(current_design.build_path) || !isnull(current_design.build_path)) // //Design requires no materials but creates stuff + Fail("Design [current_design.type] requires NO materials but has build_path or make_reagents set") + + for(var/path in subtypesof(/datum/design/nanites)) + var/datum/design/nanites/current_design = new path //Create an instance of each design + if (isnull(current_design.program_type) || current_design.program_type == default_design_nanites.program_type) //Check if the Nanite design provides a program + Fail("Nanite Design [current_design.type] does not have have any program_type set") + + for(var/path in subtypesof(/datum/design/surgery)) + var/datum/design/surgery/current_design = new path //Create an instance of each design + if (isnull(current_design.id) || current_design.id == default_design_surgery.id) //Check if ID was not set + Fail("Surgery Design [current_design.type] has no ID set") + if (isnull(current_design.id) || current_design.name == default_design_surgery.name) //Check if name was not set + Fail("Surgery Design [current_design.type] has default or null name var") + if (isnull(current_design.desc) || current_design.desc == default_design_surgery.desc) //Check if desc was not set + Fail("Surgery Design [current_design.type] has default or null desc var") + if (isnull(current_design.surgery) || current_design.surgery == default_design_surgery.surgery) //Check if surgery was not set + Fail("Surgery Design [current_design.type] has default or null surgery var") +