ResettingEntitySystemTests.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using Content.Server.GameTicking;
  2. using Content.Shared.GameTicking;
  3. using Robust.Shared.GameObjects;
  4. using Robust.Shared.Reflection;
  5. namespace Content.IntegrationTests.Tests
  6. {
  7. [TestFixture]
  8. [TestOf(typeof(RoundRestartCleanupEvent))]
  9. public sealed class ResettingEntitySystemTests
  10. {
  11. public sealed class TestRoundRestartCleanupEvent : EntitySystem
  12. {
  13. public bool HasBeenReset { get; set; }
  14. public override void Initialize()
  15. {
  16. base.Initialize();
  17. SubscribeLocalEvent<RoundRestartCleanupEvent>(Reset);
  18. }
  19. public void Reset(RoundRestartCleanupEvent ev)
  20. {
  21. HasBeenReset = true;
  22. }
  23. }
  24. [Test]
  25. public async Task ResettingEntitySystemResetTest()
  26. {
  27. await using var pair = await PoolManager.GetServerClient(new PoolSettings
  28. {
  29. DummyTicker = false,
  30. Connected = true,
  31. Dirty = true
  32. });
  33. var server = pair.Server;
  34. var entitySystemManager = server.ResolveDependency<IEntitySystemManager>();
  35. var gameTicker = entitySystemManager.GetEntitySystem<GameTicker>();
  36. await server.WaitAssertion(() =>
  37. {
  38. Assert.That(gameTicker.RunLevel, Is.EqualTo(GameRunLevel.InRound));
  39. var system = entitySystemManager.GetEntitySystem<TestRoundRestartCleanupEvent>();
  40. system.HasBeenReset = false;
  41. gameTicker.RestartRound();
  42. Assert.That(system.HasBeenReset);
  43. });
  44. await pair.CleanReturnAsync();
  45. }
  46. }
  47. }