Fix tests (#27711)
* Fix tests * Fix test fail * Apply same fix to other tests
This commit is contained in:
@@ -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));
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user