49 lines
1.3 KiB
Go
49 lines
1.3 KiB
Go
// Copyright (c) 2026 Storm Dragon
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
package input
|
|
|
|
import (
|
|
"git.stormux.org/storm/fenrir/internal/command"
|
|
"testing"
|
|
)
|
|
|
|
func TestApplicationsChordConsumesRepeatsAndBothReleaseOrders(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 _, numLock := range []bool{false, true} {
|
|
for _, modifierFirst := range []bool{false, true} {
|
|
r, err := New_router(bindings)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
r.Key(0, KeyInsert, 1, numLock, false)
|
|
if got := r.Key(0, 30, 1, numLock, false); got.Command != command.ApplicationsMenu || got.Forward {
|
|
t.Fatal(got)
|
|
}
|
|
if got := r.Key(0, 30, 2, numLock, false); got.Command != "" || got.Forward {
|
|
t.Fatal(got)
|
|
}
|
|
releases := []uint16{30, KeyInsert}
|
|
if modifierFirst {
|
|
releases = []uint16{KeyInsert, 30}
|
|
}
|
|
for _, key := range releases {
|
|
if got := r.Key(0, key, 0, numLock, false); got.Forward || got.Command != "" {
|
|
t.Fatal(got)
|
|
}
|
|
}
|
|
if r.Held(0) {
|
|
t.Fatal("held applications chord")
|
|
}
|
|
if got := r.Key(0, 48, 1, numLock, false); !got.Forward || got.Code != 48 {
|
|
t.Fatal("subsequent application input", got)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|