SecretStartsTest.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using System.Linq;
  2. using Content.Server.GameTicking;
  3. using Robust.Shared.GameObjects;
  4. namespace Content.IntegrationTests.Tests.GameRules;
  5. [TestFixture]
  6. public sealed class SecretStartsTest
  7. {
  8. /// <summary>
  9. /// Tests that when secret is started, all of the game rules it successfully adds are also started.
  10. /// </summary>
  11. [Test]
  12. public async Task TestSecretStarts()
  13. {
  14. await using var pair = await PoolManager.GetServerClient(new PoolSettings { Dirty = true });
  15. var server = pair.Server;
  16. await server.WaitIdleAsync();
  17. var entMan = server.ResolveDependency<IEntityManager>();
  18. var gameTicker = server.ResolveDependency<IEntitySystemManager>().GetEntitySystem<GameTicker>();
  19. await server.WaitAssertion(() =>
  20. {
  21. // this mimics roundflow:
  22. // rules added, then round starts
  23. gameTicker.AddGameRule("Secret");
  24. gameTicker.StartGamePresetRules();
  25. });
  26. // Wait three ticks for any random update loops that might happen
  27. await server.WaitRunTicks(3);
  28. await server.WaitAssertion(() =>
  29. {
  30. Assert.That(gameTicker.GetAddedGameRules().Count(), Is.GreaterThan(1), $"No additional rules started by secret rule.");
  31. // End all rules
  32. gameTicker.ClearGameRules();
  33. });
  34. await pair.CleanReturnAsync();
  35. }
  36. }