using Content.Shared.Item; using Content.Shared.Stacks; using Robust.Shared.GameObjects; using Robust.Shared.Prototypes; namespace Content.IntegrationTests.Tests; [TestFixture] public sealed class StackTest { [Test] public async Task StackCorrectItemSize() { await using var pairTracker = await PoolManager.GetServerClient(); var server = pairTracker.Pair.Server; var protoManager = server.ResolveDependency(); var compFact = server.ResolveDependency(); Assert.Multiple(() => { foreach (var entity in PoolManager.GetEntityPrototypes(server)) { if (!entity.TryGetComponent(out var stackComponent, compFact) || !entity.TryGetComponent(out var itemComponent, compFact)) continue; if (!protoManager.TryIndex(stackComponent.StackTypeId, out var stackProto) || stackProto.ItemSize == null) continue; var expectedSize = stackProto.ItemSize * stackComponent.Count; Assert.That(itemComponent.Size, Is.EqualTo(expectedSize), $"Prototype id: {entity.ID} has an item size of {itemComponent.Size} but expected size of {expectedSize}."); } }); await pairTracker.CleanReturnAsync(); } }