using Content.IntegrationTests.Fixtures.Attributes;
using Content.Shared.Atmos.Components;
using Content.Shared.Atmos.Piping.Binary.Components;
using Content.Shared.Atmos.Piping.Trinary.Components;
using Robust.Shared.Utility;
namespace Content.IntegrationTests.Tests.Atmos;
///
/// Test for ensuring that atmospherics components deserialize and spawn with settings applied.
///
[TestFixture]
public sealed class AtmosMapLoadSettingsTest : AtmosTest
{
// These values correspond to settings in the test map.
private const float PumpSetting = 180f;
private const float MixerMainSetting = 0.1f;
private const float MixerSideSetting = 0.9f;
///
/// Test map containing saved atmos components.
///
protected override ResPath? TestMapPath => new("Maps/Test/Atmospherics/load_atmos_test_room.yml");
///
/// Test to verify that the settings have been properly applied.
///
[Test]
[RunOnSide(Side.Server)]
public void TestMapLoading()
{
var volumePumpQuery = SEntMan.EntityQueryEnumerator();
while (volumePumpQuery.MoveNext(out var volumePump))
{
using (Assert.EnterMultipleScope())
{
Assert.That(volumePump.Enabled, Is.True, "Volume pump did not load enabled!");
Assert.That(
volumePump.TransferRate,
Is.EqualTo(PumpSetting),
"Volume pump did not load correct setting!"
);
}
}
var pressurePumpQuery = SEntMan.EntityQueryEnumerator();
while (pressurePumpQuery.MoveNext(out var pressurePump))
{
using (Assert.EnterMultipleScope())
{
Assert.That(pressurePump.Enabled, Is.True, "Pressure pump did not load enabled!");
Assert.That(
pressurePump.TargetPressure,
Is.EqualTo(PumpSetting),
"Pressure pump did not load correct setting!"
);
}
}
var mixerQuery = SEntMan.EntityQueryEnumerator();
while (mixerQuery.MoveNext(out var mixer))
{
using (Assert.EnterMultipleScope())
{
Assert.That(mixer.Enabled, Is.True, "Mixer did not load enabled!");
Assert.That(
mixer.TargetPressure,
Is.EqualTo(PumpSetting),
"Mixer pump did not load correct setting!"
);
Assert.That(
mixer.InletOneConcentration,
Is.EqualTo(MixerMainSetting),
"Mixer split did not load correct setting!"
);
Assert.That(
mixer.InletTwoConcentration,
Is.EqualTo(MixerSideSetting),
"Mixer split did not load correct setting!"
);
}
}
}
}