diff --git a/Content.IntegrationTests/Tests/Atmos/ConstantsTest.cs b/Content.IntegrationTests/Tests/Atmos/ConstantsTest.cs index 9f016cc89a..2e16be564b 100644 --- a/Content.IntegrationTests/Tests/Atmos/ConstantsTest.cs +++ b/Content.IntegrationTests/Tests/Atmos/ConstantsTest.cs @@ -1,32 +1,53 @@ using System.Linq; using Content.Server.Atmos.EntitySystems; using Content.Shared.Atmos; -using Robust.Shared.GameObjects; +using Content.Shared.Atmos.Prototypes; -namespace Content.IntegrationTests.Tests.Atmos +namespace Content.IntegrationTests.Tests.Atmos; + +[TestOf(typeof(Atmospherics))] +public sealed class ConstantsTest { - [TestFixture] - [TestOf(typeof(Atmospherics))] - public sealed class ConstantsTest + [Test] + public async Task TotalGasesTest() { - [Test] - public async Task TotalGasesTest() + await using var pair = await PoolManager.GetServerClient(); + var server = pair.Server; + var entityManager = server.EntMan; + var protoManager = server.ProtoMan; + + await server.WaitPost(() => { - await using var pair = await PoolManager.GetServerClient(); - var server = pair.Server; - var entityManager = server.ResolveDependency(); + var atmosSystem = entityManager.System(); - await server.WaitPost(() => + Assert.Multiple(() => { - var atmosSystem = entityManager.System(); + // adding new gases needs a few changes in the code, so make sure this is done everywhere + var gasProtos = protoManager.EnumeratePrototypes().ToList(); - Assert.Multiple(() => + // number of gas prototypes + Assert.That(gasProtos, Has.Count.EqualTo(Atmospherics.TotalNumberOfGases), + $"Number of GasPrototypes is not equal to TotalNumberOfGases."); + // number of gas prototypes used in the atmos system + Assert.That(atmosSystem.Gases.Count(), Is.EqualTo(Atmospherics.TotalNumberOfGases), + $"AtmosSystem.Gases is not equal to TotalNumberOfGases."); + // enum mapping gases to their Id + Assert.That(Enum.GetValues(), Has.Length.EqualTo(Atmospherics.TotalNumberOfGases), + $"Gas enum size is not equal to TotalNumberOfGases."); + // localized abbreviations for UI purposes + Assert.That(Atmospherics.GasAbbreviations, Has.Count.EqualTo(Atmospherics.TotalNumberOfGases), + $"GasAbbreviations size is not equal to TotalNumberOfGases."); + + // the ID for each gas has to be a number from 0 to TotalNumberOfGases-1 + foreach (var gas in gasProtos) { - Assert.That(atmosSystem.Gases.Count(), Is.EqualTo(Atmospherics.TotalNumberOfGases)); - Assert.That(Enum.GetValues(typeof(Gas)), Has.Length.EqualTo(Atmospherics.TotalNumberOfGases)); - }); + var validInteger = int.TryParse(gas.ID, out var number); + Assert.That(validInteger, Is.True, $"GasPrototype {gas.ID} has an invalid ID. It has to be an integer between 0 and TotalNumberOfGases - 1."); + Assert.That(number, Is.InRange(0, Atmospherics.TotalNumberOfGases - 1), $"GasPrototype {gas.ID} has an invalid ID. It has to be an integer between 0 and TotalNumberOfGases - 1."); + } }); - await pair.CleanReturnAsync(); - } + }); + await pair.CleanReturnAsync(); } } +