From d002e5a3e7d13d70209654b5dc76772886f18d20 Mon Sep 17 00:00:00 2001 From: Leshana Date: Tue, 31 May 2016 20:24:25 -0400 Subject: [PATCH 1/2] Add a unit test which verifies all research designs' materials lists and chemicals lists contain only valid materials and reagents. --- code/unit_tests/research_tests.dm | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/code/unit_tests/research_tests.dm b/code/unit_tests/research_tests.dm index 34c63b9d10..93bf79a0da 100644 --- a/code/unit_tests/research_tests.dm +++ b/code/unit_tests/research_tests.dm @@ -40,3 +40,33 @@ issues++ return issues + +/datum/unit_test/research_designs_have_valid_materials + name = "RESEARCH: Designs Shall Have Valid Materials and Chemicals" + +/datum/unit_test/research_designs_have_valid_materials/start_test() + var/number_of_issues = 0 + + for(var/design_type in typesof(/datum/design) - /datum/design) + var/datum/design/design = design_type + if(initial(design.id) == "id") + continue + design = new design_type() // Unfortunately we have to actually instantiate to get a list. + + for(var/material_name in design.materials) + var/material/material = get_material_by_name(material_name) + if(!material) + log_unit_test("The entry [design_type] has invalid material type [material_name]") + number_of_issues++ + + for(var/reagent_name in design.chemicals) + if(!(reagent_name in chemical_reagents_list)) + log_unit_test("The entry [design_type] has invalid chemical type [reagent_name]") + number_of_issues++ + + if(number_of_issues) + fail("[number_of_issues] issues with research designs found.") + else + pass("All research designs have valid materials.") + + return 1 From e3c8dd18e3174b2b983a213423c9f15461938490 Mon Sep 17 00:00:00 2001 From: Leshana Date: Tue, 31 May 2016 20:38:07 -0400 Subject: [PATCH 2/2] Fixes a bad material discovered by the new unit test! * "mutagen" is a reagent, not a material; it goes in the chemicals list. --- code/modules/research/designs.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index af53188190..c0ecdbfc3d 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -510,7 +510,8 @@ other types of metals and chemistry for reagents). /datum/design/item/weapon/decloner id = "decloner" req_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 7, TECH_BIO = 5, TECH_POWER = 6) - materials = list("gold" = 5000,"uranium" = 10000, "mutagen" = 40) + materials = list("gold" = 5000,"uranium" = 10000) + chemicals = list("mutagen" = 40) build_path = /obj/item/weapon/gun/energy/decloner sort_string = "TAAAE"