58 lines
1.6 KiB
C#
58 lines
1.6 KiB
C#
using System.Linq;
|
|
using Dalamud.Bindings.ImGui;
|
|
using Dalamud.Plugin.SelfTest;
|
|
using HellionChat.Themes;
|
|
using HellionChat.Ui.Components.Settings;
|
|
|
|
namespace HellionChat.SelfTests;
|
|
|
|
internal sealed class ThemePickerCategoryStep : ISelfTestStep
|
|
{
|
|
private readonly Plugin _plugin;
|
|
|
|
public ThemePickerCategoryStep(Plugin plugin)
|
|
{
|
|
_plugin = plugin;
|
|
}
|
|
|
|
public string Name => "Hellion Chat - Theme picker category coverage";
|
|
|
|
public SelfTestStepResult RunStep()
|
|
{
|
|
var builtinSlugs = _plugin.ThemeRegistry.BuiltinSlugs.ToHashSet();
|
|
var categorySlugs = ThemePicker.CategoryMapSlugs.ToList();
|
|
|
|
var duplicates = categorySlugs
|
|
.GroupBy(x => x)
|
|
.Where(g => g.Count() > 1)
|
|
.Select(g => g.Key)
|
|
.ToList();
|
|
if (duplicates.Count > 0)
|
|
{
|
|
ImGui.Text($"Duplicate slugs in category map: {string.Join(", ", duplicates)}");
|
|
return SelfTestStepResult.Fail;
|
|
}
|
|
|
|
var categorySet = categorySlugs.ToHashSet();
|
|
var missing = builtinSlugs.Except(categorySet).ToList();
|
|
var unknown = categorySet.Except(builtinSlugs).ToList();
|
|
|
|
if (missing.Count > 0)
|
|
{
|
|
ImGui.Text($"Builtin slugs missing from category map: {string.Join(", ", missing)}");
|
|
return SelfTestStepResult.Fail;
|
|
}
|
|
if (unknown.Count > 0)
|
|
{
|
|
ImGui.Text(
|
|
$"Unknown slugs in category map (no matching builtin): {string.Join(", ", unknown)}"
|
|
);
|
|
return SelfTestStepResult.Fail;
|
|
}
|
|
|
|
return SelfTestStepResult.Pass;
|
|
}
|
|
|
|
public void CleanUp() { }
|
|
}
|