Create interaction test harness. (#27643)

* Create interaction test harness.

* retrofit tests, add janicart attack chain tests

* extract puppeteer to separate file

* move puppeteer creation to constructor
This commit is contained in:
warriorstar-orion
2024-12-22 19:20:49 -05:00
committed by GitHub
parent 5c549adeb6
commit 33eaf8ae42
5 changed files with 123 additions and 1 deletions
@@ -0,0 +1,17 @@
/datum/game_test/attack_chain_cult_dagger/Run()
var/datum/test_puppeteer/cultist = new(src)
var/datum/test_puppeteer/target = cultist.spawn_puppet_nearby()
cultist.puppet.mind.add_antag_datum(/datum/antagonist/cultist)
cultist.spawn_obj_in_hand(/obj/item/melee/cultblade/dagger)
cultist.set_intent("harm")
cultist.click_on(target)
TEST_ASSERT(target.check_attack_log("Attacked with ritual dagger"), "non-cultist missing dagger attack log")
TEST_ASSERT_NOTEQUAL(target.puppet.health, target.puppet.getMaxHealth(), "cultist attacking non-cultist with dagger caused no damage")
target.rejuvenate()
target.puppet.mind.add_antag_datum(/datum/antagonist/cultist)
cultist.click_on(target)
TEST_ASSERT_EQUAL(target.puppet.health, target.puppet.getMaxHealth(), "cultist attacking cultist with dagger caused damage")
@@ -0,0 +1,26 @@
/datum/game_test/attack_chain_vehicles/Run()
var/datum/test_puppeteer/player = new(src)
var/obj/item/key/janitor/janicart_key = player.spawn_obj_in_hand(/obj/item/key/janitor)
var/obj/vehicle/janicart/janicart = player.spawn_obj_nearby(/obj/vehicle/janicart)
player.click_on(janicart)
TEST_ASSERT_EQUAL(janicart.inserted_key, janicart_key, "did not find janicart key in vehicle")
var/move_delay = janicart.vehicle_move_delay
player.spawn_obj_in_hand(/obj/item/borg/upgrade/vtec)
player.click_on(janicart)
TEST_ASSERT(janicart.vehicle_move_delay < move_delay, "VTEC upgrade not applied properly")
TEST_ASSERT_NULL(janicart.mybag, "unexpected trash bag on janicart")
var/obj/item/storage/bag/trash/bag = player.spawn_obj_in_hand(/obj/item/storage/bag/trash)
player.click_on(janicart)
TEST_ASSERT_EQUAL(janicart.mybag, bag, "trash bag not attached to janicart")
var/obj/item/kitchen/knife/knife = player.spawn_obj_in_hand(/obj/item/kitchen/knife)
player.set_intent("harm")
player.click_on(janicart)
TEST_ASSERT(janicart.obj_integrity < janicart.max_integrity, "knife attack not performed")
player.set_intent("help")
player.click_on(janicart)
TEST_ASSERT(knife in bag, "knife not placed in trash bag")