Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit ef8d9db

Browse files
committed
Use mock instead of shadow
1 parent c17c6b4 commit ef8d9db

File tree

1 file changed

+44
-87
lines changed

1 file changed

+44
-87
lines changed

shell/platform/android/test/io/flutter/embedding/android/AndroidTouchProcessorTest.java

Lines changed: 44 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
package io.flutter.embedding.android;
22

3-
import static android.view.MotionEvent.PointerCoords;
4-
import static android.view.MotionEvent.PointerProperties;
53
import static junit.framework.TestCase.assertEquals;
64
import static org.mockito.Mockito.inOrder;
5+
import static org.mockito.Mockito.mock;
6+
import static org.mockito.Mockito.when;
77

88
import android.annotation.TargetApi;
99
import android.view.InputDevice;
1010
import android.view.MotionEvent;
11-
import androidx.test.core.view.MotionEventBuilder;
1211
import androidx.test.ext.junit.runners.AndroidJUnit4;
1312
import io.flutter.embedding.engine.renderer.FlutterRenderer;
1413
import java.nio.ByteBuffer;
@@ -65,19 +64,38 @@ private double readPointerPanY(ByteBuffer buffer) {
6564
return buffer.getDouble(30 * AndroidTouchProcessor.BYTES_PER_FIELD);
6665
}
6766

67+
private class MotionEventMocker {
68+
int pointerId;
69+
int source;
70+
int toolType;
71+
72+
MotionEventMocker(int pointerId, int source, int toolType) {
73+
this.pointerId = pointerId;
74+
this.source = source;
75+
this.toolType = toolType;
76+
}
77+
78+
MotionEvent mockEvent(int action, float x, float y, int buttonState) {
79+
MotionEvent event = mock(MotionEvent.class);
80+
when(event.getDevice()).thenReturn(null);
81+
when(event.getSource()).thenReturn(source);
82+
when(event.getPointerCount()).thenReturn(1);
83+
when(event.getActionMasked()).thenReturn(action);
84+
when(event.getActionIndex()).thenReturn(0);
85+
when(event.getButtonState()).thenReturn(buttonState);
86+
when(event.getPointerId(0)).thenReturn(pointerId);
87+
when(event.getX(0)).thenReturn(x);
88+
when(event.getY(0)).thenReturn(y);
89+
when(event.getToolType(0)).thenReturn(toolType);
90+
return event;
91+
}
92+
}
93+
6894
@Test
6995
public void normalTouch() {
70-
PointerProperties properties = new PointerProperties();
71-
properties.id = 0;
72-
properties.toolType = MotionEvent.TOOL_TYPE_FINGER;
73-
PointerCoords coordinates = new PointerCoords();
74-
touchProcessor.onTouchEvent(
75-
MotionEventBuilder.newBuilder()
76-
.setAction(MotionEvent.ACTION_DOWN)
77-
.setActionIndex(0)
78-
.setDeviceId(1)
79-
.setPointer(properties, coordinates)
80-
.build());
96+
MotionEventMocker mocker =
97+
new MotionEventMocker(0, InputDevice.SOURCE_TOUCHSCREEN, MotionEvent.TOOL_TYPE_FINGER);
98+
touchProcessor.onTouchEvent(mocker.mockEvent(MotionEvent.ACTION_DOWN, 0.0f, 0.0f, 0));
8199
InOrder inOrder = inOrder(mockRenderer);
82100
inOrder
83101
.verify(mockRenderer)
@@ -88,15 +106,7 @@ public void normalTouch() {
88106
assertEquals(AndroidTouchProcessor.PointerSignalKind.NONE, readPointerSignalKind(packet));
89107
assertEquals(0.0, readPointerPhysicalX(packet));
90108
assertEquals(0.0, readPointerPhysicalY(packet));
91-
coordinates.x = 10;
92-
coordinates.y = 5;
93-
touchProcessor.onTouchEvent(
94-
MotionEventBuilder.newBuilder()
95-
.setAction(MotionEvent.ACTION_MOVE)
96-
.setActionIndex(0)
97-
.setDeviceId(1)
98-
.setPointer(properties, coordinates)
99-
.build());
109+
touchProcessor.onTouchEvent(mocker.mockEvent(MotionEvent.ACTION_MOVE, 10.0f, 5.0f, 0));
100110
inOrder
101111
.verify(mockRenderer)
102112
.dispatchPointerDataPacket(packetCaptor.capture(), packetSizeCaptor.capture());
@@ -106,13 +116,7 @@ public void normalTouch() {
106116
assertEquals(AndroidTouchProcessor.PointerSignalKind.NONE, readPointerSignalKind(packet));
107117
assertEquals(10.0, readPointerPhysicalX(packet));
108118
assertEquals(5.0, readPointerPhysicalY(packet));
109-
touchProcessor.onTouchEvent(
110-
MotionEventBuilder.newBuilder()
111-
.setAction(MotionEvent.ACTION_UP)
112-
.setActionIndex(0)
113-
.setDeviceId(1)
114-
.setPointer(properties, coordinates)
115-
.build());
119+
touchProcessor.onTouchEvent(mocker.mockEvent(MotionEvent.ACTION_UP, 10.0f, 5.0f, 0));
116120
inOrder
117121
.verify(mockRenderer)
118122
.dispatchPointerDataPacket(packetCaptor.capture(), packetSizeCaptor.capture());
@@ -127,18 +131,9 @@ public void normalTouch() {
127131

128132
@Test
129133
public void trackpadGesture() {
130-
PointerProperties properties = new PointerProperties();
131-
properties.id = 0;
132-
properties.toolType = MotionEvent.TOOL_TYPE_MOUSE;
133-
PointerCoords coordinates = new PointerCoords();
134-
touchProcessor.onTouchEvent(
135-
MotionEventBuilder.newBuilder()
136-
.setAction(MotionEvent.ACTION_DOWN)
137-
.setActionIndex(0)
138-
.setDeviceId(1)
139-
.setPointer(properties, coordinates)
140-
.setSource(InputDevice.SOURCE_MOUSE)
141-
.build());
134+
MotionEventMocker mocker =
135+
new MotionEventMocker(1, InputDevice.SOURCE_MOUSE, MotionEvent.TOOL_TYPE_MOUSE);
136+
touchProcessor.onTouchEvent(mocker.mockEvent(MotionEvent.ACTION_DOWN, 0.0f, 0.0f, 0));
142137
InOrder inOrder = inOrder(mockRenderer);
143138
inOrder
144139
.verify(mockRenderer)
@@ -149,16 +144,7 @@ public void trackpadGesture() {
149144
assertEquals(AndroidTouchProcessor.PointerSignalKind.NONE, readPointerSignalKind(packet));
150145
assertEquals(0.0, readPointerPhysicalX(packet));
151146
assertEquals(0.0, readPointerPhysicalY(packet));
152-
coordinates.x = 10;
153-
coordinates.y = 5;
154-
touchProcessor.onTouchEvent(
155-
MotionEventBuilder.newBuilder()
156-
.setAction(MotionEvent.ACTION_MOVE)
157-
.setActionIndex(0)
158-
.setDeviceId(1)
159-
.setPointer(properties, coordinates)
160-
.setSource(InputDevice.SOURCE_MOUSE)
161-
.build());
147+
touchProcessor.onTouchEvent(mocker.mockEvent(MotionEvent.ACTION_MOVE, 10.0f, 5.0f, 0));
162148
inOrder
163149
.verify(mockRenderer)
164150
.dispatchPointerDataPacket(packetCaptor.capture(), packetSizeCaptor.capture());
@@ -170,14 +156,7 @@ public void trackpadGesture() {
170156
assertEquals(0.0, readPointerPhysicalY(packet));
171157
assertEquals(10.0, readPointerPanX(packet));
172158
assertEquals(5.0, readPointerPanY(packet));
173-
touchProcessor.onTouchEvent(
174-
MotionEventBuilder.newBuilder()
175-
.setAction(MotionEvent.ACTION_UP)
176-
.setActionIndex(0)
177-
.setDeviceId(1)
178-
.setPointer(properties, coordinates)
179-
.setSource(InputDevice.SOURCE_MOUSE)
180-
.build());
159+
touchProcessor.onTouchEvent(mocker.mockEvent(MotionEvent.ACTION_UP, 10.0f, 5.0f, 0));
181160
inOrder
182161
.verify(mockRenderer)
183162
.dispatchPointerDataPacket(packetCaptor.capture(), packetSizeCaptor.capture());
@@ -192,17 +171,9 @@ public void trackpadGesture() {
192171

193172
@Test
194173
public void mouse() {
195-
PointerProperties properties = new PointerProperties();
196-
properties.id = 0;
197-
properties.toolType = MotionEvent.TOOL_TYPE_MOUSE;
198-
PointerCoords coordinates = new PointerCoords();
199-
touchProcessor.onTouchEvent(
200-
MotionEventBuilder.newBuilder()
201-
.setAction(MotionEvent.ACTION_DOWN)
202-
.setActionIndex(0)
203-
.setDeviceId(1)
204-
.setPointer(properties, coordinates)
205-
.build());
174+
MotionEventMocker mocker =
175+
new MotionEventMocker(2, InputDevice.SOURCE_MOUSE, MotionEvent.TOOL_TYPE_MOUSE);
176+
touchProcessor.onTouchEvent(mocker.mockEvent(MotionEvent.ACTION_DOWN, 0.0f, 0.0f, 1));
206177
InOrder inOrder = inOrder(mockRenderer);
207178
inOrder
208179
.verify(mockRenderer)
@@ -213,15 +184,7 @@ public void mouse() {
213184
assertEquals(AndroidTouchProcessor.PointerSignalKind.NONE, readPointerSignalKind(packet));
214185
assertEquals(0.0, readPointerPhysicalX(packet));
215186
assertEquals(0.0, readPointerPhysicalY(packet));
216-
coordinates.x = 10;
217-
coordinates.y = 5;
218-
touchProcessor.onTouchEvent(
219-
MotionEventBuilder.newBuilder()
220-
.setAction(MotionEvent.ACTION_MOVE)
221-
.setActionIndex(0)
222-
.setDeviceId(1)
223-
.setPointer(properties, coordinates)
224-
.build());
187+
touchProcessor.onTouchEvent(mocker.mockEvent(MotionEvent.ACTION_MOVE, 10.0f, 5.0f, 1));
225188
inOrder
226189
.verify(mockRenderer)
227190
.dispatchPointerDataPacket(packetCaptor.capture(), packetSizeCaptor.capture());
@@ -231,13 +194,7 @@ public void mouse() {
231194
assertEquals(AndroidTouchProcessor.PointerSignalKind.NONE, readPointerSignalKind(packet));
232195
assertEquals(10.0, readPointerPhysicalX(packet));
233196
assertEquals(5.0, readPointerPhysicalY(packet));
234-
touchProcessor.onTouchEvent(
235-
MotionEventBuilder.newBuilder()
236-
.setAction(MotionEvent.ACTION_UP)
237-
.setActionIndex(0)
238-
.setDeviceId(1)
239-
.setPointer(properties, coordinates)
240-
.build());
197+
touchProcessor.onTouchEvent(mocker.mockEvent(MotionEvent.ACTION_UP, 10.0f, 5.0f, 1));
241198
inOrder
242199
.verify(mockRenderer)
243200
.dispatchPointerDataPacket(packetCaptor.capture(), packetSizeCaptor.capture());

0 commit comments

Comments
 (0)