Outfit datums: unit test

This commit is contained in:
Shifty/Anthomansland
2020-05-24 19:14:57 +02:00
parent 32fbb41e79
commit 36bfb18aa4
10 changed files with 85 additions and 52 deletions

View File

@@ -6,4 +6,5 @@
#include "reagent_recipe_collisions.dm"
#include "slipping.dm"
#include "names.dm"
#include "outfit_datums.dm"
#endif

View File

@@ -1,11 +1,41 @@
/datum/unit_test/outfit_datums
// Make sure that the slots indexes used by outfit datums are indeed slot indexes.
// Spawn a human of each race and equip items to make sure they're of the correct type.
// Spawn a backback and put all the items to collect to make sure there's enough room.
/datum/unit_test/outfit_datums/start()
for (var/type in subtypesof(/datum/outfit))
var/datum/outfit/O = new
for (var/L in O.items_to_spawn)
for (var/slot in L)
if (text2num(slot) == "")
fail("Outfit [O.type] : list [L] doesn't have a number index at slot [slot].")
for (var/type in subtypesof(/datum/outfit))
var/datum/outfit/O = new type
for (var/species in O.items_to_spawn)
// Testing all species.
var/list/to_recycle = list()
var/list/L = O.items_to_spawn[species]
var/mob/living/carbon/human/H = new(run_loc_top_right)
sleep(1)
if (species != "Default")
var/datum/species/S = species
H.set_species(initial(S.name))
sleep(1) // set_species has spawns() in it, so we have to wait.
for (var/slot in L)
if (isnull(text2num(slot)))
fail("Outfit [O.type] : list [species] doesn't have a number index at slot [slot].")
var/obj_type = L[slot]
if (islist(obj_type)) // Special objects for alt-titles. Equip them all, delete, then equip the first one.
var/list/L2 = obj_type
for (var/alt_title in L2)
obj_type = L2[alt_title]
var/obj/item/alt_title_item = new obj_type(get_turf(H))
if(!H.equip_to_slot_or_del(alt_title_item, text2num(slot), TRUE))
fail("[obj_type] not equipped on [species]; alt-title: [alt_title]")
qdel(alt_title_item)
obj_type = L2[L2[1]] // L2[1] = first alt-title. L2[L2[1]] = first item path.
var/obj/item/item = new obj_type(get_turf(H))
to_recycle += item
if(!H.equip_to_slot_or_del(item, text2num(slot), TRUE))
fail("[obj_type] not equipped on [species]")
for (var/object in to_recycle)
qdel(object)
to_recycle -= object
qdel(H)
sleep(1)