RestartRoundTest.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using Content.Server.GameTicking;
  2. using Content.Server.GameTicking.Commands;
  3. using Content.Shared.CCVar;
  4. using Robust.Shared.Configuration;
  5. using Robust.Shared.GameObjects;
  6. using Robust.Shared.IoC;
  7. using Robust.Shared.Timing;
  8. namespace Content.IntegrationTests.Tests.Commands
  9. {
  10. [TestFixture]
  11. [TestOf(typeof(RestartRoundNowCommand))]
  12. public sealed class RestartRoundNowTest
  13. {
  14. [Test]
  15. [TestCase(true)]
  16. [TestCase(false)]
  17. public async Task RestartRoundAfterStart(bool lobbyEnabled)
  18. {
  19. await using var pair = await PoolManager.GetServerClient(new PoolSettings
  20. {
  21. DummyTicker = false,
  22. Dirty = true
  23. });
  24. var server = pair.Server;
  25. var configManager = server.ResolveDependency<IConfigurationManager>();
  26. var entityManager = server.ResolveDependency<IEntityManager>();
  27. var gameTicker = entityManager.System<GameTicker>();
  28. await pair.RunTicksSync(5);
  29. GameTick tickBeforeRestart = default;
  30. await server.WaitAssertion(() =>
  31. {
  32. Assert.That(configManager.GetCVar(CCVars.GameLobbyEnabled), Is.EqualTo(false));
  33. configManager.SetCVar(CCVars.GameLobbyEnabled, lobbyEnabled);
  34. Assert.That(gameTicker.RunLevel, Is.EqualTo(GameRunLevel.InRound));
  35. tickBeforeRestart = entityManager.CurrentTick;
  36. gameTicker.RestartRound();
  37. if (lobbyEnabled)
  38. {
  39. Assert.That(gameTicker.RunLevel, Is.Not.EqualTo(GameRunLevel.InRound));
  40. }
  41. });
  42. await pair.RunTicksSync(15);
  43. await server.WaitAssertion(() =>
  44. {
  45. var tickAfterRestart = entityManager.CurrentTick;
  46. Assert.That(tickBeforeRestart, Is.LessThan(tickAfterRestart));
  47. });
  48. await pair.RunTicksSync(5);
  49. await pair.CleanReturnAsync();
  50. }
  51. }
  52. }