Add SpawnAndDirtyAllEntities test (#13629)

This commit is contained in:
Leon Friedrich
2023-01-24 13:33:49 +13:00
committed by GitHub
parent fb3df96654
commit 554ec85069
6 changed files with 86 additions and 32 deletions

View File

@@ -46,14 +46,14 @@ namespace Content.IntegrationTests.Tests
}
});
await server.WaitRunTicks(5);
await server.WaitRunTicks(15);
await server.WaitPost(() =>
{
var entityMetas = entityMan.EntityQuery<MetaDataComponent>(true).ToList();
foreach (var meta in entityMetas)
{
if(!entityMan.Deleted(meta.Owner))
if(!meta.EntityDeleted)
entityMan.DeleteEntity(meta.Owner);
}
@@ -67,7 +67,7 @@ namespace Content.IntegrationTests.Tests
{
await using var pairTracker = await PoolManager.GetServerClient(new PoolSettings{NoClient = true, Destructive = true});
var server = pairTracker.Pair.Server;
var map = await PoolManager.CreateTestMap(pairTracker);
IEntityManager entityMan = null;
await server.WaitPost(() =>
@@ -81,21 +81,18 @@ namespace Content.IntegrationTests.Tests
.Where(p=>!p.Abstract)
.Select(p => p.ID)
.ToList();
var mapId = mapManager.CreateMap();
var grid = mapManager.CreateGrid(mapId);
var coord = new EntityCoordinates(grid.Owner, 0, 0);
foreach (var protoId in protoIds)
{
entityMan.SpawnEntity(protoId, coord);
entityMan.SpawnEntity(protoId, map.GridCoords);
}
});
await server.WaitRunTicks(5);
await server.WaitRunTicks(15);
await server.WaitPost(() =>
{
var entityMetas = entityMan.EntityQuery<MetaDataComponent>(true).ToList();
foreach (var meta in entityMetas)
{
if(!entityMan.Deleted(meta.Owner))
if(!meta.EntityDeleted)
entityMan.DeleteEntity(meta.Owner);
}
@@ -103,6 +100,54 @@ namespace Content.IntegrationTests.Tests
});
await pairTracker.CleanReturnAsync();
}
/// <summary>
/// Variant of <see cref="SpawnAndDeleteAllEntitiesInTheSameSpot"/> that also launches a client and dirties
/// all components on every entity.
/// </summary>
[Test]
public async Task SpawnAndDirtyAllEntities()
{
await using var pairTracker = await PoolManager.GetServerClient(new PoolSettings { NoClient = false, Destructive = true });
var server = pairTracker.Pair.Server;
var map = await PoolManager.CreateTestMap(pairTracker);
IEntityManager entityMan = null;
await server.WaitPost(() =>
{
entityMan = IoCManager.Resolve<IEntityManager>();
var prototypeMan = IoCManager.Resolve<IPrototypeManager>();
var protoIds = prototypeMan
.EnumeratePrototypes<EntityPrototype>()
.Where(p => !p.Abstract)
.Select(p => p.ID)
.ToList();
foreach (var protoId in protoIds)
{
var ent = entityMan.SpawnEntity(protoId, map.GridCoords);
foreach (var (netId, component) in entityMan.GetNetComponents(ent))
{
entityMan.Dirty(component);
}
}
});
await server.WaitRunTicks(15);
await server.WaitPost(() =>
{
var entityMetas = entityMan.EntityQuery<MetaDataComponent>(true).ToList();
foreach (var meta in entityMetas)
{
if (!meta.EntityDeleted)
entityMan.DeleteEntity(meta.Owner);
}
Assert.That(entityMan.EntityCount, Is.Zero);
});
await pairTracker.CleanReturnAsync();
}
[Test]
public async Task AllComponentsOneToOneDeleteTest()
{