Merge "Increase test coverage for fps pause enrollment feature" into main

This commit is contained in:
Wu Ahan
2024-02-07 07:28:54 +00:00
committed by Android (Google) Code Review

View File

@@ -0,0 +1,201 @@
/*
* 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.settings.biometrics.fingerprint.feature
import android.animation.Animator
import android.content.Context
import android.hardware.fingerprint.FingerprintManager
import android.view.View
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling.SFPS_STAGE_CENTER
import com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling.SFPS_STAGE_FINGERTIP
import com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling.SFPS_STAGE_LEFT_EDGE
import com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling.SFPS_STAGE_NO_ANIMATION
import com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling.SFPS_STAGE_RIGHT_EDGE
import com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling.STAGE_UNKNOWN
import com.google.common.truth.Truth.assertThat
import kotlin.math.roundToInt
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.doReturn
import org.mockito.Mockito.mock
import org.mockito.Spy
import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoRule
import org.mockito.Mockito.`when` as whenever
@RunWith(AndroidJUnit4::class)
class SfpsEnrollmentFeatureImplTest {
@get:Rule
val mockito: MockitoRule = MockitoJUnit.rule()
@Spy
private val context: Context = ApplicationProvider.getApplicationContext()
private val settingsPackageName = "com.android.settings"
private lateinit var settingsContext: Context
@Mock
private lateinit var mockFingerprintManager: FingerprintManager
private val mSfpsEnrollmentFeatureImpl: SfpsEnrollmentFeatureImpl = SfpsEnrollmentFeatureImpl()
@Before
fun setUp() {
assertThat(mSfpsEnrollmentFeatureImpl).isInstanceOf(SfpsEnrollmentFeatureImpl::class.java)
whenever(context.getSystemService(FingerprintManager::class.java))
.thenReturn(mockFingerprintManager)
doReturn(0f).`when`(mockFingerprintManager).getEnrollStageThreshold(0)
doReturn(0.36f).`when`(mockFingerprintManager).getEnrollStageThreshold(1)
doReturn(0.52f).`when`(mockFingerprintManager).getEnrollStageThreshold(2)
doReturn(0.76f).`when`(mockFingerprintManager).getEnrollStageThreshold(3)
doReturn(1f).`when`(mockFingerprintManager).getEnrollStageThreshold(4)
settingsContext = context.createPackageContext(settingsPackageName, 0)
}
@Test
fun testGetEnrollStageThreshold() {
assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, 0)).isEqualTo(0f)
assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, 1)).isEqualTo(0.36f)
assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, 2)).isEqualTo(0.52f)
assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, 3)).isEqualTo(0.76f)
assertThat(mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, 4)).isEqualTo(1f)
}
@Test
fun testGetHelpAnimator() {
val mockView: View = mock(View::class.java)
val animator: Animator = mSfpsEnrollmentFeatureImpl.getHelpAnimator(mockView)
assertThat(animator.duration).isEqualTo(550)
}
@Test
fun testGetCurrentSfpsEnrollStage() {
assertThat(mSfpsEnrollmentFeatureImpl.getCurrentSfpsEnrollStage(0, null))
.isEqualTo(STAGE_UNKNOWN)
val mapper = { i: Int ->
(25 * mSfpsEnrollmentFeatureImpl.getEnrollStageThreshold(context, i)).roundToInt()
}
assertThat(mSfpsEnrollmentFeatureImpl.getCurrentSfpsEnrollStage(-1, mapper))
.isEqualTo(SFPS_STAGE_NO_ANIMATION)
assertThat(mSfpsEnrollmentFeatureImpl.getCurrentSfpsEnrollStage(0, mapper))
.isEqualTo(SFPS_STAGE_CENTER)
assertThat(mSfpsEnrollmentFeatureImpl.getCurrentSfpsEnrollStage(9, mapper))
.isEqualTo(SFPS_STAGE_FINGERTIP)
assertThat(mSfpsEnrollmentFeatureImpl.getCurrentSfpsEnrollStage(13, mapper))
.isEqualTo(SFPS_STAGE_LEFT_EDGE)
assertThat(mSfpsEnrollmentFeatureImpl.getCurrentSfpsEnrollStage(19, mapper))
.isEqualTo(SFPS_STAGE_RIGHT_EDGE)
assertThat(mSfpsEnrollmentFeatureImpl.getCurrentSfpsEnrollStage(25, mapper))
.isEqualTo(SFPS_STAGE_RIGHT_EDGE)
}
@Test
fun testGetFeaturedStageHeaderResource() {
val type = "string"
assertThat(
mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_NO_ANIMATION)
).isEqualTo(
settingsContext.resources.getIdentifier(
"security_settings_fingerprint_enroll_repeat_title",
type,
settingsPackageName)
)
assertThat(
mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_CENTER)
).isEqualTo(
settingsContext.resources.getIdentifier(
"security_settings_sfps_enroll_finger_center_title",
type,
settingsPackageName)
)
assertThat(
mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_FINGERTIP)
).isEqualTo(
settingsContext.resources.getIdentifier(
"security_settings_sfps_enroll_fingertip_title",
type,
settingsPackageName)
)
assertThat(
mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_LEFT_EDGE)
).isEqualTo(
settingsContext.resources.getIdentifier(
"security_settings_sfps_enroll_left_edge_title",
type,
settingsPackageName)
)
assertThat(
mSfpsEnrollmentFeatureImpl.getFeaturedStageHeaderResource(SFPS_STAGE_RIGHT_EDGE)
).isEqualTo(
settingsContext.resources.getIdentifier(
"security_settings_sfps_enroll_right_edge_title",
type,
settingsPackageName)
)
}
@Test
fun testGetSfpsEnrollLottiePerStage() {
val type = "raw"
assertThat(
mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_NO_ANIMATION)
).isEqualTo(
settingsContext.resources.getIdentifier(
"sfps_lottie_no_animation",
type,
settingsPackageName)
)
assertThat(
mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_CENTER)
).isEqualTo(
settingsContext.resources.getIdentifier(
"sfps_lottie_pad_center",
type,
settingsPackageName)
)
assertThat(
mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_FINGERTIP)
).isEqualTo(
settingsContext.resources.getIdentifier(
"sfps_lottie_tip",
type,
settingsPackageName)
)
assertThat(
mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_LEFT_EDGE)
).isEqualTo(
settingsContext.resources.getIdentifier(
"sfps_lottie_left_edge",
type,
settingsPackageName)
)
assertThat(
mSfpsEnrollmentFeatureImpl.getSfpsEnrollLottiePerStage(SFPS_STAGE_RIGHT_EDGE)
).isEqualTo(
settingsContext.resources.getIdentifier(
"sfps_lottie_right_edge",
type,
settingsPackageName)
)
}
}