From d2f3179784cca656e85a0f96f519af38ef96edeb Mon Sep 17 00:00:00 2001 From: Leshana Date: Tue, 31 May 2016 20:24:25 -0400 Subject: [PATCH] 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 34c63b9d108..93bf79a0da6 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