Adds fire/air alarms (#5018)
Co-authored-by: Vera Aguilera Puerto <6766154+Zumorica@users.noreply.github.com> Co-authored-by: E F R <602406+Efruit@users.noreply.github.com> Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
This commit is contained in:
97
Content.IntegrationTests/Tests/Atmos/AlarmThresholdTest.cs
Normal file
97
Content.IntegrationTests/Tests/Atmos/AlarmThresholdTest.cs
Normal file
@@ -0,0 +1,97 @@
|
||||
using System.Threading.Tasks;
|
||||
using Content.Shared.Atmos.Monitor;
|
||||
using NUnit.Framework;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.IntegrationTests.Tests.Atmos
|
||||
{
|
||||
[TestFixture]
|
||||
[TestOf(typeof(AtmosAlarmThreshold))]
|
||||
public class AlarmThresholdTest : ContentIntegrationTest
|
||||
{
|
||||
private const string Prototypes = @"
|
||||
- type: alarmThreshold
|
||||
id: testThreshold
|
||||
upperBound: 5
|
||||
lowerBound: 1
|
||||
upperWarnAround: 0.5
|
||||
lowerWarnAround: 1.5
|
||||
";
|
||||
|
||||
[Test]
|
||||
public async Task TestAlarmThreshold()
|
||||
{
|
||||
var server = StartServerDummyTicker(new ServerContentIntegrationOption
|
||||
{
|
||||
ExtraPrototypes = Prototypes
|
||||
});
|
||||
|
||||
await server.WaitIdleAsync();
|
||||
|
||||
var prototypeManager = server.ResolveDependency<IPrototypeManager>();
|
||||
AtmosAlarmThreshold threshold = default!;
|
||||
|
||||
await server.WaitPost(() =>
|
||||
{
|
||||
threshold = prototypeManager.Index<AtmosAlarmThreshold>("testThreshold");
|
||||
});
|
||||
|
||||
await server.WaitAssertion(() =>
|
||||
{
|
||||
// ensure upper/lower bounds are calculated
|
||||
Assert.That(threshold.UpperWarningBound, Is.EqualTo(5f * 0.5f));
|
||||
Assert.That(threshold.LowerWarningBound, Is.EqualTo(1f * 1.5f));
|
||||
|
||||
// ensure that setting bounds to zero/
|
||||
// negative numbers is an invalid
|
||||
// set
|
||||
threshold.TrySetPrimaryBound(AtmosMonitorThresholdBound.Upper, 0);
|
||||
Assert.That(threshold.UpperBound, Is.EqualTo(5f));
|
||||
threshold.TrySetPrimaryBound(AtmosMonitorThresholdBound.Upper, -1);
|
||||
Assert.That(threshold.UpperBound, Is.EqualTo(5f));
|
||||
|
||||
threshold.TrySetPrimaryBound(AtmosMonitorThresholdBound.Lower, 0);
|
||||
Assert.That(threshold.LowerBound, Is.EqualTo(1f));
|
||||
threshold.TrySetPrimaryBound(AtmosMonitorThresholdBound.Lower, -1);
|
||||
Assert.That(threshold.LowerBound, Is.EqualTo(1f));
|
||||
|
||||
|
||||
// test if making the lower bound higher
|
||||
// than upper is invalid
|
||||
// aka just returns the previous value
|
||||
// instead of setting it to null
|
||||
threshold.TrySetPrimaryBound(AtmosMonitorThresholdBound.Lower, 6f);
|
||||
Assert.That(threshold.LowerBound, Is.EqualTo(1f));
|
||||
|
||||
// same as above, sets it lower
|
||||
threshold.TrySetPrimaryBound(AtmosMonitorThresholdBound.Upper, 0.5f);
|
||||
Assert.That(threshold.UpperBound, Is.EqualTo(5f));
|
||||
|
||||
threshold.TrySetWarningBound(AtmosMonitorThresholdBound.Upper, threshold.UpperBound + 1);
|
||||
Assert.That(threshold.UpperWarningPercentage, Is.EqualTo(0.5f));
|
||||
|
||||
threshold.TrySetWarningBound(AtmosMonitorThresholdBound.Lower, threshold.LowerBound - 1);
|
||||
Assert.That(threshold.LowerWarningPercentage, Is.EqualTo(1.5f));
|
||||
|
||||
threshold.TrySetWarningBound(AtmosMonitorThresholdBound.Upper, threshold.LowerBound - 1);
|
||||
Assert.That(threshold.UpperWarningPercentage, Is.EqualTo(0.5f));
|
||||
|
||||
threshold.TrySetWarningBound(AtmosMonitorThresholdBound.Lower, threshold.UpperBound + 1);
|
||||
Assert.That(threshold.LowerWarningPercentage, Is.EqualTo(1.5f));
|
||||
|
||||
threshold.TrySetWarningBound(AtmosMonitorThresholdBound.Upper, null);
|
||||
threshold.TrySetWarningBound(AtmosMonitorThresholdBound.Lower, null);
|
||||
|
||||
Assert.That(threshold.UpperWarningBound, Is.EqualTo(null));
|
||||
Assert.That(threshold.LowerWarningBound, Is.EqualTo(null));
|
||||
|
||||
threshold.TrySetPrimaryBound(AtmosMonitorThresholdBound.Upper, null);
|
||||
threshold.TrySetPrimaryBound(AtmosMonitorThresholdBound.Lower, null);
|
||||
|
||||
Assert.That(threshold.UpperBound, Is.EqualTo(null));
|
||||
Assert.That(threshold.LowerBound, Is.EqualTo(null));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user