diff --git a/Dalamud/Interface/Internal/Windows/SelfTest/AgingSteps/DutyStateAgingStep.cs b/Dalamud/Interface/Internal/Windows/SelfTest/AgingSteps/DutyStateAgingStep.cs new file mode 100644 index 000000000..2a92d7bd3 --- /dev/null +++ b/Dalamud/Interface/Internal/Windows/SelfTest/AgingSteps/DutyStateAgingStep.cs @@ -0,0 +1,52 @@ +using Dalamud.Game.DutyState; +using ImGuiNET; + +namespace Dalamud.Interface.Internal.Windows.SelfTest.AgingSteps; + +/// +/// Test setup for the DutyState service class. +/// +internal class DutyStateAgingStep : IAgingStep +{ + private bool subscribed = false; + private bool hasPassed = false; + + /// + public string Name => "Test DutyState"; + + /// + public SelfTestStepResult RunStep() + { + var dutyState = Service.Get(); + + ImGui.Text("Enter a duty now..."); + + if (!this.subscribed) + { + dutyState.DutyStarted += this.DutyStateOnDutyStarted; + this.subscribed = true; + } + + if (this.hasPassed) + { + dutyState.DutyStarted -= this.DutyStateOnDutyStarted; + this.subscribed = false; + return SelfTestStepResult.Pass; + } + + return SelfTestStepResult.Waiting; + } + + /// + public void CleanUp() + { + var dutyState = Service.Get(); + + dutyState.DutyStarted -= this.DutyStateOnDutyStarted; + } + + private void DutyStateOnDutyStarted(object? sender, ushort e) + { + this.hasPassed = true; + } +} diff --git a/Dalamud/Interface/Internal/Windows/SelfTest/SelfTestWindow.cs b/Dalamud/Interface/Internal/Windows/SelfTest/SelfTestWindow.cs index 352c5d322..33a3e57cd 100644 --- a/Dalamud/Interface/Internal/Windows/SelfTest/SelfTestWindow.cs +++ b/Dalamud/Interface/Internal/Windows/SelfTest/SelfTestWindow.cs @@ -42,6 +42,7 @@ internal class SelfTestWindow : Window new PartyFinderAgingStep(), new HandledExceptionAgingStep(), new LogoutEventAgingStep(), + new DutyStateAgingStep(), }; private readonly List<(SelfTestStepResult Result, TimeSpan? Duration)> stepResults = new();