Files

40 lines
1.2 KiB
Go

// Copyright (c) 2026 Storm Dragon
// Authors: Storm Dragon, Angus Kola
// SPDX-License-Identifier: GPL-3.0-or-later
package input
import "testing"
func TestRepeatTrackerRecognizesNativeSequences(t *testing.T) {
var tracker RepeatTracker
steps := []struct {
code uint8
pressed bool
timestamp uint32
repeat bool
}{
{38, true, 100, false},
{38, true, 110, true}, // Detectable autorepeat.
{39, true, 111, false}, // Another key is still a fresh press.
{38, false, 120, false},
{38, true, 120, true}, // Classic X11 release/press pair.
{38, false, 130, false},
{38, true, 140, false}, // Real release and new press.
{39, false, ^uint32(0), false},
{39, true, 1, false}, // Timestamp wrap is not a repeat.
{38, false, 0, false},
{38, true, 0, false}, // Unknown timestamps cannot prove a release/press pair.
{38, true, 0, true},
}
for index, step := range steps {
if got := tracker.Observe(Event{Keycode: step.code, Pressed: step.pressed, Timestamp: step.timestamp}); got != step.repeat {
t.Fatalf("step %d: repeat = %t, want %t", index, got, step.repeat)
}
}
tracker.Reset()
if tracker.Observe(Event{Keycode: 38, Pressed: true, Timestamp: 150}) {
t.Fatal("secure reset retained held keys")
}
}