Files
tbd-station-14/Content.IntegrationTests/Tests/Mapping/MappingTests.cs
Leon Friedrich 91aa16f08a Add NukeOps Test (#27207)
* Add NukeOps Test

* Update EvacShuttleTest to also check mapinit

* Update RuleMaxTimeRestartTest

* Fix cvar cleanup

* A

* Revert some changes

* comments

* Add MappingTests

* Finally fix the test

* A
2024-04-24 15:38:43 +10:00

103 lines
3.9 KiB
C#

using Robust.Server.GameObjects;
using Robust.Shared.GameObjects;
using Robust.Shared.Map;
namespace Content.IntegrationTests.Tests.Mapping;
[TestFixture]
public sealed class MappingTests
{
/// <summary>
/// Checks that the mapping command creates paused & uninitialized maps.
/// </summary>
[Test]
public async Task MappingTest()
{
await using var pair = await PoolManager.GetServerClient(new PoolSettings {Dirty = true, Connected = true, DummyTicker = false});
var server = pair.Server;
var entMan = server.EntMan;
var mapSys = server.System<MapSystem>();
await pair.RunTicksSync(5);
var mapId = 1;
while (mapSys.MapExists(new(mapId)))
{
mapId++;
}
await pair.WaitClientCommand($"mapping {mapId}");
var map = mapSys.GetMap(new MapId(mapId));
var mapXform = server.Transform(map);
Assert.That(mapXform.MapUid, Is.EqualTo(map));
Assert.That(mapXform.MapID, Is.EqualTo(new MapId(mapId)));
var xform = server.Transform(pair.Player!.AttachedEntity!.Value);
Assert.That(xform.MapUid, Is.EqualTo(map));
Assert.That(mapSys.IsInitialized(map), Is.False);
Assert.That(mapSys.IsPaused(map), Is.True);
Assert.That(server.MetaData(map).EntityLifeStage, Is.EqualTo(EntityLifeStage.Initialized));
Assert.That(server.MetaData(map).EntityPaused, Is.True);
// Spawn a new entity
EntityUid ent = default;
await server.WaitPost(() =>
{
ent = entMan.Spawn(null, new MapCoordinates(default, new(mapId)));
});
await pair.RunTicksSync(5);
Assert.That(server.MetaData(ent).EntityLifeStage, Is.EqualTo(EntityLifeStage.Initialized));
Assert.That(server.MetaData(ent).EntityPaused, Is.True);
// Save the map
var file = $"{nameof(MappingTest)}.yml";
await pair.WaitClientCommand($"savemap {mapId} {file}");
// Mapinitialize it
await pair.WaitClientCommand($"mapinit {mapId}");
Assert.That(mapSys.IsInitialized(map), Is.True);
Assert.That(mapSys.IsPaused(map), Is.False);
Assert.That(server.MetaData(map).EntityLifeStage, Is.EqualTo(EntityLifeStage.MapInitialized));
Assert.That(server.MetaData(map).EntityPaused, Is.False);
Assert.That(server.MetaData(ent).EntityLifeStage, Is.EqualTo(EntityLifeStage.MapInitialized));
Assert.That(server.MetaData(ent).EntityPaused, Is.False);
await server.WaitPost(() => entMan.DeleteEntity(map));
// Load the saved map
mapId++;
while (mapSys.MapExists(new(mapId)))
{
mapId++;
}
await pair.WaitClientCommand($"mapping {mapId} {file}");
map = mapSys.GetMap(new MapId(mapId));
// And it should all be paused and un-initialized
xform = server.Transform(pair.Player!.AttachedEntity!.Value);
Assert.That(xform.MapUid, Is.EqualTo(map));
Assert.That(mapSys.IsInitialized(map), Is.False);
Assert.That(mapSys.IsPaused(map), Is.True);
Assert.That(server.MetaData(map).EntityLifeStage, Is.EqualTo(EntityLifeStage.Initialized));
Assert.That(server.MetaData(map).EntityPaused, Is.True);
mapXform = server.Transform(map);
Assert.That(mapXform.MapUid, Is.EqualTo(map));
Assert.That(mapXform.MapID, Is.EqualTo(new MapId(mapId)));
Assert.That(mapXform.ChildCount, Is.EqualTo(2));
mapXform.ChildEnumerator.MoveNext(out ent);
if (ent == pair.Player.AttachedEntity)
mapXform.ChildEnumerator.MoveNext(out ent);
Assert.That(server.MetaData(ent).EntityLifeStage, Is.EqualTo(EntityLifeStage.Initialized));
Assert.That(server.MetaData(ent).EntityPaused, Is.True);
await server.WaitPost(() => entMan.DeleteEntity(map));
await pair.CleanReturnAsync();
}
}