From ae5219e4d454f6c883723039e17cad0674f45ff9 Mon Sep 17 00:00:00 2001 From: Pierre Curto Date: Sun, 17 Oct 2021 11:42:48 +0200 Subject: [PATCH] io/pointer: print all types in Type.String Signed-off-by: Pierre Curto --- io/pointer/pointer.go | 16 ++++++++++++++++ io/pointer/pointer_test.go | 26 ++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/io/pointer/pointer.go b/io/pointer/pointer.go index f7c82714..de862bb0 100644 --- a/io/pointer/pointer.go +++ b/io/pointer/pointer.go @@ -265,6 +265,22 @@ func (op InputOp) Add(o *op.Ops) { } func (t Type) String() string { + if t == Cancel { + return "Cancel" + } + var buf strings.Builder + for tt := Type(1); tt > 0; tt <<= 1 { + if t&tt > 0 { + if buf.Len() > 0 { + buf.WriteByte('|') + } + buf.WriteString((t & tt).string()) + } + } + return buf.String() +} + +func (t Type) string() string { switch t { case Press: return "Press" diff --git a/io/pointer/pointer_test.go b/io/pointer/pointer_test.go index aaf4e006..cce2c454 100644 --- a/io/pointer/pointer_test.go +++ b/io/pointer/pointer_test.go @@ -8,6 +8,32 @@ import ( "gioui.org/op" ) +func TestTypeString(t *testing.T) { + for _, tc := range []struct { + typ Type + res string + }{ + {Cancel, "Cancel"}, + {Press, "Press"}, + {Release, "Release"}, + {Move, "Move"}, + {Drag, "Drag"}, + {Enter, "Enter"}, + {Leave, "Leave"}, + {Scroll, "Scroll"}, + {Enter | Leave, "Enter|Leave"}, + {Press | Release, "Press|Release"}, + {Enter | Leave | Press | Release, "Press|Release|Enter|Leave"}, + {Move | Scroll, "Move|Scroll"}, + } { + t.Run(tc.res, func(t *testing.T) { + if want, got := tc.res, tc.typ.String(); want != got { + t.Errorf("got %q; want %q", got, want) + } + }) + } +} + func TestTransformChecks(t *testing.T) { defer func() { if err := recover(); err == nil {