40 lines
1.4 KiB
Go
40 lines
1.4 KiB
Go
// Copyright (c) 2026 Storm Dragon
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
package input
|
|
|
|
import "testing"
|
|
|
|
func TestEmojiShortcutBothLayoutsAndReleaseOrders(t *testing.T) {
|
|
for _, layout := range []KeyboardLayout{DesktopKeyboardLayout, LaptopKeyboardLayout} {
|
|
chord := CommandChord{Symbol: 'e', Modifiers: controlModifier, CthulhuModifier: true}
|
|
if got := DefaultCommandBindings(layout)[chord]; got != EmojiMenu {
|
|
t.Fatalf("%v: %s", layout, got)
|
|
}
|
|
if got := BrowseCommandBindings(layout)[chord]; got != "" && got != EmojiMenu {
|
|
t.Fatalf("browse conflict: %s", got)
|
|
}
|
|
for _, releaseFirst := range []bool{false, true} {
|
|
router := NewCommandRouter([]uint32{0xff63}, DefaultCommandBindings(layout))
|
|
router.Handle(0xff63, 118, 0, true)
|
|
router.Handle(leftControlKeySymbol, 37, controlModifier, true)
|
|
if consumed, cmd := router.Handle('e', 26, controlModifier, true); !consumed || cmd != EmojiMenu {
|
|
t.Fatalf("shortcut: %v %s", consumed, cmd)
|
|
}
|
|
if _, cmd := router.Handle('e', 26, controlModifier, true); cmd != "" {
|
|
t.Fatal("repeat reopened menu")
|
|
}
|
|
if releaseFirst {
|
|
router.Handle(0xff63, 118, controlModifier, false)
|
|
}
|
|
router.Handle('e', 26, controlModifier, false)
|
|
router.Handle(leftControlKeySymbol, 37, 0, false)
|
|
if !releaseFirst {
|
|
router.Handle(0xff63, 118, 0, false)
|
|
}
|
|
if consumed, cmd := router.Handle('e', 26, 0, true); consumed || cmd != "" {
|
|
t.Fatal("typing did not resume")
|
|
}
|
|
}
|
|
}
|
|
}
|