blob: 32bad5c084f5dc87f827fd0de4ab9a3b9158eafa [file] [log] [blame]
/*
* Copyright (C) 2021 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.systemui.statusbar.phone.panelstate
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.google.common.truth.Truth.assertThat
import org.junit.Before
import org.junit.Test
@SmallTest
class PanelExpansionStateManagerTest : SysuiTestCase() {
private lateinit var panelExpansionStateManager: PanelExpansionStateManager
@Before
fun setUp() {
panelExpansionStateManager = PanelExpansionStateManager()
}
@Test
fun onPanelExpansionChanged_listenerNotified() {
val listener = TestPanelExpansionListener()
panelExpansionStateManager.addExpansionListener(listener)
val fraction = 0.6f
val expanded = true
val tracking = true
panelExpansionStateManager.onPanelExpansionChanged(fraction, expanded, tracking)
assertThat(listener.fraction).isEqualTo(fraction)
assertThat(listener.expanded).isEqualTo(expanded)
assertThat(listener.tracking).isEqualTo(tracking)
}
@Test
fun addExpansionListener_listenerNotifiedOfCurrentValues() {
val fraction = 0.6f
val expanded = true
val tracking = true
panelExpansionStateManager.onPanelExpansionChanged(fraction, expanded, tracking)
val listener = TestPanelExpansionListener()
panelExpansionStateManager.addExpansionListener(listener)
assertThat(listener.fraction).isEqualTo(fraction)
assertThat(listener.expanded).isEqualTo(expanded)
assertThat(listener.tracking).isEqualTo(tracking)
}
@Test
fun updateState_listenerNotified() {
val listener = TestPanelStateListener()
panelExpansionStateManager.addStateListener(listener)
panelExpansionStateManager.updateState(STATE_OPEN)
assertThat(listener.state).isEqualTo(STATE_OPEN)
}
/* ***** [PanelExpansionStateManager.onPanelExpansionChanged] test cases *******/
/* Fraction < 1 test cases */
@Test
fun onPEC_fractionLessThanOne_expandedTrue_trackingFalse_becomesStateOpening() {
val listener = TestPanelStateListener()
panelExpansionStateManager.addStateListener(listener)
panelExpansionStateManager.onPanelExpansionChanged(
fraction = 0.5f, expanded = true, tracking = false
)
assertThat(listener.state).isEqualTo(STATE_OPENING)
}
@Test
fun onPEC_fractionLessThanOne_expandedTrue_trackingTrue_becomesStateOpening() {
val listener = TestPanelStateListener()
panelExpansionStateManager.addStateListener(listener)
panelExpansionStateManager.onPanelExpansionChanged(
fraction = 0.5f, expanded = true, tracking = true
)
assertThat(listener.state).isEqualTo(STATE_OPENING)
}
@Test
fun onPEC_fractionLessThanOne_expandedFalse_trackingFalse_becomesStateClosed() {
val listener = TestPanelStateListener()
panelExpansionStateManager.addStateListener(listener)
// Start out on a different state
panelExpansionStateManager.updateState(STATE_OPEN)
panelExpansionStateManager.onPanelExpansionChanged(
fraction = 0.5f, expanded = false, tracking = false
)
assertThat(listener.state).isEqualTo(STATE_CLOSED)
}
@Test
fun onPEC_fractionLessThanOne_expandedFalse_trackingTrue_doesNotBecomeStateClosed() {
val listener = TestPanelStateListener()
panelExpansionStateManager.addStateListener(listener)
// Start out on a different state
panelExpansionStateManager.updateState(STATE_OPEN)
panelExpansionStateManager.onPanelExpansionChanged(
fraction = 0.5f, expanded = false, tracking = true
)
assertThat(listener.state).isEqualTo(STATE_OPEN)
}
/* Fraction = 1 test cases */
@Test
fun onPEC_fractionOne_expandedTrue_trackingFalse_becomesStateOpeningThenStateOpen() {
val listener = TestPanelStateListener()
panelExpansionStateManager.addStateListener(listener)
panelExpansionStateManager.onPanelExpansionChanged(
fraction = 1f, expanded = true, tracking = false
)
assertThat(listener.previousState).isEqualTo(STATE_OPENING)
assertThat(listener.state).isEqualTo(STATE_OPEN)
}
@Test
fun onPEC_fractionOne_expandedTrue_trackingTrue_becomesStateOpening() {
val listener = TestPanelStateListener()
panelExpansionStateManager.addStateListener(listener)
panelExpansionStateManager.onPanelExpansionChanged(
fraction = 1f, expanded = true, tracking = true
)
assertThat(listener.state).isEqualTo(STATE_OPENING)
}
@Test
fun onPEC_fractionOne_expandedFalse_trackingFalse_becomesStateClosed() {
val listener = TestPanelStateListener()
panelExpansionStateManager.addStateListener(listener)
// Start out on a different state
panelExpansionStateManager.updateState(STATE_OPEN)
panelExpansionStateManager.onPanelExpansionChanged(
fraction = 1f, expanded = false, tracking = false
)
assertThat(listener.state).isEqualTo(STATE_CLOSED)
}
@Test
fun onPEC_fractionOne_expandedFalse_trackingTrue_doesNotBecomeStateClosed() {
val listener = TestPanelStateListener()
panelExpansionStateManager.addStateListener(listener)
// Start out on a different state
panelExpansionStateManager.updateState(STATE_OPEN)
panelExpansionStateManager.onPanelExpansionChanged(
fraction = 1f, expanded = false, tracking = true
)
assertThat(listener.state).isEqualTo(STATE_OPEN)
}
/* ***** end [PanelExpansionStateManager.onPanelExpansionChanged] test cases ******/
class TestPanelExpansionListener : PanelExpansionListener {
var fraction: Float = 0f
var expanded: Boolean = false
var tracking: Boolean = false
override fun onPanelExpansionChanged(
fraction: Float,
expanded: Boolean,
tracking: Boolean
) {
this.fraction = fraction
this.expanded = expanded
this.tracking = tracking
}
}
class TestPanelStateListener : PanelStateListener {
@PanelState var previousState: Int = STATE_CLOSED
@PanelState var state: Int = STATE_CLOSED
override fun onPanelStateChanged(state: Int) {
this.previousState = this.state
this.state = state
}
}
}