From b4bfbbcbe867e921e8e6650f5e03ca684ac9a5eb Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Wed, 1 Mar 2023 15:58:05 +1300 Subject: [PATCH] Remove tickrate dependence from power tests (#14326) --- .../Tests/Power/PowerTest.cs | 44 ++++++++++++------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/Content.IntegrationTests/Tests/Power/PowerTest.cs b/Content.IntegrationTests/Tests/Power/PowerTest.cs index ad883d954f..569e279ef4 100644 --- a/Content.IntegrationTests/Tests/Power/PowerTest.cs +++ b/Content.IntegrationTests/Tests/Power/PowerTest.cs @@ -1,4 +1,5 @@ #nullable enable +using System; using System.Threading.Tasks; using Content.Server.NodeContainer; using Content.Server.NodeContainer.Nodes; @@ -310,8 +311,8 @@ namespace Content.IntegrationTests.Tests.Power }); // Exact values can/will be off by a tick, add tolerance for that. - var tickRate = (float) gameTiming.TickPeriod.TotalSeconds; - var tickDev = 400 * tickRate * 1.1f; + var tickPeriod = (float) gameTiming.TickPeriod.TotalSeconds; + var tickDev = 400 * tickPeriod * 1.1f; server.RunTicks(1); @@ -322,7 +323,9 @@ namespace Content.IntegrationTests.Tests.Power Assert.That(consumer.ReceivedPower, Is.EqualTo(100).Within(0.1)); }); - server.RunTicks(14); + // run for 0.25 seconds (minus the previous tick) + var ticks = (int) Math.Round(0.25 * gameTiming.TickRate) - 1; + server.RunTicks(ticks); await server.WaitAssertion(() => { @@ -332,7 +335,11 @@ namespace Content.IntegrationTests.Tests.Power Assert.That(consumer.ReceivedPower, Is.EqualTo(200).Within(tickDev)); }); - server.RunTicks(45); + + + // run for 0.75 seconds + ticks = (int) Math.Round(0.75 * gameTiming.TickRate); + server.RunTicks(ticks); await server.WaitAssertion(() => { @@ -387,8 +394,8 @@ namespace Content.IntegrationTests.Tests.Power }); // Exact values can/will be off by a tick, add tolerance for that. - var tickRate = (float) gameTiming.TickPeriod.TotalSeconds; - var tickDev = 400 * tickRate * 1.1f; + var tickPeriod = (float) gameTiming.TickPeriod.TotalSeconds; + var tickDev = 400 * tickPeriod * 1.1f; server.RunTicks(1); @@ -399,7 +406,9 @@ namespace Content.IntegrationTests.Tests.Power Assert.That(consumer.ReceivedPower, Is.EqualTo(100).Within(0.1)); }); - server.RunTicks(14); + // run for 0.25 seconds (minus the previous tick) + var ticks = (int) Math.Round(0.25 * gameTiming.TickRate) - 1; + server.RunTicks(ticks); await server.WaitAssertion(() => { @@ -413,7 +422,9 @@ namespace Content.IntegrationTests.Tests.Power Assert.That(battery.CurrentCharge, Is.EqualTo(startingCharge - spentExpected).Within(tickDev)); }); - server.RunTicks(45); + // run for 0.75 seconds + ticks = (int) Math.Round(0.75 * gameTiming.TickRate); + server.RunTicks(ticks); await server.WaitAssertion(() => { @@ -524,6 +535,7 @@ namespace Content.IntegrationTests.Tests.Power await using var pairTracker = await PoolManager.GetServerClient(new PoolSettings{NoClient = true, ExtraPrototypes = Prototypes}); var server = pairTracker.Pair.Server; var mapManager = server.ResolveDependency(); + var gameTiming = server.ResolveDependency(); var entityManager = server.ResolveDependency(); PowerSupplierComponent supplier = default!; BatteryComponent battery = default!; @@ -554,7 +566,9 @@ namespace Content.IntegrationTests.Tests.Power netBattery.Efficiency = 0.5f; }); - server.RunTicks(30); // 60 TPS, 0.5 seconds + // run for 0.5 seconds + var ticks = (int) Math.Round(0.5 * gameTiming.TickRate); + server.RunTicks(ticks); await server.WaitAssertion(() => { @@ -617,11 +631,11 @@ namespace Content.IntegrationTests.Tests.Power }); // Run some ticks so everything is stable. - server.RunTicks(60); + server.RunTicks(gameTiming.TickRate); // Exact values can/will be off by a tick, add tolerance for that. - var tickRate = (float) gameTiming.TickPeriod.TotalSeconds; - var tickDev = 400 * tickRate * 1.1f; + var tickPeriod = (float) gameTiming.TickPeriod.TotalSeconds; + var tickDev = 400 * tickPeriod * 1.1f; await server.WaitAssertion(() => { @@ -692,11 +706,11 @@ namespace Content.IntegrationTests.Tests.Power }); // Run some ticks so everything is stable. - server.RunTicks(60); + server.RunTicks(gameTiming.TickRate); // Exact values can/will be off by a tick, add tolerance for that. - var tickRate = (float) gameTiming.TickPeriod.TotalSeconds; - var tickDev = 400 * tickRate * 1.1f; + var tickPeriod = (float) gameTiming.TickPeriod.TotalSeconds; + var tickDev = 400 * tickPeriod * 1.1f; await server.WaitAssertion(() => {