releases/tests/Paca.Tests/App/GlobalHotkeyGateTests.cs

56 lines
1.7 KiB
C#

using System;
using System.Windows.Input;
using Paca.App.Core;
using Xunit;
namespace Paca.Tests.App;
public class GlobalHotkeyGateTests
{
[Fact]
public void Gate257_GlobalHotkeyParser_ParsesKeyModifiers()
{
var success = GlobalHotkeyParser.TryParse("Ctrl+Shift+D", out var modifiers, out var key);
Assert.True(success);
Assert.Equal(ModifierKeys.Control | ModifierKeys.Shift, modifiers);
Assert.Equal(Key.D, key);
}
[Fact]
public void Gate258_GlobalHotkeyParser_ParsesAlternativeShortcut()
{
var success = GlobalHotkeyParser.TryParse("Ctrl+Alt+V", out var modifiers, out var key);
Assert.True(success);
Assert.Equal(ModifierKeys.Control | ModifierKeys.Alt, modifiers);
Assert.Equal(Key.V, key);
}
[Fact]
public void Gate259_GlobalHotkeyManager_CalculatesWin32ModFlags()
{
var modFlags = GlobalHotkeyManager.GetWin32ModifierFlags(ModifierKeys.Control | ModifierKeys.Shift);
// MOD_CONTROL = 0x0002, MOD_SHIFT = 0x0004 -> 0x0006
Assert.Equal(0x0006u, modFlags);
var altWin = GlobalHotkeyManager.GetWin32ModifierFlags(ModifierKeys.Alt | ModifierKeys.Windows);
// MOD_ALT = 0x0001, MOD_WIN = 0x0008 -> 0x0009
Assert.Equal(0x0009u, altWin);
}
[Fact]
public void Gate260_GlobalHotkeyManager_HotkeyTrigger_InvokesCallback()
{
var manager = new GlobalHotkeyManager();
bool triggered = false;
manager.RegisterVirtualHotkey("Ctrl+Shift+D", () => triggered = true);
// Simulate trigger
manager.SimulateHotkeyTrigger("Ctrl+Shift+D");
Assert.True(triggered);
}
}