using System.Threading.Tasks; using Content.Server.GameTicking; using Content.Shared.GameTicking; using NUnit.Framework; using Robust.Shared.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Reflection; namespace Content.IntegrationTests.Tests { [TestFixture] [TestOf(typeof(RoundRestartCleanupEvent))] public sealed class ResettingEntitySystemTests : ContentIntegrationTest { [Reflect(false)] private sealed class TestRoundRestartCleanupEvent : EntitySystem { public bool HasBeenReset { get; set; } public override void Initialize() { base.Initialize(); SubscribeLocalEvent(Reset); } public void Reset(RoundRestartCleanupEvent ev) { HasBeenReset = true; } } [Test] public async Task ResettingEntitySystemResetTest() { var server = StartServer(new ServerContentIntegrationOption { ContentBeforeIoC = () => { IoCManager.Resolve().LoadExtraSystemType(); } }); await server.WaitIdleAsync(); var entitySystemManager = server.ResolveDependency(); var gameTicker = entitySystemManager.GetEntitySystem(); await server.WaitAssertion(() => { Assert.That(gameTicker.RunLevel, Is.EqualTo(GameRunLevel.InRound)); var system = entitySystemManager.GetEntitySystem(); system.HasBeenReset = false; Assert.False(system.HasBeenReset); gameTicker.RestartRound(); Assert.True(system.HasBeenReset); }); } } }