Files
RobustToolbox/Robust.Shared.IntegrationTests/Spawning/TrySpawnNextToTest.cs
PJB3005 788e9386fd Split up test project
Robust.UnitTesting was both ALL tests for RT, and also API surface for content tests.

Tests are now split into separate projects as appropriate, and the API side has also been split off.
2025-12-16 01:36:53 +01:00

56 lines
2.1 KiB
C#

using System.Threading.Tasks;
using NUnit.Framework;
using Robust.Shared.GameObjects;
namespace Robust.UnitTesting.Shared.Spawning;
[TestFixture]
internal sealed class TrySpawnNextToTest : EntitySpawnHelpersTest
{
[Test]
public async Task Test()
{
await Setup();
// Spawning next to an entity in a container will insert the entity into the container.
await Server.WaitPost(() =>
{
Assert.That(EntMan.TrySpawnNextTo(null, ChildA, out var uid));
Assert.That(EntMan.EntityExists(uid));
Assert.That(Xforms.GetParentUid(uid!.Value), Is.EqualTo(Parent));
Assert.That(Container.IsEntityInContainer(uid.Value));
Assert.That(Container.GetContainer(Parent, "childA").Contains(uid.Value));
});
// The container is now full, spawning will fail.
await Server.WaitPost(() =>
{
int count = EntMan.EntityCount;
Assert.That(EntMan.TrySpawnNextTo(null, ChildA, out var uid), Is.False);
Assert.That(EntMan.EntityCount, Is.EqualTo(count));
Assert.That(EntMan.EntityExists(uid), Is.False);
});
// Spawning next to an entity that is not in a container will drop it
await Server.WaitPost(() =>
{
Assert.That(EntMan.TrySpawnNextTo(null, GrandChildB, out var uid));
Assert.That(EntMan.EntityExists(uid));
Assert.That(Xforms.GetParentUid(uid!.Value), Is.EqualTo(Parent));
Assert.That(Container.IsEntityInContainer(uid.Value));
Assert.That(Container.IsEntityOrParentInContainer(uid.Value));
});
// Spawning "next to" a nullspace entity will fail.
await Server.WaitPost(() =>
{
int count = EntMan.EntityCount;
Assert.That(EntMan.TrySpawnNextTo(null, Map, out var uid), Is.False);
Assert.That(EntMan.EntityCount, Is.EqualTo(count));
Assert.That(EntMan.EntityExists(uid), Is.False);
});
await Server.WaitPost(() => MapSys.DeleteMap(MapId));
}
}