Add PointerType to PointerInputChange verifications
When testing touch input injection, verify that the PointerType is
Touch.
Bug: 200135903
Test: ./gradlew compose:ui:ui-test:cC
Change-Id: Idd04f23fe0e0e1037e2ccdc91e0f5ba3d52f366a
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/gesturescope/SendClickTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/gesturescope/SendClickTest.kt
index b03eee1..45a48df 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/gesturescope/SendClickTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/gesturescope/SendClickTest.kt
@@ -25,14 +25,14 @@
import androidx.compose.ui.input.pointer.PointerInputModifier
import androidx.compose.ui.input.pointer.changedToUp
import androidx.compose.ui.test.ActivityWithActionBar
-import androidx.test.filters.MediumTest
-import androidx.compose.ui.test.junit4.ComposeTestRule
import androidx.compose.ui.test.click
+import androidx.compose.ui.test.junit4.ComposeTestRule
import androidx.compose.ui.test.junit4.createAndroidComposeRule
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.performGesture
import androidx.compose.ui.test.util.ClickableTestBox
import androidx.compose.ui.test.util.RecordingFilter
+import androidx.test.filters.MediumTest
import com.google.common.truth.Truth.assertThat
import org.junit.Rule
import org.junit.Test
@@ -76,8 +76,8 @@
private val componentIndex: Int,
private val recordedClicks: MutableList<ClickData>
) : PointerInputModifier {
- override val pointerInputFilter: PointerInputFilter = RecordingFilter { changes ->
- changes.forEach {
+ override val pointerInputFilter: PointerInputFilter = RecordingFilter { event ->
+ event.changes.forEach {
if (it.changedToUp()) {
recordedClicks.add(ClickData(componentIndex, it.position))
}
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/gesturescope/SendSwipeTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/gesturescope/SendSwipeTest.kt
index a4a22a9..ec61d21 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/gesturescope/SendSwipeTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/gesturescope/SendSwipeTest.kt
@@ -29,6 +29,10 @@
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.input.pointer.PointerEventType.Companion.Move
+import androidx.compose.ui.input.pointer.PointerEventType.Companion.Press
+import androidx.compose.ui.input.pointer.PointerEventType.Companion.Release
+import androidx.compose.ui.input.pointer.PointerType.Companion.Touch
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.test.ExperimentalTestApi
@@ -262,15 +266,15 @@
assertThat(events.size).isEqualTo(3)
// DOWN is in top left corner (0, 0)
- events[0].verify(null, null, true, Offset(0f, 0f))
+ events[0].verify(null, null, true, Offset(0f, 0f), Touch, Press)
val t = events[0].timestamp + 1
val pointerId = events[0].id
// MOVE is in bottom right corner (box is 100x100, so corner is (99, 99))
- events[1].verify(t, pointerId, true, Offset(99f, 99f))
+ events[1].verify(t, pointerId, true, Offset(99f, 99f), Touch, Move)
// UP is also in bottom right corner
- events[2].verify(t, pointerId, false, Offset(99f, 99f))
+ events[2].verify(t, pointerId, false, Offset(99f, 99f), Touch, Release)
}
}
}
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/ClickTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/ClickTest.kt
index fe8a5a2..0bf88db 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/ClickTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/ClickTest.kt
@@ -20,6 +20,9 @@
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.input.pointer.PointerEventType.Companion.Press
+import androidx.compose.ui.input.pointer.PointerEventType.Companion.Release
+import androidx.compose.ui.input.pointer.PointerType.Companion.Touch
import androidx.compose.ui.test.InputDispatcher.Companion.eventPeriodMillis
import androidx.compose.ui.test.TouchInjectionScope
import androidx.compose.ui.test.click
@@ -101,8 +104,8 @@
val t0 = events[0].timestamp
val id = events[0].id
- events[0].verify(t0 + 0, id, true, position)
- events[1].verify(t0 + eventPeriodMillis, id, false, position)
+ events[0].verify(t0 + 0, id, true, position, Touch, Press)
+ events[1].verify(t0 + eventPeriodMillis, id, false, position, Touch, Release)
}
private fun ComposeTestRule.click(tag: String) {
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/DoubleClickTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/DoubleClickTest.kt
index ead50a3..9aca1e3 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/DoubleClickTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/DoubleClickTest.kt
@@ -21,6 +21,9 @@
import androidx.compose.testutils.WithViewConfiguration
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.input.pointer.PointerEventType.Companion.Press
+import androidx.compose.ui.input.pointer.PointerEventType.Companion.Release
+import androidx.compose.ui.input.pointer.PointerType.Companion.Touch
import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.test.InputDispatcher.Companion.eventPeriodMillis
import androidx.compose.ui.test.TouchInjectionScope
@@ -123,13 +126,13 @@
val t0 = events[0].timestamp
val id0 = events[0].id
- events[0].verify(t0 + 0, id0, true, position)
- events[1].verify(t0 + eventPeriodMillis, id0, false, position)
+ events[0].verify(t0 + 0, id0, true, position, Touch, Press)
+ events[1].verify(t0 + eventPeriodMillis, id0, false, position, Touch, Release)
val t1 = events[1].timestamp + expectedDelay
val id1 = events[2].id
- events[2].verify(t1 + 0, id1, true, position)
- events[3].verify(t1 + eventPeriodMillis, id1, false, position)
+ events[2].verify(t1 + 0, id1, true, position, Touch, Press)
+ events[3].verify(t1 + eventPeriodMillis, id1, false, position, Touch, Release)
}
}
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/DownTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/DownTest.kt
index 2acb9c6..51dbaad 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/DownTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/DownTest.kt
@@ -19,6 +19,8 @@
import android.os.SystemClock.sleep
import androidx.compose.testutils.expectError
import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.input.pointer.PointerEventType.Companion.Press
+import androidx.compose.ui.input.pointer.PointerType.Companion.Touch
import androidx.compose.ui.test.TouchInjectionScope
import androidx.compose.ui.test.injectionscope.touch.Common.performTouchInput
import androidx.compose.ui.test.junit4.createComposeRule
@@ -66,7 +68,7 @@
assertTimestampsAreIncreasing()
assertThat(events).hasSize(1)
assertThat(events[0].pointerCount).isEqualTo(1)
- events[0].getPointer(0).verify(null, null, true, position1)
+ events[0].getPointer(0).verify(null, null, true, position1, Touch, Press)
}
}
}
@@ -85,14 +87,14 @@
assertThat(events).hasSize(2)
assertThat(events[0].pointerCount).isEqualTo(1)
- events[0].getPointer(0).verify(null, null, true, position1)
+ events[0].getPointer(0).verify(null, null, true, position1, Touch, Press)
val t = events[0].getPointer(0).timestamp
val pointerId1 = events[0].getPointer(0).id
assertThat(events[1].pointerCount).isEqualTo(2)
- events[1].getPointer(0).verify(t, pointerId1, true, position1)
- events[1].getPointer(1).verify(t, null, true, position2)
+ events[1].getPointer(0).verify(t, pointerId1, true, position1, Touch, Press)
+ events[1].getPointer(1).verify(t, null, true, position2, Touch, Press)
val pointerId2 = events[1].getPointer(1).id
assertThat(pointerId2).isNotEqualTo(pointerId1)
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/LongClickTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/LongClickTest.kt
index 1263df9..6ba723d 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/LongClickTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/LongClickTest.kt
@@ -25,6 +25,10 @@
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.input.pointer.PointerEventType.Companion.Move
+import androidx.compose.ui.input.pointer.PointerEventType.Companion.Press
+import androidx.compose.ui.input.pointer.PointerEventType.Companion.Release
+import androidx.compose.ui.input.pointer.PointerType.Companion.Touch
import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.test.InputDispatcher.Companion.eventPeriodMillis
import androidx.compose.ui.test.TouchInjectionScope
@@ -138,8 +142,9 @@
events.dropLast(1).forEachIndexed { i, event ->
// Don't check the timestamp
val t = t0 + (expectedDuration * i / steps.toDouble()).roundToLong()
- event.verify(t, id, true, position)
+ val type = if (i == 0) Press else Move
+ event.verify(t, id, true, position, Touch, type)
}
- events.last().verify(t0 + expectedDuration, id, false, position)
+ events.last().verify(t0 + expectedDuration, id, false, position, Touch, Release)
}
}
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/MoveByTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/MoveByTest.kt
index 17b77cd..c930148 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/MoveByTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/MoveByTest.kt
@@ -19,6 +19,8 @@
import android.os.SystemClock.sleep
import androidx.compose.testutils.expectError
import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.input.pointer.PointerEventType.Companion.Move
+import androidx.compose.ui.input.pointer.PointerType.Companion.Touch
import androidx.compose.ui.test.InputDispatcher.Companion.eventPeriodMillis
import androidx.compose.ui.test.TouchInjectionScope
import androidx.compose.ui.test.injectionscope.touch.Common.performTouchInput
@@ -76,7 +78,8 @@
t += eventPeriodMillis
assertThat(events[1].pointerCount).isEqualTo(1)
- events[1].getPointer(0).verify(t, pointerId, true, downPosition1 + delta1)
+ events[1].getPointer(0)
+ .verify(t, pointerId, true, downPosition1 + delta1, Touch, Move)
}
}
}
@@ -101,13 +104,17 @@
t += eventPeriodMillis
assertThat(events[2].pointerCount).isEqualTo(2)
- events[2].getPointer(0).verify(t, pointerId1, true, downPosition1 + delta1)
- events[2].getPointer(1).verify(t, pointerId2, true, downPosition2)
+ events[2].getPointer(0)
+ .verify(t, pointerId1, true, downPosition1 + delta1, Touch, Move)
+ events[2].getPointer(1)
+ .verify(t, pointerId2, true, downPosition2, Touch, Move)
t += eventPeriodMillis
assertThat(events[3].pointerCount).isEqualTo(2)
- events[3].getPointer(0).verify(t, pointerId1, true, downPosition1 + delta1)
- events[3].getPointer(1).verify(t, pointerId2, true, downPosition2 + delta2)
+ events[3].getPointer(0)
+ .verify(t, pointerId1, true, downPosition1 + delta1, Touch, Move)
+ events[3].getPointer(1)
+ .verify(t, pointerId2, true, downPosition2 + delta2, Touch, Move)
}
}
}
@@ -134,8 +141,10 @@
t += eventPeriodMillis
assertThat(events[2].pointerCount).isEqualTo(2)
- events[2].getPointer(0).verify(t, pointerId1, true, downPosition1 + delta1)
- events[2].getPointer(1).verify(t, pointerId2, true, downPosition2 + delta2)
+ events[2].getPointer(0)
+ .verify(t, pointerId1, true, downPosition1 + delta1, Touch, Move)
+ events[2].getPointer(1)
+ .verify(t, pointerId2, true, downPosition2 + delta2, Touch, Move)
}
}
}
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/MoveToTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/MoveToTest.kt
index cd5158d..442c435 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/MoveToTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/MoveToTest.kt
@@ -19,6 +19,8 @@
import android.os.SystemClock.sleep
import androidx.compose.testutils.expectError
import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.input.pointer.PointerEventType.Companion.Move
+import androidx.compose.ui.input.pointer.PointerType.Companion.Touch
import androidx.compose.ui.test.InputDispatcher.Companion.eventPeriodMillis
import androidx.compose.ui.test.TouchInjectionScope
import androidx.compose.ui.test.injectionscope.touch.Common.performTouchInput
@@ -76,7 +78,7 @@
t += eventPeriodMillis
assertThat(events[1].pointerCount).isEqualTo(1)
- events[1].getPointer(0).verify(t, pointerId, true, moveToPosition1)
+ events[1].getPointer(0).verify(t, pointerId, true, moveToPosition1, Touch, Move)
}
}
}
@@ -101,13 +103,13 @@
t += eventPeriodMillis
assertThat(events[2].pointerCount).isEqualTo(2)
- events[2].getPointer(0).verify(t, pointerId1, true, moveToPosition1)
- events[2].getPointer(1).verify(t, pointerId2, true, downPosition2)
+ events[2].getPointer(0).verify(t, pointerId1, true, moveToPosition1, Touch, Move)
+ events[2].getPointer(1).verify(t, pointerId2, true, downPosition2, Touch, Move)
t += eventPeriodMillis
assertThat(events[3].pointerCount).isEqualTo(2)
- events[3].getPointer(0).verify(t, pointerId1, true, moveToPosition1)
- events[3].getPointer(1).verify(t, pointerId2, true, moveToPosition2)
+ events[3].getPointer(0).verify(t, pointerId1, true, moveToPosition1, Touch, Move)
+ events[3].getPointer(1).verify(t, pointerId2, true, moveToPosition2, Touch, Move)
}
}
}
@@ -134,8 +136,8 @@
t += eventPeriodMillis
assertThat(events[2].pointerCount).isEqualTo(2)
- events[2].getPointer(0).verify(t, pointerId1, true, moveToPosition1)
- events[2].getPointer(1).verify(t, pointerId2, true, moveToPosition2)
+ events[2].getPointer(0).verify(t, pointerId1, true, moveToPosition1, Touch, Move)
+ events[2].getPointer(1).verify(t, pointerId2, true, moveToPosition2, Touch, Move)
}
}
}
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/SwipeStartEndTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/SwipeStartEndTest.kt
index 6ed4d44..0f8f0b6 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/SwipeStartEndTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/SwipeStartEndTest.kt
@@ -20,6 +20,9 @@
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.input.pointer.PointerEventType.Companion.Press
+import androidx.compose.ui.input.pointer.PointerEventType.Companion.Release
+import androidx.compose.ui.input.pointer.PointerType.Companion.Touch
import androidx.compose.ui.test.TouchInjectionScope
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onNodeWithTag
@@ -91,9 +94,9 @@
val id = events[0].id
// We start at `start`
- events.first().verify(t0, id, true, start)
+ events.first().verify(t0, id, true, start, Touch, Press)
// We end at `end`
- events.last().verify(t0 + config.duration, id, false, end)
+ events.last().verify(t0 + config.duration, id, false, end, Touch, Release)
// All events are evenly spaced in time
downEvents.hasSameTimeBetweenEvents()
// And the distance between each event is the same
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/UpTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/UpTest.kt
index cba8992..3d686c0 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/UpTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/injectionscope/touch/UpTest.kt
@@ -19,6 +19,8 @@
import android.os.SystemClock.sleep
import androidx.compose.testutils.expectError
import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.input.pointer.PointerEventType.Companion.Release
+import androidx.compose.ui.input.pointer.PointerType.Companion.Touch
import androidx.compose.ui.test.TouchInjectionScope
import androidx.compose.ui.test.injectionscope.touch.Common.performTouchInput
import androidx.compose.ui.test.junit4.createComposeRule
@@ -74,7 +76,7 @@
val pointerId = events[0].getPointer(0).id
assertThat(events[1].pointerCount).isEqualTo(1)
- events[1].getPointer(0).verify(t, pointerId, false, downPosition1)
+ events[1].getPointer(0).verify(t, pointerId, false, downPosition1, Touch, Release)
}
}
@@ -101,11 +103,11 @@
val pointerId2 = events[1].getPointer(1).id
assertThat(events[2].pointerCount).isEqualTo(2)
- events[2].getPointer(0).verify(t, pointerId1, false, downPosition1)
- events[2].getPointer(1).verify(t, pointerId2, true, downPosition2)
+ events[2].getPointer(0).verify(t, pointerId1, false, downPosition1, Touch, Release)
+ events[2].getPointer(1).verify(t, pointerId2, true, downPosition2, Touch, Release)
assertThat(events[3].pointerCount).isEqualTo(1)
- events[3].getPointer(0).verify(t, pointerId2, false, downPosition2)
+ events[3].getPointer(0).verify(t, pointerId2, false, downPosition2, Touch, Release)
}
}
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/partialgesturescope/SendDownTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/partialgesturescope/SendDownTest.kt
index 734957e..e370a28 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/partialgesturescope/SendDownTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/partialgesturescope/SendDownTest.kt
@@ -19,6 +19,8 @@
import android.os.SystemClock.sleep
import androidx.compose.testutils.expectError
import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.input.pointer.PointerEventType.Companion.Press
+import androidx.compose.ui.input.pointer.PointerType.Companion.Touch
import androidx.compose.ui.test.down
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.partialgesturescope.Common.partialGesture
@@ -67,7 +69,7 @@
assertTimestampsAreIncreasing()
assertThat(events).hasSize(1)
assertThat(events[0].pointerCount).isEqualTo(1)
- events[0].getPointer(0).verify(null, null, true, position1)
+ events[0].getPointer(0).verify(null, null, true, position1, Touch, Press)
}
}
}
@@ -87,14 +89,14 @@
assertThat(events).hasSize(2)
assertThat(events[0].pointerCount).isEqualTo(1)
- events[0].getPointer(0).verify(null, null, true, position1)
+ events[0].getPointer(0).verify(null, null, true, position1, Touch, Press)
val t = events[0].getPointer(0).timestamp
val pointerId1 = events[0].getPointer(0).id
assertThat(events[1].pointerCount).isEqualTo(2)
- events[1].getPointer(0).verify(t, pointerId1, true, position1)
- events[1].getPointer(1).verify(t, null, true, position2)
+ events[1].getPointer(0).verify(t, pointerId1, true, position1, Touch, Press)
+ events[1].getPointer(1).verify(t, null, true, position2, Touch, Press)
val pointerId2 = events[1].getPointer(1).id
assertThat(pointerId2).isNotEqualTo(pointerId1)
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/partialgesturescope/SendMoveByTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/partialgesturescope/SendMoveByTest.kt
index e8b7aae..782acf1 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/partialgesturescope/SendMoveByTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/partialgesturescope/SendMoveByTest.kt
@@ -19,6 +19,8 @@
import android.os.SystemClock.sleep
import androidx.compose.testutils.expectError
import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.input.pointer.PointerEventType.Companion.Move
+import androidx.compose.ui.input.pointer.PointerType.Companion.Touch
import androidx.compose.ui.test.InputDispatcher.Companion.eventPeriodMillis
import androidx.compose.ui.test.cancel
import androidx.compose.ui.test.down
@@ -82,7 +84,8 @@
t += eventPeriodMillis
assertThat(events[1].pointerCount).isEqualTo(1)
- events[1].getPointer(0).verify(t, pointerId, true, downPosition1 + delta1)
+ events[1].getPointer(0)
+ .verify(t, pointerId, true, downPosition1 + delta1, Touch, Move)
}
}
}
@@ -108,13 +111,17 @@
t += eventPeriodMillis
assertThat(events[2].pointerCount).isEqualTo(2)
- events[2].getPointer(0).verify(t, pointerId1, true, downPosition1 + delta1)
- events[2].getPointer(1).verify(t, pointerId2, true, downPosition2)
+ events[2].getPointer(0)
+ .verify(t, pointerId1, true, downPosition1 + delta1, Touch, Move)
+ events[2].getPointer(1)
+ .verify(t, pointerId2, true, downPosition2, Touch, Move)
t += eventPeriodMillis
assertThat(events[3].pointerCount).isEqualTo(2)
- events[3].getPointer(0).verify(t, pointerId1, true, downPosition1 + delta1)
- events[3].getPointer(1).verify(t, pointerId2, true, downPosition2 + delta2)
+ events[3].getPointer(0)
+ .verify(t, pointerId1, true, downPosition1 + delta1, Touch, Move)
+ events[3].getPointer(1)
+ .verify(t, pointerId2, true, downPosition2 + delta2, Touch, Move)
}
}
}
@@ -142,8 +149,10 @@
t += eventPeriodMillis
assertThat(events[2].pointerCount).isEqualTo(2)
- events[2].getPointer(0).verify(t, pointerId1, true, downPosition1 + delta1)
- events[2].getPointer(1).verify(t, pointerId2, true, downPosition2 + delta2)
+ events[2].getPointer(0)
+ .verify(t, pointerId1, true, downPosition1 + delta1, Touch, Move)
+ events[2].getPointer(1)
+ .verify(t, pointerId2, true, downPosition2 + delta2, Touch, Move)
}
}
}
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/partialgesturescope/SendMoveToTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/partialgesturescope/SendMoveToTest.kt
index 726127c..0cdeec6 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/partialgesturescope/SendMoveToTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/partialgesturescope/SendMoveToTest.kt
@@ -19,6 +19,8 @@
import android.os.SystemClock.sleep
import androidx.compose.testutils.expectError
import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.input.pointer.PointerEventType.Companion.Move
+import androidx.compose.ui.input.pointer.PointerType.Companion.Touch
import androidx.compose.ui.test.InputDispatcher.Companion.eventPeriodMillis
import androidx.compose.ui.test.cancel
import androidx.compose.ui.test.down
@@ -82,7 +84,7 @@
t += eventPeriodMillis
assertThat(events[1].pointerCount).isEqualTo(1)
- events[1].getPointer(0).verify(t, pointerId, true, moveToPosition1)
+ events[1].getPointer(0).verify(t, pointerId, true, moveToPosition1, Touch, Move)
}
}
}
@@ -108,13 +110,13 @@
t += eventPeriodMillis
assertThat(events[2].pointerCount).isEqualTo(2)
- events[2].getPointer(0).verify(t, pointerId1, true, moveToPosition1)
- events[2].getPointer(1).verify(t, pointerId2, true, downPosition2)
+ events[2].getPointer(0).verify(t, pointerId1, true, moveToPosition1, Touch, Move)
+ events[2].getPointer(1).verify(t, pointerId2, true, downPosition2, Touch, Move)
t += eventPeriodMillis
assertThat(events[3].pointerCount).isEqualTo(2)
- events[3].getPointer(0).verify(t, pointerId1, true, moveToPosition1)
- events[3].getPointer(1).verify(t, pointerId2, true, moveToPosition2)
+ events[3].getPointer(0).verify(t, pointerId1, true, moveToPosition1, Touch, Move)
+ events[3].getPointer(1).verify(t, pointerId2, true, moveToPosition2, Touch, Move)
}
}
}
@@ -142,8 +144,8 @@
t += eventPeriodMillis
assertThat(events[2].pointerCount).isEqualTo(2)
- events[2].getPointer(0).verify(t, pointerId1, true, moveToPosition1)
- events[2].getPointer(1).verify(t, pointerId2, true, moveToPosition2)
+ events[2].getPointer(0).verify(t, pointerId1, true, moveToPosition1, Touch, Move)
+ events[2].getPointer(1).verify(t, pointerId2, true, moveToPosition2, Touch, Move)
}
}
}
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/partialgesturescope/SendUpTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/partialgesturescope/SendUpTest.kt
index 1b3de68..8329781 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/partialgesturescope/SendUpTest.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/partialgesturescope/SendUpTest.kt
@@ -19,6 +19,8 @@
import android.os.SystemClock.sleep
import androidx.compose.testutils.expectError
import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.input.pointer.PointerEventType.Companion.Release
+import androidx.compose.ui.input.pointer.PointerType.Companion.Touch
import androidx.compose.ui.test.cancel
import androidx.compose.ui.test.down
import androidx.compose.ui.test.junit4.createComposeRule
@@ -78,7 +80,7 @@
val pointerId = events[0].getPointer(0).id
assertThat(events[1].pointerCount).isEqualTo(1)
- events[1].getPointer(0).verify(t, pointerId, false, downPosition1)
+ events[1].getPointer(0).verify(t, pointerId, false, downPosition1, Touch, Release)
}
}
@@ -105,11 +107,11 @@
val pointerId2 = events[1].getPointer(1).id
assertThat(events[2].pointerCount).isEqualTo(2)
- events[2].getPointer(0).verify(t, pointerId1, false, downPosition1)
- events[2].getPointer(1).verify(t, pointerId2, true, downPosition2)
+ events[2].getPointer(0).verify(t, pointerId1, false, downPosition1, Touch, Release)
+ events[2].getPointer(1).verify(t, pointerId2, true, downPosition2, Touch, Release)
assertThat(events[3].pointerCount).isEqualTo(1)
- events[3].getPointer(0).verify(t, pointerId2, false, downPosition2)
+ events[3].getPointer(0).verify(t, pointerId2, false, downPosition2, Touch, Release)
}
}
diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/util/PointerInputs.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/util/PointerInputs.kt
index 7495078..be32c31 100644
--- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/util/PointerInputs.kt
+++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/util/PointerInputs.kt
@@ -17,13 +17,19 @@
package androidx.compose.ui.test.util
import androidx.compose.ui.geometry.Offset
-import androidx.compose.ui.input.pointer.util.VelocityTracker
+import androidx.compose.ui.input.pointer.PointerButtons
import androidx.compose.ui.input.pointer.PointerEvent
import androidx.compose.ui.input.pointer.PointerEventPass
+import androidx.compose.ui.input.pointer.PointerEventType
+import androidx.compose.ui.input.pointer.PointerEventType.Companion.Move
+import androidx.compose.ui.input.pointer.PointerEventType.Companion.Release
import androidx.compose.ui.input.pointer.PointerId
import androidx.compose.ui.input.pointer.PointerInputChange
import androidx.compose.ui.input.pointer.PointerInputFilter
import androidx.compose.ui.input.pointer.PointerInputModifier
+import androidx.compose.ui.input.pointer.PointerKeyboardModifiers
+import androidx.compose.ui.input.pointer.PointerType
+import androidx.compose.ui.input.pointer.util.VelocityTracker
import androidx.compose.ui.unit.IntSize
import com.google.common.truth.Truth.assertThat
@@ -31,8 +37,23 @@
val id: PointerId,
val timestamp: Long,
val position: Offset,
- val down: Boolean
+ val down: Boolean,
+ val pointerType: PointerType,
+ val eventType: PointerEventType,
+ val buttons: PointerButtons,
+ val keyboardModifiers: PointerKeyboardModifiers,
) {
+ constructor(change: PointerInputChange, event: PointerEvent) : this(
+ change.id,
+ change.uptimeMillis,
+ change.position,
+ change.pressed,
+ change.type,
+ event.type,
+ event.buttons,
+ event.keyboardModifiers,
+ )
+
val x get() = position.x
val y get() = position.y
}
@@ -52,9 +73,9 @@
private val velocityTracker = VelocityTracker()
val recordedVelocity get() = velocityTracker.calculateVelocity()
- override val pointerInputFilter = RecordingFilter { changes ->
- changes.forEach {
- _events.add(DataPoint(it.id, it.uptimeMillis, it.position, it.pressed))
+ override val pointerInputFilter = RecordingFilter { event ->
+ event.changes.forEach {
+ _events.add(DataPoint(it, event))
velocityTracker.addPosition(it.uptimeMillis, it.position)
}
}
@@ -77,14 +98,8 @@
private val _events = mutableListOf<Event>()
val events get() = _events as List<Event>
- override val pointerInputFilter = RecordingFilter { changes ->
- _events.add(
- Event(
- changes.map {
- DataPoint(it.id, it.uptimeMillis, it.position, it.pressed)
- }
- )
- )
+ override val pointerInputFilter = RecordingFilter { event ->
+ _events.add(Event(event.changes.map { DataPoint(it, event) }))
}
}
@@ -94,7 +109,7 @@
* (but really shouldn't).
*/
class RecordingFilter(
- private val record: (List<PointerInputChange>) -> Unit
+ private val record: (PointerEvent) -> Unit
) : PointerInputFilter() {
override fun onPointerEvent(
pointerEvent: PointerEvent,
@@ -102,7 +117,7 @@
bounds: IntSize
) {
if (pass == PointerEventPass.Initial) {
- record(pointerEvent.changes)
+ record(pointerEvent)
}
}
@@ -149,8 +164,9 @@
fun SinglePointerInputRecorder.assertUpSameAsLastMove() {
check(events.isNotEmpty()) { "No events recorded" }
- events.last().also {
- downEvents.last().verify(it.timestamp, it.id, true, it.position)
+ events.last().let {
+ assertThat(it.eventType).isEqualTo(Release)
+ downEvents.last().verify(it.timestamp, it.id, true, it.position, it.pointerType, Move)
}
}
@@ -162,7 +178,11 @@
expectedTimestamp: Long?,
expectedId: PointerId?,
expectedDown: Boolean,
- expectedPosition: Offset
+ expectedPosition: Offset,
+ expectedPointerType: PointerType,
+ expectedEventType: PointerEventType,
+ expectedButtons: PointerButtons = PointerButtons(0),
+ expectedKeyboardModifiers: PointerKeyboardModifiers = PointerKeyboardModifiers(0),
) {
if (expectedTimestamp != null) {
assertThat(timestamp).isEqualTo(expectedTimestamp)
@@ -172,6 +192,10 @@
}
assertThat(down).isEqualTo(expectedDown)
assertThat(position).isEqualTo(expectedPosition)
+ assertThat(pointerType).isEqualTo(expectedPointerType)
+ assertThat(eventType).isEqualTo(expectedEventType)
+ assertThat(buttons).isEqualTo(expectedButtons)
+ assertThat(keyboardModifiers).isEqualTo(expectedKeyboardModifiers)
}
/**