MappingTests.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. using Robust.Server.GameObjects;
  2. using Robust.Shared.GameObjects;
  3. using Robust.Shared.Map;
  4. namespace Content.IntegrationTests.Tests.Mapping;
  5. [TestFixture]
  6. public sealed class MappingTests
  7. {
  8. /// <summary>
  9. /// Checks that the mapping command creates paused & uninitialized maps.
  10. /// </summary>
  11. [Test]
  12. public async Task MappingTest()
  13. {
  14. await using var pair = await PoolManager.GetServerClient(new PoolSettings { Dirty = true, Connected = true, DummyTicker = false });
  15. var server = pair.Server;
  16. var entMan = server.EntMan;
  17. var mapSys = server.System<MapSystem>();
  18. await pair.RunTicksSync(5);
  19. var mapId = 1;
  20. while (mapSys.MapExists(new(mapId)))
  21. {
  22. mapId++;
  23. }
  24. await pair.WaitClientCommand($"mapping {mapId}");
  25. var map = mapSys.GetMap(new MapId(mapId));
  26. var mapXform = server.Transform(map);
  27. Assert.That(mapXform.MapUid, Is.EqualTo(map));
  28. Assert.That(mapXform.MapID, Is.EqualTo(new MapId(mapId)));
  29. var xform = server.Transform(pair.Player!.AttachedEntity!.Value);
  30. Assert.That(xform.MapUid, Is.EqualTo(map));
  31. Assert.That(mapSys.IsInitialized(map), Is.False);
  32. Assert.That(mapSys.IsPaused(map), Is.True);
  33. Assert.That(server.MetaData(map).EntityLifeStage, Is.EqualTo(EntityLifeStage.Initialized));
  34. Assert.That(server.MetaData(map).EntityPaused, Is.True);
  35. // Spawn a new entity
  36. EntityUid ent = default;
  37. await server.WaitPost(() =>
  38. {
  39. ent = entMan.Spawn(null, new MapCoordinates(default, new(mapId)));
  40. });
  41. await pair.RunTicksSync(5);
  42. Assert.That(server.MetaData(ent).EntityLifeStage, Is.EqualTo(EntityLifeStage.Initialized));
  43. Assert.That(server.MetaData(ent).EntityPaused, Is.True);
  44. // Save the map
  45. var file = $"{nameof(MappingTest)}.yml";
  46. await pair.WaitClientCommand($"savemap {mapId} {file}");
  47. // Mapinitialize it
  48. await pair.WaitClientCommand($"mapinit {mapId}");
  49. Assert.That(mapSys.IsInitialized(map), Is.True);
  50. Assert.That(mapSys.IsPaused(map), Is.False);
  51. Assert.That(server.MetaData(map).EntityLifeStage, Is.EqualTo(EntityLifeStage.MapInitialized));
  52. Assert.That(server.MetaData(map).EntityPaused, Is.False);
  53. Assert.That(server.MetaData(ent).EntityLifeStage, Is.EqualTo(EntityLifeStage.MapInitialized));
  54. Assert.That(server.MetaData(ent).EntityPaused, Is.False);
  55. await server.WaitPost(() => entMan.DeleteEntity(map));
  56. // Load the saved map
  57. mapId++;
  58. while (mapSys.MapExists(new(mapId)))
  59. {
  60. mapId++;
  61. }
  62. await pair.WaitClientCommand($"mapping {mapId} {file}");
  63. map = mapSys.GetMap(new MapId(mapId));
  64. // And it should all be paused and un-initialized
  65. xform = server.Transform(pair.Player!.AttachedEntity!.Value);
  66. Assert.That(xform.MapUid, Is.EqualTo(map));
  67. Assert.That(mapSys.IsInitialized(map), Is.False);
  68. Assert.That(mapSys.IsPaused(map), Is.True);
  69. Assert.That(server.MetaData(map).EntityLifeStage, Is.EqualTo(EntityLifeStage.Initialized));
  70. Assert.That(server.MetaData(map).EntityPaused, Is.True);
  71. mapXform = server.Transform(map);
  72. Assert.That(mapXform.MapUid, Is.EqualTo(map));
  73. Assert.That(mapXform.MapID, Is.EqualTo(new MapId(mapId)));
  74. Assert.That(mapXform.ChildCount, Is.EqualTo(2));
  75. mapXform.ChildEnumerator.MoveNext(out ent);
  76. if (ent == pair.Player.AttachedEntity)
  77. mapXform.ChildEnumerator.MoveNext(out ent);
  78. Assert.That(server.MetaData(ent).EntityLifeStage, Is.EqualTo(EntityLifeStage.Initialized));
  79. Assert.That(server.MetaData(ent).EntityPaused, Is.True);
  80. await server.WaitPost(() => entMan.DeleteEntity(map));
  81. await pair.CleanReturnAsync();
  82. }
  83. }