From 1fc646a8c2d4fa38b18ac761f15cfeba73ff317e Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Mon, 27 Nov 2023 18:48:24 -0600 Subject: [PATCH] io/input: test deferred behaviour of Router Signed-off-by: Elias Naur --- io/input/key_test.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/io/input/key_test.go b/io/input/key_test.go index b5c77a4f..4f3b7fe3 100644 --- a/io/input/key_test.go +++ b/io/input/key_test.go @@ -14,6 +14,25 @@ import ( "gioui.org/op/clip" ) +func TestDeferred(t *testing.T) { + r := new(Router) + h := new(int) + f := []event.Filter{ + key.FocusFilter{Target: h}, + key.Filter{Name: "A"}, + } + // Provoke deferring by exhausting events for h. + events(r, -1, f...) + r.Source().Execute(key.FocusCmd{Tag: h}) + ke := key.Event{Name: "A"} + r.Queue(ke) + // All events are deferred at this point. + assertEventSequence(t, events(r, -1, f...)) + r.Frame(new(op.Ops)) + // But delivered after a frame. + assertEventSequence(t, events(r, -1, f...), key.FocusEvent{Focus: true}, ke) +} + func TestInputWakeup(t *testing.T) { handler := new(int) var ops op.Ops