Define offsets in lazy animate item placement tests in floats
It makes the test results more reliable. There are multiple ways to define an offset based on the fraction. First one is
startPosition + ((endPosition - startPosition) * fraction).roundToInt()
And the second one is:
endPosition - ((endPosition - startPosition) * fraction).roundToInt()
Lets say startPosition is 0 and startPosition is 9. Then for the first expression we have
0 + ((9 - 0) * 0.5).roundToInt() = 4.5.roundToInt() = 5
And for the second one we have
9 - ((9 - 0) * 0.5).roundToInt() = 9 - 4.5.roundToInt() = 9 - 5 = 4
But if instead we will be using floats for calculations and only round the result to int right before doing the assertion both expressions will produce 4.5f which we round to 5.
Test: run those tests
Change-Id: I9e590a066b2e41b6e00a293e7a7fcde09a312b69
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridAnimateItemPlacementTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridAnimateItemPlacementTest.kt
index 587736a..e30dfef 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridAnimateItemPlacementTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/grid/LazyGridAnimateItemPlacementTest.kt
@@ -35,6 +35,7 @@
import androidx.compose.runtime.setValue
import androidx.compose.runtime.snapshotFlow
import androidx.compose.ui.Modifier
+import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.test.SemanticsNodeInteraction
import androidx.compose.ui.test.assertHeightIsEqualTo
@@ -50,6 +51,7 @@
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.height
import androidx.compose.ui.unit.isSpecified
+import androidx.compose.ui.unit.round
import androidx.compose.ui.unit.width
import androidx.test.filters.LargeTest
import com.google.common.truth.Truth.assertThat
@@ -73,15 +75,15 @@
@get:Rule
val rule = createComposeRule()
- private val itemSize: Int = 50
+ private val itemSize: Float = 50f
private var itemSizeDp: Dp = Dp.Infinity
- private val itemSize2: Int = 30
+ private val itemSize2: Float = 30f
private var itemSize2Dp: Dp = Dp.Infinity
- private val itemSize3: Int = 20
+ private val itemSize3: Float = 20f
private var itemSize3Dp: Dp = Dp.Infinity
- private val containerSize: Int = itemSize * 5
+ private val containerSize: Float = itemSize * 5
private var containerSizeDp: Dp = Dp.Infinity
- private val spacing: Int = 10
+ private val spacing: Float = 10f
private var spacingDp: Dp = Dp.Infinity
private val itemSizePlusSpacing = itemSize + spacing
private var itemSizePlusSpacingDp = Dp.Infinity
@@ -112,8 +114,8 @@
}
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(0, itemSize)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(0f, itemSize)
)
rule.runOnIdle {
@@ -122,8 +124,8 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, 0 + (itemSize * fraction).roundToInt()),
- 1 to AxisIntOffset(0, itemSize - (itemSize * fraction).roundToInt()),
+ 0 to AxisOffset(0f, 0f + itemSize * fraction),
+ 1 to AxisOffset(0f, itemSize - itemSize * fraction),
fraction = fraction
)
}
@@ -141,10 +143,10 @@
}
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(itemSize, 0),
- 2 to AxisIntOffset(0, itemSize),
- 3 to AxisIntOffset(itemSize, itemSize)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(itemSize, 0f),
+ 2 to AxisOffset(0f, itemSize),
+ 3 to AxisOffset(itemSize, itemSize)
)
rule.runOnIdle {
@@ -152,13 +154,13 @@
}
onAnimationFrame { fraction ->
- val increasing = 0 + (itemSize * fraction).roundToInt()
- val decreasing = itemSize - (itemSize * fraction).roundToInt()
+ val increasing = 0 + itemSize * fraction
+ val decreasing = itemSize - itemSize * fraction
assertPositions(
- 0 to AxisIntOffset(increasing, increasing),
- 1 to AxisIntOffset(decreasing, increasing),
- 2 to AxisIntOffset(increasing, decreasing),
- 3 to AxisIntOffset(decreasing, decreasing),
+ 0 to AxisOffset(increasing, increasing),
+ 1 to AxisOffset(decreasing, increasing),
+ 2 to AxisOffset(increasing, decreasing),
+ 3 to AxisOffset(decreasing, decreasing),
fraction = fraction
)
}
@@ -176,10 +178,10 @@
}
assertLayoutInfoPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(itemSize, 0),
- 2 to AxisIntOffset(0, itemSize),
- 3 to AxisIntOffset(itemSize, itemSize)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(itemSize, 0f),
+ 2 to AxisOffset(0f, itemSize),
+ 3 to AxisOffset(itemSize, itemSize)
)
rule.runOnIdle {
@@ -189,10 +191,10 @@
onAnimationFrame {
// fraction doesn't affect the offsets in layout info
assertLayoutInfoPositions(
- 3 to AxisIntOffset(0, 0),
- 2 to AxisIntOffset(itemSize, 0),
- 1 to AxisIntOffset(0, itemSize),
- 0 to AxisIntOffset(itemSize, itemSize)
+ 3 to AxisOffset(0f, 0f),
+ 2 to AxisOffset(itemSize, 0f),
+ 1 to AxisOffset(0f, itemSize),
+ 0 to AxisOffset(itemSize, itemSize)
)
}
}
@@ -209,11 +211,11 @@
}
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(0, itemSize),
- 2 to AxisIntOffset(0, itemSize * 2),
- 3 to AxisIntOffset(0, itemSize * 3),
- 4 to AxisIntOffset(0, itemSize * 4)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(0f, itemSize),
+ 2 to AxisOffset(0f, itemSize * 2),
+ 3 to AxisOffset(0f, itemSize * 3),
+ 4 to AxisOffset(0f, itemSize * 4)
)
rule.runOnIdle {
@@ -222,11 +224,11 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, 0 + (itemSize * 4 * fraction).roundToInt()),
- 1 to AxisIntOffset(0, itemSize),
- 2 to AxisIntOffset(0, itemSize * 2),
- 3 to AxisIntOffset(0, itemSize * 3),
- 4 to AxisIntOffset(0, itemSize * 4 - (itemSize * 4 * fraction).roundToInt()),
+ 0 to AxisOffset(0f, 0f + itemSize * 4 * fraction),
+ 1 to AxisOffset(0f, itemSize),
+ 2 to AxisOffset(0f, itemSize * 2),
+ 3 to AxisOffset(0f, itemSize * 3),
+ 4 to AxisOffset(0f, itemSize * 4 - itemSize * 4 * fraction),
fraction = fraction
)
}
@@ -244,12 +246,12 @@
}
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(itemSize, 0),
- 2 to AxisIntOffset(0, itemSize),
- 3 to AxisIntOffset(itemSize, itemSize),
- 4 to AxisIntOffset(0, itemSize * 2),
- 5 to AxisIntOffset(itemSize, itemSize * 2)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(itemSize, 0f),
+ 2 to AxisOffset(0f, itemSize),
+ 3 to AxisOffset(itemSize, itemSize),
+ 4 to AxisOffset(0f, itemSize * 2),
+ 5 to AxisOffset(itemSize, itemSize * 2)
)
rule.runOnIdle {
@@ -257,15 +259,15 @@
}
onAnimationFrame { fraction ->
- val increasingX = 0 + (itemSize * fraction).roundToInt()
- val decreasingX = itemSize - (itemSize * fraction).roundToInt()
+ val increasingX = 0 + itemSize * fraction
+ val decreasingX = itemSize - itemSize * fraction
assertPositions(
- 0 to AxisIntOffset(increasingX, 0 + (itemSize * 2 * fraction).roundToInt()),
- 1 to AxisIntOffset(decreasingX, 0),
- 2 to AxisIntOffset(increasingX, itemSize - (itemSize * fraction).roundToInt()),
- 3 to AxisIntOffset(decreasingX, itemSize),
- 4 to AxisIntOffset(increasingX, itemSize * 2 - (itemSize * fraction).roundToInt()),
- 5 to AxisIntOffset(decreasingX, itemSize * 2),
+ 0 to AxisOffset(increasingX, 0f + itemSize * 2 * fraction),
+ 1 to AxisOffset(decreasingX, 0f),
+ 2 to AxisOffset(increasingX, itemSize - itemSize * fraction),
+ 3 to AxisOffset(decreasingX, itemSize),
+ 4 to AxisOffset(increasingX, itemSize * 2 - itemSize * fraction),
+ 5 to AxisOffset(decreasingX, itemSize * 2),
fraction = fraction
)
}
@@ -292,10 +294,10 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(0, itemSize),
- 2 to AxisIntOffset(0, itemSize * 2 + (itemSize * fraction).roundToInt()),
- 3 to AxisIntOffset(0, itemSize * 3 + (itemSize * fraction).roundToInt()),
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(0f, itemSize),
+ 2 to AxisOffset(0f, itemSize * 2 + itemSize * fraction),
+ 3 to AxisOffset(0f, itemSize * 3 + itemSize * fraction),
fraction = fraction
)
}
@@ -318,11 +320,11 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, itemSize * 4),
- 1 to AxisIntOffset(0, itemSize - (itemSize * fraction).roundToInt()),
- 2 to AxisIntOffset(0, itemSize),
- 3 to AxisIntOffset(0, itemSize * 3 - (itemSize * fraction).roundToInt()),
- 4 to AxisIntOffset(0, itemSize * 3),
+ 0 to AxisOffset(0f, itemSize * 4),
+ 1 to AxisOffset(0f, itemSize - itemSize * fraction),
+ 2 to AxisOffset(0f, itemSize),
+ 3 to AxisOffset(0f, itemSize * 3 - itemSize * fraction),
+ 4 to AxisOffset(0f, itemSize * 3),
fraction = fraction
)
}
@@ -347,11 +349,11 @@
onAnimationFrame(duration = Duration * 2) { fraction ->
val shorterAnimFraction = (fraction * 2).coerceAtMost(1f)
assertPositions(
- 0 to AxisIntOffset(0, 0 + (itemSize * 4 * shorterAnimFraction).roundToInt()),
- 1 to AxisIntOffset(0, itemSize - (itemSize * fraction).roundToInt()),
- 2 to AxisIntOffset(0, itemSize * 2 - (itemSize * shorterAnimFraction).roundToInt()),
- 3 to AxisIntOffset(0, itemSize * 3 - (itemSize * fraction).roundToInt()),
- 4 to AxisIntOffset(0, itemSize * 4 - (itemSize * shorterAnimFraction).roundToInt()),
+ 0 to AxisOffset(0f, 0 + itemSize * 4 * shorterAnimFraction),
+ 1 to AxisOffset(0f, itemSize - itemSize * fraction),
+ 2 to AxisOffset(0f, itemSize * 2 - itemSize * shorterAnimFraction),
+ 3 to AxisOffset(0f, itemSize * 3 - itemSize * fraction),
+ 4 to AxisOffset(0f, itemSize * 4 - itemSize * shorterAnimFraction),
fraction = fraction
)
}
@@ -370,10 +372,10 @@
}
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(0, 0),
- 2 to AxisIntOffset(0, itemSize),
- 3 to AxisIntOffset(0, itemSize)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(0f, 0f),
+ 2 to AxisOffset(0f, itemSize),
+ 3 to AxisOffset(0f, itemSize)
)
rule.runOnIdle {
@@ -382,10 +384,10 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, 0 + (itemSize * fraction).roundToInt()),
- 1 to AxisIntOffset(0, 0 + (itemSize * fraction).roundToInt()),
- 2 to AxisIntOffset(0, itemSize - (itemSize * fraction).roundToInt()),
- 3 to AxisIntOffset(0, itemSize - (itemSize * fraction).roundToInt()),
+ 0 to AxisOffset(0f, 0 + itemSize * fraction),
+ 1 to AxisOffset(0f, 0 + itemSize * fraction),
+ 2 to AxisOffset(0f, itemSize - itemSize * fraction),
+ 3 to AxisOffset(0f, itemSize - itemSize * fraction),
fraction = fraction
)
}
@@ -409,10 +411,10 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, 0 + (itemSize * fraction).roundToInt()),
- 1 to AxisIntOffset(0, itemSize),
- 2 to AxisIntOffset(0, itemSize - (itemSize * fraction).roundToInt()),
- 3 to AxisIntOffset(0, 0),
+ 0 to AxisOffset(0f, 0 + itemSize * fraction),
+ 1 to AxisOffset(0f, itemSize),
+ 2 to AxisOffset(0f, itemSize - itemSize * fraction),
+ 3 to AxisOffset(0f, 0f),
fraction = fraction
)
}
@@ -435,9 +437,9 @@
}
assertPositions(
- 1 to AxisIntOffset(0, itemSize),
- 2 to AxisIntOffset(0, itemSize * 2),
- 3 to AxisIntOffset(0, itemSize * 3),
+ 1 to AxisOffset(0f, itemSize),
+ 2 to AxisOffset(0f, itemSize * 2),
+ 3 to AxisOffset(0f, itemSize * 3),
)
rule.runOnIdle {
@@ -447,9 +449,9 @@
onAnimationFrame { fraction ->
assertPositions(
- 1 to AxisIntOffset(0, itemSize - (itemSize * fraction).roundToInt()),
- 2 to AxisIntOffset(0, itemSize * 2),
- 3 to AxisIntOffset(0, itemSize * 3 + (itemSize * fraction).roundToInt()),
+ 1 to AxisOffset(0f, itemSize - itemSize * fraction),
+ 2 to AxisOffset(0f, itemSize * 2),
+ 3 to AxisOffset(0f, itemSize * 3 + itemSize * fraction),
fraction = fraction
)
}
@@ -469,12 +471,12 @@
}
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(itemSize, 0),
- 2 to AxisIntOffset(0, itemSize),
- 3 to AxisIntOffset(itemSize, itemSize),
- 4 to AxisIntOffset(0, itemSize * 2),
- 5 to AxisIntOffset(itemSize, itemSize * 2)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(itemSize, 0f),
+ 2 to AxisOffset(0f, itemSize),
+ 3 to AxisOffset(itemSize, itemSize),
+ 4 to AxisOffset(0f, itemSize * 2),
+ 5 to AxisOffset(itemSize, itemSize * 2)
)
rule.runOnIdle {
@@ -483,20 +485,20 @@
onAnimationFrame { fraction ->
// item 1 moves to and item 8 moves from `gridSize`, right after the end edge
- val item1Offset = AxisIntOffset(itemSize, 0 + (gridSize * fraction).roundToInt())
+ val item1Offset = AxisOffset(itemSize, 0 + gridSize * fraction)
val item8Offset =
- AxisIntOffset(itemSize, gridSize - (gridSize * fraction).roundToInt())
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
- add(0 to AxisIntOffset(0, 0))
+ AxisOffset(itemSize, gridSize - gridSize * fraction)
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
+ add(0 to AxisOffset(0f, 0f))
if (item1Offset.mainAxis < itemSize * 3) {
add(1 to item1Offset)
} else {
rule.onNodeWithTag("1").assertIsNotDisplayed()
}
- add(2 to AxisIntOffset(0, itemSize))
- add(3 to AxisIntOffset(itemSize, itemSize))
- add(4 to AxisIntOffset(0, itemSize * 2))
- add(5 to AxisIntOffset(itemSize, itemSize * 2))
+ add(2 to AxisOffset(0f, itemSize))
+ add(3 to AxisOffset(itemSize, itemSize))
+ add(4 to AxisOffset(0f, itemSize * 2))
+ add(5 to AxisOffset(itemSize, itemSize * 2))
if (item8Offset.mainAxis < itemSize * 3) {
add(8 to item8Offset)
} else {
@@ -522,12 +524,12 @@
}
assertPositions(
- 6 to AxisIntOffset(0, 0),
- 7 to AxisIntOffset(itemSize, 0),
- 8 to AxisIntOffset(0, itemSize),
- 9 to AxisIntOffset(itemSize, itemSize),
- 10 to AxisIntOffset(0, itemSize * 2),
- 11 to AxisIntOffset(itemSize, itemSize * 2)
+ 6 to AxisOffset(0f, 0f),
+ 7 to AxisOffset(itemSize, 0f),
+ 8 to AxisOffset(0f, itemSize),
+ 9 to AxisOffset(itemSize, itemSize),
+ 10 to AxisOffset(0f, itemSize * 2),
+ 11 to AxisOffset(itemSize, itemSize * 2)
)
rule.runOnIdle {
@@ -536,27 +538,24 @@
onAnimationFrame { fraction ->
// item 1 moves from and item 8 moves to `0 - itemSize`, right before the start edge
- val item8Offset = AxisIntOffset(0, itemSize - (itemSize * 2 * fraction).roundToInt())
- val item1Offset = AxisIntOffset(
- 0,
- -itemSize + (itemSize * 2 * fraction).roundToInt()
- )
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
+ val item8Offset = AxisOffset(0f, itemSize - itemSize * 2 * fraction)
+ val item1Offset = AxisOffset(0f, -itemSize + itemSize * 2 * fraction)
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
if (item1Offset.mainAxis > -itemSize) {
add(1 to item1Offset)
} else {
rule.onNodeWithTag("1").assertIsNotDisplayed()
}
- add(6 to AxisIntOffset(0, 0))
- add(7 to AxisIntOffset(itemSize, 0))
+ add(6 to AxisOffset(0f, 0f))
+ add(7 to AxisOffset(itemSize, 0f))
if (item8Offset.mainAxis > -itemSize) {
add(8 to item8Offset)
} else {
rule.onNodeWithTag("8").assertIsNotDisplayed()
}
- add(9 to AxisIntOffset(itemSize, itemSize))
- add(10 to AxisIntOffset(0, itemSize * 2))
- add(11 to AxisIntOffset(itemSize, itemSize * 2))
+ add(9 to AxisOffset(itemSize, itemSize))
+ add(10 to AxisOffset(0f, itemSize * 2))
+ add(11 to AxisOffset(itemSize, itemSize * 2))
}
assertPositions(
expected = expected.toTypedArray(),
@@ -581,26 +580,26 @@
}
onAnimationFrame { fraction ->
- val increasingX = (fraction * itemSize).roundToInt()
- val decreasingX = (itemSize - itemSize * fraction).roundToInt()
+ val increasingX = fraction * itemSize
+ val decreasingX = itemSize - itemSize * fraction
assertPositions(
- 0 to AxisIntOffset(increasingX, (itemSizePlusSpacing * 3 * fraction).roundToInt()),
- 1 to AxisIntOffset(decreasingX, 0),
- 2 to AxisIntOffset(
+ 0 to AxisOffset(increasingX, itemSizePlusSpacing * 3 * fraction),
+ 1 to AxisOffset(decreasingX, 0f),
+ 2 to AxisOffset(
increasingX,
- itemSizePlusSpacing - (itemSizePlusSpacing * fraction).roundToInt()
+ itemSizePlusSpacing - itemSizePlusSpacing * fraction
),
- 3 to AxisIntOffset(decreasingX, itemSizePlusSpacing),
- 4 to AxisIntOffset(
+ 3 to AxisOffset(decreasingX, itemSizePlusSpacing),
+ 4 to AxisOffset(
increasingX,
- itemSizePlusSpacing * 2 - (itemSizePlusSpacing * fraction).roundToInt()
+ itemSizePlusSpacing * 2 - itemSizePlusSpacing * fraction
),
- 5 to AxisIntOffset(decreasingX, itemSizePlusSpacing * 2),
- 6 to AxisIntOffset(
+ 5 to AxisOffset(decreasingX, itemSizePlusSpacing * 2),
+ 6 to AxisOffset(
increasingX,
- itemSizePlusSpacing * 3 - (itemSizePlusSpacing * fraction).roundToInt()
+ itemSizePlusSpacing * 3 - itemSizePlusSpacing * fraction
),
- 7 to AxisIntOffset(decreasingX, itemSizePlusSpacing * 3),
+ 7 to AxisOffset(decreasingX, itemSizePlusSpacing * 3),
fraction = fraction
)
}
@@ -624,12 +623,12 @@
}
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(itemSize, 0),
- 2 to AxisIntOffset(0, itemSizePlusSpacing),
- 3 to AxisIntOffset(itemSize, itemSizePlusSpacing),
- 4 to AxisIntOffset(0, itemSizePlusSpacing * 2),
- 5 to AxisIntOffset(itemSize, itemSizePlusSpacing * 2)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(itemSize, 0f),
+ 2 to AxisOffset(0f, itemSizePlusSpacing),
+ 3 to AxisOffset(itemSize, itemSizePlusSpacing),
+ 4 to AxisOffset(0f, itemSizePlusSpacing * 2),
+ 5 to AxisOffset(itemSize, itemSizePlusSpacing * 2)
)
rule.runOnIdle {
@@ -638,24 +637,18 @@
onAnimationFrame { fraction ->
// item 1 moves to and item 8 moves from `gridSize`, right after the end edge
- val item1Offset = AxisIntOffset(
- itemSize,
- (gridSize * fraction).roundToInt()
- )
- val item8Offset = AxisIntOffset(
- itemSize,
- gridSize - (gridSize * fraction).roundToInt()
- )
+ val item1Offset = AxisOffset(itemSize, gridSize * fraction)
+ val item8Offset = AxisOffset(itemSize, gridSize - gridSize * fraction)
val screenSize = itemSize * 3 + spacing * 2
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
- add(0 to AxisIntOffset(0, 0))
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
+ add(0 to AxisOffset(0f, 0f))
if (item1Offset.mainAxis < screenSize) {
add(1 to item1Offset)
}
- add(2 to AxisIntOffset(0, itemSizePlusSpacing))
- add(3 to AxisIntOffset(itemSize, itemSizePlusSpacing))
- add(4 to AxisIntOffset(0, itemSizePlusSpacing * 2))
- add(5 to AxisIntOffset(itemSize, itemSizePlusSpacing * 2))
+ add(2 to AxisOffset(0f, itemSizePlusSpacing))
+ add(3 to AxisOffset(itemSize, itemSizePlusSpacing))
+ add(4 to AxisOffset(0f, itemSizePlusSpacing * 2))
+ add(5 to AxisOffset(itemSize, itemSizePlusSpacing * 2))
if (item8Offset.mainAxis < screenSize) {
add(8 to item8Offset)
}
@@ -684,12 +677,12 @@
}
assertPositions(
- 4 to AxisIntOffset(0, 0),
- 5 to AxisIntOffset(itemSize, 0),
- 6 to AxisIntOffset(0, itemSizePlusSpacing),
- 7 to AxisIntOffset(itemSize, itemSizePlusSpacing),
- 8 to AxisIntOffset(0, itemSizePlusSpacing * 2),
- 9 to AxisIntOffset(itemSize, itemSizePlusSpacing * 2)
+ 4 to AxisOffset(0f, 0f),
+ 5 to AxisOffset(itemSize, 0f),
+ 6 to AxisOffset(0f, itemSizePlusSpacing),
+ 7 to AxisOffset(itemSize, itemSizePlusSpacing),
+ 8 to AxisOffset(0f, itemSizePlusSpacing * 2),
+ 9 to AxisOffset(itemSize, itemSizePlusSpacing * 2)
)
rule.runOnIdle {
@@ -698,27 +691,27 @@
onAnimationFrame { fraction ->
// item 8 moves to and item 1 moves from `-itemSize`, right before the start edge
- val item1Offset = AxisIntOffset(
- 0,
- -itemSize + ((itemSize + itemSizePlusSpacing * 2) * fraction).roundToInt()
+ val item1Offset = AxisOffset(
+ 0f,
+ -itemSize + (itemSize + itemSizePlusSpacing * 2) * fraction
)
- val item8Offset = AxisIntOffset(
- 0,
+ val item8Offset = AxisOffset(
+ 0f,
itemSizePlusSpacing * 2 -
- ((itemSize + itemSizePlusSpacing * 2) * fraction).roundToInt()
+ (itemSize + itemSizePlusSpacing * 2) * fraction
)
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
if (item1Offset.mainAxis > -itemSize) {
add(1 to item1Offset)
}
- add(4 to AxisIntOffset(0, 0))
- add(5 to AxisIntOffset(itemSize, 0))
- add(6 to AxisIntOffset(0, itemSizePlusSpacing))
- add(7 to AxisIntOffset(itemSize, itemSizePlusSpacing))
+ add(4 to AxisOffset(0f, 0f))
+ add(5 to AxisOffset(itemSize, 0f))
+ add(6 to AxisOffset(0f, itemSizePlusSpacing))
+ add(7 to AxisOffset(itemSize, itemSizePlusSpacing))
if (item8Offset.mainAxis > -itemSize) {
add(8 to item8Offset)
}
- add(9 to AxisIntOffset(itemSize, itemSizePlusSpacing * 2))
+ add(9 to AxisOffset(itemSize, itemSizePlusSpacing * 2))
}
assertPositions(
expected = expected.toTypedArray(),
@@ -750,12 +743,12 @@
val line3Size = itemSize2
val line4Size = itemSize
assertPositions(
- 6 to AxisIntOffset(0, 0),
- 7 to AxisIntOffset(itemSize, 0),
- 8 to AxisIntOffset(0, line3Size),
- 9 to AxisIntOffset(itemSize, line3Size),
- 10 to AxisIntOffset(0, line3Size + line4Size),
- 11 to AxisIntOffset(itemSize, line3Size + line4Size)
+ 6 to AxisOffset(0f, 0f),
+ 7 to AxisOffset(itemSize, 0f),
+ 8 to AxisOffset(0f, line3Size),
+ 9 to AxisOffset(itemSize, line3Size),
+ 10 to AxisOffset(0f, line3Size + line4Size),
+ 11 to AxisOffset(itemSize, line3Size + line4Size)
)
rule.runOnIdle {
@@ -771,31 +764,31 @@
// item 2 moves from and item 4 moves to `0 - item size`, right before the start edge
val startItem2Offset = -item2Size
val item2Offset =
- startItem2Offset + ((itemSize2 - startItem2Offset) * fraction).roundToInt()
+ startItem2Offset + (itemSize2 - startItem2Offset) * fraction
val item8Size = itemSize /* the real size of the item 8 */
val endItem8Offset = -item8Size
- val item8Offset = line3Size - ((line3Size - endItem8Offset) * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
+ val item8Offset = line3Size - (line3Size - endItem8Offset) * fraction
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
if (item8Offset > -line4Size) {
- add(8 to AxisIntOffset(0, item8Offset))
+ add(8 to AxisOffset(0f, item8Offset))
} else {
rule.onNodeWithTag("8").assertIsNotDisplayed()
}
- add(6 to AxisIntOffset(0, 0))
- add(7 to AxisIntOffset(itemSize, 0))
+ add(6 to AxisOffset(0f, 0f))
+ add(7 to AxisOffset(itemSize, 0f))
if (item2Offset > -item2Size) {
- add(2 to AxisIntOffset(0, item2Offset))
+ add(2 to AxisOffset(0f, item2Offset))
} else {
rule.onNodeWithTag("2").assertIsNotDisplayed()
}
- add(9 to AxisIntOffset(itemSize, line3Size))
- add(10 to AxisIntOffset(
- 0,
- line3Size + line4Size - ((itemSize - itemSize3) * fraction).roundToInt()
+ add(9 to AxisOffset(itemSize, line3Size))
+ add(10 to AxisOffset(
+ 0f,
+ line3Size + line4Size - (itemSize - itemSize3) * fraction
))
- add(11 to AxisIntOffset(
+ add(11 to AxisOffset(
itemSize,
- line3Size + line4Size - ((itemSize - itemSize3) * fraction).roundToInt()
+ line3Size + line4Size - (itemSize - itemSize3) * fraction
))
}
assertPositions(
@@ -828,12 +821,12 @@
val line0Size = itemSize2
val line1Size = itemSize
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(itemSize, 0),
- 2 to AxisIntOffset(0, line0Size),
- 3 to AxisIntOffset(itemSize, line0Size),
- 4 to AxisIntOffset(0, line0Size + line1Size),
- 5 to AxisIntOffset(itemSize, line0Size + line1Size),
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(itemSize, 0f),
+ 2 to AxisOffset(0f, line0Size),
+ 3 to AxisOffset(itemSize, line0Size),
+ 4 to AxisOffset(0f, line0Size + line1Size),
+ 5 to AxisOffset(itemSize, line0Size + line1Size),
)
rule.runOnIdle {
@@ -846,28 +839,28 @@
val endItem2Offset = gridSize
val line4Size = itemSize3
val item2Offset =
- line0Size + ((endItem2Offset - line0Size) * fraction).roundToInt()
+ line0Size + (endItem2Offset - line0Size) * fraction
val item8Offset =
- startItem8Offset - ((startItem8Offset - line0Size) * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
- add(0 to AxisIntOffset(0, 0))
- add(1 to AxisIntOffset(itemSize, 0))
+ startItem8Offset - (startItem8Offset - line0Size) * fraction
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
+ add(0 to AxisOffset(0f, 0f))
+ add(1 to AxisOffset(itemSize, 0f))
if (item8Offset < gridSize) {
- add(8 to AxisIntOffset(0, item8Offset))
+ add(8 to AxisOffset(0f, item8Offset))
} else {
rule.onNodeWithTag("8").assertIsNotDisplayed()
}
- add(3 to AxisIntOffset(itemSize, line0Size))
- add(4 to AxisIntOffset(
- 0,
- line0Size + line1Size - ((line1Size - line4Size) * fraction).roundToInt()
+ add(3 to AxisOffset(itemSize, line0Size))
+ add(4 to AxisOffset(
+ 0f,
+ line0Size + line1Size - (line1Size - line4Size) * fraction
))
- add(5 to AxisIntOffset(
+ add(5 to AxisOffset(
itemSize,
- line0Size + line1Size - ((line1Size - line4Size) * fraction).roundToInt()
+ line0Size + line1Size - (line1Size - line4Size) * fraction
))
if (item2Offset < gridSize) {
- add(2 to AxisIntOffset(0, item2Offset))
+ add(2 to AxisOffset(0f, item2Offset))
} else {
rule.onNodeWithTag("2").assertIsNotDisplayed()
}
@@ -922,8 +915,8 @@
// 3 to itemSize * 2,
// crossAxis = listOf(
// 1 to 0,
- // 2 to item2Start + ((item2End - item2Start) * fraction).roundToInt(),
- // 3 to item3Start + ((item3End - item3Start) * fraction).roundToInt(),
+ // 2 to item2Start + ((item2End - item2Start) * fraction,
+ // 3 to item3Start + ((item3End - item3Start) * fraction,
// ),
// fraction = fraction
// )
@@ -960,9 +953,9 @@
// 2 to itemSize,
// 3 to itemSize * 2,
// crossAxis = listOf(
- // 1 to ((containerSize - itemSize) * fraction).roundToInt(),
- // 2 to ((containerSize - itemSize2) * fraction).roundToInt(),
- // 3 to ((containerSize - itemSize3) * fraction).roundToInt()
+ // 1 to ((containerSize - itemSize) * fraction,
+ // 2 to ((containerSize - itemSize2) * fraction,
+ // 3 to ((containerSize - itemSize3) * fraction
// ),
// fraction = fraction
// )
@@ -1013,8 +1006,8 @@
// 3 to itemSize * 2,
// crossAxis = listOf(
// 1 to 0,
- // 2 to ((itemSize / 2 - itemSize2 / 2) * fraction).roundToInt(),
- // 3 to ((itemSize / 2 - itemSize3 / 2) * fraction).roundToInt(),
+ // 2 to ((itemSize / 2 - itemSize2 / 2) * fraction,
+ // 3 to ((itemSize / 2 - itemSize3 / 2) * fraction,
// ),
// fraction = fraction
// )
@@ -1024,8 +1017,8 @@
@Test
fun moveItemToEndCausingNextItemsToAnimate_withContentPadding() {
var list by mutableStateOf(listOf(0, 1, 2, 3, 4))
- val rawStartPadding = 8
- val rawEndPadding = 12
+ val rawStartPadding = 8f
+ val rawEndPadding = 12f
val (startPaddingDp, endPaddingDp) = with(rule.density) {
rawStartPadding.toDp() to rawEndPadding.toDp()
}
@@ -1039,11 +1032,11 @@
val startPadding = if (reverseLayout) rawEndPadding else rawStartPadding
assertPositions(
- 0 to AxisIntOffset(0, startPadding),
- 1 to AxisIntOffset(0, startPadding + itemSize),
- 2 to AxisIntOffset(0, startPadding + itemSize * 2),
- 3 to AxisIntOffset(0, startPadding + itemSize * 3),
- 4 to AxisIntOffset(0, startPadding + itemSize * 4),
+ 0 to AxisOffset(0f, startPadding),
+ 1 to AxisOffset(0f, startPadding + itemSize),
+ 2 to AxisOffset(0f, startPadding + itemSize * 2),
+ 3 to AxisOffset(0f, startPadding + itemSize * 3),
+ 4 to AxisOffset(0f, startPadding + itemSize * 4),
)
rule.runOnIdle {
@@ -1052,22 +1045,22 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, startPadding),
- 1 to AxisIntOffset(
- 0,
- startPadding + itemSize + (itemSize * 3 * fraction).roundToInt()
+ 0 to AxisOffset(0f, startPadding),
+ 1 to AxisOffset(
+ 0f,
+ startPadding + itemSize + itemSize * 3 * fraction
),
- 2 to AxisIntOffset(
- 0,
- startPadding + itemSize * 2 - (itemSize * fraction).roundToInt()
+ 2 to AxisOffset(
+ 0f,
+ startPadding + itemSize * 2 - itemSize * fraction
),
- 3 to AxisIntOffset(
- 0,
- startPadding + itemSize * 3 - (itemSize * fraction).roundToInt()
+ 3 to AxisOffset(
+ 0f,
+ startPadding + itemSize * 3 - itemSize * fraction
),
- 4 to AxisIntOffset(
- 0,
- startPadding + itemSize * 4 - (itemSize * fraction).roundToInt()
+ 4 to AxisOffset(
+ 0f,
+ startPadding + itemSize * 4 - itemSize * fraction
),
fraction = fraction
)
@@ -1122,16 +1115,16 @@
rule.runOnIdle {
runBlocking {
- state.scrollToItem(0, itemSize / 2)
+ state.scrollToItem(0, (itemSize / 2).roundToInt())
}
}
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, -itemSize / 2),
- 1 to AxisIntOffset(0, itemSize / 2),
- 2 to AxisIntOffset(0, itemSize * 3 / 2),
- 3 to AxisIntOffset(0, itemSize * 5 / 2),
+ 0 to AxisOffset(0f, -itemSize / 2),
+ 1 to AxisOffset(0f, itemSize / 2),
+ 2 to AxisOffset(0f, itemSize * 3 / 2),
+ 3 to AxisOffset(0f, itemSize * 5 / 2),
fraction = fraction
)
}
@@ -1155,10 +1148,10 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, -itemSize / 2),
- 1 to AxisIntOffset(0, itemSize / 2),
- 2 to AxisIntOffset(0, itemSize * 3 / 2),
- 3 to AxisIntOffset(0, itemSize * 5 / 2),
+ 0 to AxisOffset(0f, -itemSize / 2),
+ 1 to AxisOffset(0f, itemSize / 2),
+ 2 to AxisOffset(0f, itemSize * 3 / 2),
+ 3 to AxisOffset(0f, itemSize * 5 / 2),
fraction = fraction
)
}
@@ -1182,10 +1175,10 @@
onAnimationFrame { fraction ->
assertPositions(
- 1 to AxisIntOffset(0, -itemSize / 2),
- 2 to AxisIntOffset(0, itemSize / 2),
- 3 to AxisIntOffset(0, itemSize * 3 / 2),
- 4 to AxisIntOffset(0, itemSize * 5 / 2),
+ 1 to AxisOffset(0f, -itemSize / 2),
+ 2 to AxisOffset(0f, itemSize / 2),
+ 3 to AxisOffset(0f, itemSize * 3 / 2),
+ 4 to AxisOffset(0f, itemSize * 5 / 2),
fraction = fraction
)
}
@@ -1209,10 +1202,10 @@
onAnimationFrame { fraction ->
assertPositions(
- 2 to AxisIntOffset(0, -itemSize / 2),
- 3 to AxisIntOffset(0, itemSize / 2),
- 4 to AxisIntOffset(0, itemSize * 3 / 2),
- 5 to AxisIntOffset(0, itemSize * 5 / 2),
+ 2 to AxisOffset(0f, -itemSize / 2),
+ 3 to AxisOffset(0f, itemSize / 2),
+ 4 to AxisOffset(0f, itemSize * 3 / 2),
+ 5 to AxisOffset(0f, itemSize * 5 / 2),
fraction = fraction
)
}
@@ -1236,10 +1229,10 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, -itemSize / 2),
- 1 to AxisIntOffset(0, itemSize / 2),
- 2 to AxisIntOffset(0, itemSize * 3 / 2),
- 3 to AxisIntOffset(0, itemSize * 5 / 2),
+ 0 to AxisOffset(0f, -itemSize / 2),
+ 1 to AxisOffset(0f, itemSize / 2),
+ 2 to AxisOffset(0f, itemSize * 3 / 2),
+ 3 to AxisOffset(0f, itemSize * 5 / 2),
fraction = fraction
)
}
@@ -1263,10 +1256,10 @@
onAnimationFrame { fraction ->
assertPositions(
- 2 to AxisIntOffset(0, -itemSize / 2),
- 3 to AxisIntOffset(0, itemSize / 2),
- 4 to AxisIntOffset(0, itemSize2 + itemSize / 2),
- 5 to AxisIntOffset(0, itemSize2 + itemSize * 3 / 2),
+ 2 to AxisOffset(0f, -itemSize / 2),
+ 3 to AxisOffset(0f, itemSize / 2),
+ 4 to AxisOffset(0f, itemSize2 + itemSize / 2),
+ 5 to AxisOffset(0f, itemSize2 + itemSize * 3 / 2),
fraction = fraction
)
}
@@ -1290,10 +1283,10 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, -itemSize / 2),
- 1 to AxisIntOffset(0, itemSize / 2),
- 2 to AxisIntOffset(0, itemSize2 + itemSize / 2),
- 3 to AxisIntOffset(0, itemSize2 + itemSize * 3 / 2),
+ 0 to AxisOffset(0f, -itemSize / 2),
+ 1 to AxisOffset(0f, itemSize / 2),
+ 2 to AxisOffset(0f, itemSize2 + itemSize / 2),
+ 3 to AxisOffset(0f, itemSize2 + itemSize * 3 / 2),
fraction = fraction
)
}
@@ -1310,12 +1303,12 @@
}
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(itemSize, 0),
- 2 to AxisIntOffset(itemSize * 2, 0),
- 3 to AxisIntOffset(0, itemSize),
- 4 to AxisIntOffset(itemSize, itemSize),
- 5 to AxisIntOffset(itemSize * 2, itemSize)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(itemSize, 0f),
+ 2 to AxisOffset(itemSize * 2, 0f),
+ 3 to AxisOffset(0f, itemSize),
+ 4 to AxisOffset(itemSize, itemSize),
+ 5 to AxisOffset(itemSize * 2, itemSize)
)
rule.runOnIdle {
@@ -1326,15 +1319,15 @@
onAnimationFrame { fraction ->
assertPositions(
- 6 to AxisIntOffset(0, -itemSize / 2),
- 7 to AxisIntOffset(itemSize, -itemSize / 2),
- 8 to AxisIntOffset(itemSize * 2, -itemSize / 2),
- 9 to AxisIntOffset(0, itemSize / 2),
- 10 to AxisIntOffset(itemSize, itemSize / 2),
- 11 to AxisIntOffset(itemSize * 2, itemSize / 2),
- 12 to AxisIntOffset(0, itemSize * 3 / 2),
- 13 to AxisIntOffset(itemSize, itemSize * 3 / 2),
- 14 to AxisIntOffset(itemSize * 2, itemSize * 3 / 2),
+ 6 to AxisOffset(0f, -itemSize / 2),
+ 7 to AxisOffset(itemSize, -itemSize / 2),
+ 8 to AxisOffset(itemSize * 2, -itemSize / 2),
+ 9 to AxisOffset(0f, itemSize / 2),
+ 10 to AxisOffset(itemSize, itemSize / 2),
+ 11 to AxisOffset(itemSize * 2, itemSize / 2),
+ 12 to AxisOffset(0f, itemSize * 3 / 2),
+ 13 to AxisOffset(itemSize, itemSize * 3 / 2),
+ 14 to AxisOffset(itemSize * 2, itemSize * 3 / 2),
fraction = fraction
)
}
@@ -1351,12 +1344,12 @@
}
assertPositions(
- 9 to AxisIntOffset(0, 0),
- 10 to AxisIntOffset(itemSize, 0),
- 11 to AxisIntOffset(itemSize * 2, 0),
- 12 to AxisIntOffset(0, itemSize),
- 13 to AxisIntOffset(itemSize, itemSize),
- 14 to AxisIntOffset(itemSize * 2, itemSize)
+ 9 to AxisOffset(0f, 0f),
+ 10 to AxisOffset(itemSize, 0f),
+ 11 to AxisOffset(itemSize * 2, 0f),
+ 12 to AxisOffset(0f, itemSize),
+ 13 to AxisOffset(itemSize, itemSize),
+ 14 to AxisOffset(itemSize * 2, itemSize)
)
rule.runOnIdle {
@@ -1367,15 +1360,15 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, -itemSize / 2),
- 1 to AxisIntOffset(itemSize, -itemSize / 2),
- 2 to AxisIntOffset(itemSize * 2, -itemSize / 2),
- 3 to AxisIntOffset(0, itemSize / 2),
- 4 to AxisIntOffset(itemSize, itemSize / 2),
- 5 to AxisIntOffset(itemSize * 2, itemSize / 2),
- 6 to AxisIntOffset(0, itemSize * 3 / 2),
- 7 to AxisIntOffset(itemSize, itemSize * 3 / 2),
- 8 to AxisIntOffset(itemSize * 2, itemSize * 3 / 2),
+ 0 to AxisOffset(0f, -itemSize / 2),
+ 1 to AxisOffset(itemSize, -itemSize / 2),
+ 2 to AxisOffset(itemSize * 2, -itemSize / 2),
+ 3 to AxisOffset(0f, itemSize / 2),
+ 4 to AxisOffset(itemSize, itemSize / 2),
+ 5 to AxisOffset(itemSize * 2, itemSize / 2),
+ 6 to AxisOffset(0f, itemSize * 3 / 2),
+ 7 to AxisOffset(itemSize, itemSize * 3 / 2),
+ 8 to AxisOffset(itemSize * 2, itemSize * 3 / 2),
fraction = fraction
)
}
@@ -1396,12 +1389,12 @@
}
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(itemSize, 0),
- 2 to AxisIntOffset(itemSize * 2, 0),
- 3 to AxisIntOffset(0, itemSize),
- 4 to AxisIntOffset(itemSize, itemSize),
- 5 to AxisIntOffset(itemSize * 2, itemSize)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(itemSize, 0f),
+ 2 to AxisOffset(itemSize * 2, 0f),
+ 3 to AxisOffset(0f, itemSize),
+ 4 to AxisOffset(itemSize, itemSize),
+ 5 to AxisOffset(itemSize * 2, itemSize)
)
rule.runOnIdle {
@@ -1412,12 +1405,12 @@
onAnimationFrame { fraction ->
assertPositions(
- 6 to AxisIntOffset(0, -itemSize / 2),
- 7 to AxisIntOffset(itemSize, -itemSize / 2),
- 8 to AxisIntOffset(itemSize * 2, -itemSize / 2),
- 9 to AxisIntOffset(0, itemSize / 2), // 3 spans
- 10 to AxisIntOffset(0, itemSize * 3 / 2), // 2 spans
- 11 to AxisIntOffset(itemSize * 2, itemSize * 3 / 2),
+ 6 to AxisOffset(0f, -itemSize / 2),
+ 7 to AxisOffset(itemSize, -itemSize / 2),
+ 8 to AxisOffset(itemSize * 2, -itemSize / 2),
+ 9 to AxisOffset(0f, itemSize / 2), // 3 spans
+ 10 to AxisOffset(0f, itemSize * 3 / 2), // 2 spans
+ 11 to AxisOffset(itemSize * 2, itemSize * 3 / 2),
fraction = fraction
)
}
@@ -1438,12 +1431,12 @@
}
assertPositions(
- 6 to AxisIntOffset(0, 0),
- 7 to AxisIntOffset(itemSize, 0),
- 8 to AxisIntOffset(itemSize * 2, 0),
- 9 to AxisIntOffset(0, itemSize),
- 10 to AxisIntOffset(itemSize, itemSize),
- 11 to AxisIntOffset(itemSize * 2, itemSize)
+ 6 to AxisOffset(0f, 0f),
+ 7 to AxisOffset(itemSize, 0f),
+ 8 to AxisOffset(itemSize * 2, 0f),
+ 9 to AxisOffset(0f, itemSize),
+ 10 to AxisOffset(itemSize, itemSize),
+ 11 to AxisOffset(itemSize * 2, itemSize)
)
rule.runOnIdle {
@@ -1454,12 +1447,12 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, -itemSize / 2),
- 1 to AxisIntOffset(itemSize, -itemSize / 2),
- 2 to AxisIntOffset(itemSize * 2, -itemSize / 2),
- 3 to AxisIntOffset(0, itemSize / 2), // 3 spans
- 4 to AxisIntOffset(0, itemSize * 3 / 2), // 2 spans
- 5 to AxisIntOffset(itemSize * 2, itemSize * 3 / 2),
+ 0 to AxisOffset(0f, -itemSize / 2),
+ 1 to AxisOffset(itemSize, -itemSize / 2),
+ 2 to AxisOffset(itemSize * 2, -itemSize / 2),
+ 3 to AxisOffset(0f, itemSize / 2), // 3 spans
+ 4 to AxisOffset(0f, itemSize * 3 / 2), // 2 spans
+ 5 to AxisOffset(itemSize * 2, itemSize * 3 / 2),
fraction = fraction
)
}
@@ -1486,12 +1479,12 @@
}
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(itemSize, 0),
- 2 to AxisIntOffset(itemSize * 2, 0),
- 3 to AxisIntOffset(0, itemSize),
- 4 to AxisIntOffset(itemSize, itemSize),
- 5 to AxisIntOffset(itemSize * 2, itemSize)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(itemSize, 0f),
+ 2 to AxisOffset(itemSize * 2, 0f),
+ 3 to AxisOffset(0f, itemSize),
+ 4 to AxisOffset(itemSize, itemSize),
+ 5 to AxisOffset(itemSize * 2, itemSize)
)
rule.runOnIdle {
@@ -1503,12 +1496,12 @@
onAnimationFrame { fraction ->
val startOffset = -itemSize / 2
assertPositions(
- 6 to AxisIntOffset(0, startOffset),
- 7 to AxisIntOffset(itemSize, startOffset),
- 8 to AxisIntOffset(itemSize * 2, startOffset),
- 9 to AxisIntOffset(0, startOffset + itemSize2), // 3 spans
- 10 to AxisIntOffset(0, startOffset + itemSize2 + itemSize3), // 2 spans
- 11 to AxisIntOffset(itemSize * 2, startOffset + itemSize2 + itemSize3),
+ 6 to AxisOffset(0f, startOffset),
+ 7 to AxisOffset(itemSize, startOffset),
+ 8 to AxisOffset(itemSize * 2, startOffset),
+ 9 to AxisOffset(0f, startOffset + itemSize2), // 3 spans
+ 10 to AxisOffset(0f, startOffset + itemSize2 + itemSize3), // 2 spans
+ 11 to AxisOffset(itemSize * 2, startOffset + itemSize2 + itemSize3),
fraction = fraction
)
}
@@ -1535,12 +1528,12 @@
}
assertPositions(
- 6 to AxisIntOffset(0, 0),
- 7 to AxisIntOffset(itemSize, 0),
- 8 to AxisIntOffset(itemSize * 2, 0),
- 9 to AxisIntOffset(0, itemSize),
- 10 to AxisIntOffset(itemSize, itemSize),
- 11 to AxisIntOffset(itemSize * 2, itemSize)
+ 6 to AxisOffset(0f, 0f),
+ 7 to AxisOffset(itemSize, 0f),
+ 8 to AxisOffset(itemSize * 2, 0f),
+ 9 to AxisOffset(0f, itemSize),
+ 10 to AxisOffset(itemSize, itemSize),
+ 11 to AxisOffset(itemSize * 2, itemSize)
)
rule.runOnIdle {
@@ -1552,12 +1545,12 @@
onAnimationFrame { fraction ->
val startOffset = -itemSize2 / 2
assertPositions(
- 0 to AxisIntOffset(0, startOffset),
- 1 to AxisIntOffset(itemSize, startOffset),
- 2 to AxisIntOffset(itemSize * 2, startOffset),
- 3 to AxisIntOffset(0, startOffset + itemSize2), // 3 spans
- 4 to AxisIntOffset(0, startOffset + itemSize2 + itemSize3), // 2 spans
- 5 to AxisIntOffset(itemSize * 2, startOffset + itemSize2 + itemSize3),
+ 0 to AxisOffset(0f, startOffset),
+ 1 to AxisOffset(itemSize, startOffset),
+ 2 to AxisOffset(itemSize * 2, startOffset),
+ 3 to AxisOffset(0f, startOffset + itemSize2), // 3 spans
+ 4 to AxisOffset(0f, startOffset + itemSize2 + itemSize3), // 2 spans
+ 5 to AxisOffset(itemSize * 2, startOffset + itemSize2 + itemSize3),
fraction = fraction
)
}
@@ -1577,10 +1570,10 @@
}
assertLayoutInfoPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(itemSize, 0),
- 2 to AxisIntOffset(0, itemSize),
- 3 to AxisIntOffset(itemSize, itemSize)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(itemSize, 0f),
+ 2 to AxisOffset(0f, itemSize),
+ 3 to AxisOffset(itemSize, itemSize)
)
rule.runOnIdle {
@@ -1588,18 +1581,18 @@
}
onAnimationFrame { fraction ->
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
- add(0 to AxisIntOffset(0, 0))
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
+ add(0 to AxisOffset(0f, 0f))
add(
- 2 to AxisIntOffset(
- (itemSize * fraction).roundToInt(),
- (itemSize * (1f - fraction)).roundToInt()
+ 2 to AxisOffset(
+ itemSize * fraction,
+ itemSize * (1f - fraction)
)
)
- val item4and6MainAxis = gridSize - ((gridSize - itemSize) * fraction).roundToInt()
+ val item4and6MainAxis = gridSize - (gridSize - itemSize) * fraction
if (item4and6MainAxis < gridSize) {
- add(4 to AxisIntOffset(0, item4and6MainAxis))
- add(6 to AxisIntOffset(itemSize, item4and6MainAxis))
+ add(4 to AxisOffset(0f, item4and6MainAxis))
+ add(6 to AxisOffset(itemSize, item4and6MainAxis))
} else {
rule.onNodeWithTag("4").assertIsNotDisplayed()
rule.onNodeWithTag("6").assertIsNotDisplayed()
@@ -1629,10 +1622,10 @@
}
assertLayoutInfoPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(itemSize, 0),
- 2 to AxisIntOffset(0, itemSize),
- 3 to AxisIntOffset(itemSize, itemSize)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(itemSize, 0f),
+ 2 to AxisOffset(0f, itemSize),
+ 3 to AxisOffset(itemSize, itemSize)
)
rule.runOnIdle {
@@ -1640,20 +1633,20 @@
}
onAnimationFrame { fraction ->
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
- add(0 to AxisIntOffset(0, 0))
- val item4MainAxis = gridSize - (gridSize * fraction).roundToInt()
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
+ add(0 to AxisOffset(0f, 0f))
+ val item4MainAxis = gridSize - gridSize * fraction
if (item4MainAxis < gridSize) {
add(
- 4 to AxisIntOffset(itemSize, item4MainAxis)
+ 4 to AxisOffset(itemSize, item4MainAxis)
)
} else {
rule.onNodeWithTag("4").assertIsNotDisplayed()
}
- val item6MainAxis = gridSize + itemSize - (gridSize * fraction).roundToInt()
+ val item6MainAxis = gridSize + itemSize - gridSize * fraction
if (item6MainAxis < gridSize) {
add(
- 6 to AxisIntOffset(0, item6MainAxis)
+ 6 to AxisOffset(0f, item6MainAxis)
)
} else {
rule.onNodeWithTag("6").assertIsNotDisplayed()
@@ -1686,11 +1679,11 @@
onAnimationFrame { fraction ->
// item 1 moves to `gridSize`
- val item1Offset = itemSize + ((gridSize - itemSize) * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
- add(0 to AxisIntOffset(0, 0))
+ val item1Offset = itemSize + (gridSize - itemSize) * fraction
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
+ add(0 to AxisOffset(0f, 0f))
if (item1Offset < gridSize) {
- add(1 to AxisIntOffset(0, item1Offset))
+ add(1 to AxisOffset(0f, item1Offset))
} else {
rule.onNodeWithTag("1").assertIsNotDisplayed()
}
@@ -1714,9 +1707,9 @@
}
assertPositions(
- 3 to AxisIntOffset(0, 0),
- 4 to AxisIntOffset(0, itemSize),
- 5 to AxisIntOffset(0, itemSize * 2)
+ 3 to AxisOffset(0f, 0f),
+ 4 to AxisOffset(0f, itemSize),
+ 5 to AxisOffset(0f, itemSize * 2)
)
rule.runOnIdle {
@@ -1725,30 +1718,30 @@
onAnimationFrame { fraction ->
// item 2 moves from and item 5 moves to `-itemSize`, right before the start edge
- val item2Offset = -itemSize + (itemSize * 3 * fraction).roundToInt()
- val item5Offset = itemSize * 2 - (itemSize * 3 * fraction).roundToInt()
+ val item2Offset = -itemSize + itemSize * 3 * fraction
+ val item5Offset = itemSize * 2 - itemSize * 3 * fraction
// item 1 moves from and item 4 moves to `-itemSize * 2`, right before item 2
- val item1Offset = -itemSize * 2 + (itemSize * 3 * fraction).roundToInt()
- val item4Offset = itemSize - (itemSize * 3 * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
+ val item1Offset = -itemSize * 2 + itemSize * 3 * fraction
+ val item4Offset = itemSize - itemSize * 3 * fraction
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
if (item1Offset > -itemSize) {
- add(1 to AxisIntOffset(0, item1Offset))
+ add(1 to AxisOffset(0f, item1Offset))
} else {
rule.onNodeWithTag("1").assertIsNotDisplayed()
}
if (item2Offset > -itemSize) {
- add(2 to AxisIntOffset(0, item2Offset))
+ add(2 to AxisOffset(0f, item2Offset))
} else {
rule.onNodeWithTag("2").assertIsNotDisplayed()
}
- add(3 to AxisIntOffset(0, 0))
+ add(3 to AxisOffset(0f, 0f))
if (item4Offset > -itemSize) {
- add(4 to AxisIntOffset(0, item4Offset))
+ add(4 to AxisOffset(0f, item4Offset))
} else {
rule.onNodeWithTag("4").assertIsNotDisplayed()
}
if (item5Offset > -itemSize) {
- add(5 to AxisIntOffset(0, item5Offset))
+ add(5 to AxisOffset(0f, item5Offset))
} else {
rule.onNodeWithTag("5").assertIsNotDisplayed()
}
@@ -1772,9 +1765,9 @@
}
assertPositions(
- 3 to AxisIntOffset(0, 0),
- 4 to AxisIntOffset(0, itemSize),
- 5 to AxisIntOffset(0, itemSize * 2)
+ 3 to AxisOffset(0f, 0f),
+ 4 to AxisOffset(0f, itemSize),
+ 5 to AxisOffset(0f, itemSize * 2)
)
rule.runOnIdle {
@@ -1783,30 +1776,30 @@
onAnimationFrame { fraction ->
// item 2 moves from and item 4 moves to `-itemSize`, right before the start edge
- val item2Offset = -itemSize + (itemSize * 2 * fraction).roundToInt()
- val item4Offset = itemSize - (itemSize * 2 * fraction).roundToInt()
+ val item2Offset = -itemSize + itemSize * 2 * fraction
+ val item4Offset = itemSize - itemSize * 2 * fraction
// item 1 moves from and item 5 moves to `-itemSize * 2`, right before item 2
- val item1Offset = -itemSize * 2 + (itemSize * 4 * fraction).roundToInt()
- val item5Offset = itemSize * 2 - (itemSize * 4 * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
+ val item1Offset = -itemSize * 2 + itemSize * 4 * fraction
+ val item5Offset = itemSize * 2 - itemSize * 4 * fraction
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
if (item1Offset > -itemSize) {
- add(1 to AxisIntOffset(0, item1Offset))
+ add(1 to AxisOffset(0f, item1Offset))
} else {
rule.onNodeWithTag("1").assertIsNotDisplayed()
}
if (item2Offset > -itemSize) {
- add(2 to AxisIntOffset(0, item2Offset))
+ add(2 to AxisOffset(0f, item2Offset))
} else {
rule.onNodeWithTag("2").assertIsNotDisplayed()
}
- add(3 to AxisIntOffset(0, 0))
+ add(3 to AxisOffset(0f, 0f))
if (item4Offset > -itemSize) {
- add(4 to AxisIntOffset(0, item4Offset))
+ add(4 to AxisOffset(0f, item4Offset))
} else {
rule.onNodeWithTag("4").assertIsNotDisplayed()
}
if (item5Offset > -itemSize) {
- add(5 to AxisIntOffset(0, item5Offset))
+ add(5 to AxisOffset(0f, item5Offset))
} else {
rule.onNodeWithTag("5").assertIsNotDisplayed()
}
@@ -1830,10 +1823,10 @@
}
assertPositions(
- 2 to AxisIntOffset(0, 0),
- 3 to AxisIntOffset(itemSize, 0),
- 4 to AxisIntOffset(0, itemSize),
- 5 to AxisIntOffset(itemSize, itemSize)
+ 2 to AxisOffset(0f, 0f),
+ 3 to AxisOffset(itemSize, 0f),
+ 4 to AxisOffset(0f, itemSize),
+ 5 to AxisOffset(itemSize, itemSize)
)
rule.runOnIdle {
@@ -1843,21 +1836,21 @@
onAnimationFrame { fraction ->
// items 0 and 2 moves from and items 4 and 5 moves to `-itemSize`,
// right before the start edge
- val items0and1Offset = -itemSize + (itemSize * 2 * fraction).roundToInt()
- val items4and5Offset = itemSize - (itemSize * 2 * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
+ val items0and1Offset = -itemSize + itemSize * 2 * fraction
+ val items4and5Offset = itemSize - itemSize * 2 * fraction
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
if (items0and1Offset > -itemSize) {
- add(0 to AxisIntOffset(0, items0and1Offset))
- add(1 to AxisIntOffset(itemSize, items0and1Offset))
+ add(0 to AxisOffset(0f, items0and1Offset))
+ add(1 to AxisOffset(itemSize, items0and1Offset))
} else {
rule.onNodeWithTag("0").assertIsNotDisplayed()
rule.onNodeWithTag("1").assertIsNotDisplayed()
}
- add(2 to AxisIntOffset(0, 0))
- add(3 to AxisIntOffset(itemSize, 0))
+ add(2 to AxisOffset(0f, 0f))
+ add(3 to AxisOffset(itemSize, 0f))
if (items4and5Offset > -itemSize) {
- add(4 to AxisIntOffset(0, items4and5Offset))
- add(5 to AxisIntOffset(itemSize, items4and5Offset))
+ add(4 to AxisOffset(0f, items4and5Offset))
+ add(5 to AxisOffset(itemSize, items4and5Offset))
} else {
rule.onNodeWithTag("4").assertIsNotDisplayed()
rule.onNodeWithTag("5").assertIsNotDisplayed()
@@ -1884,9 +1877,9 @@
}
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(0, itemSize),
- 2 to AxisIntOffset(0, itemSize * 2)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(0f, itemSize),
+ 2 to AxisOffset(0f, itemSize * 2)
)
rule.runOnIdle {
@@ -1895,30 +1888,30 @@
onAnimationFrame { fraction ->
// item 1 moves to and item 3 moves from `gridSize`, right after the end edge
- val item1Offset = itemSize + ((gridSize - itemSize) * fraction).roundToInt()
- val item3Offset = gridSize - ((gridSize - itemSize) * fraction).roundToInt()
+ val item1Offset = itemSize + (gridSize - itemSize) * fraction
+ val item3Offset = gridSize - (gridSize - itemSize) * fraction
// item 2 moves to and item 4 moves from `gridSize + itemSize`, right after item 4
- val item2Offset = itemSize * 2 + ((gridSize - itemSize) * fraction).roundToInt()
- val item4Offset = gridSize + itemSize - ((gridSize - itemSize) * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
- add(0 to AxisIntOffset(0, 0))
+ val item2Offset = itemSize * 2 + (gridSize - itemSize) * fraction
+ val item4Offset = gridSize + itemSize - (gridSize - itemSize) * fraction
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
+ add(0 to AxisOffset(0f, 0f))
if (item1Offset < gridSize) {
- add(1 to AxisIntOffset(0, item1Offset))
+ add(1 to AxisOffset(0f, item1Offset))
} else {
rule.onNodeWithTag("1").assertIsNotDisplayed()
}
if (item2Offset < gridSize) {
- add(2 to AxisIntOffset(0, item2Offset))
+ add(2 to AxisOffset(0f, item2Offset))
} else {
rule.onNodeWithTag("2").assertIsNotDisplayed()
}
if (item3Offset < gridSize) {
- add(3 to AxisIntOffset(0, item3Offset))
+ add(3 to AxisOffset(0f, item3Offset))
} else {
rule.onNodeWithTag("3").assertIsNotDisplayed()
}
if (item4Offset < gridSize) {
- add(4 to AxisIntOffset(0, item4Offset))
+ add(4 to AxisOffset(0f, item4Offset))
} else {
rule.onNodeWithTag("4").assertIsNotDisplayed()
}
@@ -1944,9 +1937,9 @@
}
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(0, itemSize),
- 2 to AxisIntOffset(0, itemSize * 2)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(0f, itemSize),
+ 2 to AxisOffset(0f, itemSize * 2)
)
rule.runOnIdle {
@@ -1955,31 +1948,31 @@
onAnimationFrame { fraction ->
// item 2 moves to and item 3 moves from `gridSize`, right after the end edge
- val item2Offset = itemSize * 2 + ((gridSize - itemSize * 2) * fraction).roundToInt()
- val item3Offset = gridSize - ((gridSize - itemSize * 2) * fraction).roundToInt()
+ val item2Offset = itemSize * 2 + (gridSize - itemSize * 2) * fraction
+ val item3Offset = gridSize - (gridSize - itemSize * 2) * fraction
// item 1 moves to and item 4 moves from `gridSize + itemSize`, right after item 4
- val item1Offset = itemSize + ((gridSize + itemSize - itemSize) * fraction).roundToInt()
+ val item1Offset = itemSize + (gridSize + itemSize - itemSize) * fraction
val item4Offset =
- gridSize + itemSize - ((gridSize + itemSize - itemSize) * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
- add(0 to AxisIntOffset(0, 0))
+ gridSize + itemSize - (gridSize + itemSize - itemSize) * fraction
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
+ add(0 to AxisOffset(0f, 0f))
if (item1Offset < gridSize) {
- add(1 to AxisIntOffset(0, item1Offset))
+ add(1 to AxisOffset(0f, item1Offset))
} else {
rule.onNodeWithTag("1").assertIsNotDisplayed()
}
if (item2Offset < gridSize) {
- add(2 to AxisIntOffset(0, item2Offset))
+ add(2 to AxisOffset(0f, item2Offset))
} else {
rule.onNodeWithTag("2").assertIsNotDisplayed()
}
if (item3Offset < gridSize) {
- add(3 to AxisIntOffset(0, item3Offset))
+ add(3 to AxisOffset(0f, item3Offset))
} else {
rule.onNodeWithTag("3").assertIsNotDisplayed()
}
if (item4Offset < gridSize) {
- add(4 to AxisIntOffset(0, item4Offset))
+ add(4 to AxisOffset(0f, item4Offset))
} else {
rule.onNodeWithTag("4").assertIsNotDisplayed()
}
@@ -2005,10 +1998,10 @@
}
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(itemSize, 0),
- 2 to AxisIntOffset(0, itemSize),
- 3 to AxisIntOffset(itemSize, itemSize)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(itemSize, 0f),
+ 2 to AxisOffset(0f, itemSize),
+ 3 to AxisOffset(itemSize, itemSize)
)
rule.runOnIdle {
@@ -2018,21 +2011,21 @@
onAnimationFrame { fraction ->
// items 4 and 5 moves from and items 2 and 3 moves to `gridSize`,
// right before the start edge
- val items4and5Offset = gridSize - ((gridSize - itemSize) * fraction).roundToInt()
- val items2and3Offset = itemSize + ((gridSize - itemSize) * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
- add(0 to AxisIntOffset(0, 0))
- add(1 to AxisIntOffset(itemSize, 0))
+ val items4and5Offset = gridSize - (gridSize - itemSize) * fraction
+ val items2and3Offset = itemSize + (gridSize - itemSize) * fraction
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
+ add(0 to AxisOffset(0f, 0f))
+ add(1 to AxisOffset(itemSize, 0f))
if (items2and3Offset < gridSize) {
- add(2 to AxisIntOffset(0, items2and3Offset))
- add(3 to AxisIntOffset(itemSize, items2and3Offset))
+ add(2 to AxisOffset(0f, items2and3Offset))
+ add(3 to AxisOffset(itemSize, items2and3Offset))
} else {
rule.onNodeWithTag("2").assertIsNotDisplayed()
rule.onNodeWithTag("3").assertIsNotDisplayed()
}
if (items4and5Offset < gridSize) {
- add(4 to AxisIntOffset(0, items4and5Offset))
- add(5 to AxisIntOffset(itemSize, items4and5Offset))
+ add(4 to AxisOffset(0f, items4and5Offset))
+ add(5 to AxisOffset(itemSize, items4and5Offset))
} else {
rule.onNodeWithTag("4").assertIsNotDisplayed()
rule.onNodeWithTag("5").assertIsNotDisplayed()
@@ -2062,8 +2055,8 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(0, itemSize),
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(0f, itemSize),
fraction = fraction
)
rule.onNodeWithTag("2").assertIsNotDisplayed()
@@ -2087,25 +2080,26 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(0, itemSize),
- 2 to AxisIntOffset(0, itemSize * 2),
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(0f, itemSize),
+ 2 to AxisOffset(0f, itemSize * 2),
fraction = fraction
)
}
}
- private fun AxisIntOffset(crossAxis: Int, mainAxis: Int) =
- if (isVertical) IntOffset(crossAxis, mainAxis) else IntOffset(mainAxis, crossAxis)
+ private fun AxisOffset(crossAxis: Float, mainAxis: Float) =
+ if (isVertical) Offset(crossAxis, mainAxis) else Offset(mainAxis, crossAxis)
- private val IntOffset.mainAxis: Int get() = if (isVertical) y else x
+ private val Offset.mainAxis: Float get() = if (isVertical) y else x
private fun assertPositions(
- vararg expected: Pair<Any, IntOffset>,
- crossAxis: List<Pair<Any, Int>>? = null,
+ vararg expected: Pair<Any, Offset>,
+ crossAxis: List<Pair<Any, Float>>? = null,
fraction: Float? = null,
autoReverse: Boolean = reverseLayout
) {
+ val roundedExpected = expected.map { it.first to it.second.round() }
with(rule.density) {
val actual = expected.map {
val actualOffset = rule.onNodeWithTag(it.first.toString())
@@ -2123,7 +2117,7 @@
assertWithMessage("Fraction=$fraction").that(actual)
}
subject.isEqualTo(
- listOf(*expected).let { list ->
+ roundedExpected.let { list ->
if (!autoReverse) {
list
} else {
@@ -2169,14 +2163,14 @@
"CrossAxis" + if (fraction != null) "for fraction=$fraction" else ""
)
.that(actualCross)
- .isEqualTo(crossAxis)
+ .isEqualTo(crossAxis.map { it.first to it.second.roundToInt() })
}
}
}
- private fun assertLayoutInfoPositions(vararg offsets: Pair<Any, IntOffset>) {
+ private fun assertLayoutInfoPositions(vararg offsets: Pair<Any, Offset>) {
rule.runOnIdle {
- assertThat(visibleItemsOffsets).isEqualTo(listOf(*offsets))
+ assertThat(visibleItemsOffsets).isEqualTo(offsets.map { it.first to it.second.round() })
}
}
diff --git a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListAnimateItemPlacementTest.kt b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListAnimateItemPlacementTest.kt
index 2dd0fb3..8a7e8ce 100644
--- a/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListAnimateItemPlacementTest.kt
+++ b/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/list/LazyListAnimateItemPlacementTest.kt
@@ -85,15 +85,15 @@
@get:Rule
val rule = createComposeRule()
- private val itemSize: Int = 50
+ private val itemSize: Float = 50f
private var itemSizeDp: Dp = Dp.Infinity
- private val itemSize2: Int = 30
+ private val itemSize2: Float = 30f
private var itemSize2Dp: Dp = Dp.Infinity
- private val itemSize3: Int = 20
+ private val itemSize3: Float = 20f
private var itemSize3Dp: Dp = Dp.Infinity
- private val containerSize: Int = itemSize * 5
+ private val containerSize: Float = itemSize * 5
private var containerSizeDp: Dp = Dp.Infinity
- private val spacing: Int = 10
+ private val spacing: Float = 10f
private var spacingDp: Dp = Dp.Infinity
private val itemSizePlusSpacing = itemSize + spacing
private var itemSizePlusSpacingDp = Dp.Infinity
@@ -123,7 +123,7 @@
}
}
- assertPositions(0 to 0, 1 to itemSize)
+ assertPositions(0 to 0f, 1 to itemSize)
rule.runOnIdle {
list = listOf(1, 0)
@@ -131,8 +131,8 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to 0 + (itemSize * fraction).roundToInt(),
- 1 to itemSize - (itemSize * fraction).roundToInt(),
+ 0 to 0 + itemSize * fraction,
+ 1 to itemSize - itemSize * fraction,
fraction = fraction
)
}
@@ -149,7 +149,7 @@
}
}
- assertLayoutInfoPositions(0 to 0, 1 to itemSize)
+ assertLayoutInfoPositions(0 to 0f, 1 to itemSize)
rule.runOnIdle {
list = listOf(1, 0)
@@ -157,7 +157,7 @@
onAnimationFrame {
// fraction doesn't affect the offsets in layout info
- assertLayoutInfoPositions(1 to 0, 0 to itemSize)
+ assertLayoutInfoPositions(1 to 0f, 0 to itemSize)
}
}
@@ -173,7 +173,7 @@
}
assertPositions(
- 0 to 0,
+ 0 to 0f,
1 to itemSize,
2 to itemSize * 2,
3 to itemSize * 3,
@@ -186,11 +186,11 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to 0 + (itemSize * 4 * fraction).roundToInt(),
+ 0 to 0 + itemSize * 4 * fraction,
1 to itemSize,
2 to itemSize * 2,
3 to itemSize * 3,
- 4 to itemSize * 4 - (itemSize * 4 * fraction).roundToInt(),
+ 4 to itemSize * 4 - itemSize * 4 * fraction,
fraction = fraction
)
}
@@ -208,7 +208,7 @@
}
assertPositions(
- 0 to 0,
+ 0 to 0f,
1 to itemSize,
2 to itemSize * 2,
3 to itemSize * 3,
@@ -221,11 +221,11 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to 0 + (itemSize * 4 * fraction).roundToInt(),
- 1 to itemSize - (itemSize * fraction).roundToInt(),
- 2 to itemSize * 2 - (itemSize * fraction).roundToInt(),
- 3 to itemSize * 3 - (itemSize * fraction).roundToInt(),
- 4 to itemSize * 4 - (itemSize * fraction).roundToInt(),
+ 0 to 0 + itemSize * 4 * fraction,
+ 1 to itemSize - itemSize * fraction,
+ 2 to itemSize * 2 - itemSize * fraction,
+ 3 to itemSize * 3 - itemSize * fraction,
+ 4 to itemSize * 4 - itemSize * fraction,
fraction = fraction
)
}
@@ -255,10 +255,10 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to 0,
+ 0 to 0f,
1 to itemSize,
- 2 to itemSize * 2 + (itemSize * fraction).roundToInt(),
- 3 to itemSize * 3 + (itemSize * fraction).roundToInt(),
+ 2 to itemSize * 2 + itemSize * fraction,
+ 3 to itemSize * 3 + itemSize * fraction,
fraction = fraction
)
}
@@ -282,9 +282,9 @@
onAnimationFrame { fraction ->
assertPositions(
0 to itemSize * 4,
- 1 to itemSize - (itemSize * fraction).roundToInt(),
+ 1 to itemSize - itemSize * fraction,
2 to itemSize,
- 3 to itemSize * 3 - (itemSize * fraction).roundToInt(),
+ 3 to itemSize * 3 - itemSize * fraction,
4 to itemSize * 3,
fraction = fraction
)
@@ -310,11 +310,11 @@
onAnimationFrame(duration = Duration * 2) { fraction ->
val shorterAnimFraction = (fraction * 2).coerceAtMost(1f)
assertPositions(
- 0 to 0 + (itemSize * 4 * shorterAnimFraction).roundToInt(),
- 1 to itemSize - (itemSize * fraction).roundToInt(),
- 2 to itemSize * 2 - (itemSize * shorterAnimFraction).roundToInt(),
- 3 to itemSize * 3 - (itemSize * fraction).roundToInt(),
- 4 to itemSize * 4 - (itemSize * shorterAnimFraction).roundToInt(),
+ 0 to 0 + itemSize * 4 * shorterAnimFraction,
+ 1 to itemSize - itemSize * fraction,
+ 2 to itemSize * 2 - itemSize * shorterAnimFraction,
+ 3 to itemSize * 3 - itemSize * fraction,
+ 4 to itemSize * 4 - itemSize * shorterAnimFraction,
fraction = fraction
)
}
@@ -333,7 +333,7 @@
}
assertPositions(
- 0 to 0,
+ 0 to 0f,
1 to itemSize,
2 to itemSize * 2,
3 to itemSize * 3,
@@ -345,10 +345,10 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to 0 + (itemSize * 2 * fraction).roundToInt(),
- 1 to itemSize + (itemSize * 2 * fraction).roundToInt(),
- 2 to itemSize * 2 - (itemSize * 2 * fraction).roundToInt(),
- 3 to itemSize * 3 - (itemSize * 2 * fraction).roundToInt(),
+ 0 to 0 + itemSize * 2 * fraction,
+ 1 to itemSize + itemSize * 2 * fraction,
+ 2 to itemSize * 2 - itemSize * 2 * fraction,
+ 3 to itemSize * 3 - itemSize * 2 * fraction,
fraction = fraction
)
}
@@ -372,9 +372,9 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to 0 + (itemSize * 2 * fraction).roundToInt(),
+ 0 to 0 + itemSize * 2 * fraction,
1 to itemSize * 3,
- 2 to itemSize * 2 - (itemSize * 2 * fraction).roundToInt(),
+ 2 to itemSize * 2 - itemSize * 2 * fraction,
3 to itemSize,
fraction = fraction
)
@@ -409,9 +409,9 @@
onAnimationFrame { fraction ->
assertPositions(
- 1 to itemSize - (itemSize * fraction).roundToInt(),
+ 1 to itemSize - itemSize * fraction,
2 to itemSize * 2,
- 3 to itemSize * 3 + (itemSize * fraction).roundToInt(),
+ 3 to itemSize * 3 + itemSize * fraction,
fraction = fraction
)
}
@@ -431,7 +431,7 @@
}
assertPositions(
- 0 to 0,
+ 0 to 0f,
1 to itemSize,
2 to itemSize * 2
)
@@ -442,10 +442,10 @@
onAnimationFrame { fraction ->
// item 1 moves to and item 4 moves from `listSize`, right after the end edge
- val item1Offset = itemSize + ((listSize - itemSize) * fraction).roundToInt()
- val item4Offset = listSize - ((listSize - itemSize) * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, Int>>().apply {
- add(0 to 0)
+ val item1Offset = itemSize + (listSize - itemSize) * fraction
+ val item4Offset = listSize - (listSize - itemSize) * fraction
+ val expected = mutableListOf<Pair<Any, Float>>().apply {
+ add(0 to 0f)
if (item1Offset < itemSize * 3) {
add(1 to item1Offset)
} else {
@@ -477,7 +477,7 @@
}
assertPositions(
- 3 to 0,
+ 3 to 0f,
4 to itemSize,
5 to itemSize * 2
)
@@ -488,15 +488,15 @@
onAnimationFrame { fraction ->
// item 1 moves from and item 4 moves to `0 - itemSize`, right before the start edge
- val item1Offset = -itemSize + (itemSize * 2 * fraction).roundToInt()
- val item4Offset = itemSize - (itemSize * 2 * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, Int>>().apply {
+ val item1Offset = -itemSize + itemSize * 2 * fraction
+ val item4Offset = itemSize - itemSize * 2 * fraction
+ val expected = mutableListOf<Pair<Any, Float>>().apply {
if (item4Offset > -itemSize) {
add(4 to item4Offset)
} else {
rule.onNodeWithTag("4").assertIsNotDisplayed()
}
- add(3 to 0)
+ add(3 to 0f)
if (item1Offset > -itemSize) {
add(1 to item1Offset)
} else {
@@ -526,7 +526,7 @@
}
assertPositions(
- 3 to 0,
+ 3 to 0f,
4 to itemSize
)
@@ -536,15 +536,15 @@
onAnimationFrame { fraction ->
// item 1 moves from and item 4 moves to `0 - itemSize`, right before the start edge
- val item1Offset = -itemSize + (itemSize * 2 * fraction).roundToInt()
- val item4Offset = itemSize - (itemSize * 2 * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, Int>>().apply {
+ val item1Offset = -itemSize + itemSize * 2 * fraction
+ val item4Offset = itemSize - itemSize * 2 * fraction
+ val expected = mutableListOf<Pair<Any, Float>>().apply {
if (item4Offset > -itemSize) {
add(4 to item4Offset)
} else {
rule.onNodeWithTag("4").assertIsNotDisplayed()
}
- add(3 to 0)
+ add(3 to 0f)
if (item1Offset > -itemSize) {
add(1 to item1Offset)
} else {
@@ -575,10 +575,10 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to 0 + (itemSizePlusSpacing * 3 * fraction).roundToInt(),
- 1 to itemSizePlusSpacing - (itemSizePlusSpacing * fraction).roundToInt(),
- 2 to itemSizePlusSpacing * 2 - (itemSizePlusSpacing * fraction).roundToInt(),
- 3 to itemSizePlusSpacing * 3 - (itemSizePlusSpacing * fraction).roundToInt(),
+ 0 to 0 + itemSizePlusSpacing * 3 * fraction,
+ 1 to itemSizePlusSpacing - itemSizePlusSpacing * fraction,
+ 2 to itemSizePlusSpacing * 2 - itemSizePlusSpacing * fraction,
+ 3 to itemSizePlusSpacing * 3 - itemSizePlusSpacing * fraction,
fraction = fraction
)
}
@@ -601,7 +601,7 @@
}
assertPositions(
- 0 to 0,
+ 0 to 0f,
1 to itemSizePlusSpacing,
2 to itemSizePlusSpacing * 2
)
@@ -613,12 +613,12 @@
onAnimationFrame { fraction ->
// item 1 moves to and item 4 moves from `listSize`, right after the end edge
val item1Offset =
- itemSizePlusSpacing + ((listSize - itemSizePlusSpacing) * fraction).roundToInt()
+ itemSizePlusSpacing + (listSize - itemSizePlusSpacing) * fraction
val item4Offset =
- listSize - ((listSize - itemSizePlusSpacing) * fraction).roundToInt()
+ listSize - (listSize - itemSizePlusSpacing) * fraction
val screenSize = itemSize * 3 + spacing * 2
- val expected = mutableListOf<Pair<Any, Int>>().apply {
- add(0 to 0)
+ val expected = mutableListOf<Pair<Any, Float>>().apply {
+ add(0 to 0f)
if (item1Offset < screenSize) {
add(1 to item1Offset)
} else {
@@ -654,7 +654,7 @@
}
assertPositions(
- 3 to 0,
+ 3 to 0f,
4 to itemSizePlusSpacing,
5 to itemSizePlusSpacing * 2
)
@@ -666,16 +666,16 @@
onAnimationFrame { fraction ->
// item 4 moves to and item 1 moves from `-itemSize`, right before the start edge
val item1Offset =
- -itemSize + ((itemSize + itemSizePlusSpacing) * fraction).roundToInt()
+ -itemSize + (itemSize + itemSizePlusSpacing) * fraction
val item4Offset =
- itemSizePlusSpacing - ((itemSize + itemSizePlusSpacing) * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, Int>>().apply {
+ itemSizePlusSpacing - (itemSize + itemSizePlusSpacing) * fraction
+ val expected = mutableListOf<Pair<Any, Float>>().apply {
if (item4Offset > -itemSize) {
add(4 to item4Offset)
} else {
rule.onNodeWithTag("4").assertIsNotDisplayed()
}
- add(3 to 0)
+ add(3 to 0f)
if (item1Offset > -itemSize) {
add(1 to item1Offset)
} else {
@@ -706,7 +706,7 @@
val item3Size = itemSize2
val item4Size = itemSize
assertPositions(
- 3 to 0,
+ 3 to 0f,
4 to item3Size,
5 to item3Size + item4Size
)
@@ -723,22 +723,22 @@
// item 1 moves from and item 4 moves to `0 - item size`, right before the start edge
val startItem1Offset = -item1Size
val item1Offset =
- startItem1Offset + ((itemSize2 - startItem1Offset) * fraction).roundToInt()
+ startItem1Offset + (itemSize2 - startItem1Offset) * fraction
val endItem4Offset = -item4Size
- val item4Offset = item3Size - ((item3Size - endItem4Offset) * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, Int>>().apply {
+ val item4Offset = item3Size - (item3Size - endItem4Offset) * fraction
+ val expected = mutableListOf<Pair<Any, Float>>().apply {
if (item4Offset > -item4Size) {
add(4 to item4Offset)
} else {
rule.onNodeWithTag("4").assertIsNotDisplayed()
}
- add(3 to 0)
+ add(3 to 0f)
if (item1Offset > -item1Size) {
add(1 to item1Offset)
} else {
rule.onNodeWithTag("1").assertIsNotDisplayed()
}
- add(5 to item3Size + item4Size - ((item4Size - item1Size) * fraction).roundToInt())
+ add(5 to item3Size + item4Size - (item4Size - item1Size) * fraction)
}
assertPositions(
expected = expected.toTypedArray(),
@@ -765,7 +765,7 @@
val item0Size = itemSize2
val item1Size = itemSize
assertPositions(
- 0 to 0,
+ 0 to 0f,
1 to item0Size,
2 to item0Size + item1Size
)
@@ -780,17 +780,17 @@
val endItem1Offset = listSize
val item4Size = itemSize3
val item1Offset =
- item0Size + ((endItem1Offset - item0Size) * fraction).roundToInt()
+ item0Size + (endItem1Offset - item0Size) * fraction
val item4Offset =
- startItem4Offset - ((startItem4Offset - item0Size) * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, Int>>().apply {
- add(0 to 0)
+ startItem4Offset - (startItem4Offset - item0Size) * fraction
+ val expected = mutableListOf<Pair<Any, Float>>().apply {
+ add(0 to 0f)
if (item1Offset < listSize) {
add(1 to item1Offset)
} else {
rule.onNodeWithTag("1").assertIsNotDisplayed()
}
- add(2 to item0Size + item1Size - ((item1Size - item4Size) * fraction).roundToInt())
+ add(2 to item0Size + item1Size - (item1Size - item4Size) * fraction)
if (item4Offset < listSize) {
add(4 to item4Offset)
} else {
@@ -823,11 +823,11 @@
val item2Start = itemSize - itemSize2
val item3Start = itemSize - itemSize3
assertPositions(
- 1 to 0,
+ 1 to 0f,
2 to itemSize,
3 to itemSize * 2,
crossAxis = listOf(
- 1 to 0,
+ 1 to 0f,
2 to item2Start,
3 to item3Start,
)
@@ -842,13 +842,13 @@
val item3End = itemSize / 2 - itemSize3 / 2
onAnimationFrame { fraction ->
assertPositions(
- 1 to 0,
+ 1 to 0f,
2 to itemSize,
3 to itemSize * 2,
crossAxis = listOf(
- 1 to 0,
- 2 to item2Start + ((item2End - item2Start) * fraction).roundToInt(),
- 3 to item3Start + ((item3End - item3Start) * fraction).roundToInt(),
+ 1 to 0f,
+ 2 to item2Start + (item2End - item2Start) * fraction,
+ 3 to item3Start + (item3End - item3Start) * fraction,
),
fraction = fraction
)
@@ -881,13 +881,13 @@
val containerSize = itemSize * 2
onAnimationFrame { fraction ->
assertPositions(
- 1 to 0,
+ 1 to 0f,
2 to itemSize,
3 to itemSize * 2,
crossAxis = listOf(
- 1 to ((containerSize - itemSize) * fraction).roundToInt(),
- 2 to ((containerSize - itemSize2) * fraction).roundToInt(),
- 3 to ((containerSize - itemSize3) * fraction).roundToInt()
+ 1 to (containerSize - itemSize) * fraction,
+ 2 to (containerSize - itemSize2) * fraction,
+ 3 to (containerSize - itemSize3) * fraction
),
fraction = fraction
)
@@ -916,13 +916,13 @@
}
assertPositions(
- 1 to 0,
+ 1 to 0f,
2 to itemSize,
3 to itemSize * 2,
crossAxis = listOf(
- 1 to 0,
- 2 to 0,
- 3 to 0,
+ 1 to 0f,
+ 2 to 0f,
+ 3 to 0f,
)
)
@@ -933,13 +933,13 @@
onAnimationFrame { fraction ->
assertPositions(
- 1 to 0,
+ 1 to 0f,
2 to itemSize,
3 to itemSize * 2,
crossAxis = listOf(
- 1 to 0,
- 2 to ((itemSize / 2 - itemSize2 / 2) * fraction).roundToInt(),
- 3 to ((itemSize / 2 - itemSize3 / 2) * fraction).roundToInt(),
+ 1 to 0f,
+ 2 to (itemSize / 2 - itemSize2 / 2) * fraction,
+ 3 to (itemSize / 2 - itemSize3 / 2) * fraction
),
fraction = fraction
)
@@ -949,8 +949,8 @@
@Test
fun moveItemToEndCausingNextItemsToAnimate_withContentPadding() {
var list by mutableStateOf(listOf(0, 1, 2, 3, 4))
- val rawStartPadding = 8
- val rawEndPadding = 12
+ val rawStartPadding = 8f
+ val rawEndPadding = 12f
val (startPaddingDp, endPaddingDp) = with(rule.density) {
rawStartPadding.toDp() to rawEndPadding.toDp()
}
@@ -978,10 +978,10 @@
onAnimationFrame { fraction ->
assertPositions(
0 to startPadding,
- 1 to startPadding + itemSize + (itemSize * 3 * fraction).roundToInt(),
- 2 to startPadding + itemSize * 2 - (itemSize * fraction).roundToInt(),
- 3 to startPadding + itemSize * 3 - (itemSize * fraction).roundToInt(),
- 4 to startPadding + itemSize * 4 - (itemSize * fraction).roundToInt(),
+ 1 to startPadding + itemSize + itemSize * 3 * fraction,
+ 2 to startPadding + itemSize * 2 - itemSize * fraction,
+ 3 to startPadding + itemSize * 3 - itemSize * fraction,
+ 4 to startPadding + itemSize * 4 - itemSize * fraction,
fraction = fraction
)
}
@@ -1035,7 +1035,7 @@
rule.runOnIdle {
runBlocking {
- state.scrollToItem(0, itemSize / 2)
+ state.scrollToItem(0, (itemSize / 2).roundToInt())
}
}
@@ -1231,9 +1231,9 @@
onAnimationFrame { fraction ->
// item 1 moves to `listSize`
- val item1Offset = itemSize + ((listSize - itemSize) * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, Int>>().apply {
- add(0 to 0)
+ val item1Offset = itemSize + (listSize - itemSize) * fraction
+ val expected = mutableListOf<Pair<Any, Float>>().apply {
+ add(0 to 0f)
if (item1Offset < listSize) {
add(1 to item1Offset)
} else {
@@ -1259,7 +1259,7 @@
}
assertPositions(
- 3 to 0,
+ 3 to 0f,
4 to itemSize,
5 to itemSize * 2
)
@@ -1270,12 +1270,12 @@
onAnimationFrame { fraction ->
// item 2 moves from and item 5 moves to `-itemSize`, right before the start edge
- val item2Offset = -itemSize + (itemSize * 3 * fraction).roundToInt()
- val item5Offset = itemSize * 2 - (itemSize * 3 * fraction).roundToInt()
+ val item2Offset = -itemSize + itemSize * 3 * fraction
+ val item5Offset = itemSize * 2 - itemSize * 3 * fraction
// item 1 moves from and item 4 moves to `-itemSize * 2`, right before item 2
- val item1Offset = -itemSize * 2 + (itemSize * 3 * fraction).roundToInt()
- val item4Offset = itemSize - (itemSize * 3 * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, Int>>().apply {
+ val item1Offset = -itemSize * 2 + itemSize * 3 * fraction
+ val item4Offset = itemSize - itemSize * 3 * fraction
+ val expected = mutableListOf<Pair<Any, Float>>().apply {
if (item1Offset > -itemSize) {
add(1 to item1Offset)
} else {
@@ -1286,7 +1286,7 @@
} else {
rule.onNodeWithTag("2").assertIsNotDisplayed()
}
- add(3 to 0)
+ add(3 to 0f)
if (item4Offset > -itemSize) {
add(4 to item4Offset)
} else {
@@ -1317,7 +1317,7 @@
}
assertPositions(
- 3 to 0,
+ 3 to 0f,
4 to itemSize,
5 to itemSize * 2
)
@@ -1328,12 +1328,12 @@
onAnimationFrame { fraction ->
// item 2 moves from and item 4 moves to `-itemSize`, right before the start edge
- val item2Offset = -itemSize + (itemSize * 2 * fraction).roundToInt()
- val item4Offset = itemSize - (itemSize * 2 * fraction).roundToInt()
+ val item2Offset = -itemSize + itemSize * 2 * fraction
+ val item4Offset = itemSize - itemSize * 2 * fraction
// item 1 moves from and item 5 moves to `-itemSize * 2`, right before item 2
- val item1Offset = -itemSize * 2 + (itemSize * 4 * fraction).roundToInt()
- val item5Offset = itemSize * 2 - (itemSize * 4 * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, Int>>().apply {
+ val item1Offset = -itemSize * 2 + itemSize * 4 * fraction
+ val item5Offset = itemSize * 2 - itemSize * 4 * fraction
+ val expected = mutableListOf<Pair<Any, Float>>().apply {
if (item1Offset > -itemSize) {
add(1 to item1Offset)
} else {
@@ -1344,7 +1344,7 @@
} else {
rule.onNodeWithTag("2").assertIsNotDisplayed()
}
- add(3 to 0)
+ add(3 to 0f)
if (item4Offset > -itemSize) {
add(4 to item4Offset)
} else {
@@ -1377,7 +1377,7 @@
}
assertPositions(
- 0 to 0,
+ 0 to 0f,
1 to itemSize,
2 to itemSize * 2
)
@@ -1388,13 +1388,13 @@
onAnimationFrame { fraction ->
// item 1 moves to and item 3 moves from `listSize`, right after the end edge
- val item1Offset = itemSize + ((listSize - itemSize) * fraction).roundToInt()
- val item3Offset = listSize - ((listSize - itemSize) * fraction).roundToInt()
+ val item1Offset = itemSize + (listSize - itemSize) * fraction
+ val item3Offset = listSize - (listSize - itemSize) * fraction
// item 2 moves to and item 4 moves from `listSize + itemSize`, right after item 4
- val item2Offset = itemSize * 2 + ((listSize - itemSize) * fraction).roundToInt()
- val item4Offset = listSize + itemSize - ((listSize - itemSize) * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, Int>>().apply {
- add(0 to 0)
+ val item2Offset = itemSize * 2 + (listSize - itemSize) * fraction
+ val item4Offset = listSize + itemSize - (listSize - itemSize) * fraction
+ val expected = mutableListOf<Pair<Any, Float>>().apply {
+ add(0 to 0f)
if (item1Offset < listSize) {
add(1 to item1Offset)
} else {
@@ -1437,7 +1437,7 @@
}
assertPositions(
- 0 to 0,
+ 0 to 0f,
1 to itemSize,
2 to itemSize * 2
)
@@ -1448,14 +1448,14 @@
onAnimationFrame { fraction ->
// item 2 moves to and item 3 moves from `listSize`, right after the end edge
- val item2Offset = itemSize * 2 + ((listSize - itemSize * 2) * fraction).roundToInt()
- val item3Offset = listSize - ((listSize - itemSize * 2) * fraction).roundToInt()
+ val item2Offset = itemSize * 2 + (listSize - itemSize * 2) * fraction
+ val item3Offset = listSize - (listSize - itemSize * 2) * fraction
// item 1 moves to and item 4 moves from `listSize + itemSize`, right after item 4
- val item1Offset = itemSize + ((listSize + itemSize - itemSize) * fraction).roundToInt()
+ val item1Offset = itemSize + (listSize + itemSize - itemSize) * fraction
val item4Offset =
- listSize + itemSize - ((listSize + itemSize - itemSize) * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, Int>>().apply {
- add(0 to 0)
+ listSize + itemSize - (listSize + itemSize - itemSize) * fraction
+ val expected = mutableListOf<Pair<Any, Float>>().apply {
+ add(0 to 0f)
if (item1Offset < listSize) {
add(1 to item1Offset)
} else {
@@ -1501,7 +1501,7 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to 0,
+ 0 to 0f,
1 to itemSize,
fraction = fraction
)
@@ -1526,7 +1526,7 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to 0,
+ 0 to 0f,
1 to itemSize,
2 to itemSize * 2,
fraction = fraction
@@ -1535,11 +1535,12 @@
}
private fun assertPositions(
- vararg expected: Pair<Any, Int>,
- crossAxis: List<Pair<Any, Int>>? = null,
+ vararg expected: Pair<Any, Float>,
+ crossAxis: List<Pair<Any, Float>>? = null,
fraction: Float? = null,
autoReverse: Boolean = reverseLayout
) {
+ val roundedExpected = expected.map { it.first to it.second.roundToInt() }
with(rule.density) {
val actual = expected.map {
val actualOffset = rule.onNodeWithTag(it.first.toString())
@@ -1555,7 +1556,7 @@
assertWithMessage("Fraction=$fraction").that(actual)
}
subject.isEqualTo(
- listOf(*expected).let { list ->
+ roundedExpected.let { list ->
if (!autoReverse) {
list
} else {
@@ -1586,14 +1587,16 @@
"CrossAxis" + if (fraction != null) "for fraction=$fraction" else ""
)
.that(actualCross)
- .isEqualTo(crossAxis)
+ .isEqualTo(crossAxis.map { it.first to it.second.roundToInt() })
}
}
}
- private fun assertLayoutInfoPositions(vararg offsets: Pair<Any, Int>) {
+ private fun assertLayoutInfoPositions(vararg offsets: Pair<Any, Float>) {
rule.runOnIdle {
- assertThat(visibleItemsOffsets).isEqualTo(listOf(*offsets))
+ assertThat(visibleItemsOffsets).isEqualTo(offsets.map {
+ it.first to it.second.roundToInt()
+ })
}
}
diff --git a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyGridAnimateItemPlacementTest.kt b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyGridAnimateItemPlacementTest.kt
index 7c4bb72..4275da8 100644
--- a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyGridAnimateItemPlacementTest.kt
+++ b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/grid/LazyGridAnimateItemPlacementTest.kt
@@ -35,6 +35,7 @@
import androidx.compose.runtime.setValue
import androidx.compose.runtime.snapshotFlow
import androidx.compose.ui.Modifier
+import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.test.SemanticsNodeInteraction
import androidx.compose.ui.test.assertHeightIsEqualTo
@@ -50,6 +51,7 @@
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.height
import androidx.compose.ui.unit.isSpecified
+import androidx.compose.ui.unit.round
import androidx.compose.ui.unit.width
import androidx.test.filters.LargeTest
import com.google.common.truth.Truth.assertThat
@@ -73,15 +75,15 @@
@get:Rule
val rule = createComposeRule()
- private val itemSize: Int = 50
+ private val itemSize: Float = 50f
private var itemSizeDp: Dp = Dp.Infinity
- private val itemSize2: Int = 30
+ private val itemSize2: Float = 30f
private var itemSize2Dp: Dp = Dp.Infinity
- private val itemSize3: Int = 20
+ private val itemSize3: Float = 20f
private var itemSize3Dp: Dp = Dp.Infinity
- private val containerSize: Int = itemSize * 5
+ private val containerSize: Float = itemSize * 5
private var containerSizeDp: Dp = Dp.Infinity
- private val spacing: Int = 10
+ private val spacing: Float = 10f
private var spacingDp: Dp = Dp.Infinity
private val itemSizePlusSpacing = itemSize + spacing
private var itemSizePlusSpacingDp = Dp.Infinity
@@ -112,8 +114,8 @@
}
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(0, itemSize)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(0f, itemSize)
)
rule.runOnIdle {
@@ -122,8 +124,8 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, 0 + (itemSize * fraction).roundToInt()),
- 1 to AxisIntOffset(0, itemSize - (itemSize * fraction).roundToInt()),
+ 0 to AxisOffset(0f, 0f + itemSize * fraction),
+ 1 to AxisOffset(0f, itemSize - itemSize * fraction),
fraction = fraction
)
}
@@ -141,10 +143,10 @@
}
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(itemSize, 0),
- 2 to AxisIntOffset(0, itemSize),
- 3 to AxisIntOffset(itemSize, itemSize)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(itemSize, 0f),
+ 2 to AxisOffset(0f, itemSize),
+ 3 to AxisOffset(itemSize, itemSize)
)
rule.runOnIdle {
@@ -152,13 +154,13 @@
}
onAnimationFrame { fraction ->
- val increasing = 0 + (itemSize * fraction).roundToInt()
- val decreasing = itemSize - (itemSize * fraction).roundToInt()
+ val increasing = 0 + itemSize * fraction
+ val decreasing = itemSize - itemSize * fraction
assertPositions(
- 0 to AxisIntOffset(increasing, increasing),
- 1 to AxisIntOffset(decreasing, increasing),
- 2 to AxisIntOffset(increasing, decreasing),
- 3 to AxisIntOffset(decreasing, decreasing),
+ 0 to AxisOffset(increasing, increasing),
+ 1 to AxisOffset(decreasing, increasing),
+ 2 to AxisOffset(increasing, decreasing),
+ 3 to AxisOffset(decreasing, decreasing),
fraction = fraction
)
}
@@ -176,10 +178,10 @@
}
assertLayoutInfoPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(itemSize, 0),
- 2 to AxisIntOffset(0, itemSize),
- 3 to AxisIntOffset(itemSize, itemSize)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(itemSize, 0f),
+ 2 to AxisOffset(0f, itemSize),
+ 3 to AxisOffset(itemSize, itemSize)
)
rule.runOnIdle {
@@ -189,10 +191,10 @@
onAnimationFrame {
// fraction doesn't affect the offsets in layout info
assertLayoutInfoPositions(
- 3 to AxisIntOffset(0, 0),
- 2 to AxisIntOffset(itemSize, 0),
- 1 to AxisIntOffset(0, itemSize),
- 0 to AxisIntOffset(itemSize, itemSize)
+ 3 to AxisOffset(0f, 0f),
+ 2 to AxisOffset(itemSize, 0f),
+ 1 to AxisOffset(0f, itemSize),
+ 0 to AxisOffset(itemSize, itemSize)
)
}
}
@@ -209,11 +211,11 @@
}
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(0, itemSize),
- 2 to AxisIntOffset(0, itemSize * 2),
- 3 to AxisIntOffset(0, itemSize * 3),
- 4 to AxisIntOffset(0, itemSize * 4)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(0f, itemSize),
+ 2 to AxisOffset(0f, itemSize * 2),
+ 3 to AxisOffset(0f, itemSize * 3),
+ 4 to AxisOffset(0f, itemSize * 4)
)
rule.runOnIdle {
@@ -222,11 +224,11 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, 0 + (itemSize * 4 * fraction).roundToInt()),
- 1 to AxisIntOffset(0, itemSize),
- 2 to AxisIntOffset(0, itemSize * 2),
- 3 to AxisIntOffset(0, itemSize * 3),
- 4 to AxisIntOffset(0, itemSize * 4 - (itemSize * 4 * fraction).roundToInt()),
+ 0 to AxisOffset(0f, 0f + itemSize * 4 * fraction),
+ 1 to AxisOffset(0f, itemSize),
+ 2 to AxisOffset(0f, itemSize * 2),
+ 3 to AxisOffset(0f, itemSize * 3),
+ 4 to AxisOffset(0f, itemSize * 4 - itemSize * 4 * fraction),
fraction = fraction
)
}
@@ -244,12 +246,12 @@
}
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(itemSize, 0),
- 2 to AxisIntOffset(0, itemSize),
- 3 to AxisIntOffset(itemSize, itemSize),
- 4 to AxisIntOffset(0, itemSize * 2),
- 5 to AxisIntOffset(itemSize, itemSize * 2)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(itemSize, 0f),
+ 2 to AxisOffset(0f, itemSize),
+ 3 to AxisOffset(itemSize, itemSize),
+ 4 to AxisOffset(0f, itemSize * 2),
+ 5 to AxisOffset(itemSize, itemSize * 2)
)
rule.runOnIdle {
@@ -257,15 +259,15 @@
}
onAnimationFrame { fraction ->
- val increasingX = 0 + (itemSize * fraction).roundToInt()
- val decreasingX = itemSize - (itemSize * fraction).roundToInt()
+ val increasingX = 0 + itemSize * fraction
+ val decreasingX = itemSize - itemSize * fraction
assertPositions(
- 0 to AxisIntOffset(increasingX, 0 + (itemSize * 2 * fraction).roundToInt()),
- 1 to AxisIntOffset(decreasingX, 0),
- 2 to AxisIntOffset(increasingX, itemSize - (itemSize * fraction).roundToInt()),
- 3 to AxisIntOffset(decreasingX, itemSize),
- 4 to AxisIntOffset(increasingX, itemSize * 2 - (itemSize * fraction).roundToInt()),
- 5 to AxisIntOffset(decreasingX, itemSize * 2),
+ 0 to AxisOffset(increasingX, 0f + itemSize * 2 * fraction),
+ 1 to AxisOffset(decreasingX, 0f),
+ 2 to AxisOffset(increasingX, itemSize - itemSize * fraction),
+ 3 to AxisOffset(decreasingX, itemSize),
+ 4 to AxisOffset(increasingX, itemSize * 2 - itemSize * fraction),
+ 5 to AxisOffset(decreasingX, itemSize * 2),
fraction = fraction
)
}
@@ -292,10 +294,10 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(0, itemSize),
- 2 to AxisIntOffset(0, itemSize * 2 + (itemSize * fraction).roundToInt()),
- 3 to AxisIntOffset(0, itemSize * 3 + (itemSize * fraction).roundToInt()),
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(0f, itemSize),
+ 2 to AxisOffset(0f, itemSize * 2 + itemSize * fraction),
+ 3 to AxisOffset(0f, itemSize * 3 + itemSize * fraction),
fraction = fraction
)
}
@@ -318,11 +320,11 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, itemSize * 4),
- 1 to AxisIntOffset(0, itemSize - (itemSize * fraction).roundToInt()),
- 2 to AxisIntOffset(0, itemSize),
- 3 to AxisIntOffset(0, itemSize * 3 - (itemSize * fraction).roundToInt()),
- 4 to AxisIntOffset(0, itemSize * 3),
+ 0 to AxisOffset(0f, itemSize * 4),
+ 1 to AxisOffset(0f, itemSize - itemSize * fraction),
+ 2 to AxisOffset(0f, itemSize),
+ 3 to AxisOffset(0f, itemSize * 3 - itemSize * fraction),
+ 4 to AxisOffset(0f, itemSize * 3),
fraction = fraction
)
}
@@ -347,11 +349,11 @@
onAnimationFrame(duration = Duration * 2) { fraction ->
val shorterAnimFraction = (fraction * 2).coerceAtMost(1f)
assertPositions(
- 0 to AxisIntOffset(0, 0 + (itemSize * 4 * shorterAnimFraction).roundToInt()),
- 1 to AxisIntOffset(0, itemSize - (itemSize * fraction).roundToInt()),
- 2 to AxisIntOffset(0, itemSize * 2 - (itemSize * shorterAnimFraction).roundToInt()),
- 3 to AxisIntOffset(0, itemSize * 3 - (itemSize * fraction).roundToInt()),
- 4 to AxisIntOffset(0, itemSize * 4 - (itemSize * shorterAnimFraction).roundToInt()),
+ 0 to AxisOffset(0f, 0 + itemSize * 4 * shorterAnimFraction),
+ 1 to AxisOffset(0f, itemSize - itemSize * fraction),
+ 2 to AxisOffset(0f, itemSize * 2 - itemSize * shorterAnimFraction),
+ 3 to AxisOffset(0f, itemSize * 3 - itemSize * fraction),
+ 4 to AxisOffset(0f, itemSize * 4 - itemSize * shorterAnimFraction),
fraction = fraction
)
}
@@ -370,10 +372,10 @@
}
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(0, 0),
- 2 to AxisIntOffset(0, itemSize),
- 3 to AxisIntOffset(0, itemSize)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(0f, 0f),
+ 2 to AxisOffset(0f, itemSize),
+ 3 to AxisOffset(0f, itemSize)
)
rule.runOnIdle {
@@ -382,10 +384,10 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, 0 + (itemSize * fraction).roundToInt()),
- 1 to AxisIntOffset(0, 0 + (itemSize * fraction).roundToInt()),
- 2 to AxisIntOffset(0, itemSize - (itemSize * fraction).roundToInt()),
- 3 to AxisIntOffset(0, itemSize - (itemSize * fraction).roundToInt()),
+ 0 to AxisOffset(0f, 0 + itemSize * fraction),
+ 1 to AxisOffset(0f, 0 + itemSize * fraction),
+ 2 to AxisOffset(0f, itemSize - itemSize * fraction),
+ 3 to AxisOffset(0f, itemSize - itemSize * fraction),
fraction = fraction
)
}
@@ -409,10 +411,10 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, 0 + (itemSize * fraction).roundToInt()),
- 1 to AxisIntOffset(0, itemSize),
- 2 to AxisIntOffset(0, itemSize - (itemSize * fraction).roundToInt()),
- 3 to AxisIntOffset(0, 0),
+ 0 to AxisOffset(0f, 0 + itemSize * fraction),
+ 1 to AxisOffset(0f, itemSize),
+ 2 to AxisOffset(0f, itemSize - itemSize * fraction),
+ 3 to AxisOffset(0f, 0f),
fraction = fraction
)
}
@@ -435,9 +437,9 @@
}
assertPositions(
- 1 to AxisIntOffset(0, itemSize),
- 2 to AxisIntOffset(0, itemSize * 2),
- 3 to AxisIntOffset(0, itemSize * 3),
+ 1 to AxisOffset(0f, itemSize),
+ 2 to AxisOffset(0f, itemSize * 2),
+ 3 to AxisOffset(0f, itemSize * 3),
)
rule.runOnIdle {
@@ -447,9 +449,9 @@
onAnimationFrame { fraction ->
assertPositions(
- 1 to AxisIntOffset(0, itemSize - (itemSize * fraction).roundToInt()),
- 2 to AxisIntOffset(0, itemSize * 2),
- 3 to AxisIntOffset(0, itemSize * 3 + (itemSize * fraction).roundToInt()),
+ 1 to AxisOffset(0f, itemSize - itemSize * fraction),
+ 2 to AxisOffset(0f, itemSize * 2),
+ 3 to AxisOffset(0f, itemSize * 3 + itemSize * fraction),
fraction = fraction
)
}
@@ -469,12 +471,12 @@
}
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(itemSize, 0),
- 2 to AxisIntOffset(0, itemSize),
- 3 to AxisIntOffset(itemSize, itemSize),
- 4 to AxisIntOffset(0, itemSize * 2),
- 5 to AxisIntOffset(itemSize, itemSize * 2)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(itemSize, 0f),
+ 2 to AxisOffset(0f, itemSize),
+ 3 to AxisOffset(itemSize, itemSize),
+ 4 to AxisOffset(0f, itemSize * 2),
+ 5 to AxisOffset(itemSize, itemSize * 2)
)
rule.runOnIdle {
@@ -483,20 +485,20 @@
onAnimationFrame { fraction ->
// item 1 moves to and item 8 moves from `gridSize`, right after the end edge
- val item1Offset = AxisIntOffset(itemSize, 0 + (gridSize * fraction).roundToInt())
+ val item1Offset = AxisOffset(itemSize, 0 + gridSize * fraction)
val item8Offset =
- AxisIntOffset(itemSize, gridSize - (gridSize * fraction).roundToInt())
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
- add(0 to AxisIntOffset(0, 0))
+ AxisOffset(itemSize, gridSize - gridSize * fraction)
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
+ add(0 to AxisOffset(0f, 0f))
if (item1Offset.mainAxis < itemSize * 3) {
add(1 to item1Offset)
} else {
rule.onNodeWithTag("1").assertIsNotDisplayed()
}
- add(2 to AxisIntOffset(0, itemSize))
- add(3 to AxisIntOffset(itemSize, itemSize))
- add(4 to AxisIntOffset(0, itemSize * 2))
- add(5 to AxisIntOffset(itemSize, itemSize * 2))
+ add(2 to AxisOffset(0f, itemSize))
+ add(3 to AxisOffset(itemSize, itemSize))
+ add(4 to AxisOffset(0f, itemSize * 2))
+ add(5 to AxisOffset(itemSize, itemSize * 2))
if (item8Offset.mainAxis < itemSize * 3) {
add(8 to item8Offset)
} else {
@@ -522,12 +524,12 @@
}
assertPositions(
- 6 to AxisIntOffset(0, 0),
- 7 to AxisIntOffset(itemSize, 0),
- 8 to AxisIntOffset(0, itemSize),
- 9 to AxisIntOffset(itemSize, itemSize),
- 10 to AxisIntOffset(0, itemSize * 2),
- 11 to AxisIntOffset(itemSize, itemSize * 2)
+ 6 to AxisOffset(0f, 0f),
+ 7 to AxisOffset(itemSize, 0f),
+ 8 to AxisOffset(0f, itemSize),
+ 9 to AxisOffset(itemSize, itemSize),
+ 10 to AxisOffset(0f, itemSize * 2),
+ 11 to AxisOffset(itemSize, itemSize * 2)
)
rule.runOnIdle {
@@ -536,27 +538,24 @@
onAnimationFrame { fraction ->
// item 1 moves from and item 8 moves to `0 - itemSize`, right before the start edge
- val item8Offset = AxisIntOffset(0, itemSize - (itemSize * 2 * fraction).roundToInt())
- val item1Offset = AxisIntOffset(
- 0,
- -itemSize + (itemSize * 2 * fraction).roundToInt()
- )
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
+ val item8Offset = AxisOffset(0f, itemSize - itemSize * 2 * fraction)
+ val item1Offset = AxisOffset(0f, -itemSize + itemSize * 2 * fraction)
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
if (item1Offset.mainAxis > -itemSize) {
add(1 to item1Offset)
} else {
rule.onNodeWithTag("1").assertIsNotDisplayed()
}
- add(6 to AxisIntOffset(0, 0))
- add(7 to AxisIntOffset(itemSize, 0))
+ add(6 to AxisOffset(0f, 0f))
+ add(7 to AxisOffset(itemSize, 0f))
if (item8Offset.mainAxis > -itemSize) {
add(8 to item8Offset)
} else {
rule.onNodeWithTag("8").assertIsNotDisplayed()
}
- add(9 to AxisIntOffset(itemSize, itemSize))
- add(10 to AxisIntOffset(0, itemSize * 2))
- add(11 to AxisIntOffset(itemSize, itemSize * 2))
+ add(9 to AxisOffset(itemSize, itemSize))
+ add(10 to AxisOffset(0f, itemSize * 2))
+ add(11 to AxisOffset(itemSize, itemSize * 2))
}
assertPositions(
expected = expected.toTypedArray(),
@@ -581,26 +580,26 @@
}
onAnimationFrame { fraction ->
- val increasingX = (fraction * itemSize).roundToInt()
- val decreasingX = (itemSize - itemSize * fraction).roundToInt()
+ val increasingX = fraction * itemSize
+ val decreasingX = itemSize - itemSize * fraction
assertPositions(
- 0 to AxisIntOffset(increasingX, (itemSizePlusSpacing * 3 * fraction).roundToInt()),
- 1 to AxisIntOffset(decreasingX, 0),
- 2 to AxisIntOffset(
+ 0 to AxisOffset(increasingX, itemSizePlusSpacing * 3 * fraction),
+ 1 to AxisOffset(decreasingX, 0f),
+ 2 to AxisOffset(
increasingX,
- itemSizePlusSpacing - (itemSizePlusSpacing * fraction).roundToInt()
+ itemSizePlusSpacing - itemSizePlusSpacing * fraction
),
- 3 to AxisIntOffset(decreasingX, itemSizePlusSpacing),
- 4 to AxisIntOffset(
+ 3 to AxisOffset(decreasingX, itemSizePlusSpacing),
+ 4 to AxisOffset(
increasingX,
- itemSizePlusSpacing * 2 - (itemSizePlusSpacing * fraction).roundToInt()
+ itemSizePlusSpacing * 2 - itemSizePlusSpacing * fraction
),
- 5 to AxisIntOffset(decreasingX, itemSizePlusSpacing * 2),
- 6 to AxisIntOffset(
+ 5 to AxisOffset(decreasingX, itemSizePlusSpacing * 2),
+ 6 to AxisOffset(
increasingX,
- itemSizePlusSpacing * 3 - (itemSizePlusSpacing * fraction).roundToInt()
+ itemSizePlusSpacing * 3 - itemSizePlusSpacing * fraction
),
- 7 to AxisIntOffset(decreasingX, itemSizePlusSpacing * 3),
+ 7 to AxisOffset(decreasingX, itemSizePlusSpacing * 3),
fraction = fraction
)
}
@@ -624,12 +623,12 @@
}
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(itemSize, 0),
- 2 to AxisIntOffset(0, itemSizePlusSpacing),
- 3 to AxisIntOffset(itemSize, itemSizePlusSpacing),
- 4 to AxisIntOffset(0, itemSizePlusSpacing * 2),
- 5 to AxisIntOffset(itemSize, itemSizePlusSpacing * 2)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(itemSize, 0f),
+ 2 to AxisOffset(0f, itemSizePlusSpacing),
+ 3 to AxisOffset(itemSize, itemSizePlusSpacing),
+ 4 to AxisOffset(0f, itemSizePlusSpacing * 2),
+ 5 to AxisOffset(itemSize, itemSizePlusSpacing * 2)
)
rule.runOnIdle {
@@ -638,24 +637,18 @@
onAnimationFrame { fraction ->
// item 1 moves to and item 8 moves from `gridSize`, right after the end edge
- val item1Offset = AxisIntOffset(
- itemSize,
- (gridSize * fraction).roundToInt()
- )
- val item8Offset = AxisIntOffset(
- itemSize,
- gridSize - (gridSize * fraction).roundToInt()
- )
+ val item1Offset = AxisOffset(itemSize, gridSize * fraction)
+ val item8Offset = AxisOffset(itemSize, gridSize - gridSize * fraction)
val screenSize = itemSize * 3 + spacing * 2
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
- add(0 to AxisIntOffset(0, 0))
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
+ add(0 to AxisOffset(0f, 0f))
if (item1Offset.mainAxis < screenSize) {
add(1 to item1Offset)
}
- add(2 to AxisIntOffset(0, itemSizePlusSpacing))
- add(3 to AxisIntOffset(itemSize, itemSizePlusSpacing))
- add(4 to AxisIntOffset(0, itemSizePlusSpacing * 2))
- add(5 to AxisIntOffset(itemSize, itemSizePlusSpacing * 2))
+ add(2 to AxisOffset(0f, itemSizePlusSpacing))
+ add(3 to AxisOffset(itemSize, itemSizePlusSpacing))
+ add(4 to AxisOffset(0f, itemSizePlusSpacing * 2))
+ add(5 to AxisOffset(itemSize, itemSizePlusSpacing * 2))
if (item8Offset.mainAxis < screenSize) {
add(8 to item8Offset)
}
@@ -684,12 +677,12 @@
}
assertPositions(
- 4 to AxisIntOffset(0, 0),
- 5 to AxisIntOffset(itemSize, 0),
- 6 to AxisIntOffset(0, itemSizePlusSpacing),
- 7 to AxisIntOffset(itemSize, itemSizePlusSpacing),
- 8 to AxisIntOffset(0, itemSizePlusSpacing * 2),
- 9 to AxisIntOffset(itemSize, itemSizePlusSpacing * 2)
+ 4 to AxisOffset(0f, 0f),
+ 5 to AxisOffset(itemSize, 0f),
+ 6 to AxisOffset(0f, itemSizePlusSpacing),
+ 7 to AxisOffset(itemSize, itemSizePlusSpacing),
+ 8 to AxisOffset(0f, itemSizePlusSpacing * 2),
+ 9 to AxisOffset(itemSize, itemSizePlusSpacing * 2)
)
rule.runOnIdle {
@@ -698,27 +691,27 @@
onAnimationFrame { fraction ->
// item 8 moves to and item 1 moves from `-itemSize`, right before the start edge
- val item1Offset = AxisIntOffset(
- 0,
- -itemSize + ((itemSize + itemSizePlusSpacing * 2) * fraction).roundToInt()
+ val item1Offset = AxisOffset(
+ 0f,
+ -itemSize + (itemSize + itemSizePlusSpacing * 2) * fraction
)
- val item8Offset = AxisIntOffset(
- 0,
+ val item8Offset = AxisOffset(
+ 0f,
itemSizePlusSpacing * 2 -
- ((itemSize + itemSizePlusSpacing * 2) * fraction).roundToInt()
+ (itemSize + itemSizePlusSpacing * 2) * fraction
)
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
if (item1Offset.mainAxis > -itemSize) {
add(1 to item1Offset)
}
- add(4 to AxisIntOffset(0, 0))
- add(5 to AxisIntOffset(itemSize, 0))
- add(6 to AxisIntOffset(0, itemSizePlusSpacing))
- add(7 to AxisIntOffset(itemSize, itemSizePlusSpacing))
+ add(4 to AxisOffset(0f, 0f))
+ add(5 to AxisOffset(itemSize, 0f))
+ add(6 to AxisOffset(0f, itemSizePlusSpacing))
+ add(7 to AxisOffset(itemSize, itemSizePlusSpacing))
if (item8Offset.mainAxis > -itemSize) {
add(8 to item8Offset)
}
- add(9 to AxisIntOffset(itemSize, itemSizePlusSpacing * 2))
+ add(9 to AxisOffset(itemSize, itemSizePlusSpacing * 2))
}
assertPositions(
expected = expected.toTypedArray(),
@@ -750,12 +743,12 @@
val line3Size = itemSize2
val line4Size = itemSize
assertPositions(
- 6 to AxisIntOffset(0, 0),
- 7 to AxisIntOffset(itemSize, 0),
- 8 to AxisIntOffset(0, line3Size),
- 9 to AxisIntOffset(itemSize, line3Size),
- 10 to AxisIntOffset(0, line3Size + line4Size),
- 11 to AxisIntOffset(itemSize, line3Size + line4Size)
+ 6 to AxisOffset(0f, 0f),
+ 7 to AxisOffset(itemSize, 0f),
+ 8 to AxisOffset(0f, line3Size),
+ 9 to AxisOffset(itemSize, line3Size),
+ 10 to AxisOffset(0f, line3Size + line4Size),
+ 11 to AxisOffset(itemSize, line3Size + line4Size)
)
rule.runOnIdle {
@@ -771,31 +764,31 @@
// item 2 moves from and item 4 moves to `0 - item size`, right before the start edge
val startItem2Offset = -item2Size
val item2Offset =
- startItem2Offset + ((itemSize2 - startItem2Offset) * fraction).roundToInt()
+ startItem2Offset + (itemSize2 - startItem2Offset) * fraction
val item8Size = itemSize /* the real size of the item 8 */
val endItem8Offset = -item8Size
- val item8Offset = line3Size - ((line3Size - endItem8Offset) * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
+ val item8Offset = line3Size - (line3Size - endItem8Offset) * fraction
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
if (item8Offset > -line4Size) {
- add(8 to AxisIntOffset(0, item8Offset))
+ add(8 to AxisOffset(0f, item8Offset))
} else {
rule.onNodeWithTag("8").assertIsNotDisplayed()
}
- add(6 to AxisIntOffset(0, 0))
- add(7 to AxisIntOffset(itemSize, 0))
+ add(6 to AxisOffset(0f, 0f))
+ add(7 to AxisOffset(itemSize, 0f))
if (item2Offset > -item2Size) {
- add(2 to AxisIntOffset(0, item2Offset))
+ add(2 to AxisOffset(0f, item2Offset))
} else {
rule.onNodeWithTag("2").assertIsNotDisplayed()
}
- add(9 to AxisIntOffset(itemSize, line3Size))
- add(10 to AxisIntOffset(
- 0,
- line3Size + line4Size - ((itemSize - itemSize3) * fraction).roundToInt()
+ add(9 to AxisOffset(itemSize, line3Size))
+ add(10 to AxisOffset(
+ 0f,
+ line3Size + line4Size - (itemSize - itemSize3) * fraction
))
- add(11 to AxisIntOffset(
+ add(11 to AxisOffset(
itemSize,
- line3Size + line4Size - ((itemSize - itemSize3) * fraction).roundToInt()
+ line3Size + line4Size - (itemSize - itemSize3) * fraction
))
}
assertPositions(
@@ -828,12 +821,12 @@
val line0Size = itemSize2
val line1Size = itemSize
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(itemSize, 0),
- 2 to AxisIntOffset(0, line0Size),
- 3 to AxisIntOffset(itemSize, line0Size),
- 4 to AxisIntOffset(0, line0Size + line1Size),
- 5 to AxisIntOffset(itemSize, line0Size + line1Size),
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(itemSize, 0f),
+ 2 to AxisOffset(0f, line0Size),
+ 3 to AxisOffset(itemSize, line0Size),
+ 4 to AxisOffset(0f, line0Size + line1Size),
+ 5 to AxisOffset(itemSize, line0Size + line1Size),
)
rule.runOnIdle {
@@ -846,28 +839,28 @@
val endItem2Offset = gridSize
val line4Size = itemSize3
val item2Offset =
- line0Size + ((endItem2Offset - line0Size) * fraction).roundToInt()
+ line0Size + (endItem2Offset - line0Size) * fraction
val item8Offset =
- startItem8Offset - ((startItem8Offset - line0Size) * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
- add(0 to AxisIntOffset(0, 0))
- add(1 to AxisIntOffset(itemSize, 0))
+ startItem8Offset - (startItem8Offset - line0Size) * fraction
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
+ add(0 to AxisOffset(0f, 0f))
+ add(1 to AxisOffset(itemSize, 0f))
if (item8Offset < gridSize) {
- add(8 to AxisIntOffset(0, item8Offset))
+ add(8 to AxisOffset(0f, item8Offset))
} else {
rule.onNodeWithTag("8").assertIsNotDisplayed()
}
- add(3 to AxisIntOffset(itemSize, line0Size))
- add(4 to AxisIntOffset(
- 0,
- line0Size + line1Size - ((line1Size - line4Size) * fraction).roundToInt()
+ add(3 to AxisOffset(itemSize, line0Size))
+ add(4 to AxisOffset(
+ 0f,
+ line0Size + line1Size - (line1Size - line4Size) * fraction
))
- add(5 to AxisIntOffset(
+ add(5 to AxisOffset(
itemSize,
- line0Size + line1Size - ((line1Size - line4Size) * fraction).roundToInt()
+ line0Size + line1Size - (line1Size - line4Size) * fraction
))
if (item2Offset < gridSize) {
- add(2 to AxisIntOffset(0, item2Offset))
+ add(2 to AxisOffset(0f, item2Offset))
} else {
rule.onNodeWithTag("2").assertIsNotDisplayed()
}
@@ -922,8 +915,8 @@
// 3 to itemSize * 2,
// crossAxis = listOf(
// 1 to 0,
- // 2 to item2Start + ((item2End - item2Start) * fraction).roundToInt(),
- // 3 to item3Start + ((item3End - item3Start) * fraction).roundToInt(),
+ // 2 to item2Start + ((item2End - item2Start) * fraction,
+ // 3 to item3Start + ((item3End - item3Start) * fraction,
// ),
// fraction = fraction
// )
@@ -960,9 +953,9 @@
// 2 to itemSize,
// 3 to itemSize * 2,
// crossAxis = listOf(
- // 1 to ((containerSize - itemSize) * fraction).roundToInt(),
- // 2 to ((containerSize - itemSize2) * fraction).roundToInt(),
- // 3 to ((containerSize - itemSize3) * fraction).roundToInt()
+ // 1 to ((containerSize - itemSize) * fraction,
+ // 2 to ((containerSize - itemSize2) * fraction,
+ // 3 to ((containerSize - itemSize3) * fraction
// ),
// fraction = fraction
// )
@@ -1013,8 +1006,8 @@
// 3 to itemSize * 2,
// crossAxis = listOf(
// 1 to 0,
- // 2 to ((itemSize / 2 - itemSize2 / 2) * fraction).roundToInt(),
- // 3 to ((itemSize / 2 - itemSize3 / 2) * fraction).roundToInt(),
+ // 2 to ((itemSize / 2 - itemSize2 / 2) * fraction,
+ // 3 to ((itemSize / 2 - itemSize3 / 2) * fraction,
// ),
// fraction = fraction
// )
@@ -1024,8 +1017,8 @@
@Test
fun moveItemToEndCausingNextItemsToAnimate_withContentPadding() {
var list by mutableStateOf(listOf(0, 1, 2, 3, 4))
- val rawStartPadding = 8
- val rawEndPadding = 12
+ val rawStartPadding = 8f
+ val rawEndPadding = 12f
val (startPaddingDp, endPaddingDp) = with(rule.density) {
rawStartPadding.toDp() to rawEndPadding.toDp()
}
@@ -1039,11 +1032,11 @@
val startPadding = if (reverseLayout) rawEndPadding else rawStartPadding
assertPositions(
- 0 to AxisIntOffset(0, startPadding),
- 1 to AxisIntOffset(0, startPadding + itemSize),
- 2 to AxisIntOffset(0, startPadding + itemSize * 2),
- 3 to AxisIntOffset(0, startPadding + itemSize * 3),
- 4 to AxisIntOffset(0, startPadding + itemSize * 4),
+ 0 to AxisOffset(0f, startPadding),
+ 1 to AxisOffset(0f, startPadding + itemSize),
+ 2 to AxisOffset(0f, startPadding + itemSize * 2),
+ 3 to AxisOffset(0f, startPadding + itemSize * 3),
+ 4 to AxisOffset(0f, startPadding + itemSize * 4),
)
rule.runOnIdle {
@@ -1052,22 +1045,22 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, startPadding),
- 1 to AxisIntOffset(
- 0,
- startPadding + itemSize + (itemSize * 3 * fraction).roundToInt()
+ 0 to AxisOffset(0f, startPadding),
+ 1 to AxisOffset(
+ 0f,
+ startPadding + itemSize + itemSize * 3 * fraction
),
- 2 to AxisIntOffset(
- 0,
- startPadding + itemSize * 2 - (itemSize * fraction).roundToInt()
+ 2 to AxisOffset(
+ 0f,
+ startPadding + itemSize * 2 - itemSize * fraction
),
- 3 to AxisIntOffset(
- 0,
- startPadding + itemSize * 3 - (itemSize * fraction).roundToInt()
+ 3 to AxisOffset(
+ 0f,
+ startPadding + itemSize * 3 - itemSize * fraction
),
- 4 to AxisIntOffset(
- 0,
- startPadding + itemSize * 4 - (itemSize * fraction).roundToInt()
+ 4 to AxisOffset(
+ 0f,
+ startPadding + itemSize * 4 - itemSize * fraction
),
fraction = fraction
)
@@ -1122,16 +1115,16 @@
rule.runOnIdle {
runBlocking {
- state.scrollToItem(0, itemSize / 2)
+ state.scrollToItem(0, (itemSize / 2).roundToInt())
}
}
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, -itemSize / 2),
- 1 to AxisIntOffset(0, itemSize / 2),
- 2 to AxisIntOffset(0, itemSize * 3 / 2),
- 3 to AxisIntOffset(0, itemSize * 5 / 2),
+ 0 to AxisOffset(0f, -itemSize / 2),
+ 1 to AxisOffset(0f, itemSize / 2),
+ 2 to AxisOffset(0f, itemSize * 3 / 2),
+ 3 to AxisOffset(0f, itemSize * 5 / 2),
fraction = fraction
)
}
@@ -1155,10 +1148,10 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, -itemSize / 2),
- 1 to AxisIntOffset(0, itemSize / 2),
- 2 to AxisIntOffset(0, itemSize * 3 / 2),
- 3 to AxisIntOffset(0, itemSize * 5 / 2),
+ 0 to AxisOffset(0f, -itemSize / 2),
+ 1 to AxisOffset(0f, itemSize / 2),
+ 2 to AxisOffset(0f, itemSize * 3 / 2),
+ 3 to AxisOffset(0f, itemSize * 5 / 2),
fraction = fraction
)
}
@@ -1182,10 +1175,10 @@
onAnimationFrame { fraction ->
assertPositions(
- 1 to AxisIntOffset(0, -itemSize / 2),
- 2 to AxisIntOffset(0, itemSize / 2),
- 3 to AxisIntOffset(0, itemSize * 3 / 2),
- 4 to AxisIntOffset(0, itemSize * 5 / 2),
+ 1 to AxisOffset(0f, -itemSize / 2),
+ 2 to AxisOffset(0f, itemSize / 2),
+ 3 to AxisOffset(0f, itemSize * 3 / 2),
+ 4 to AxisOffset(0f, itemSize * 5 / 2),
fraction = fraction
)
}
@@ -1209,10 +1202,10 @@
onAnimationFrame { fraction ->
assertPositions(
- 2 to AxisIntOffset(0, -itemSize / 2),
- 3 to AxisIntOffset(0, itemSize / 2),
- 4 to AxisIntOffset(0, itemSize * 3 / 2),
- 5 to AxisIntOffset(0, itemSize * 5 / 2),
+ 2 to AxisOffset(0f, -itemSize / 2),
+ 3 to AxisOffset(0f, itemSize / 2),
+ 4 to AxisOffset(0f, itemSize * 3 / 2),
+ 5 to AxisOffset(0f, itemSize * 5 / 2),
fraction = fraction
)
}
@@ -1236,10 +1229,10 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, -itemSize / 2),
- 1 to AxisIntOffset(0, itemSize / 2),
- 2 to AxisIntOffset(0, itemSize * 3 / 2),
- 3 to AxisIntOffset(0, itemSize * 5 / 2),
+ 0 to AxisOffset(0f, -itemSize / 2),
+ 1 to AxisOffset(0f, itemSize / 2),
+ 2 to AxisOffset(0f, itemSize * 3 / 2),
+ 3 to AxisOffset(0f, itemSize * 5 / 2),
fraction = fraction
)
}
@@ -1263,10 +1256,10 @@
onAnimationFrame { fraction ->
assertPositions(
- 2 to AxisIntOffset(0, -itemSize / 2),
- 3 to AxisIntOffset(0, itemSize / 2),
- 4 to AxisIntOffset(0, itemSize2 + itemSize / 2),
- 5 to AxisIntOffset(0, itemSize2 + itemSize * 3 / 2),
+ 2 to AxisOffset(0f, -itemSize / 2),
+ 3 to AxisOffset(0f, itemSize / 2),
+ 4 to AxisOffset(0f, itemSize2 + itemSize / 2),
+ 5 to AxisOffset(0f, itemSize2 + itemSize * 3 / 2),
fraction = fraction
)
}
@@ -1290,10 +1283,10 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, -itemSize / 2),
- 1 to AxisIntOffset(0, itemSize / 2),
- 2 to AxisIntOffset(0, itemSize2 + itemSize / 2),
- 3 to AxisIntOffset(0, itemSize2 + itemSize * 3 / 2),
+ 0 to AxisOffset(0f, -itemSize / 2),
+ 1 to AxisOffset(0f, itemSize / 2),
+ 2 to AxisOffset(0f, itemSize2 + itemSize / 2),
+ 3 to AxisOffset(0f, itemSize2 + itemSize * 3 / 2),
fraction = fraction
)
}
@@ -1310,12 +1303,12 @@
}
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(itemSize, 0),
- 2 to AxisIntOffset(itemSize * 2, 0),
- 3 to AxisIntOffset(0, itemSize),
- 4 to AxisIntOffset(itemSize, itemSize),
- 5 to AxisIntOffset(itemSize * 2, itemSize)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(itemSize, 0f),
+ 2 to AxisOffset(itemSize * 2, 0f),
+ 3 to AxisOffset(0f, itemSize),
+ 4 to AxisOffset(itemSize, itemSize),
+ 5 to AxisOffset(itemSize * 2, itemSize)
)
rule.runOnIdle {
@@ -1326,15 +1319,15 @@
onAnimationFrame { fraction ->
assertPositions(
- 6 to AxisIntOffset(0, -itemSize / 2),
- 7 to AxisIntOffset(itemSize, -itemSize / 2),
- 8 to AxisIntOffset(itemSize * 2, -itemSize / 2),
- 9 to AxisIntOffset(0, itemSize / 2),
- 10 to AxisIntOffset(itemSize, itemSize / 2),
- 11 to AxisIntOffset(itemSize * 2, itemSize / 2),
- 12 to AxisIntOffset(0, itemSize * 3 / 2),
- 13 to AxisIntOffset(itemSize, itemSize * 3 / 2),
- 14 to AxisIntOffset(itemSize * 2, itemSize * 3 / 2),
+ 6 to AxisOffset(0f, -itemSize / 2),
+ 7 to AxisOffset(itemSize, -itemSize / 2),
+ 8 to AxisOffset(itemSize * 2, -itemSize / 2),
+ 9 to AxisOffset(0f, itemSize / 2),
+ 10 to AxisOffset(itemSize, itemSize / 2),
+ 11 to AxisOffset(itemSize * 2, itemSize / 2),
+ 12 to AxisOffset(0f, itemSize * 3 / 2),
+ 13 to AxisOffset(itemSize, itemSize * 3 / 2),
+ 14 to AxisOffset(itemSize * 2, itemSize * 3 / 2),
fraction = fraction
)
}
@@ -1351,12 +1344,12 @@
}
assertPositions(
- 9 to AxisIntOffset(0, 0),
- 10 to AxisIntOffset(itemSize, 0),
- 11 to AxisIntOffset(itemSize * 2, 0),
- 12 to AxisIntOffset(0, itemSize),
- 13 to AxisIntOffset(itemSize, itemSize),
- 14 to AxisIntOffset(itemSize * 2, itemSize)
+ 9 to AxisOffset(0f, 0f),
+ 10 to AxisOffset(itemSize, 0f),
+ 11 to AxisOffset(itemSize * 2, 0f),
+ 12 to AxisOffset(0f, itemSize),
+ 13 to AxisOffset(itemSize, itemSize),
+ 14 to AxisOffset(itemSize * 2, itemSize)
)
rule.runOnIdle {
@@ -1367,15 +1360,15 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, -itemSize / 2),
- 1 to AxisIntOffset(itemSize, -itemSize / 2),
- 2 to AxisIntOffset(itemSize * 2, -itemSize / 2),
- 3 to AxisIntOffset(0, itemSize / 2),
- 4 to AxisIntOffset(itemSize, itemSize / 2),
- 5 to AxisIntOffset(itemSize * 2, itemSize / 2),
- 6 to AxisIntOffset(0, itemSize * 3 / 2),
- 7 to AxisIntOffset(itemSize, itemSize * 3 / 2),
- 8 to AxisIntOffset(itemSize * 2, itemSize * 3 / 2),
+ 0 to AxisOffset(0f, -itemSize / 2),
+ 1 to AxisOffset(itemSize, -itemSize / 2),
+ 2 to AxisOffset(itemSize * 2, -itemSize / 2),
+ 3 to AxisOffset(0f, itemSize / 2),
+ 4 to AxisOffset(itemSize, itemSize / 2),
+ 5 to AxisOffset(itemSize * 2, itemSize / 2),
+ 6 to AxisOffset(0f, itemSize * 3 / 2),
+ 7 to AxisOffset(itemSize, itemSize * 3 / 2),
+ 8 to AxisOffset(itemSize * 2, itemSize * 3 / 2),
fraction = fraction
)
}
@@ -1396,12 +1389,12 @@
}
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(itemSize, 0),
- 2 to AxisIntOffset(itemSize * 2, 0),
- 3 to AxisIntOffset(0, itemSize),
- 4 to AxisIntOffset(itemSize, itemSize),
- 5 to AxisIntOffset(itemSize * 2, itemSize)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(itemSize, 0f),
+ 2 to AxisOffset(itemSize * 2, 0f),
+ 3 to AxisOffset(0f, itemSize),
+ 4 to AxisOffset(itemSize, itemSize),
+ 5 to AxisOffset(itemSize * 2, itemSize)
)
rule.runOnIdle {
@@ -1412,12 +1405,12 @@
onAnimationFrame { fraction ->
assertPositions(
- 6 to AxisIntOffset(0, -itemSize / 2),
- 7 to AxisIntOffset(itemSize, -itemSize / 2),
- 8 to AxisIntOffset(itemSize * 2, -itemSize / 2),
- 9 to AxisIntOffset(0, itemSize / 2), // 3 spans
- 10 to AxisIntOffset(0, itemSize * 3 / 2), // 2 spans
- 11 to AxisIntOffset(itemSize * 2, itemSize * 3 / 2),
+ 6 to AxisOffset(0f, -itemSize / 2),
+ 7 to AxisOffset(itemSize, -itemSize / 2),
+ 8 to AxisOffset(itemSize * 2, -itemSize / 2),
+ 9 to AxisOffset(0f, itemSize / 2), // 3 spans
+ 10 to AxisOffset(0f, itemSize * 3 / 2), // 2 spans
+ 11 to AxisOffset(itemSize * 2, itemSize * 3 / 2),
fraction = fraction
)
}
@@ -1438,12 +1431,12 @@
}
assertPositions(
- 6 to AxisIntOffset(0, 0),
- 7 to AxisIntOffset(itemSize, 0),
- 8 to AxisIntOffset(itemSize * 2, 0),
- 9 to AxisIntOffset(0, itemSize),
- 10 to AxisIntOffset(itemSize, itemSize),
- 11 to AxisIntOffset(itemSize * 2, itemSize)
+ 6 to AxisOffset(0f, 0f),
+ 7 to AxisOffset(itemSize, 0f),
+ 8 to AxisOffset(itemSize * 2, 0f),
+ 9 to AxisOffset(0f, itemSize),
+ 10 to AxisOffset(itemSize, itemSize),
+ 11 to AxisOffset(itemSize * 2, itemSize)
)
rule.runOnIdle {
@@ -1454,12 +1447,12 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, -itemSize / 2),
- 1 to AxisIntOffset(itemSize, -itemSize / 2),
- 2 to AxisIntOffset(itemSize * 2, -itemSize / 2),
- 3 to AxisIntOffset(0, itemSize / 2), // 3 spans
- 4 to AxisIntOffset(0, itemSize * 3 / 2), // 2 spans
- 5 to AxisIntOffset(itemSize * 2, itemSize * 3 / 2),
+ 0 to AxisOffset(0f, -itemSize / 2),
+ 1 to AxisOffset(itemSize, -itemSize / 2),
+ 2 to AxisOffset(itemSize * 2, -itemSize / 2),
+ 3 to AxisOffset(0f, itemSize / 2), // 3 spans
+ 4 to AxisOffset(0f, itemSize * 3 / 2), // 2 spans
+ 5 to AxisOffset(itemSize * 2, itemSize * 3 / 2),
fraction = fraction
)
}
@@ -1486,12 +1479,12 @@
}
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(itemSize, 0),
- 2 to AxisIntOffset(itemSize * 2, 0),
- 3 to AxisIntOffset(0, itemSize),
- 4 to AxisIntOffset(itemSize, itemSize),
- 5 to AxisIntOffset(itemSize * 2, itemSize)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(itemSize, 0f),
+ 2 to AxisOffset(itemSize * 2, 0f),
+ 3 to AxisOffset(0f, itemSize),
+ 4 to AxisOffset(itemSize, itemSize),
+ 5 to AxisOffset(itemSize * 2, itemSize)
)
rule.runOnIdle {
@@ -1503,12 +1496,12 @@
onAnimationFrame { fraction ->
val startOffset = -itemSize / 2
assertPositions(
- 6 to AxisIntOffset(0, startOffset),
- 7 to AxisIntOffset(itemSize, startOffset),
- 8 to AxisIntOffset(itemSize * 2, startOffset),
- 9 to AxisIntOffset(0, startOffset + itemSize2), // 3 spans
- 10 to AxisIntOffset(0, startOffset + itemSize2 + itemSize3), // 2 spans
- 11 to AxisIntOffset(itemSize * 2, startOffset + itemSize2 + itemSize3),
+ 6 to AxisOffset(0f, startOffset),
+ 7 to AxisOffset(itemSize, startOffset),
+ 8 to AxisOffset(itemSize * 2, startOffset),
+ 9 to AxisOffset(0f, startOffset + itemSize2), // 3 spans
+ 10 to AxisOffset(0f, startOffset + itemSize2 + itemSize3), // 2 spans
+ 11 to AxisOffset(itemSize * 2, startOffset + itemSize2 + itemSize3),
fraction = fraction
)
}
@@ -1535,12 +1528,12 @@
}
assertPositions(
- 6 to AxisIntOffset(0, 0),
- 7 to AxisIntOffset(itemSize, 0),
- 8 to AxisIntOffset(itemSize * 2, 0),
- 9 to AxisIntOffset(0, itemSize),
- 10 to AxisIntOffset(itemSize, itemSize),
- 11 to AxisIntOffset(itemSize * 2, itemSize)
+ 6 to AxisOffset(0f, 0f),
+ 7 to AxisOffset(itemSize, 0f),
+ 8 to AxisOffset(itemSize * 2, 0f),
+ 9 to AxisOffset(0f, itemSize),
+ 10 to AxisOffset(itemSize, itemSize),
+ 11 to AxisOffset(itemSize * 2, itemSize)
)
rule.runOnIdle {
@@ -1552,12 +1545,12 @@
onAnimationFrame { fraction ->
val startOffset = -itemSize2 / 2
assertPositions(
- 0 to AxisIntOffset(0, startOffset),
- 1 to AxisIntOffset(itemSize, startOffset),
- 2 to AxisIntOffset(itemSize * 2, startOffset),
- 3 to AxisIntOffset(0, startOffset + itemSize2), // 3 spans
- 4 to AxisIntOffset(0, startOffset + itemSize2 + itemSize3), // 2 spans
- 5 to AxisIntOffset(itemSize * 2, startOffset + itemSize2 + itemSize3),
+ 0 to AxisOffset(0f, startOffset),
+ 1 to AxisOffset(itemSize, startOffset),
+ 2 to AxisOffset(itemSize * 2, startOffset),
+ 3 to AxisOffset(0f, startOffset + itemSize2), // 3 spans
+ 4 to AxisOffset(0f, startOffset + itemSize2 + itemSize3), // 2 spans
+ 5 to AxisOffset(itemSize * 2, startOffset + itemSize2 + itemSize3),
fraction = fraction
)
}
@@ -1577,10 +1570,10 @@
}
assertLayoutInfoPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(itemSize, 0),
- 2 to AxisIntOffset(0, itemSize),
- 3 to AxisIntOffset(itemSize, itemSize)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(itemSize, 0f),
+ 2 to AxisOffset(0f, itemSize),
+ 3 to AxisOffset(itemSize, itemSize)
)
rule.runOnIdle {
@@ -1588,18 +1581,18 @@
}
onAnimationFrame { fraction ->
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
- add(0 to AxisIntOffset(0, 0))
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
+ add(0 to AxisOffset(0f, 0f))
add(
- 2 to AxisIntOffset(
- (itemSize * fraction).roundToInt(),
- (itemSize * (1f - fraction)).roundToInt()
+ 2 to AxisOffset(
+ itemSize * fraction,
+ itemSize * (1f - fraction)
)
)
- val item4and6MainAxis = gridSize - ((gridSize - itemSize) * fraction).roundToInt()
+ val item4and6MainAxis = gridSize - (gridSize - itemSize) * fraction
if (item4and6MainAxis < gridSize) {
- add(4 to AxisIntOffset(0, item4and6MainAxis))
- add(6 to AxisIntOffset(itemSize, item4and6MainAxis))
+ add(4 to AxisOffset(0f, item4and6MainAxis))
+ add(6 to AxisOffset(itemSize, item4and6MainAxis))
} else {
rule.onNodeWithTag("4").assertIsNotDisplayed()
rule.onNodeWithTag("6").assertIsNotDisplayed()
@@ -1629,10 +1622,10 @@
}
assertLayoutInfoPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(itemSize, 0),
- 2 to AxisIntOffset(0, itemSize),
- 3 to AxisIntOffset(itemSize, itemSize)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(itemSize, 0f),
+ 2 to AxisOffset(0f, itemSize),
+ 3 to AxisOffset(itemSize, itemSize)
)
rule.runOnIdle {
@@ -1640,20 +1633,20 @@
}
onAnimationFrame { fraction ->
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
- add(0 to AxisIntOffset(0, 0))
- val item4MainAxis = gridSize - (gridSize * fraction).roundToInt()
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
+ add(0 to AxisOffset(0f, 0f))
+ val item4MainAxis = gridSize - gridSize * fraction
if (item4MainAxis < gridSize) {
add(
- 4 to AxisIntOffset(itemSize, item4MainAxis)
+ 4 to AxisOffset(itemSize, item4MainAxis)
)
} else {
rule.onNodeWithTag("4").assertIsNotDisplayed()
}
- val item6MainAxis = gridSize + itemSize - (gridSize * fraction).roundToInt()
+ val item6MainAxis = gridSize + itemSize - gridSize * fraction
if (item6MainAxis < gridSize) {
add(
- 6 to AxisIntOffset(0, item6MainAxis)
+ 6 to AxisOffset(0f, item6MainAxis)
)
} else {
rule.onNodeWithTag("6").assertIsNotDisplayed()
@@ -1686,11 +1679,11 @@
onAnimationFrame { fraction ->
// item 1 moves to `gridSize`
- val item1Offset = itemSize + ((gridSize - itemSize) * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
- add(0 to AxisIntOffset(0, 0))
+ val item1Offset = itemSize + (gridSize - itemSize) * fraction
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
+ add(0 to AxisOffset(0f, 0f))
if (item1Offset < gridSize) {
- add(1 to AxisIntOffset(0, item1Offset))
+ add(1 to AxisOffset(0f, item1Offset))
} else {
rule.onNodeWithTag("1").assertIsNotDisplayed()
}
@@ -1714,9 +1707,9 @@
}
assertPositions(
- 3 to AxisIntOffset(0, 0),
- 4 to AxisIntOffset(0, itemSize),
- 5 to AxisIntOffset(0, itemSize * 2)
+ 3 to AxisOffset(0f, 0f),
+ 4 to AxisOffset(0f, itemSize),
+ 5 to AxisOffset(0f, itemSize * 2)
)
rule.runOnIdle {
@@ -1725,30 +1718,30 @@
onAnimationFrame { fraction ->
// item 2 moves from and item 5 moves to `-itemSize`, right before the start edge
- val item2Offset = -itemSize + (itemSize * 3 * fraction).roundToInt()
- val item5Offset = itemSize * 2 - (itemSize * 3 * fraction).roundToInt()
+ val item2Offset = -itemSize + itemSize * 3 * fraction
+ val item5Offset = itemSize * 2 - itemSize * 3 * fraction
// item 1 moves from and item 4 moves to `-itemSize * 2`, right before item 2
- val item1Offset = -itemSize * 2 + (itemSize * 3 * fraction).roundToInt()
- val item4Offset = itemSize - (itemSize * 3 * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
+ val item1Offset = -itemSize * 2 + itemSize * 3 * fraction
+ val item4Offset = itemSize - itemSize * 3 * fraction
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
if (item1Offset > -itemSize) {
- add(1 to AxisIntOffset(0, item1Offset))
+ add(1 to AxisOffset(0f, item1Offset))
} else {
rule.onNodeWithTag("1").assertIsNotDisplayed()
}
if (item2Offset > -itemSize) {
- add(2 to AxisIntOffset(0, item2Offset))
+ add(2 to AxisOffset(0f, item2Offset))
} else {
rule.onNodeWithTag("2").assertIsNotDisplayed()
}
- add(3 to AxisIntOffset(0, 0))
+ add(3 to AxisOffset(0f, 0f))
if (item4Offset > -itemSize) {
- add(4 to AxisIntOffset(0, item4Offset))
+ add(4 to AxisOffset(0f, item4Offset))
} else {
rule.onNodeWithTag("4").assertIsNotDisplayed()
}
if (item5Offset > -itemSize) {
- add(5 to AxisIntOffset(0, item5Offset))
+ add(5 to AxisOffset(0f, item5Offset))
} else {
rule.onNodeWithTag("5").assertIsNotDisplayed()
}
@@ -1772,9 +1765,9 @@
}
assertPositions(
- 3 to AxisIntOffset(0, 0),
- 4 to AxisIntOffset(0, itemSize),
- 5 to AxisIntOffset(0, itemSize * 2)
+ 3 to AxisOffset(0f, 0f),
+ 4 to AxisOffset(0f, itemSize),
+ 5 to AxisOffset(0f, itemSize * 2)
)
rule.runOnIdle {
@@ -1783,30 +1776,30 @@
onAnimationFrame { fraction ->
// item 2 moves from and item 4 moves to `-itemSize`, right before the start edge
- val item2Offset = -itemSize + (itemSize * 2 * fraction).roundToInt()
- val item4Offset = itemSize - (itemSize * 2 * fraction).roundToInt()
+ val item2Offset = -itemSize + itemSize * 2 * fraction
+ val item4Offset = itemSize - itemSize * 2 * fraction
// item 1 moves from and item 5 moves to `-itemSize * 2`, right before item 2
- val item1Offset = -itemSize * 2 + (itemSize * 4 * fraction).roundToInt()
- val item5Offset = itemSize * 2 - (itemSize * 4 * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
+ val item1Offset = -itemSize * 2 + itemSize * 4 * fraction
+ val item5Offset = itemSize * 2 - itemSize * 4 * fraction
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
if (item1Offset > -itemSize) {
- add(1 to AxisIntOffset(0, item1Offset))
+ add(1 to AxisOffset(0f, item1Offset))
} else {
rule.onNodeWithTag("1").assertIsNotDisplayed()
}
if (item2Offset > -itemSize) {
- add(2 to AxisIntOffset(0, item2Offset))
+ add(2 to AxisOffset(0f, item2Offset))
} else {
rule.onNodeWithTag("2").assertIsNotDisplayed()
}
- add(3 to AxisIntOffset(0, 0))
+ add(3 to AxisOffset(0f, 0f))
if (item4Offset > -itemSize) {
- add(4 to AxisIntOffset(0, item4Offset))
+ add(4 to AxisOffset(0f, item4Offset))
} else {
rule.onNodeWithTag("4").assertIsNotDisplayed()
}
if (item5Offset > -itemSize) {
- add(5 to AxisIntOffset(0, item5Offset))
+ add(5 to AxisOffset(0f, item5Offset))
} else {
rule.onNodeWithTag("5").assertIsNotDisplayed()
}
@@ -1830,10 +1823,10 @@
}
assertPositions(
- 2 to AxisIntOffset(0, 0),
- 3 to AxisIntOffset(itemSize, 0),
- 4 to AxisIntOffset(0, itemSize),
- 5 to AxisIntOffset(itemSize, itemSize)
+ 2 to AxisOffset(0f, 0f),
+ 3 to AxisOffset(itemSize, 0f),
+ 4 to AxisOffset(0f, itemSize),
+ 5 to AxisOffset(itemSize, itemSize)
)
rule.runOnIdle {
@@ -1843,21 +1836,21 @@
onAnimationFrame { fraction ->
// items 0 and 2 moves from and items 4 and 5 moves to `-itemSize`,
// right before the start edge
- val items0and1Offset = -itemSize + (itemSize * 2 * fraction).roundToInt()
- val items4and5Offset = itemSize - (itemSize * 2 * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
+ val items0and1Offset = -itemSize + itemSize * 2 * fraction
+ val items4and5Offset = itemSize - itemSize * 2 * fraction
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
if (items0and1Offset > -itemSize) {
- add(0 to AxisIntOffset(0, items0and1Offset))
- add(1 to AxisIntOffset(itemSize, items0and1Offset))
+ add(0 to AxisOffset(0f, items0and1Offset))
+ add(1 to AxisOffset(itemSize, items0and1Offset))
} else {
rule.onNodeWithTag("0").assertIsNotDisplayed()
rule.onNodeWithTag("1").assertIsNotDisplayed()
}
- add(2 to AxisIntOffset(0, 0))
- add(3 to AxisIntOffset(itemSize, 0))
+ add(2 to AxisOffset(0f, 0f))
+ add(3 to AxisOffset(itemSize, 0f))
if (items4and5Offset > -itemSize) {
- add(4 to AxisIntOffset(0, items4and5Offset))
- add(5 to AxisIntOffset(itemSize, items4and5Offset))
+ add(4 to AxisOffset(0f, items4and5Offset))
+ add(5 to AxisOffset(itemSize, items4and5Offset))
} else {
rule.onNodeWithTag("4").assertIsNotDisplayed()
rule.onNodeWithTag("5").assertIsNotDisplayed()
@@ -1884,9 +1877,9 @@
}
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(0, itemSize),
- 2 to AxisIntOffset(0, itemSize * 2)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(0f, itemSize),
+ 2 to AxisOffset(0f, itemSize * 2)
)
rule.runOnIdle {
@@ -1895,30 +1888,30 @@
onAnimationFrame { fraction ->
// item 1 moves to and item 3 moves from `gridSize`, right after the end edge
- val item1Offset = itemSize + ((gridSize - itemSize) * fraction).roundToInt()
- val item3Offset = gridSize - ((gridSize - itemSize) * fraction).roundToInt()
+ val item1Offset = itemSize + (gridSize - itemSize) * fraction
+ val item3Offset = gridSize - (gridSize - itemSize) * fraction
// item 2 moves to and item 4 moves from `gridSize + itemSize`, right after item 4
- val item2Offset = itemSize * 2 + ((gridSize - itemSize) * fraction).roundToInt()
- val item4Offset = gridSize + itemSize - ((gridSize - itemSize) * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
- add(0 to AxisIntOffset(0, 0))
+ val item2Offset = itemSize * 2 + (gridSize - itemSize) * fraction
+ val item4Offset = gridSize + itemSize - (gridSize - itemSize) * fraction
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
+ add(0 to AxisOffset(0f, 0f))
if (item1Offset < gridSize) {
- add(1 to AxisIntOffset(0, item1Offset))
+ add(1 to AxisOffset(0f, item1Offset))
} else {
rule.onNodeWithTag("1").assertIsNotDisplayed()
}
if (item2Offset < gridSize) {
- add(2 to AxisIntOffset(0, item2Offset))
+ add(2 to AxisOffset(0f, item2Offset))
} else {
rule.onNodeWithTag("2").assertIsNotDisplayed()
}
if (item3Offset < gridSize) {
- add(3 to AxisIntOffset(0, item3Offset))
+ add(3 to AxisOffset(0f, item3Offset))
} else {
rule.onNodeWithTag("3").assertIsNotDisplayed()
}
if (item4Offset < gridSize) {
- add(4 to AxisIntOffset(0, item4Offset))
+ add(4 to AxisOffset(0f, item4Offset))
} else {
rule.onNodeWithTag("4").assertIsNotDisplayed()
}
@@ -1944,9 +1937,9 @@
}
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(0, itemSize),
- 2 to AxisIntOffset(0, itemSize * 2)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(0f, itemSize),
+ 2 to AxisOffset(0f, itemSize * 2)
)
rule.runOnIdle {
@@ -1955,31 +1948,31 @@
onAnimationFrame { fraction ->
// item 2 moves to and item 3 moves from `gridSize`, right after the end edge
- val item2Offset = itemSize * 2 + ((gridSize - itemSize * 2) * fraction).roundToInt()
- val item3Offset = gridSize - ((gridSize - itemSize * 2) * fraction).roundToInt()
+ val item2Offset = itemSize * 2 + (gridSize - itemSize * 2) * fraction
+ val item3Offset = gridSize - (gridSize - itemSize * 2) * fraction
// item 1 moves to and item 4 moves from `gridSize + itemSize`, right after item 4
- val item1Offset = itemSize + ((gridSize + itemSize - itemSize) * fraction).roundToInt()
+ val item1Offset = itemSize + (gridSize + itemSize - itemSize) * fraction
val item4Offset =
- gridSize + itemSize - ((gridSize + itemSize - itemSize) * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
- add(0 to AxisIntOffset(0, 0))
+ gridSize + itemSize - (gridSize + itemSize - itemSize) * fraction
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
+ add(0 to AxisOffset(0f, 0f))
if (item1Offset < gridSize) {
- add(1 to AxisIntOffset(0, item1Offset))
+ add(1 to AxisOffset(0f, item1Offset))
} else {
rule.onNodeWithTag("1").assertIsNotDisplayed()
}
if (item2Offset < gridSize) {
- add(2 to AxisIntOffset(0, item2Offset))
+ add(2 to AxisOffset(0f, item2Offset))
} else {
rule.onNodeWithTag("2").assertIsNotDisplayed()
}
if (item3Offset < gridSize) {
- add(3 to AxisIntOffset(0, item3Offset))
+ add(3 to AxisOffset(0f, item3Offset))
} else {
rule.onNodeWithTag("3").assertIsNotDisplayed()
}
if (item4Offset < gridSize) {
- add(4 to AxisIntOffset(0, item4Offset))
+ add(4 to AxisOffset(0f, item4Offset))
} else {
rule.onNodeWithTag("4").assertIsNotDisplayed()
}
@@ -2005,10 +1998,10 @@
}
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(itemSize, 0),
- 2 to AxisIntOffset(0, itemSize),
- 3 to AxisIntOffset(itemSize, itemSize)
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(itemSize, 0f),
+ 2 to AxisOffset(0f, itemSize),
+ 3 to AxisOffset(itemSize, itemSize)
)
rule.runOnIdle {
@@ -2018,21 +2011,21 @@
onAnimationFrame { fraction ->
// items 4 and 5 moves from and items 2 and 3 moves to `gridSize`,
// right before the start edge
- val items4and5Offset = gridSize - ((gridSize - itemSize) * fraction).roundToInt()
- val items2and3Offset = itemSize + ((gridSize - itemSize) * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, IntOffset>>().apply {
- add(0 to AxisIntOffset(0, 0))
- add(1 to AxisIntOffset(itemSize, 0))
+ val items4and5Offset = gridSize - (gridSize - itemSize) * fraction
+ val items2and3Offset = itemSize + (gridSize - itemSize) * fraction
+ val expected = mutableListOf<Pair<Any, Offset>>().apply {
+ add(0 to AxisOffset(0f, 0f))
+ add(1 to AxisOffset(itemSize, 0f))
if (items2and3Offset < gridSize) {
- add(2 to AxisIntOffset(0, items2and3Offset))
- add(3 to AxisIntOffset(itemSize, items2and3Offset))
+ add(2 to AxisOffset(0f, items2and3Offset))
+ add(3 to AxisOffset(itemSize, items2and3Offset))
} else {
rule.onNodeWithTag("2").assertIsNotDisplayed()
rule.onNodeWithTag("3").assertIsNotDisplayed()
}
if (items4and5Offset < gridSize) {
- add(4 to AxisIntOffset(0, items4and5Offset))
- add(5 to AxisIntOffset(itemSize, items4and5Offset))
+ add(4 to AxisOffset(0f, items4and5Offset))
+ add(5 to AxisOffset(itemSize, items4and5Offset))
} else {
rule.onNodeWithTag("4").assertIsNotDisplayed()
rule.onNodeWithTag("5").assertIsNotDisplayed()
@@ -2062,8 +2055,8 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(0, itemSize),
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(0f, itemSize),
fraction = fraction
)
rule.onNodeWithTag("2").assertIsNotDisplayed()
@@ -2087,25 +2080,26 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to AxisIntOffset(0, 0),
- 1 to AxisIntOffset(0, itemSize),
- 2 to AxisIntOffset(0, itemSize * 2),
+ 0 to AxisOffset(0f, 0f),
+ 1 to AxisOffset(0f, itemSize),
+ 2 to AxisOffset(0f, itemSize * 2),
fraction = fraction
)
}
}
- private fun AxisIntOffset(crossAxis: Int, mainAxis: Int) =
- if (isVertical) IntOffset(crossAxis, mainAxis) else IntOffset(mainAxis, crossAxis)
+ private fun AxisOffset(crossAxis: Float, mainAxis: Float) =
+ if (isVertical) Offset(crossAxis, mainAxis) else Offset(mainAxis, crossAxis)
- private val IntOffset.mainAxis: Int get() = if (isVertical) y else x
+ private val Offset.mainAxis: Float get() = if (isVertical) y else x
private fun assertPositions(
- vararg expected: Pair<Any, IntOffset>,
- crossAxis: List<Pair<Any, Int>>? = null,
+ vararg expected: Pair<Any, Offset>,
+ crossAxis: List<Pair<Any, Float>>? = null,
fraction: Float? = null,
autoReverse: Boolean = reverseLayout
) {
+ val roundedExpected = expected.map { it.first to it.second.round() }
with(rule.density) {
val actual = expected.map {
val actualOffset = rule.onNodeWithTag(it.first.toString())
@@ -2123,7 +2117,7 @@
assertWithMessage("Fraction=$fraction").that(actual)
}
subject.isEqualTo(
- listOf(*expected).let { list ->
+ roundedExpected.let { list ->
if (!autoReverse) {
list
} else {
@@ -2169,14 +2163,14 @@
"CrossAxis" + if (fraction != null) "for fraction=$fraction" else ""
)
.that(actualCross)
- .isEqualTo(crossAxis)
+ .isEqualTo(crossAxis.map { it.first to it.second.roundToInt() })
}
}
}
- private fun assertLayoutInfoPositions(vararg offsets: Pair<Any, IntOffset>) {
+ private fun assertLayoutInfoPositions(vararg offsets: Pair<Any, Offset>) {
rule.runOnIdle {
- assertThat(visibleItemsOffsets).isEqualTo(listOf(*offsets))
+ assertThat(visibleItemsOffsets).isEqualTo(offsets.map { it.first to it.second.round() })
}
}
diff --git a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyListAnimateItemPlacementTest.kt b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyListAnimateItemPlacementTest.kt
index 3c0b201..4a6e880 100644
--- a/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyListAnimateItemPlacementTest.kt
+++ b/tv/tv-foundation/src/androidTest/java/androidx/tv/foundation/lazy/list/LazyListAnimateItemPlacementTest.kt
@@ -65,9 +65,9 @@
import org.junit.Before
import org.junit.Rule
import org.junit.Test
-import org.junit.runner.RunWith
import org.junit.runners.Parameterized
import kotlin.math.roundToInt
+import org.junit.runner.RunWith
@LargeTest
@RunWith(Parameterized::class)
@@ -80,15 +80,15 @@
@get:Rule
val rule = createComposeRule()
- private val itemSize: Int = 50
+ private val itemSize: Float = 50f
private var itemSizeDp: Dp = Dp.Infinity
- private val itemSize2: Int = 30
+ private val itemSize2: Float = 30f
private var itemSize2Dp: Dp = Dp.Infinity
- private val itemSize3: Int = 20
+ private val itemSize3: Float = 20f
private var itemSize3Dp: Dp = Dp.Infinity
- private val containerSize: Int = itemSize * 5
+ private val containerSize: Float = itemSize * 5
private var containerSizeDp: Dp = Dp.Infinity
- private val spacing: Int = 10
+ private val spacing: Float = 10f
private var spacingDp: Dp = Dp.Infinity
private val itemSizePlusSpacing = itemSize + spacing
private var itemSizePlusSpacingDp = Dp.Infinity
@@ -118,7 +118,7 @@
}
}
- assertPositions(0 to 0, 1 to itemSize)
+ assertPositions(0 to 0f, 1 to itemSize)
rule.runOnIdle {
list = listOf(1, 0)
@@ -126,8 +126,8 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to 0 + (itemSize * fraction).roundToInt(),
- 1 to itemSize - (itemSize * fraction).roundToInt(),
+ 0 to 0 + itemSize * fraction,
+ 1 to itemSize - itemSize * fraction,
fraction = fraction
)
}
@@ -144,7 +144,7 @@
}
}
- assertLayoutInfoPositions(0 to 0, 1 to itemSize)
+ assertLayoutInfoPositions(0 to 0f, 1 to itemSize)
rule.runOnIdle {
list = listOf(1, 0)
@@ -152,7 +152,7 @@
onAnimationFrame {
// fraction doesn't affect the offsets in layout info
- assertLayoutInfoPositions(1 to 0, 0 to itemSize)
+ assertLayoutInfoPositions(1 to 0f, 0 to itemSize)
}
}
@@ -168,7 +168,7 @@
}
assertPositions(
- 0 to 0,
+ 0 to 0f,
1 to itemSize,
2 to itemSize * 2,
3 to itemSize * 3,
@@ -181,11 +181,11 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to 0 + (itemSize * 4 * fraction).roundToInt(),
+ 0 to 0 + itemSize * 4 * fraction,
1 to itemSize,
2 to itemSize * 2,
3 to itemSize * 3,
- 4 to itemSize * 4 - (itemSize * 4 * fraction).roundToInt(),
+ 4 to itemSize * 4 - itemSize * 4 * fraction,
fraction = fraction
)
}
@@ -203,7 +203,7 @@
}
assertPositions(
- 0 to 0,
+ 0 to 0f,
1 to itemSize,
2 to itemSize * 2,
3 to itemSize * 3,
@@ -216,11 +216,11 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to 0 + (itemSize * 4 * fraction).roundToInt(),
- 1 to itemSize - (itemSize * fraction).roundToInt(),
- 2 to itemSize * 2 - (itemSize * fraction).roundToInt(),
- 3 to itemSize * 3 - (itemSize * fraction).roundToInt(),
- 4 to itemSize * 4 - (itemSize * fraction).roundToInt(),
+ 0 to 0 + itemSize * 4 * fraction,
+ 1 to itemSize - itemSize * fraction,
+ 2 to itemSize * 2 - itemSize * fraction,
+ 3 to itemSize * 3 - itemSize * fraction,
+ 4 to itemSize * 4 - itemSize * fraction,
fraction = fraction
)
}
@@ -250,10 +250,10 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to 0,
+ 0 to 0f,
1 to itemSize,
- 2 to itemSize * 2 + (itemSize * fraction).roundToInt(),
- 3 to itemSize * 3 + (itemSize * fraction).roundToInt(),
+ 2 to itemSize * 2 + itemSize * fraction,
+ 3 to itemSize * 3 + itemSize * fraction,
fraction = fraction
)
}
@@ -277,9 +277,9 @@
onAnimationFrame { fraction ->
assertPositions(
0 to itemSize * 4,
- 1 to itemSize - (itemSize * fraction).roundToInt(),
+ 1 to itemSize - itemSize * fraction,
2 to itemSize,
- 3 to itemSize * 3 - (itemSize * fraction).roundToInt(),
+ 3 to itemSize * 3 - itemSize * fraction,
4 to itemSize * 3,
fraction = fraction
)
@@ -305,11 +305,11 @@
onAnimationFrame(duration = Duration * 2) { fraction ->
val shorterAnimFraction = (fraction * 2).coerceAtMost(1f)
assertPositions(
- 0 to 0 + (itemSize * 4 * shorterAnimFraction).roundToInt(),
- 1 to itemSize - (itemSize * fraction).roundToInt(),
- 2 to itemSize * 2 - (itemSize * shorterAnimFraction).roundToInt(),
- 3 to itemSize * 3 - (itemSize * fraction).roundToInt(),
- 4 to itemSize * 4 - (itemSize * shorterAnimFraction).roundToInt(),
+ 0 to 0 + itemSize * 4 * shorterAnimFraction,
+ 1 to itemSize - itemSize * fraction,
+ 2 to itemSize * 2 - itemSize * shorterAnimFraction,
+ 3 to itemSize * 3 - itemSize * fraction,
+ 4 to itemSize * 4 - itemSize * shorterAnimFraction,
fraction = fraction
)
}
@@ -328,7 +328,7 @@
}
assertPositions(
- 0 to 0,
+ 0 to 0f,
1 to itemSize,
2 to itemSize * 2,
3 to itemSize * 3,
@@ -340,10 +340,10 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to 0 + (itemSize * 2 * fraction).roundToInt(),
- 1 to itemSize + (itemSize * 2 * fraction).roundToInt(),
- 2 to itemSize * 2 - (itemSize * 2 * fraction).roundToInt(),
- 3 to itemSize * 3 - (itemSize * 2 * fraction).roundToInt(),
+ 0 to 0 + itemSize * 2 * fraction,
+ 1 to itemSize + itemSize * 2 * fraction,
+ 2 to itemSize * 2 - itemSize * 2 * fraction,
+ 3 to itemSize * 3 - itemSize * 2 * fraction,
fraction = fraction
)
}
@@ -367,9 +367,9 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to 0 + (itemSize * 2 * fraction).roundToInt(),
+ 0 to 0 + itemSize * 2 * fraction,
1 to itemSize * 3,
- 2 to itemSize * 2 - (itemSize * 2 * fraction).roundToInt(),
+ 2 to itemSize * 2 - itemSize * 2 * fraction,
3 to itemSize,
fraction = fraction
)
@@ -404,9 +404,9 @@
onAnimationFrame { fraction ->
assertPositions(
- 1 to itemSize - (itemSize * fraction).roundToInt(),
+ 1 to itemSize - itemSize * fraction,
2 to itemSize * 2,
- 3 to itemSize * 3 + (itemSize * fraction).roundToInt(),
+ 3 to itemSize * 3 + itemSize * fraction,
fraction = fraction
)
}
@@ -426,7 +426,7 @@
}
assertPositions(
- 0 to 0,
+ 0 to 0f,
1 to itemSize,
2 to itemSize * 2
)
@@ -437,10 +437,10 @@
onAnimationFrame { fraction ->
// item 1 moves to and item 4 moves from `listSize`, right after the end edge
- val item1Offset = itemSize + ((listSize - itemSize) * fraction).roundToInt()
- val item4Offset = listSize - ((listSize - itemSize) * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, Int>>().apply {
- add(0 to 0)
+ val item1Offset = itemSize + (listSize - itemSize) * fraction
+ val item4Offset = listSize - (listSize - itemSize) * fraction
+ val expected = mutableListOf<Pair<Any, Float>>().apply {
+ add(0 to 0f)
if (item1Offset < itemSize * 3) {
add(1 to item1Offset)
} else {
@@ -472,7 +472,7 @@
}
assertPositions(
- 3 to 0,
+ 3 to 0f,
4 to itemSize,
5 to itemSize * 2
)
@@ -483,15 +483,15 @@
onAnimationFrame { fraction ->
// item 1 moves from and item 4 moves to `0 - itemSize`, right before the start edge
- val item1Offset = -itemSize + (itemSize * 2 * fraction).roundToInt()
- val item4Offset = itemSize - (itemSize * 2 * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, Int>>().apply {
+ val item1Offset = -itemSize + itemSize * 2 * fraction
+ val item4Offset = itemSize - itemSize * 2 * fraction
+ val expected = mutableListOf<Pair<Any, Float>>().apply {
if (item4Offset > -itemSize) {
add(4 to item4Offset)
} else {
rule.onNodeWithTag("4").assertIsNotDisplayed()
}
- add(3 to 0)
+ add(3 to 0f)
if (item1Offset > -itemSize) {
add(1 to item1Offset)
} else {
@@ -521,7 +521,7 @@
}
assertPositions(
- 3 to 0,
+ 3 to 0f,
4 to itemSize
)
@@ -531,15 +531,15 @@
onAnimationFrame { fraction ->
// item 1 moves from and item 4 moves to `0 - itemSize`, right before the start edge
- val item1Offset = -itemSize + (itemSize * 2 * fraction).roundToInt()
- val item4Offset = itemSize - (itemSize * 2 * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, Int>>().apply {
+ val item1Offset = -itemSize + itemSize * 2 * fraction
+ val item4Offset = itemSize - itemSize * 2 * fraction
+ val expected = mutableListOf<Pair<Any, Float>>().apply {
if (item4Offset > -itemSize) {
add(4 to item4Offset)
} else {
rule.onNodeWithTag("4").assertIsNotDisplayed()
}
- add(3 to 0)
+ add(3 to 0f)
if (item1Offset > -itemSize) {
add(1 to item1Offset)
} else {
@@ -570,10 +570,10 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to 0 + (itemSizePlusSpacing * 3 * fraction).roundToInt(),
- 1 to itemSizePlusSpacing - (itemSizePlusSpacing * fraction).roundToInt(),
- 2 to itemSizePlusSpacing * 2 - (itemSizePlusSpacing * fraction).roundToInt(),
- 3 to itemSizePlusSpacing * 3 - (itemSizePlusSpacing * fraction).roundToInt(),
+ 0 to 0 + itemSizePlusSpacing * 3 * fraction,
+ 1 to itemSizePlusSpacing - itemSizePlusSpacing * fraction,
+ 2 to itemSizePlusSpacing * 2 - itemSizePlusSpacing * fraction,
+ 3 to itemSizePlusSpacing * 3 - itemSizePlusSpacing * fraction,
fraction = fraction
)
}
@@ -596,7 +596,7 @@
}
assertPositions(
- 0 to 0,
+ 0 to 0f,
1 to itemSizePlusSpacing,
2 to itemSizePlusSpacing * 2
)
@@ -608,12 +608,12 @@
onAnimationFrame { fraction ->
// item 1 moves to and item 4 moves from `listSize`, right after the end edge
val item1Offset =
- itemSizePlusSpacing + ((listSize - itemSizePlusSpacing) * fraction).roundToInt()
+ itemSizePlusSpacing + (listSize - itemSizePlusSpacing) * fraction
val item4Offset =
- listSize - ((listSize - itemSizePlusSpacing) * fraction).roundToInt()
+ listSize - (listSize - itemSizePlusSpacing) * fraction
val screenSize = itemSize * 3 + spacing * 2
- val expected = mutableListOf<Pair<Any, Int>>().apply {
- add(0 to 0)
+ val expected = mutableListOf<Pair<Any, Float>>().apply {
+ add(0 to 0f)
if (item1Offset < screenSize) {
add(1 to item1Offset)
} else {
@@ -649,7 +649,7 @@
}
assertPositions(
- 3 to 0,
+ 3 to 0f,
4 to itemSizePlusSpacing,
5 to itemSizePlusSpacing * 2
)
@@ -661,16 +661,16 @@
onAnimationFrame { fraction ->
// item 4 moves to and item 1 moves from `-itemSize`, right before the start edge
val item1Offset =
- -itemSize + ((itemSize + itemSizePlusSpacing) * fraction).roundToInt()
+ -itemSize + (itemSize + itemSizePlusSpacing) * fraction
val item4Offset =
- itemSizePlusSpacing - ((itemSize + itemSizePlusSpacing) * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, Int>>().apply {
+ itemSizePlusSpacing - (itemSize + itemSizePlusSpacing) * fraction
+ val expected = mutableListOf<Pair<Any, Float>>().apply {
if (item4Offset > -itemSize) {
add(4 to item4Offset)
} else {
rule.onNodeWithTag("4").assertIsNotDisplayed()
}
- add(3 to 0)
+ add(3 to 0f)
if (item1Offset > -itemSize) {
add(1 to item1Offset)
} else {
@@ -701,7 +701,7 @@
val item3Size = itemSize2
val item4Size = itemSize
assertPositions(
- 3 to 0,
+ 3 to 0f,
4 to item3Size,
5 to item3Size + item4Size
)
@@ -718,22 +718,22 @@
// item 1 moves from and item 4 moves to `0 - item size`, right before the start edge
val startItem1Offset = -item1Size
val item1Offset =
- startItem1Offset + ((itemSize2 - startItem1Offset) * fraction).roundToInt()
+ startItem1Offset + (itemSize2 - startItem1Offset) * fraction
val endItem4Offset = -item4Size
- val item4Offset = item3Size - ((item3Size - endItem4Offset) * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, Int>>().apply {
+ val item4Offset = item3Size - (item3Size - endItem4Offset) * fraction
+ val expected = mutableListOf<Pair<Any, Float>>().apply {
if (item4Offset > -item4Size) {
add(4 to item4Offset)
} else {
rule.onNodeWithTag("4").assertIsNotDisplayed()
}
- add(3 to 0)
+ add(3 to 0f)
if (item1Offset > -item1Size) {
add(1 to item1Offset)
} else {
rule.onNodeWithTag("1").assertIsNotDisplayed()
}
- add(5 to item3Size + item4Size - ((item4Size - item1Size) * fraction).roundToInt())
+ add(5 to item3Size + item4Size - (item4Size - item1Size) * fraction)
}
assertPositions(
expected = expected.toTypedArray(),
@@ -760,7 +760,7 @@
val item0Size = itemSize2
val item1Size = itemSize
assertPositions(
- 0 to 0,
+ 0 to 0f,
1 to item0Size,
2 to item0Size + item1Size
)
@@ -775,17 +775,17 @@
val endItem1Offset = listSize
val item4Size = itemSize3
val item1Offset =
- item0Size + ((endItem1Offset - item0Size) * fraction).roundToInt()
+ item0Size + (endItem1Offset - item0Size) * fraction
val item4Offset =
- startItem4Offset - ((startItem4Offset - item0Size) * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, Int>>().apply {
- add(0 to 0)
+ startItem4Offset - (startItem4Offset - item0Size) * fraction
+ val expected = mutableListOf<Pair<Any, Float>>().apply {
+ add(0 to 0f)
if (item1Offset < listSize) {
add(1 to item1Offset)
} else {
rule.onNodeWithTag("1").assertIsNotDisplayed()
}
- add(2 to item0Size + item1Size - ((item1Size - item4Size) * fraction).roundToInt())
+ add(2 to item0Size + item1Size - (item1Size - item4Size) * fraction)
if (item4Offset < listSize) {
add(4 to item4Offset)
} else {
@@ -818,11 +818,11 @@
val item2Start = itemSize - itemSize2
val item3Start = itemSize - itemSize3
assertPositions(
- 1 to 0,
+ 1 to 0f,
2 to itemSize,
3 to itemSize * 2,
crossAxis = listOf(
- 1 to 0,
+ 1 to 0f,
2 to item2Start,
3 to item3Start,
)
@@ -837,13 +837,13 @@
val item3End = itemSize / 2 - itemSize3 / 2
onAnimationFrame { fraction ->
assertPositions(
- 1 to 0,
+ 1 to 0f,
2 to itemSize,
3 to itemSize * 2,
crossAxis = listOf(
- 1 to 0,
- 2 to item2Start + ((item2End - item2Start) * fraction).roundToInt(),
- 3 to item3Start + ((item3End - item3Start) * fraction).roundToInt(),
+ 1 to 0f,
+ 2 to item2Start + (item2End - item2Start) * fraction,
+ 3 to item3Start + (item3End - item3Start) * fraction,
),
fraction = fraction
)
@@ -876,13 +876,13 @@
val containerSize = itemSize * 2
onAnimationFrame { fraction ->
assertPositions(
- 1 to 0,
+ 1 to 0f,
2 to itemSize,
3 to itemSize * 2,
crossAxis = listOf(
- 1 to ((containerSize - itemSize) * fraction).roundToInt(),
- 2 to ((containerSize - itemSize2) * fraction).roundToInt(),
- 3 to ((containerSize - itemSize3) * fraction).roundToInt()
+ 1 to (containerSize - itemSize) * fraction,
+ 2 to (containerSize - itemSize2) * fraction,
+ 3 to (containerSize - itemSize3) * fraction
),
fraction = fraction
)
@@ -911,13 +911,13 @@
}
assertPositions(
- 1 to 0,
+ 1 to 0f,
2 to itemSize,
3 to itemSize * 2,
crossAxis = listOf(
- 1 to 0,
- 2 to 0,
- 3 to 0,
+ 1 to 0f,
+ 2 to 0f,
+ 3 to 0f,
)
)
@@ -928,13 +928,13 @@
onAnimationFrame { fraction ->
assertPositions(
- 1 to 0,
+ 1 to 0f,
2 to itemSize,
3 to itemSize * 2,
crossAxis = listOf(
- 1 to 0,
- 2 to ((itemSize / 2 - itemSize2 / 2) * fraction).roundToInt(),
- 3 to ((itemSize / 2 - itemSize3 / 2) * fraction).roundToInt(),
+ 1 to 0f,
+ 2 to (itemSize / 2 - itemSize2 / 2) * fraction,
+ 3 to (itemSize / 2 - itemSize3 / 2) * fraction
),
fraction = fraction
)
@@ -944,8 +944,8 @@
@Test
fun moveItemToEndCausingNextItemsToAnimate_withContentPadding() {
var list by mutableStateOf(listOf(0, 1, 2, 3, 4))
- val rawStartPadding = 8
- val rawEndPadding = 12
+ val rawStartPadding = 8f
+ val rawEndPadding = 12f
val (startPaddingDp, endPaddingDp) = with(rule.density) {
rawStartPadding.toDp() to rawEndPadding.toDp()
}
@@ -973,10 +973,10 @@
onAnimationFrame { fraction ->
assertPositions(
0 to startPadding,
- 1 to startPadding + itemSize + (itemSize * 3 * fraction).roundToInt(),
- 2 to startPadding + itemSize * 2 - (itemSize * fraction).roundToInt(),
- 3 to startPadding + itemSize * 3 - (itemSize * fraction).roundToInt(),
- 4 to startPadding + itemSize * 4 - (itemSize * fraction).roundToInt(),
+ 1 to startPadding + itemSize + itemSize * 3 * fraction,
+ 2 to startPadding + itemSize * 2 - itemSize * fraction,
+ 3 to startPadding + itemSize * 3 - itemSize * fraction,
+ 4 to startPadding + itemSize * 4 - itemSize * fraction,
fraction = fraction
)
}
@@ -1030,7 +1030,7 @@
rule.runOnIdle {
runBlocking {
- state.scrollToItem(0, itemSize / 2)
+ state.scrollToItem(0, (itemSize / 2).roundToInt())
}
}
@@ -1226,9 +1226,9 @@
onAnimationFrame { fraction ->
// item 1 moves to `listSize`
- val item1Offset = itemSize + ((listSize - itemSize) * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, Int>>().apply {
- add(0 to 0)
+ val item1Offset = itemSize + (listSize - itemSize) * fraction
+ val expected = mutableListOf<Pair<Any, Float>>().apply {
+ add(0 to 0f)
if (item1Offset < listSize) {
add(1 to item1Offset)
} else {
@@ -1254,7 +1254,7 @@
}
assertPositions(
- 3 to 0,
+ 3 to 0f,
4 to itemSize,
5 to itemSize * 2
)
@@ -1265,12 +1265,12 @@
onAnimationFrame { fraction ->
// item 2 moves from and item 5 moves to `-itemSize`, right before the start edge
- val item2Offset = -itemSize + (itemSize * 3 * fraction).roundToInt()
- val item5Offset = itemSize * 2 - (itemSize * 3 * fraction).roundToInt()
+ val item2Offset = -itemSize + itemSize * 3 * fraction
+ val item5Offset = itemSize * 2 - itemSize * 3 * fraction
// item 1 moves from and item 4 moves to `-itemSize * 2`, right before item 2
- val item1Offset = -itemSize * 2 + (itemSize * 3 * fraction).roundToInt()
- val item4Offset = itemSize - (itemSize * 3 * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, Int>>().apply {
+ val item1Offset = -itemSize * 2 + itemSize * 3 * fraction
+ val item4Offset = itemSize - itemSize * 3 * fraction
+ val expected = mutableListOf<Pair<Any, Float>>().apply {
if (item1Offset > -itemSize) {
add(1 to item1Offset)
} else {
@@ -1281,7 +1281,7 @@
} else {
rule.onNodeWithTag("2").assertIsNotDisplayed()
}
- add(3 to 0)
+ add(3 to 0f)
if (item4Offset > -itemSize) {
add(4 to item4Offset)
} else {
@@ -1312,7 +1312,7 @@
}
assertPositions(
- 3 to 0,
+ 3 to 0f,
4 to itemSize,
5 to itemSize * 2
)
@@ -1323,12 +1323,12 @@
onAnimationFrame { fraction ->
// item 2 moves from and item 4 moves to `-itemSize`, right before the start edge
- val item2Offset = -itemSize + (itemSize * 2 * fraction).roundToInt()
- val item4Offset = itemSize - (itemSize * 2 * fraction).roundToInt()
+ val item2Offset = -itemSize + itemSize * 2 * fraction
+ val item4Offset = itemSize - itemSize * 2 * fraction
// item 1 moves from and item 5 moves to `-itemSize * 2`, right before item 2
- val item1Offset = -itemSize * 2 + (itemSize * 4 * fraction).roundToInt()
- val item5Offset = itemSize * 2 - (itemSize * 4 * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, Int>>().apply {
+ val item1Offset = -itemSize * 2 + itemSize * 4 * fraction
+ val item5Offset = itemSize * 2 - itemSize * 4 * fraction
+ val expected = mutableListOf<Pair<Any, Float>>().apply {
if (item1Offset > -itemSize) {
add(1 to item1Offset)
} else {
@@ -1339,7 +1339,7 @@
} else {
rule.onNodeWithTag("2").assertIsNotDisplayed()
}
- add(3 to 0)
+ add(3 to 0f)
if (item4Offset > -itemSize) {
add(4 to item4Offset)
} else {
@@ -1372,7 +1372,7 @@
}
assertPositions(
- 0 to 0,
+ 0 to 0f,
1 to itemSize,
2 to itemSize * 2
)
@@ -1383,13 +1383,13 @@
onAnimationFrame { fraction ->
// item 1 moves to and item 3 moves from `listSize`, right after the end edge
- val item1Offset = itemSize + ((listSize - itemSize) * fraction).roundToInt()
- val item3Offset = listSize - ((listSize - itemSize) * fraction).roundToInt()
+ val item1Offset = itemSize + (listSize - itemSize) * fraction
+ val item3Offset = listSize - (listSize - itemSize) * fraction
// item 2 moves to and item 4 moves from `listSize + itemSize`, right after item 4
- val item2Offset = itemSize * 2 + ((listSize - itemSize) * fraction).roundToInt()
- val item4Offset = listSize + itemSize - ((listSize - itemSize) * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, Int>>().apply {
- add(0 to 0)
+ val item2Offset = itemSize * 2 + (listSize - itemSize) * fraction
+ val item4Offset = listSize + itemSize - (listSize - itemSize) * fraction
+ val expected = mutableListOf<Pair<Any, Float>>().apply {
+ add(0 to 0f)
if (item1Offset < listSize) {
add(1 to item1Offset)
} else {
@@ -1432,7 +1432,7 @@
}
assertPositions(
- 0 to 0,
+ 0 to 0f,
1 to itemSize,
2 to itemSize * 2
)
@@ -1443,14 +1443,14 @@
onAnimationFrame { fraction ->
// item 2 moves to and item 3 moves from `listSize`, right after the end edge
- val item2Offset = itemSize * 2 + ((listSize - itemSize * 2) * fraction).roundToInt()
- val item3Offset = listSize - ((listSize - itemSize * 2) * fraction).roundToInt()
+ val item2Offset = itemSize * 2 + (listSize - itemSize * 2) * fraction
+ val item3Offset = listSize - (listSize - itemSize * 2) * fraction
// item 1 moves to and item 4 moves from `listSize + itemSize`, right after item 4
- val item1Offset = itemSize + ((listSize + itemSize - itemSize) * fraction).roundToInt()
+ val item1Offset = itemSize + (listSize + itemSize - itemSize) * fraction
val item4Offset =
- listSize + itemSize - ((listSize + itemSize - itemSize) * fraction).roundToInt()
- val expected = mutableListOf<Pair<Any, Int>>().apply {
- add(0 to 0)
+ listSize + itemSize - (listSize + itemSize - itemSize) * fraction
+ val expected = mutableListOf<Pair<Any, Float>>().apply {
+ add(0 to 0f)
if (item1Offset < listSize) {
add(1 to item1Offset)
} else {
@@ -1496,7 +1496,7 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to 0,
+ 0 to 0f,
1 to itemSize,
fraction = fraction
)
@@ -1521,7 +1521,7 @@
onAnimationFrame { fraction ->
assertPositions(
- 0 to 0,
+ 0 to 0f,
1 to itemSize,
2 to itemSize * 2,
fraction = fraction
@@ -1530,11 +1530,12 @@
}
private fun assertPositions(
- vararg expected: Pair<Any, Int>,
- crossAxis: List<Pair<Any, Int>>? = null,
+ vararg expected: Pair<Any, Float>,
+ crossAxis: List<Pair<Any, Float>>? = null,
fraction: Float? = null,
autoReverse: Boolean = reverseLayout
) {
+ val roundedExpected = expected.map { it.first to it.second.roundToInt() }
with(rule.density) {
val actual = expected.map {
val actualOffset = rule.onNodeWithTag(it.first.toString())
@@ -1550,7 +1551,7 @@
assertWithMessage("Fraction=$fraction").that(actual)
}
subject.isEqualTo(
- listOf(*expected).let { list ->
+ roundedExpected.let { list ->
if (!autoReverse) {
list
} else {
@@ -1581,14 +1582,16 @@
"CrossAxis" + if (fraction != null) "for fraction=$fraction" else ""
)
.that(actualCross)
- .isEqualTo(crossAxis)
+ .isEqualTo(crossAxis.map { it.first to it.second.roundToInt() })
}
}
}
- private fun assertLayoutInfoPositions(vararg offsets: Pair<Any, Int>) {
+ private fun assertLayoutInfoPositions(vararg offsets: Pair<Any, Float>) {
rule.runOnIdle {
- assertThat(visibleItemsOffsets).isEqualTo(listOf(*offsets))
+ assertThat(visibleItemsOffsets).isEqualTo(offsets.map {
+ it.first to it.second.roundToInt()
+ })
}
}