4059b363a3
Two new self-test steps for the hybrid FontManager: - FontManagerCtorSmokeStep proves all five handles land on the manager after Phase-1 resolve (ItalicFont nullable per Config.ItalicEnabled) and that no atlas-load exception is sitting on any of them - FontPushSmokeStep proves IFontHandle.Push() returns without throwing for the two main delegate handles right after plugin load Both steps run on the framework thread via the xlperf self-test path and are registered alongside the existing theme-switch step in SelfTestRegistry.
94 lines
2.5 KiB
C#
94 lines
2.5 KiB
C#
using Dalamud.Bindings.ImGui;
|
|
using Dalamud.Plugin.SelfTest;
|
|
|
|
namespace HellionChat.SelfTests;
|
|
|
|
// Verifies the FontManager came out of the DI container with every
|
|
// handle attached and no atlas-load failure on any of them. ItalicFont
|
|
// is allowed to be null when ItalicEnabled is off.
|
|
internal sealed class FontManagerCtorSmokeStep : ISelfTestStep
|
|
{
|
|
private readonly Plugin plugin;
|
|
|
|
public FontManagerCtorSmokeStep(Plugin plugin)
|
|
{
|
|
this.plugin = plugin;
|
|
}
|
|
|
|
public string Name => "Hellion Chat - FontManager ctor smoke";
|
|
|
|
public SelfTestStepResult RunStep()
|
|
{
|
|
var fm = this.plugin.FontManager;
|
|
if (fm is null)
|
|
{
|
|
ImGui.Text("Plugin.FontManager is null");
|
|
return SelfTestStepResult.Fail;
|
|
}
|
|
|
|
if (fm.Axis is null)
|
|
{
|
|
ImGui.Text("Axis handle is null");
|
|
return SelfTestStepResult.Fail;
|
|
}
|
|
|
|
if (fm.AxisItalic is null)
|
|
{
|
|
ImGui.Text("AxisItalic handle is null");
|
|
return SelfTestStepResult.Fail;
|
|
}
|
|
|
|
if (fm.FontAwesome is null)
|
|
{
|
|
ImGui.Text("FontAwesome handle is null");
|
|
return SelfTestStepResult.Fail;
|
|
}
|
|
|
|
if (fm.RegularFont is null)
|
|
{
|
|
ImGui.Text("RegularFont handle is null");
|
|
return SelfTestStepResult.Fail;
|
|
}
|
|
|
|
if (Plugin.Config.ItalicEnabled && fm.ItalicFont is null)
|
|
{
|
|
ImGui.Text("ItalicEnabled is on but ItalicFont handle is null");
|
|
return SelfTestStepResult.Fail;
|
|
}
|
|
|
|
if (fm.Axis.LoadException is { } e1)
|
|
{
|
|
ImGui.Text($"Axis load exception: {e1.Message}");
|
|
return SelfTestStepResult.Fail;
|
|
}
|
|
|
|
if (fm.AxisItalic.LoadException is { } e2)
|
|
{
|
|
ImGui.Text($"AxisItalic load exception: {e2.Message}");
|
|
return SelfTestStepResult.Fail;
|
|
}
|
|
|
|
if (fm.FontAwesome.LoadException is { } e3)
|
|
{
|
|
ImGui.Text($"FontAwesome load exception: {e3.Message}");
|
|
return SelfTestStepResult.Fail;
|
|
}
|
|
|
|
if (fm.RegularFont.LoadException is { } e4)
|
|
{
|
|
ImGui.Text($"RegularFont load exception: {e4.Message}");
|
|
return SelfTestStepResult.Fail;
|
|
}
|
|
|
|
if (fm.ItalicFont?.LoadException is { } e5)
|
|
{
|
|
ImGui.Text($"ItalicFont load exception: {e5.Message}");
|
|
return SelfTestStepResult.Fail;
|
|
}
|
|
|
|
return SelfTestStepResult.Pass;
|
|
}
|
|
|
|
public void CleanUp() { }
|
|
}
|