]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Improve gas constants test (#37749)
authorslarticodefast <161409025+slarticodefast@users.noreply.github.com>
Fri, 23 May 2025 13:46:41 +0000 (15:46 +0200)
committerGitHub <noreply@github.com>
Fri, 23 May 2025 13:46:41 +0000 (09:46 -0400)
* improve gas constants test

* fix test fail

* review

Content.IntegrationTests/Tests/Atmos/ConstantsTest.cs

index 9f016cc89a7d1f7ca7caa43a368149e4ba2c1a9e..2e16be564b7cf15049649d153781fc4d7098d7f4 100644 (file)
@@ -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<IEntityManager>();
+            var atmosSystem = entityManager.System<AtmosphereSystem>();
 
-            await server.WaitPost(() =>
+            Assert.Multiple(() =>
             {
-                var atmosSystem = entityManager.System<AtmosphereSystem>();
+                // adding new gases needs a few changes in the code, so make sure this is done everywhere
+                var gasProtos = protoManager.EnumeratePrototypes<GasPrototype>().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<Gas>(), 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();
     }
 }
+