* Fix tests

* Fix test fail

* Apply same fix to other tests
This commit is contained in:
DrSmugleaf
2024-05-05 19:08:56 -07:00
committed by GitHub
parent c20df3e39f
commit eee8e03c15
4 changed files with 63 additions and 40 deletions

View File

@@ -3,6 +3,7 @@ using Content.Shared.Stacks;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
using Robust.Shared.Map; using Robust.Shared.Map;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using static Robust.UnitTesting.RobustIntegrationTest;
namespace Content.IntegrationTests.Tests.Interaction; namespace Content.IntegrationTests.Tests.Interaction;
@@ -54,7 +55,7 @@ public abstract partial class InteractionTest
/// <summary> /// <summary>
/// Convert applicable entity prototypes into stack prototypes. /// Convert applicable entity prototypes into stack prototypes.
/// </summary> /// </summary>
public void ConvertToStack(IPrototypeManager protoMan, IComponentFactory factory) public async Task ConvertToStack(IPrototypeManager protoMan, IComponentFactory factory, ServerIntegrationInstance server)
{ {
if (Converted) if (Converted)
return; return;
@@ -73,11 +74,14 @@ public abstract partial class InteractionTest
return; return;
} }
if (entProto.TryGetComponent<StackComponent>(factory.GetComponentName(typeof(StackComponent)), StackComponent? stack = null;
out var stackComp)) await server.WaitPost(() =>
{ {
Prototype = stackComp.StackTypeId; entProto.TryGetComponent(factory.GetComponentName(typeof(StackComponent)), out stack);
} });
if (stack != null)
Prototype = stack.StackTypeId;
} }
} }
@@ -100,11 +104,14 @@ public abstract partial class InteractionTest
return default; return default;
} }
if (entProto.TryGetComponent<StackComponent>(Factory.GetComponentName(typeof(StackComponent)), StackComponent? stack = null;
out var stackComp)) await Server.WaitPost(() =>
{ {
return await SpawnEntity((stackComp.StackTypeId, spec.Quantity), coords); entProto.TryGetComponent(Factory.GetComponentName(typeof(StackComponent)), out stack);
} });
if (stack != null)
return await SpawnEntity((stack.StackTypeId, spec.Quantity), coords);
Assert.That(spec.Quantity, Is.EqualTo(1), "SpawnEntity only supports returning a singular entity"); Assert.That(spec.Quantity, Is.EqualTo(1), "SpawnEntity only supports returning a singular entity");
await Server.WaitPost(() => uid = SEntMan.SpawnEntity(spec.Prototype, coords)); await Server.WaitPost(() => uid = SEntMan.SpawnEntity(spec.Prototype, coords));

View File

@@ -5,6 +5,7 @@ using Content.Shared.Stacks;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using Robust.Shared.Utility; using Robust.Shared.Utility;
using static Robust.UnitTesting.RobustIntegrationTest;
namespace Content.IntegrationTests.Tests.Interaction; namespace Content.IntegrationTests.Tests.Interaction;
@@ -111,7 +112,7 @@ public abstract partial class InteractionTest
/// <summary> /// <summary>
/// Convert applicable entity prototypes into stack prototypes. /// Convert applicable entity prototypes into stack prototypes.
/// </summary> /// </summary>
public void ConvertToStacks(IPrototypeManager protoMan, IComponentFactory factory) public async Task ConvertToStacks(IPrototypeManager protoMan, IComponentFactory factory, ServerIntegrationInstance server)
{ {
if (Converted) if (Converted)
return; return;
@@ -130,14 +131,17 @@ public abstract partial class InteractionTest
continue; continue;
} }
if (!entProto.TryGetComponent<StackComponent>(factory.GetComponentName(typeof(StackComponent)), StackComponent? stack = null;
out var stackComp)) await server.WaitPost(() =>
{ {
entProto.TryGetComponent(factory.GetComponentName(typeof(StackComponent)), out stack);
});
if (stack == null)
continue; continue;
}
toRemove.Add(id); toRemove.Add(id);
toAdd.Add((stackComp.StackTypeId, quantity)); toAdd.Add((stack.StackTypeId, quantity));
} }
foreach (var id in toRemove) foreach (var id in toRemove)

View File

@@ -5,12 +5,9 @@ using System.Linq;
using System.Numerics; using System.Numerics;
using System.Reflection; using System.Reflection;
using Content.Client.Construction; using Content.Client.Construction;
using Content.Server.Atmos;
using Content.Server.Atmos.Components;
using Content.Server.Atmos.EntitySystems; using Content.Server.Atmos.EntitySystems;
using Content.Server.Construction.Components; using Content.Server.Construction.Components;
using Content.Server.Gravity; using Content.Server.Gravity;
using Content.Server.Item;
using Content.Server.Power.Components; using Content.Server.Power.Components;
using Content.Shared.Atmos; using Content.Shared.Atmos;
using Content.Shared.Construction.Prototypes; using Content.Shared.Construction.Prototypes;
@@ -634,7 +631,7 @@ public abstract partial class InteractionTest
var entities = await DoEntityLookup(flags); var entities = await DoEntityLookup(flags);
var found = ToEntityCollection(entities); var found = ToEntityCollection(entities);
expected.Remove(found); expected.Remove(found);
expected.ConvertToStacks(ProtoMan, Factory); await expected.ConvertToStacks(ProtoMan, Factory, Server);
if (expected.Entities.Count == 0) if (expected.Entities.Count == 0)
return; return;
@@ -670,7 +667,7 @@ public abstract partial class InteractionTest
LookupFlags flags = LookupFlags.Uncontained | LookupFlags.Contained, LookupFlags flags = LookupFlags.Uncontained | LookupFlags.Contained,
bool shouldSucceed = true) bool shouldSucceed = true)
{ {
spec.ConvertToStack(ProtoMan, Factory); await spec.ConvertToStack(ProtoMan, Factory, Server);
var entities = await DoEntityLookup(flags); var entities = await DoEntityLookup(flags);
foreach (var uid in entities) foreach (var uid in entities)

View File

@@ -92,23 +92,32 @@ namespace Content.IntegrationTests.Tests
var allSizes = protoMan.EnumeratePrototypes<ItemSizePrototype>().ToList(); var allSizes = protoMan.EnumeratePrototypes<ItemSizePrototype>().ToList();
allSizes.Sort(); allSizes.Sort();
Assert.Multiple(() => await Assert.MultipleAsync(async () =>
{ {
foreach (var proto in pair.GetPrototypesWithComponent<StorageFillComponent>()) foreach (var proto in pair.GetPrototypesWithComponent<StorageFillComponent>())
{ {
if (proto.HasComponent<EntityStorageComponent>(compFact)) if (proto.HasComponent<EntityStorageComponent>(compFact))
continue; continue;
if (!proto.TryGetComponent<StorageComponent>("Storage", out var storage)) StorageComponent? storage = null;
ItemComponent? item = null;
StorageFillComponent fill = default!;
var size = 0;
await server.WaitAssertion(() =>
{ {
Assert.Fail($"Entity {proto.ID} has storage-fill without a storage component!"); if (!proto.TryGetComponent("Storage", out storage))
{
Assert.Fail($"Entity {proto.ID} has storage-fill without a storage component!");
return;
}
proto.TryGetComponent("Item", out item);
fill = (StorageFillComponent) proto.Components[id].Component;
size = GetFillSize(fill, false, protoMan, itemSys);
});
if (storage == null)
continue; continue;
}
proto.TryGetComponent<ItemComponent>("Item", out var item);
var fill = (StorageFillComponent) proto.Components[id].Component;
var size = GetFillSize(fill, false, protoMan, itemSys);
var maxSize = storage.MaxItemSize; var maxSize = storage.MaxItemSize;
if (storage.MaxItemSize == null) if (storage.MaxItemSize == null)
@@ -138,7 +147,13 @@ namespace Content.IntegrationTests.Tests
if (!protoMan.TryIndex<EntityPrototype>(entry.PrototypeId, out var fillItem)) if (!protoMan.TryIndex<EntityPrototype>(entry.PrototypeId, out var fillItem))
continue; continue;
if (!fillItem.TryGetComponent<ItemComponent>("Item", out var entryItem)) ItemComponent? entryItem = null;
await server.WaitPost(() =>
{
fillItem.TryGetComponent("Item", out entryItem);
});
if (entryItem == null)
continue; continue;
Assert.That(protoMan.Index(entryItem.Size).Weight, Assert.That(protoMan.Index(entryItem.Size).Weight,
@@ -164,25 +179,25 @@ namespace Content.IntegrationTests.Tests
var itemSys = entMan.System<SharedItemSystem>(); var itemSys = entMan.System<SharedItemSystem>();
Assert.Multiple(() => foreach (var proto in pair.GetPrototypesWithComponent<StorageFillComponent>())
{ {
foreach (var proto in pair.GetPrototypesWithComponent<StorageFillComponent>()) if (proto.HasComponent<StorageComponent>(compFact))
{ continue;
if (proto.HasComponent<StorageComponent>(compFact))
continue;
if (!proto.TryGetComponent<EntityStorageComponent>("EntityStorage", out var entStorage)) await server.WaitAssertion(() =>
{ {
if (!proto.TryGetComponent("EntityStorage", out EntityStorageComponent? entStorage))
Assert.Fail($"Entity {proto.ID} has storage-fill without a storage component!"); Assert.Fail($"Entity {proto.ID} has storage-fill without a storage component!");
continue;
} if (entStorage == null)
return;
var fill = (StorageFillComponent) proto.Components[id].Component; var fill = (StorageFillComponent) proto.Components[id].Component;
var size = GetFillSize(fill, true, protoMan, itemSys); var size = GetFillSize(fill, true, protoMan, itemSys);
Assert.That(size, Is.LessThanOrEqualTo(entStorage.Capacity), Assert.That(size, Is.LessThanOrEqualTo(entStorage.Capacity),
$"{proto.ID} storage fill is too large."); $"{proto.ID} storage fill is too large.");
} });
}); }
await pair.CleanReturnAsync(); await pair.CleanReturnAsync();
} }