]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Add interaction tests for prying airlocks (#35409)
authorTayrtahn <tayrtahn@gmail.com>
Sun, 23 Feb 2025 13:46:59 +0000 (08:46 -0500)
committerGitHub <noreply@github.com>
Sun, 23 Feb 2025 13:46:59 +0000 (00:46 +1100)
Content.IntegrationTests/Tests/Doors/AirlockPryingTest.cs [new file with mode: 0644]
Content.IntegrationTests/Tests/Interaction/InteractionTest.Constants.cs
Content.Shared/Doors/Systems/SharedDoorSystem.cs

diff --git a/Content.IntegrationTests/Tests/Doors/AirlockPryingTest.cs b/Content.IntegrationTests/Tests/Doors/AirlockPryingTest.cs
new file mode 100644 (file)
index 0000000..135abb2
--- /dev/null
@@ -0,0 +1,84 @@
+using Content.IntegrationTests.Tests.Interaction;
+using Content.Server.Doors.Systems;
+using Content.Shared.Doors.Components;
+
+namespace Content.IntegrationTests.Tests.Doors;
+
+public sealed class AirlockPryingTest : InteractionTest
+{
+    [Test]
+    public async Task PoweredClosedAirlock_Pry_DoesNotOpen()
+    {
+        await SpawnTarget(Airlock);
+        await SpawnEntity("APCBasic", SEntMan.GetCoordinates(TargetCoords));
+
+        await RunTicks(1);
+
+        Assert.That(TryComp<AirlockComponent>(out var airlockComp), "Airlock does not have AirlockComponent?");
+        Assert.That(airlockComp.Powered, "Airlock should be powered for this test.");
+
+        Assert.That(TryComp<DoorComponent>(out var doorComp), "Airlock does not have DoorComponent?");
+        Assert.That(doorComp.State, Is.EqualTo(DoorState.Closed), "Airlock did not start closed.");
+
+        await InteractUsing(Pry);
+
+        Assert.That(doorComp.State, Is.EqualTo(DoorState.Closed), "Powered airlock was pried open.");
+    }
+
+    [Test]
+    public async Task PoweredOpenAirlock_Pry_DoesNotClose()
+    {
+        await SpawnTarget(Airlock);
+        await SpawnEntity("APCBasic", SEntMan.GetCoordinates(TargetCoords));
+
+        await RunTicks(1);
+
+        Assert.That(TryComp<AirlockComponent>(out var airlockComp), "Airlock does not have AirlockComponent?");
+        Assert.That(airlockComp.Powered, "Airlock should be powered for this test.");
+
+        var doorSys = SEntMan.System<DoorSystem>();
+        await Server.WaitPost(() => doorSys.SetState(SEntMan.GetEntity(Target.Value), DoorState.Open));
+
+        Assert.That(TryComp<DoorComponent>(out var doorComp), "Airlock does not have DoorComponent?");
+        Assert.That(doorComp.State, Is.EqualTo(DoorState.Open), "Airlock did not start open.");
+
+        await InteractUsing(Pry);
+
+        Assert.That(doorComp.State, Is.EqualTo(DoorState.Open), "Powered airlock was pried closed.");
+    }
+
+    [Test]
+    public async Task UnpoweredClosedAirlock_Pry_Opens()
+    {
+        await SpawnTarget(Airlock);
+
+        Assert.That(TryComp<AirlockComponent>(out var airlockComp), "Airlock does not have AirlockComponent?");
+        Assert.That(airlockComp.Powered, Is.False, "Airlock should not be powered for this test.");
+
+        Assert.That(TryComp<DoorComponent>(out var doorComp), "Airlock does not have DoorComponent?");
+        Assert.That(doorComp.State, Is.EqualTo(DoorState.Closed), "Airlock did not start closed.");
+
+        await InteractUsing(Pry);
+
+        Assert.That(doorComp.State, Is.EqualTo(DoorState.Opening), "Unpowered airlock failed to pry open.");
+    }
+
+    [Test]
+    public async Task UnpoweredOpenAirlock_Pry_Closes()
+    {
+        await SpawnTarget(Airlock);
+
+        Assert.That(TryComp<AirlockComponent>(out var airlockComp), "Airlock does not have AirlockComponent?");
+        Assert.That(airlockComp.Powered, Is.False, "Airlock should not be powered for this test.");
+
+        var doorSys = SEntMan.System<DoorSystem>();
+        await Server.WaitPost(() => doorSys.SetState(SEntMan.GetEntity(Target.Value), DoorState.Open));
+
+        Assert.That(TryComp<DoorComponent>(out var doorComp), "Airlock does not have DoorComponent?");
+        Assert.That(doorComp.State, Is.EqualTo(DoorState.Open), "Airlock did not start open.");
+
+        await InteractUsing(Pry);
+
+        Assert.That(doorComp.State, Is.EqualTo(DoorState.Closing), "Unpowered airlock failed to pry closed.");
+    }
+}
index 11381fb8ccd0d035bcb415c91e7ecce32d25c12d..aa58b30bf37f6640de6205bdc86e8ce081e099bc 100644 (file)
@@ -10,6 +10,9 @@ public abstract partial class InteractionTest
     protected const string Plating = "Plating";
     protected const string Lattice = "Lattice";
 
+    // Structures
+    protected const string Airlock = "Airlock";
+
     // Tools/steps
     protected const string Wrench = "Wrench";
     protected const string Screw = "Screwdriver";
index a0d48b7d67555f1d8269d6b6b66a45f6652ea7c1..4d92cf9681f080174c6d2e9016aa1da4f39534cf 100644 (file)
@@ -149,7 +149,7 @@ public abstract partial class SharedDoorSystem : EntitySystem
         RaiseLocalEvent(ent, new DoorStateChangedEvent(door.State));
     }
 
-    protected bool SetState(EntityUid uid, DoorState state, DoorComponent? door = null)
+    public bool SetState(EntityUid uid, DoorState state, DoorComponent? door = null)
     {
         if (!Resolve(uid, ref door))
             return false;