From f8919da11f1562321df54e986167afd649d09357 Mon Sep 17 00:00:00 2001
From: MidoriKami <9083275+MidoriKami@users.noreply.github.com>
Date: Thu, 26 Jan 2023 14:49:41 -0800
Subject: [PATCH] Add DutyState to Self-Test
---
.../SelfTest/AgingSteps/DutyStateAgingStep.cs | 52 +++++++++++++++++++
.../Windows/SelfTest/SelfTestWindow.cs | 1 +
2 files changed, 53 insertions(+)
create mode 100644 Dalamud/Interface/Internal/Windows/SelfTest/AgingSteps/DutyStateAgingStep.cs
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();