// 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) } } } } }