mirror of
https://github.com/goatcorp/Dalamud.git
synced 2025-12-12 18:27:23 +01:00
The goal of this change is to let plugins register their own self-tests. We do this through the `ISelfTestRegistry` interface. For a plugin it would look like this: ```csharp [PluginService] public ISelfTestRegistry SelfTestRegistry // Somewhere that gets called by your plugin SelfTestRegistry.RegisterTestSteps([ new MySelfTestStep(), new MyOtherSelfTestStep() ]) ``` Where `MySelfTest` and `MyOtherSelfTest` are instances of the existing `ISelfTestStep` interface. The biggest changes are to `SelfTestWindow` and the introduction of `SelfTestWithResults`. I wanted to make sure test state wasn't lost when changing the dropdown state and I was finding it a bit annoying to work with the Dictionary now that we can't just rely on the index of the item. To fix this I moved all the "test run" state into `SelfTestWithResults`, most of the changes to `SelfTestWindow` are derived from that, other then the addition of the combo box. The documentation for this service is a bit sparse, but I wanted to put it up for review first before I invest a bunch of time making nice documentation. I'm keen to hear if we think this is useful or if any changes are needed.
51 lines
1.9 KiB
C#
51 lines
1.9 KiB
C#
using Dalamud.Plugin.SelfTest.Internal;
|
|
using Lumina.Excel.Sheets;
|
|
|
|
namespace Dalamud.Interface.Internal.Windows.SelfTest.Steps;
|
|
|
|
/// <summary>
|
|
/// Class handling Dalamud self-test registration.
|
|
/// </summary>
|
|
[ServiceManager.EarlyLoadedService]
|
|
internal class DalamudSelfTest : IServiceType
|
|
{
|
|
[ServiceManager.ServiceConstructor]
|
|
private DalamudSelfTest(SelfTestRegistry registry)
|
|
{
|
|
registry.RegisterDalamudSelfTestSteps([
|
|
new LoginEventSelfTestStep(),
|
|
new WaitFramesSelfTestStep(1000),
|
|
new FrameworkTaskSchedulerSelfTestStep(),
|
|
new EnterTerritorySelfTestStep(148, "Central Shroud"),
|
|
new ItemPayloadSelfTestStep(),
|
|
new ContextMenuSelfTestStep(),
|
|
new NamePlateSelfTestStep(),
|
|
new ActorTableSelfTestStep(),
|
|
new FateTableSelfTestStep(),
|
|
new AetheryteListSelfTestStep(),
|
|
new ConditionSelfTestStep(),
|
|
new ToastSelfTestStep(),
|
|
new TargetSelfTestStep(),
|
|
new KeyStateSelfTestStep(),
|
|
new GamepadStateSelfTestStep(),
|
|
new ChatSelfTestStep(),
|
|
new HoverSelfTestStep(),
|
|
new LuminaSelfTestStep<Item>(true),
|
|
new LuminaSelfTestStep<Level>(true),
|
|
new LuminaSelfTestStep<Lumina.Excel.Sheets.Action>(true),
|
|
new LuminaSelfTestStep<Quest>(true),
|
|
new LuminaSelfTestStep<TerritoryType>(false),
|
|
new AddonLifecycleSelfTestStep(),
|
|
new PartyFinderSelfTestStep(),
|
|
new HandledExceptionSelfTestStep(),
|
|
new DutyStateSelfTestStep(),
|
|
new GameConfigSelfTestStep(),
|
|
new MarketBoardSelfTestStep(),
|
|
new SheetRedirectResolverSelfTestStep(),
|
|
new NounProcessorSelfTestStep(),
|
|
new SeStringEvaluatorSelfTestStep(),
|
|
new CompletionSelfTestStep(),
|
|
new LogoutEventSelfTestStep()
|
|
]);
|
|
}
|
|
}
|