Files
tbd-station-14/Content.IntegrationTests/Tests/Atmos/AlarmThresholdTest.cs
Flipp Syder b1584793bf 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>
2022-01-02 15:56:24 +11:00

98 lines
4.0 KiB
C#

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));
});
}
}
}