Files

50 lines
1.5 KiB
Go

// Copyright (c) 2026 Storm Dragon
// SPDX-License-Identifier: GPL-3.0-or-later
package input
import (
"testing"
"git.stormux.org/storm/fenrir/internal/command"
)
func TestVersionChordConsumesRepeatsAndBothReleaseOrders(t *testing.T) {
for _, layout := range []string{"desktop", "laptop"} {
bindings, _, err := Load_bindings([]string{"../../config/keyboard/" + layout + ".toml"})
if err != nil {
t.Fatal(err)
}
for _, modifierFirst := range []bool{false, true} {
for _, numLock := range []bool{false, true} {
router, err := New_router(bindings)
if err != nil {
t.Fatal(err)
}
router.Key(0, KeyInsert, 1, numLock, false)
router.Key(0, KeyShift, 1, numLock, false)
if got := router.Key(0, 47, 1, numLock, false); got.Command != command.Version || got.Forward || !got.Interrupt {
t.Fatal(layout, got)
}
if got := router.Key(0, 47, 2, numLock, false); got.Command != "" || got.Forward {
t.Fatal("held version chord repeated or escaped", layout, got)
}
if modifierFirst {
router.Key(0, KeyInsert, 0, numLock, false)
router.Key(0, KeyShift, 0, numLock, false)
}
if got := router.Key(0, 47, 0, numLock, false); got.Forward {
t.Fatal("version release escaped", layout, got)
}
if !modifierFirst {
router.Key(0, KeyInsert, 0, numLock, false)
router.Key(0, KeyShift, 0, numLock, false)
}
if got := router.Key(0, 47, 1, numLock, false); !got.Forward {
t.Fatal("ordinary V trapped after version", layout, got)
}
}
}
}
}