]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Fix MagazineVisualsSpritesExist for engine PR (#36761)
authorLeon Friedrich <60421075+ElectroJr@users.noreply.github.com>
Sat, 10 May 2025 11:40:27 +0000 (21:40 +1000)
committerGitHub <noreply@github.com>
Sat, 10 May 2025 11:40:27 +0000 (21:40 +1000)
Content.IntegrationTests/Pair/TestPair.Helpers.cs
Content.IntegrationTests/Tests/MagazineVisualsSpriteTest.cs

index 1b4825cc9c7ea32ff265ee2869d4bbe01380c659..5e7ba0dcc83a10a3e48b16e013a622d9edd482c1 100644 (file)
@@ -111,9 +111,16 @@ public sealed partial class TestPair
         HashSet<string>? ignored = null,
         bool ignoreAbstract = true,
         bool ignoreTestPrototypes = true)
-        where T : IComponent
+        where T : IComponent, new()
     {
-        var id = Server.ResolveDependency<IComponentFactory>().GetComponentName(typeof(T));
+        if (!Server.ResolveDependency<IComponentFactory>().TryGetRegistration<T>(out var reg)
+            && !Client.ResolveDependency<IComponentFactory>().TryGetRegistration<T>(out reg))
+        {
+            Assert.Fail($"Unknown component: {typeof(T).Name}");
+            return new();
+        }
+
+        var id = reg.Name;
         var list = new List<(EntityPrototype, T)>();
         foreach (var proto in Server.ProtoMan.EnumeratePrototypes<EntityPrototype>())
         {
index fb0c67afd7a1b6f7dfcc9f718d046cdc3cd2e8f5..be608c374b86cafacc805a8fac7c84db3b08c362 100644 (file)
@@ -18,33 +18,32 @@ public sealed class MagazineVisualsSpriteTest
     {
         await using var pair = await PoolManager.GetServerClient();
         var client = pair.Client;
-        var protoMan = client.ResolveDependency<IPrototypeManager>();
-        var componentFactory = client.ResolveDependency<IComponentFactory>();
+        var toTest = new List<(int, string)>();
+        var protos = pair.GetPrototypesWithComponent<MagazineVisualsComponent>();
 
         await client.WaitAssertion(() =>
         {
             Assert.Multiple(() =>
             {
-                foreach (var proto in protoMan.EnumeratePrototypes<EntityPrototype>())
+                foreach (var (proto, _) in protos)
                 {
-                    if (proto.Abstract || pair.IsTestPrototype(proto))
-                        continue;
+                    var uid = client.EntMan.Spawn(proto.ID);
+                    var visuals = client.EntMan.GetComponent<MagazineVisualsComponent>(uid);
 
-                    if (!proto.TryGetComponent<MagazineVisualsComponent>(out var visuals, componentFactory))
-                        continue;
-
-                    Assert.That(proto.TryGetComponent<SpriteComponent>(out var sprite, componentFactory),
+                    Assert.That(client.EntMan.TryGetComponent(uid, out SpriteComponent sprite),
                         @$"{proto.ID} has MagazineVisualsComponent but no SpriteComponent.");
-                    Assert.That(proto.HasComponent<AppearanceComponent>(componentFactory),
+                    Assert.That(client.EntMan.HasComponent<AppearanceComponent>(uid),
                         @$"{proto.ID} has MagazineVisualsComponent but no AppearanceComponent.");
 
-                    var toTest = new List<(int, string)>();
+                    toTest.Clear();
                     if (sprite.LayerMapTryGet(GunVisualLayers.Mag, out var magLayerId))
                         toTest.Add((magLayerId, ""));
                     if (sprite.LayerMapTryGet(GunVisualLayers.MagUnshaded, out var magUnshadedLayerId))
                         toTest.Add((magUnshadedLayerId, "-unshaded"));
 
-                    Assert.That(toTest, Is.Not.Empty,
+                    Assert.That(
+                        toTest,
+                        Is.Not.Empty,
                         @$"{proto.ID} has MagazineVisualsComponent but no Mag or MagUnshaded layer map.");
 
                     var start = visuals.ZeroVisible ? 0 : 1;
@@ -63,6 +62,8 @@ public sealed class MagazineVisualsSpriteTest
                         var extraState = $"{visuals.MagState}{midfix}-{visuals.MagSteps}";
                         Assert.That(rsi.TryGetState(extraState, out _), Is.False,
                             @$"{proto.ID} has MagazineVisualsComponent with MagSteps = {visuals.MagSteps}, but more states exist!");
+
+                        client.EntMan.DeleteEntity(uid);
                     }
                 }
             });