using System.Threading.Tasks; using Content.Server.GameObjects.Components.Gravity; using Content.Server.GameObjects.Components.Power.ApcNetComponents; using Content.Shared.GameObjects.Components.Gravity; using Content.Shared.Utility; using NUnit.Framework; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.Map; using Robust.Shared.IoC; using Robust.Shared.Map; namespace Content.IntegrationTests.Tests { /// Tests the behavior of GravityGeneratorComponent, /// making sure that gravity is applied to the correct grids. [TestFixture] [TestOf(typeof(GravityGeneratorComponent))] public class GravityGridTest : ContentIntegrationTest { [Test] public async Task Test() { var server = StartServerDummyTicker(); IEntity generator = null; IMapGrid grid1 = null; IMapGrid grid2 = null; // Create grids server.Assert(() => { var mapMan = IoCManager.Resolve(); mapMan.CreateMap(new MapId(1)); grid1 = mapMan.CreateGrid(new MapId(1)); grid2 = mapMan.CreateGrid(new MapId(1)); var entityMan = IoCManager.Resolve(); generator = entityMan.SpawnEntity("GravityGenerator", grid2.ToCoordinates()); Assert.That(generator.HasComponent()); Assert.That(generator.HasComponent()); var generatorComponent = generator.GetComponent(); var powerComponent = generator.GetComponent(); Assert.That(generatorComponent.Status, Is.EqualTo(GravityGeneratorStatus.Unpowered)); powerComponent.NeedsPower = false; }); server.RunTicks(1); server.Assert(() => { var generatorComponent = generator.GetComponent(); Assert.That(generatorComponent.Status, Is.EqualTo(GravityGeneratorStatus.On)); Assert.That(!grid1.HasGravity); Assert.That(grid2.HasGravity); }); await server.WaitIdleAsync(); } } }