Files
Bubberstation/code/modules/unit_tests/resist.dm
SkyratBot 6ef42d16d7 [MIRROR] fixes verbs not actually queuing. [MDB IGNORE] (#15444)
* fixes verbs not actually queuing.  (#68990)

thanks to Vallat for pointing this out

whoops turns out most verbs havent been queued since may 11th because I made /datum/controller/subsystem/verb_manager have the SS_NO_INIT flag, without also removing a check in verb_manager/proc/can_queue_verb() that stops the verb callback from being queued if the subsystem isnt initialized yet. since subsystems with SS_NO_INIT obviously never have initialized set to TRUE, this always failed for every verb manager subsystem except for SSinput (because it doesnt have SS_NO_INIT).

also adds a debug var to force a subsystem to always queue incoming verbs if possible.

now the default verb management subsystem, and speech_controller will successfully queue verbs again. SSinput always queued verbs so that shouldnt change.

* fixes verbs not actually queuing.

Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
2022-08-06 21:51:38 -07:00

39 lines
1.7 KiB
Plaintext

/// Test that stop, drop, and roll lowers fire stacks
/datum/unit_test/stop_drop_and_roll/Run()
var/mob/living/carbon/human/human = allocate(/mob/living/carbon/human)
TEST_ASSERT_EQUAL(human.fire_stacks, 0, "Human does not have 0 fire stacks pre-ignition")
human.adjust_fire_stacks(5)
human.ignite_mob()
TEST_ASSERT_EQUAL(human.fire_stacks, 5, "Human does not have 5 fire stacks pre-resist")
// Stop, drop, and roll has a sleep call. This would delay the test, and is not necessary.
call_async(human, /mob/living/verb/resist)
//since resist() is a verb that possibly queues its actual execution for the next tick, we need to make the subsystem that handles the delayed execution process
//the callback. either that or sleep ourselves and see if it ran.
SSverb_manager.run_verb_queue()
TEST_ASSERT(human.fire_stacks < 5, "Human did not lower fire stacks after resisting")
/// Test that you can resist out of a container
/datum/unit_test/container_resist/Run()
var/mob/living/carbon/human/human = allocate(/mob/living/carbon/human)
var/obj/structure/closet/closet = allocate(/obj/structure/closet, get_turf(human))
closet.open(human)
TEST_ASSERT(!(human in closet.contents), "Human was in the contents of an open closet")
closet.close(human)
TEST_ASSERT(human in closet.contents, "Human was not in the contents of the closed closet")
human.resist()
//since resist() is a verb that possibly queues itself for the next tick, we need to make the subsystem that handles the delayed execution process
//the callback. either that or sleep ourselves and see if it ran.
SSverb_manager.run_verb_queue()
TEST_ASSERT(!(human in closet.contents), "Human resisted out of a standard closet, but was still in it")