MindTest.DeleteAllThenGhost.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #nullable enable
  2. using Robust.Shared.Console;
  3. using Robust.Shared.GameObjects;
  4. using Robust.Shared.Map;
  5. namespace Content.IntegrationTests.Tests.Minds;
  6. [TestFixture]
  7. public sealed partial class MindTests
  8. {
  9. [Test]
  10. public async Task DeleteAllThenGhost()
  11. {
  12. var settings = new PoolSettings
  13. {
  14. Dirty = true,
  15. DummyTicker = false,
  16. Connected = true
  17. };
  18. await using var pair = await PoolManager.GetServerClient(settings);
  19. // Client is connected with a valid entity & mind
  20. Assert.That(pair.Client.EntMan.EntityExists(pair.Client.AttachedEntity));
  21. Assert.That(pair.Server.EntMan.EntityExists(pair.PlayerData?.Mind));
  22. // Delete **everything**
  23. var conHost = pair.Server.ResolveDependency<IConsoleHost>();
  24. await pair.Server.WaitPost(() => conHost.ExecuteCommand("entities delete"));
  25. await pair.RunTicksSync(5);
  26. Assert.That(pair.Server.EntMan.EntityCount, Is.EqualTo(0));
  27. foreach (var ent in pair.Client.EntMan.GetEntities())
  28. {
  29. Console.WriteLine(pair.Client.EntMan.ToPrettyString(ent));
  30. }
  31. Assert.That(pair.Client.EntMan.EntityCount, Is.EqualTo(0));
  32. // Create a new map.
  33. MapId mapId = default;
  34. await pair.Server.WaitPost(() => pair.Server.System<SharedMapSystem>().CreateMap(out mapId));
  35. await pair.RunTicksSync(5);
  36. // Client is not attached to anything
  37. Assert.That(pair.Client.AttachedEntity, Is.Null);
  38. Assert.That(pair.PlayerData?.Mind, Is.Null);
  39. // Attempt to ghost
  40. var cConHost = pair.Client.ResolveDependency<IConsoleHost>();
  41. await pair.Client.WaitPost(() => cConHost.ExecuteCommand("ghost"));
  42. await pair.RunTicksSync(10);
  43. // Client should be attached to a ghost placed on the new map.
  44. Assert.That(pair.Client.EntMan.EntityExists(pair.Client.AttachedEntity));
  45. Assert.That(pair.Server.EntMan.EntityExists(pair.PlayerData?.Mind));
  46. var xform = pair.Client.Transform(pair.Client.AttachedEntity!.Value);
  47. Assert.That(xform.MapID, Is.EqualTo(mapId));
  48. await pair.CleanReturnAsync();
  49. }
  50. }