acdream/tests/AcDream.App.Tests/UI/Layout/SpellbookRowStyleTests.cs
Erik ac2ca8f965 feat(ui): port retail spellbook interactions
Resolve the authored spell shortcut row prototype so the spellbook presents the retail icon, name, separator, selected overlay, and scrollbar geometry. Port exact school and level filters, stable display ordering, selection exposure, and learned-spell drags into the open favorite bar.

Route deletion through the shared retail confirmation dialog and send CM_Magic::Event_RemoveSpell only after an affirmative answer, leaving the inbound server notice authoritative for list state.

Co-Authored-By: Codex <noreply@openai.com>
2026-07-15 16:26:30 +02:00

32 lines
1.2 KiB
C#

using AcDream.App.UI.Layout;
using DatReaderWriter;
using DatReaderWriter.Options;
namespace AcDream.App.Tests.UI.Layout;
public sealed class SpellbookRowStyleTests
{
[Fact]
public void InstalledDat_ResolvesPinnedRetailSpellShortcutPrototype()
{
string datDir = System.Environment.GetEnvironmentVariable("ACDREAM_DAT_DIR")
?? Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.UserProfile),
"Documents", "Asheron's Call");
if (!Directory.Exists(datDir)) return;
using var dats = new DatCollection(datDir, DatAccessType.Read);
SpellbookRowStyle style = Assert.IsType<SpellbookRowStyle>(
SpellbookRowStyle.TryLoad(dats));
Assert.Equal(280f, style.Width);
Assert.Equal(32f, style.Height);
Assert.Equal(0f, style.IconLeft);
Assert.Equal(32f, style.IconWidth);
Assert.Equal(42f, style.LabelLeft);
Assert.Equal(230f, style.LabelWidth);
Assert.Equal(0x40000001u, style.FontDid);
Assert.Equal(System.Numerics.Vector4.One, style.LabelColor);
Assert.Equal(0x06001396u, style.BackgroundSprite);
Assert.Equal(0x06001397u, style.SelectedSprite);
}
}