acdream/tests/AcDream.App.Tests/UI/Layout/ToolbarInputControllerTests.cs
Erik e65119f0c6 feat(ui): complete retail quick-slot input
Port global toolbar use/select/create actions, migrate the collapsed Ctrl-number bindings, and route them through a focused retained-UI controller. Preserve shortcut aliases as aliases across inventory and paperdoll drops with retail's neutral/accept/reject drag states, preventing physical item moves such as unwielding an equipped helmet.

Co-Authored-By: Codex <codex@openai.com>
2026-07-11 08:59:49 +02:00

32 lines
1.2 KiB
C#

using AcDream.App.UI.Layout;
using AcDream.UI.Abstractions.Input;
namespace AcDream.App.Tests.UI.Layout;
public sealed class ToolbarInputControllerTests
{
[Theory]
[InlineData(InputAction.UseQuickSlot_1, 0, true)]
[InlineData(InputAction.UseQuickSlot_9, 8, true)]
[InlineData(InputAction.SelectQuickSlot_1, 0, false)]
[InlineData(InputAction.SelectQuickSlot_9, 8, false)]
[InlineData(InputAction.UseQuickSlot_14, 13, true)]
[InlineData(InputAction.UseQuickSlot_18, 17, true)]
public void ShortcutActions_mapRetailSlotAndIntent(InputAction action, int slot, bool use)
{
Assert.True(ToolbarInputController.TryMapShortcut(action, out int actualSlot, out bool actualUse));
Assert.Equal(slot, actualSlot);
Assert.Equal(use, actualUse);
}
[Theory]
[InlineData(InputAction.CreateShortcut)]
[InlineData(InputAction.CombatToggleCombat)]
[InlineData(InputAction.ToggleChatEntry)]
public void NonSlotActions_doNotMapAsShortcut(InputAction action)
{
Assert.False(ToolbarInputController.TryMapShortcut(action, out int slot, out bool use));
Assert.Equal(-1, slot);
Assert.False(use);
}
}