2023-06-25 11:44:37 -04:00
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 ( )
{
2023-08-25 02:56:51 +02:00
await using var pair = await PoolManager . GetServerClient ( ) ;
var server = pair . Server ;
2023-06-25 11:44:37 -04:00
var protoManager = server . ResolveDependency < IPrototypeManager > ( ) ;
var compFact = server . ResolveDependency < IComponentFactory > ( ) ;
Assert . Multiple ( ( ) = >
{
2023-08-23 00:14:01 +12:00
foreach ( var entity in PoolManager . GetPrototypesWithComponent < StackComponent > ( server ) )
2023-06-25 11:44:37 -04:00
{
if ( ! entity . TryGetComponent < StackComponent > ( out var stackComponent , compFact ) | |
! entity . TryGetComponent < ItemComponent > ( out var itemComponent , compFact ) )
continue ;
if ( ! protoManager . TryIndex < StackPrototype > ( 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}." ) ;
}
} ) ;
2023-08-25 02:56:51 +02:00
await pair . CleanReturnAsync ( ) ;
2023-06-25 11:44:37 -04:00
}
}