1
0

GravityGridTest.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. using Content.Server.Gravity;
  2. using Content.Server.Power.Components;
  3. using Content.Shared.Gravity;
  4. using Robust.Shared.GameObjects;
  5. using Robust.Shared.Map;
  6. using Robust.Shared.Map.Components;
  7. using Robust.Shared.Maths;
  8. namespace Content.IntegrationTests.Tests
  9. {
  10. /// Tests the behavior of GravityGeneratorComponent,
  11. /// making sure that gravity is applied to the correct grids.
  12. [TestFixture]
  13. [TestOf(typeof(GravityGeneratorComponent))]
  14. public sealed class GravityGridTest
  15. {
  16. [TestPrototypes]
  17. private const string Prototypes = @"
  18. - type: entity
  19. name: GridGravityGeneratorDummy
  20. id: GridGravityGeneratorDummy
  21. components:
  22. - type: GravityGenerator
  23. - type: PowerCharge
  24. windowTitle: gravity-generator-window-title
  25. idlePower: 50
  26. chargeRate: 1000000000 # Set this really high so it discharges in a single tick.
  27. activePower: 500
  28. - type: ApcPowerReceiver
  29. - type: UserInterface
  30. ";
  31. [Test]
  32. public async Task Test()
  33. {
  34. await using var pair = await PoolManager.GetServerClient();
  35. var server = pair.Server;
  36. var testMap = await pair.CreateTestMap();
  37. var entityMan = server.EntMan;
  38. var mapMan = server.MapMan;
  39. var mapSys = entityMan.System<SharedMapSystem>();
  40. EntityUid generator = default;
  41. Entity<MapGridComponent> grid1 = default;
  42. Entity<MapGridComponent> grid2 = default;
  43. // Create grids
  44. await server.WaitAssertion(() =>
  45. {
  46. var mapId = testMap.MapId;
  47. grid1 = mapMan.CreateGridEntity(mapId);
  48. grid2 = mapMan.CreateGridEntity(mapId);
  49. mapSys.SetTile(grid1, grid1, Vector2i.Zero, new Tile(1));
  50. mapSys.SetTile(grid2, grid2, Vector2i.Zero, new Tile(1));
  51. generator = entityMan.SpawnEntity("GridGravityGeneratorDummy", new EntityCoordinates(grid1, 0.5f, 0.5f));
  52. Assert.Multiple(() =>
  53. {
  54. Assert.That(entityMan.HasComponent<GravityGeneratorComponent>(generator));
  55. Assert.That(entityMan.HasComponent<ApcPowerReceiverComponent>(generator));
  56. });
  57. var powerComponent = entityMan.GetComponent<ApcPowerReceiverComponent>(generator);
  58. powerComponent.NeedsPower = false;
  59. });
  60. await server.WaitRunTicks(5);
  61. await server.WaitAssertion(() =>
  62. {
  63. var generatorComponent = entityMan.GetComponent<GravityGeneratorComponent>(generator);
  64. var powerComponent = entityMan.GetComponent<ApcPowerReceiverComponent>(generator);
  65. Assert.Multiple(() =>
  66. {
  67. Assert.That(generatorComponent.GravityActive, Is.True);
  68. Assert.That(!entityMan.GetComponent<GravityComponent>(grid1).EnabledVV);
  69. Assert.That(entityMan.GetComponent<GravityComponent>(grid2).EnabledVV);
  70. });
  71. // Re-enable needs power so it turns off again.
  72. // Charge rate is ridiculously high so it finishes in one tick.
  73. powerComponent.NeedsPower = true;
  74. });
  75. await server.WaitRunTicks(5);
  76. await server.WaitAssertion(() =>
  77. {
  78. var generatorComponent = entityMan.GetComponent<GravityGeneratorComponent>(generator);
  79. Assert.Multiple(() =>
  80. {
  81. Assert.That(generatorComponent.GravityActive, Is.False);
  82. Assert.That(entityMan.GetComponent<GravityComponent>(grid2).EnabledVV, Is.False);
  83. });
  84. });
  85. await pair.CleanReturnAsync();
  86. }
  87. }
  88. }