Adds unit test for invalid recipes (#8119)

* Adds invalid recipe unit test

Checks for:
- Missing result type
- Result type is not /atom/movable (mob or obj)
- Result quantity unset
- Quantity less than or equal to zero
- Quantity is not an integer

* Update recipe_tests.dm

* adds tests to dme

* dont code at night (remix)

* Update recipe_tests.dm
This commit is contained in:
MarinaGryphon
2021-06-06 00:36:52 -09:00
committed by GitHub
parent f95bcd462d
commit 5dc47dd3ed
2 changed files with 30 additions and 0 deletions
+29
View File
@@ -0,0 +1,29 @@
/datum/unit_test/recipe_test_shall_have_valid_result_and_quantity
name = "RECIPES: Recipes shall have valid result and result_quantity definitions"
/datum/unit_test/recipe_test_shall_have_valid_result_and_quantity/start_test()
var/failed = FALSE
for(var/datum/recipe/R in subtypesof(/datum/recipe))
var/our_result = initial(R.result)
var/our_amount = initial(R.result_quantity)
if(!our_result)
log_unit_test("[R]: Recipes - Missing result.")
failed = TRUE
else if(!ispath(our_result, /atom/movable))
log_unit_test("[R]: Recipes - Improper result; [our_result] is not an obj or mob.")
failed = TRUE
if(isnull(our_amount))
log_unit_test("[R]: Recipes - result_quantity must be set.")
failed = TRUE
if(our_amount <= 0)
log_unit_test("[R]: Recipes - result_quantity must be greater than zero.")
failed = TRUE
else if(!ISINTEGER(our_amount))
log_unit_test("[R]: Recipes - result_quantity must be an integer.")
failed = TRUE
if(failed)
fail("One or more /datum/recipe subtypes had invalid results or result_quantity definitions.")
else
pass("All /datum/recipe subtypes had correct settings.")
return TRUE
+1
View File
@@ -3229,6 +3229,7 @@
#include "code\unit_tests\loadout_tests.dm"
#include "code\unit_tests\map_tests.dm"
#include "code\unit_tests\mob_tests.dm"
#include "code\unit_tests\recipe_tests.dm"
#include "code\unit_tests\research_tests.dm"
#include "code\unit_tests\sqlite_tests.dm"
#include "code\unit_tests\subsystem_tests.dm"