Files
Lawnchair/tests/src/com/android/launcher3/util/MultiScalePropertyTest.kt
T
Nicolo' Mazzucato 12131a40fe Add Z scaling during unfold to launcher
The unfold progresses are mapped to 0.85 - 1 range and set as a scale for launcher.

In case of multiple scale animations for workspace and hotseat, they are combined using MultiScaleProperty (e.g. opening an app while unfolding/going to all apps while unfolding). Note that this is a pretty difficult scenario to be in. If that happens, we multiply all values and bound the result between the max and min values.

Bug: 217368525
Test: atest MultiScalePropertyTest and manually
Change-Id: I6131c39f36deade0b7280c72edda2d72045344e9
2022-02-15 17:02:36 +01:00

93 lines
2.1 KiB
Kotlin

package com.android.launcher3.util
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.google.common.truth.Truth.assertThat
import org.junit.Test
import org.junit.runner.RunWith
/** Unit tests for [MultiScalePropertyFactory] */
@SmallTest
@RunWith(AndroidJUnit4::class)
class MultiScalePropertyTest {
private val received = mutableListOf<Float>()
private val factory =
object : MultiScalePropertyFactory<Int?>("Test") {
override fun apply(obj: Int?, value: Float) {
received.add(value)
}
}
private val p1 = factory.get(1)
private val p2 = factory.get(2)
private val p3 = factory.get(3)
@Test
fun set_multipleSame_bothAppliedd() {
p1.set(null, 0.5f)
p1.set(null, 0.5f)
assertThat(received).containsExactly(0.5f, 0.5f)
}
@Test
fun set_differentIndexes_oneValuesNotCounted() {
val v1 = 0.5f
val v2 = 1.0f
p1.set(null, v1)
p2.set(null, v2)
assertThat(received).containsExactly(v1, v1)
}
@Test
fun set_onlyOneSetToOne_oneApplied() {
p1.set(null, 1.0f)
assertThat(received).containsExactly(1.0f)
}
@Test
fun set_onlyOneLessThanOne_applied() {
p1.set(null, 0.5f)
assertThat(received).containsExactly(0.5f)
}
@Test
fun set_differentIndexes_boundToMin() {
val v1 = 0.5f
val v2 = 0.6f
p1.set(null, v1)
p2.set(null, v2)
assertThat(received).containsExactly(v1, v1)
}
@Test
fun set_allHigherThanOne_boundToMax() {
val v1 = 3.0f
val v2 = 2.0f
val v3 = 1.0f
p1.set(null, v1)
p2.set(null, v2)
p3.set(null, v3)
assertThat(received).containsExactly(v1, v1, v1)
}
@Test
fun set_differentIndexes_firstModified_aggregationApplied() {
val v1 = 0.5f
val v2 = 0.6f
val v3 = 4f
p1.set(null, v1)
p2.set(null, v2)
p3.set(null, v3)
assertThat(received).containsExactly(v1, v1, v1 * v2 * v3)
}
}