48 lines
1.4 KiB
Go
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)
|
|
}
|
|
}
|
|
}
|