Files

48 lines
1.4 KiB
Go

package input
import (
"testing"
"time"
)
func TestTimeDatePresses(t *testing.T) {
for _, layout := range []KeyboardLayout{DesktopKeyboardLayout, LaptopKeyboardLayout} {
for _, modifierFirst := range []bool{false, true} {
router := NewCommandRouter([]uint32{0xff63}, DefaultCommandBindings(layout))
now := time.Unix(100, 0)
router.now = func() time.Time { return now }
press := func(want Command) {
t.Helper()
router.Handle(0xff63, 118, 0, true)
if consumed, got := router.Handle('t', 28, 0, true); !consumed || got != want {
t.Fatalf("press = %v %s; want %s", consumed, got, want)
}
if consumed, got := router.Handle('t', 28, 0, true); !consumed || got != "" {
t.Fatal("held key repeated command")
}
codes := []uint16{28, 118}
if modifierFirst {
codes = []uint16{118, 28}
}
for _, code := range codes {
if consumed, got := router.Handle(0, code, 0, false); !consumed || got != "" {
t.Fatal("unbalanced release")
}
}
router.Reset() // Native owner finishes each fully released chord.
}
press(PresentTime)
now = now.Add(500 * time.Millisecond)
press(PresentDate)
press(PresentTime)
now = now.Add(501 * time.Millisecond)
press(PresentTime)
router.Handle(0xff63, 118, 0, true)
router.Handle('x', 53, 0, true)
router.Handle('x', 53, 0, false)
router.Handle(0xff63, 118, 0, false)
press(PresentTime)
}
}
}