Files
Bubberstation/code/modules/unit_tests/hydroponics_validate_genes.dm
MrMelbert f968e21b1a Unit tests for default hydroponic seed gene setups (#67029)
Adds a unit test that ensures the default list of genes for all plants is a valid setup.
2022-05-17 12:26:46 -04:00

32 lines
1.5 KiB
Plaintext

/// Unit test to ensure plants don't have multiple of a plant type at once by default.
/datum/unit_test/hydroponics_validate_genes
/datum/unit_test/hydroponics_validate_genes/Run()
var/list/all_seeds = subtypesof(/obj/item/seeds)
for(var/seed in all_seeds)
var/obj/item/seeds/instantiated_seed = new seed()
var/all_trait_ids_we_have = NONE
for(var/datum/plant_gene/trait/trait_gene in instantiated_seed.genes)
// Check if our seed is blacklisted from this trait.
for(var/blacklisted_type in trait_gene.seed_blacklist)
if(!istype(instantiated_seed, blacklisted_type))
continue
TEST_FAIL("[instantiated_seed] - [instantiated_seed.type] has a gene which blacklists its type. (Bad gene: [trait_gene] - [trait_gene.type])")
// Check if we already have a trait id from another trait.
if(all_trait_ids_we_have & trait_gene.trait_ids)
TEST_FAIL("[instantiated_seed] - [instantiated_seed.type] has an invalid default gene configuration. (Found on: [trait_gene] - [trait_gene.type])")
all_trait_ids_we_have |= trait_gene.trait_ids
// Check if we have duplicate traits.
for(var/datum/plant_gene/trait/other_trait_gene in instantiated_seed.genes - trait_gene)
// Have to check for type exact, since subtypes may be valid with one another.
if(trait_gene.type != other_trait_gene.type)
continue
TEST_FAIL("[instantiated_seed] - [instantiated_seed.type] has a duplicate gene. (Duped gene: [trait_gene] - [trait_gene.type])")
qdel(instantiated_seed)