From f91191c616663df3a2efd054b2b500708a680359 Mon Sep 17 00:00:00 2001 From: Stephen Houston Date: Sat, 10 Oct 2020 16:19:57 -0500 Subject: [PATCH] Fix broken mobile tests and add a test for double clicking on mobile --- internal/driver/gomobile/canvas_test.go | 69 +++++++++++++++++++++++++ internal/driver/gomobile/menu_test.go | 2 +- 2 files changed, 70 insertions(+), 1 deletion(-) diff --git a/internal/driver/gomobile/canvas_test.go b/internal/driver/gomobile/canvas_test.go index c6aee339ed..1cfdb7f056 100644 --- a/internal/driver/gomobile/canvas_test.go +++ b/internal/driver/gomobile/canvas_test.go @@ -78,6 +78,8 @@ func TestCanvas_Tapped(t *testing.T) { }, func(wid fyne.SecondaryTappable, ev *fyne.PointEvent) { altTapped = true wid.TappedSecondary(ev) + }, func (wid fyne.DoubleTappable, ev *fyne.PointEvent) { + wid.DoubleTapped(ev) }, func(wid fyne.Draggable, ev *fyne.DragEvent) { }) @@ -106,6 +108,8 @@ func TestCanvas_Tapped_Multi(t *testing.T) { c.tapUp(tapPos, 1, func(wid fyne.Tappable, ev *fyne.PointEvent) { // different tapID wid.Tapped(ev) }, func(wid fyne.SecondaryTappable, ev *fyne.PointEvent) { + }, func (wid fyne.DoubleTappable, ev *fyne.PointEvent) { + wid.DoubleTapped(ev) }, func(wid fyne.Draggable, ev *fyne.DragEvent) { }) @@ -133,6 +137,8 @@ func TestCanvas_TappedSecondary(t *testing.T) { altTappedObj = wid pointEvent = ev wid.TappedSecondary(ev) + }, func (wid fyne.DoubleTappable, ev *fyne.PointEvent) { + wid.DoubleTapped(ev) }, func(wid fyne.Draggable, ev *fyne.DragEvent) { }) @@ -184,6 +190,7 @@ func TestCanvas_Tappable(t *testing.T) { c.tapUp(fyne.NewPos(15, 15), 0, func(wid fyne.Tappable, ev *fyne.PointEvent) { }, func(wid fyne.SecondaryTappable, ev *fyne.PointEvent) { + }, func (wid fyne.DoubleTappable, ev *fyne.PointEvent) { }, func(wid fyne.Draggable, ev *fyne.DragEvent) { }) assert.True(t, content.up) @@ -195,6 +202,51 @@ func TestCanvas_Tappable(t *testing.T) { assert.True(t, content.cancel) } +func TestWindow_TappedAndDoubleTapped(t *testing.T) { + tapped := 0 + but := newDoubleTappableButton() + but.OnTapped = func() { + tapped = 1 + } + but.onDoubleTap = func() { + tapped = 2 + } + + c := NewCanvas().(*mobileCanvas) + c.SetContent(fyne.NewContainerWithLayout(layout.NewMaxLayout(), but)) + c.resize(fyne.NewSize(36, 24)) + + c.tapDown(fyne.NewPos(15, 15), 0) + c.tapUp(fyne.NewPos(15, 15), 0, func(wid fyne.Tappable, ev *fyne.PointEvent) { + wid.Tapped(ev) + }, func(wid fyne.SecondaryTappable, ev *fyne.PointEvent) { + }, func (wid fyne.DoubleTappable, ev *fyne.PointEvent) { + wid.DoubleTapped(ev) + }, func(wid fyne.Draggable, ev *fyne.DragEvent) { + }) + time.Sleep(700 * time.Millisecond) + assert.Equal(t, tapped, 1) + + c.tapDown(fyne.NewPos(15, 15), 0) + c.tapUp(fyne.NewPos(15, 15), 0, func(wid fyne.Tappable, ev *fyne.PointEvent) { + wid.Tapped(ev) + }, func(wid fyne.SecondaryTappable, ev *fyne.PointEvent) { + }, func (wid fyne.DoubleTappable, ev *fyne.PointEvent) { + wid.DoubleTapped(ev) + }, func(wid fyne.Draggable, ev *fyne.DragEvent) { + }) + c.tapDown(fyne.NewPos(15, 15), 0) + c.tapUp(fyne.NewPos(15, 15), 0, func(wid fyne.Tappable, ev *fyne.PointEvent) { + wid.Tapped(ev) + }, func(wid fyne.SecondaryTappable, ev *fyne.PointEvent) { + }, func (wid fyne.DoubleTappable, ev *fyne.PointEvent) { + wid.DoubleTapped(ev) + }, func(wid fyne.Draggable, ev *fyne.DragEvent) { + }) + time.Sleep(700 * time.Millisecond) + assert.Equal(t, tapped, 1) +} + func TestCanvas_Focusable(t *testing.T) { content := newFocusableEntry() c := NewCanvas().(*mobileCanvas) @@ -277,3 +329,20 @@ func (f *focusableEntry) FocusLost() { f.unfocusedTimes++ f.Entry.FocusLost() } + +type doubleTappableButton struct { + widget.Button + + onDoubleTap func() +} + +func (t *doubleTappableButton) DoubleTapped(_ *fyne.PointEvent) { + t.onDoubleTap() +} + +func newDoubleTappableButton() *doubleTappableButton { + but := &doubleTappableButton{} + but.ExtendBaseWidget(but) + + return but +} diff --git a/internal/driver/gomobile/menu_test.go b/internal/driver/gomobile/menu_test.go index df3007dbce..0b62f1cccf 100644 --- a/internal/driver/gomobile/menu_test.go +++ b/internal/driver/gomobile/menu_test.go @@ -25,7 +25,7 @@ func TestMobileCanvas_DismissBar(t *testing.T) { assert.NotNil(t, c.menu) // simulate tap as the test util does not know about our menu... c.tapDown(fyne.NewPos(80, 20), 1) - c.tapUp(fyne.NewPos(80, 20), 1, nil, nil, nil) + c.tapUp(fyne.NewPos(80, 20), 1, nil, nil, nil,nil) assert.Nil(t, c.menu) }