From 23fe9d1c585a1e97b5e3922b5c98236396d0c3b1 Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 12 Aug 2026 00:30:41 -0400 Subject: [PATCH] Test regular door occupancy resolution --- tests/test_wire.lua | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tests/test_wire.lua b/tests/test_wire.lua index adbf404..6211662 100644 --- a/tests/test_wire.lua +++ b/tests/test_wire.lua @@ -261,6 +261,40 @@ test("circuit resolution passes doorway occupancy to a wired door", function() assertFalse(wiredDoor.canClose, "resolver omitted player doorway obstruction") end) +test("room switch resolution keeps a regular door open around an occupant", function() + local oldLove, oldLoadSprite = love, loadSprite + love = {audio = {newSource = function() + return {stop = function() end, play = function() end} + end}} + loadSprite = function() + return {getWidth = function() return 16 end, getHeight = function() return 16 end} + end + require "room" + local door = Door:new(2, 2, "red") + local player, block = {x = 2, y = 2}, {x = 1, y = 1} + function player:occupiesCell(cell) return self.x == cell.x and self.y == cell.y end + function block:occupiesCell(cell) return self.x == cell.x and self.y == cell.y end + function block:canPassOver() return false end + local room = setmetatable({ + player = {blue = player}, doors = {door}, + collideables = {red = {door}, green = {block}, blue = {}}, + }, {__index = Room}) + room.switchCheck = function() return {red = true} end + room:resolveSwitchesAndDoors() + assertFalse(door.locked, "switch did not open regular door") + room.switchCheck = function() return {red = false} end + room:resolveSwitchesAndDoors() + assertFalse(door.locked, "regular door shut through player during room resolution") + room.player.blue.x, room.player.blue.y = 1, 1 + room.collideables.green[1].x, room.collideables.green[1].y = 2, 2 + room:resolveSwitchesAndDoors() + assertFalse(door.locked, "regular door shut through collidable during room resolution") + room.collideables.green[1].x, room.collideables.green[1].y = 1, 1 + room:resolveSwitchesAndDoors() + assertTrue(door.locked, "regular door did not close once clear") + love, loadSprite = oldLove, oldLoadSprite +end) + test("selecting a parked colour changes to its room", function() local function player() local entity = {switched = false}