blob: 1779de729e5b0985ae6bfef4f9497879d6d5a79e [file] [log] [blame]
package com.android.systemui.statusbar.phone
import android.graphics.Point
import android.view.Display
import android.view.Surface
import android.view.View
import android.view.WindowManager
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.unfold.TestUnfoldTransitionProvider
import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider
import com.google.common.truth.Truth.assertThat
import org.junit.Before
import org.junit.Test
import org.mockito.ArgumentMatchers.any
import org.mockito.Mock
import org.mockito.Mockito.`when`
import org.mockito.MockitoAnnotations
@SmallTest
class StatusBarMoveFromCenterAnimationControllerTest : SysuiTestCase() {
@Mock
private lateinit var windowManager: WindowManager
@Mock
private lateinit var display: Display
private val view: View = View(context)
private val progressProvider = TestUnfoldTransitionProvider()
private val scopedProvider = ScopedUnfoldTransitionProgressProvider(progressProvider)
private lateinit var controller: StatusBarMoveFromCenterAnimationController
@Before
fun setUp() {
MockitoAnnotations.initMocks(this)
`when`(windowManager.defaultDisplay).thenReturn(display)
`when`(display.rotation).thenReturn(Surface.ROTATION_0)
`when`(display.getSize(any())).thenAnswer {
val point = it.arguments[0] as Point
point.x = 100
point.y = 100
Unit
}
scopedProvider.setReadyToHandleTransition(true)
controller = StatusBarMoveFromCenterAnimationController(scopedProvider, windowManager)
}
@Test
fun onTransitionProgressAndFinished_resetsTranslations() {
controller.onViewsReady(arrayOf(view))
progressProvider.onTransitionProgress(0.5f)
progressProvider.onTransitionFinished()
assertThat(view.translationX).isZero()
}
@Test
fun onStatusBarWidthChangedWithNoTransitionBefore_noTranslation() {
controller.onViewsReady(arrayOf(view))
controller.onStatusBarWidthChanged()
assertThat(view.translationX).isZero()
}
@Test
fun onTransitionProgress_updatesTranslations() {
controller.onViewsReady(arrayOf(view))
progressProvider.onTransitionProgress(0.5f)
assertThat(view.translationX).isNonZero()
}
@Test
fun onTransitionProgress_whenDetached_doesNotUpdateTranslations() {
controller.onViewsReady(arrayOf(view))
controller.onViewDetached()
progressProvider.onTransitionProgress(0.5f)
assertThat(view.translationX).isZero()
}
@Test
fun detachedAfterProgress_resetsTranslations() {
controller.onViewsReady(arrayOf(view))
progressProvider.onTransitionProgress(0.5f)
controller.onViewDetached()
assertThat(view.translationX).isZero()
}
@Test
fun transitionFinished_viewReAttached_noChangesToTranslation() {
controller.onViewsReady(arrayOf(view))
progressProvider.onTransitionProgress(0.5f)
progressProvider.onTransitionFinished()
controller.onViewDetached()
controller.onViewsReady(arrayOf(view))
controller.onStatusBarWidthChanged()
assertThat(view.translationX).isZero()
}
}