/* * Copyright (C) 2024 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.server.display import androidx.test.filters.SmallTest import com.google.common.truth.Truth.assertThat import org.junit.Test import org.mockito.kotlin.mock import org.mockito.kotlin.whenever private const val MAX_BRIGHTNESS = 1.0f private const val TRANSITION_POINT = 0.7f private const val NORMAL_BRIGHTNESS_HIGH = 0.8f private const val NORMAL_BRIGHTNESS_LOW = 0.6f @SmallTest class BrightnessRangeControllerTest { private val mockHbmController = mock() private val mockCallback = mock() private val mockConfig = mock() private val mockNormalBrightnessController = mock() @Test fun testMaxBrightness_HbmSupportedAndOn() { val controller = createController() assertThat(controller.currentBrightnessMax).isEqualTo(MAX_BRIGHTNESS) } @Test fun testMaxBrightness_HbmNotSupported() { val controller = createController(hbmSupported = false) assertThat(controller.currentBrightnessMax).isEqualTo(NORMAL_BRIGHTNESS_LOW) } @Test fun testMaxBrightness_HbmNotAllowed() { val controller = createController(hbmAllowed = false) assertThat(controller.currentBrightnessMax).isEqualTo(NORMAL_BRIGHTNESS_LOW) } @Test fun testMaxBrightness_transitionPointLessThanCurrentNbmLimit() { val controller = createController( hbmAllowed = false, hbmMaxBrightness = TRANSITION_POINT, nbmMaxBrightness = NORMAL_BRIGHTNESS_HIGH ) assertThat(controller.currentBrightnessMax).isEqualTo(TRANSITION_POINT) } private fun createController( hbmSupported: Boolean = true, hbmAllowed: Boolean = true, hbmMaxBrightness: Float = MAX_BRIGHTNESS, nbmMaxBrightness: Float = NORMAL_BRIGHTNESS_LOW ): BrightnessRangeController { whenever(mockHbmController.deviceSupportsHbm()).thenReturn(hbmSupported) whenever(mockHbmController.isHbmCurrentlyAllowed).thenReturn(hbmAllowed) whenever(mockHbmController.currentBrightnessMax).thenReturn(hbmMaxBrightness) whenever(mockNormalBrightnessController.currentBrightnessMax).thenReturn(nbmMaxBrightness) return BrightnessRangeController(mockHbmController, mockCallback, mockConfig, mockNormalBrightnessController) } }