64 lines
1.9 KiB
Go
64 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestPanelSwipeAndPartialSwipeAreExclusive(t *testing.T) {
|
|
for _, tc := range []struct {
|
|
zones []uint16
|
|
want panelAction
|
|
}{
|
|
{[]uint16{panelMinus, panelCenter, panelPlus}, panelNext},
|
|
{[]uint16{panelPlus, panelCenter, panelMinus}, panelPrevious},
|
|
{[]uint16{panelMinus, panelCenter}, ""},
|
|
{[]uint16{panelMinus, panelCenter, panelMinus}, ""},
|
|
{[]uint16{panelPlus}, panelLouder},
|
|
{[]uint16{panelCenter}, panelToggle},
|
|
} {
|
|
var g panelGesture
|
|
now := time.Unix(100, 0)
|
|
for _, code := range tc.zones {
|
|
g.key(now, code, 1)
|
|
now = now.Add(45 * time.Millisecond)
|
|
g.key(now, code, 0)
|
|
now = now.Add(35 * time.Millisecond)
|
|
if got := g.tick(now); got != "" {
|
|
t.Fatalf("%v: action before end of gesture: %q", tc.zones, got)
|
|
}
|
|
}
|
|
now = now.Add(panelGap)
|
|
if got := g.tick(now); got != tc.want {
|
|
t.Fatalf("%v: got %q, want %q", tc.zones, got, tc.want)
|
|
}
|
|
if got := g.tick(now.Add(time.Second)); got != "" {
|
|
t.Fatalf("%v: unexpected duplicate action %q", tc.zones, got)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestPanelHoldRepeatsWithoutReleaseTap(t *testing.T) {
|
|
var g panelGesture
|
|
start := time.Unix(100, 0)
|
|
g.key(start, panelMinus, 1)
|
|
g.key(start.Add(100*time.Millisecond), panelMinus, 2)
|
|
if got := g.tick(start.Add(499 * time.Millisecond)); got != "" {
|
|
t.Fatalf("early hold: %q", got)
|
|
}
|
|
if got := g.tick(start.Add(panelHold)); got != panelQuieter {
|
|
t.Fatalf("first hold step: %q", got)
|
|
}
|
|
if got := g.tick(start.Add(panelHold + panelRepeat)); got != panelQuieter {
|
|
t.Fatalf("repeat hold step: %q", got)
|
|
}
|
|
g.key(start.Add(time.Second), panelMinus, 0)
|
|
if got := g.tick(start.Add(2 * time.Second)); got != "" {
|
|
t.Fatalf("hold release emitted %q", got)
|
|
}
|
|
g.key(start.Add(3*time.Second), panelCenter, 1)
|
|
if got := g.tick(start.Add(3*time.Second + panelWakeHold)); got != panelWake {
|
|
t.Fatalf("center hold emitted %q", got)
|
|
}
|
|
}
|