using KeyOverlay.Core; using Xunit; namespace KeyOverlay.Core.Tests; public class KeycodesTests { [Fact] public void Letter_IsUppercaseWithBaseKeycode() { var d = Keycodes.Describe("KC_A"); Assert.Equal("A", d.Main); Assert.Equal("KC_A", d.BaseKeycode); } [Fact] public void ShortQmkAlias_MatchesLongVialName() { Assert.Equal(Keycodes.Describe("KC_BSPACE").Main, Keycodes.Describe("KC_BSPC").Main); Assert.Equal("KC_BSPACE", Keycodes.Describe("KC_BSPC").BaseKeycode); } [Fact] public void ShiftWrapper_ShowsShiftedSymbol() { var d = Keycodes.Describe("LSFT(KC_1)"); Assert.Equal("!", d.Main); Assert.True(d.RequiresShift); Assert.Equal("KC_1", d.BaseKeycode); } [Theory] [InlineData("LSFT(KC_MINUS)", "_")] [InlineData("LSFT(KC_BSLASH)", "|")] [InlineData("LSFT(KC_GRAVE)", "~")] [InlineData("LSFT(KC_QUOTE)", "\"")] public void ShiftWrapper_Symbols(string code, string expected) => Assert.Equal(expected, Keycodes.Describe(code).Main); [Fact] public void CtrlWrapper_ShowsPrefix() { var d = Keycodes.Describe("LCTL(KC_C)"); Assert.Equal("Ctrl+C", d.Main); Assert.False(d.RequiresShift); } [Theory] [InlineData("MO(2)", "MO 2")] [InlineData("TG(1)", "TG 1")] [InlineData("TO(0)", "TO 0")] public void LayerSwitch_IsFlagged(string code, string main) { var d = Keycodes.Describe(code); Assert.Equal(main, d.Main); Assert.True(d.IsLayerSwitch); } [Fact] public void LayerTap_ShowsTapKeyAndLayer() { var d = Keycodes.Describe("LT(1, KC_SPACE)"); Assert.Equal("Space", d.Main); Assert.Equal("L1", d.Sub); Assert.Equal("KC_SPACE", d.BaseKeycode); } [Theory] [InlineData("LCTL_T(KC_A)")] [InlineData("MT(MOD_LCTL, KC_A)")] public void ModTap_ShowsTapKeyAndModifier(string code) { var d = Keycodes.Describe(code); Assert.Equal("A", d.Main); Assert.Equal("Ctrl", d.Sub); Assert.Equal("KC_A", d.BaseKeycode); } [Theory] [InlineData("KC_TRNS")] [InlineData("KC_TRANSPARENT")] public void Transparent_IsFlagged(string code) => Assert.True(Keycodes.Describe(code).IsTransparent); [Fact] public void No_IsEmpty() => Assert.True(Keycodes.Describe("KC_NO").IsEmpty); [Fact] public void UnknownKeycode_FallsBackToTrimmedName() { var d = Keycodes.Describe("QK_BOOT"); Assert.Equal("QK_BOOT", d.Main); Assert.Null(d.BaseKeycode); } [Fact] public void Canonicalize_ResolvesAliases() { Assert.Equal("KC_ESCAPE", Keycodes.Canonicalize("KC_ESC")); Assert.Equal("KC_LSHIFT", Keycodes.Canonicalize("KC_LSFT")); } }