Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b19aeb63 authored by lbill's avatar lbill
Browse files

Fix flaky fingerprintUdfpsOverlayEnrollment_PlaysAllAnimationsAssetsCorrectly

We should return the corresponding getStageThresholdSteps() for udfps test,
otherwise the test can simulate last stage only and make the test fail.

Bug: 228100413
Bug: 260659253
Test: make RunSettingsRoboTests ROBOTEST_FILTER= \
"com.android.settings.biometrics.fingerprint .FingerprintEnrollEnrollingTest"

Change-Id: I4c712c84f357f275e5a169d16d2ed382fa4494ef
parent fb8200ae
Loading
Loading
Loading
Loading
+21 −9
Original line number Diff line number Diff line
@@ -91,7 +91,10 @@ public class FingerprintEnrollEnrollingTest {

    private Resources.Theme mTheme;

    private static final int TOTAL_ENROLL_STEPS = 25;

    private final int[] mSfpsStageThresholds = new int[]{0, 9, 13, 19, 25};
    private final int[] mUdfpsStageThresholds = new int[]{0, 13, 17, 22};

    private FingerprintEnrollEnrolling mActivity;
    private Context mContext;
@@ -190,19 +193,19 @@ public class FingerprintEnrollEnrollingTest {
    public void fingerprintUdfpsOverlayEnrollment_PlaysAllAnimationsAssetsCorrectly() {
        initializeActivityFor(TYPE_UDFPS_OPTICAL);

        int totalEnrollSteps = 25;
        int initStageSteps = -1, initStageRemaining = 0;
        final int totalStages = mUdfpsStageThresholds.length;

        when(mSidecar.getEnrollmentSteps()).thenReturn(initStageSteps);
        when(mSidecar.getEnrollmentRemaining()).thenReturn(initStageRemaining);

        mActivity.onEnrollmentProgressChange(initStageSteps, initStageRemaining);

        when(mSidecar.getEnrollmentSteps()).thenReturn(totalEnrollSteps);
        when(mSidecar.getEnrollmentSteps()).thenReturn(TOTAL_ENROLL_STEPS);

        for (int remaining = totalEnrollSteps; remaining > 0; remaining--) {
        for (int remaining = TOTAL_ENROLL_STEPS; remaining > 0; remaining--) {
            when(mSidecar.getEnrollmentRemaining()).thenReturn(remaining);
            mActivity.onEnrollmentProgressChange(totalEnrollSteps, remaining);
            mActivity.onEnrollmentProgressChange(TOTAL_ENROLL_STEPS, remaining);
        }

        List<Integer> expectedLottieAssetOrder = List.of(
@@ -213,7 +216,7 @@ public class FingerprintEnrollEnrollingTest {
        );

        ArgumentCaptor<Integer> lottieAssetCaptor = ArgumentCaptor.forClass(Integer.class);
        verify(mIllustrationLottie, times(4)).setAnimation(lottieAssetCaptor.capture());
        verify(mIllustrationLottie, times(totalStages)).setAnimation(lottieAssetCaptor.capture());
        List<Integer> observedLottieAssetOrder = lottieAssetCaptor.getAllValues();
        assertThat(observedLottieAssetOrder).isEqualTo(expectedLottieAssetOrder);
    }
@@ -222,7 +225,6 @@ public class FingerprintEnrollEnrollingTest {
    public void fingerprintSfpsEnroll_PlaysAllAnimationsAssetsCorrectly() {
        initializeActivityFor(TYPE_POWER_BUTTON);

        int totalEnrollSteps = 25;
        int initStageSteps = -1, initStageRemaining = 0;

        when(mSidecar.getEnrollmentSteps()).thenReturn(initStageSteps);
@@ -230,11 +232,11 @@ public class FingerprintEnrollEnrollingTest {

        mActivity.onEnrollmentProgressChange(initStageSteps, initStageRemaining);

        when(mSidecar.getEnrollmentSteps()).thenReturn(totalEnrollSteps);
        when(mSidecar.getEnrollmentSteps()).thenReturn(TOTAL_ENROLL_STEPS);

        for (int remaining = totalEnrollSteps; remaining > 0; remaining--) {
        for (int remaining = TOTAL_ENROLL_STEPS; remaining > 0; remaining--) {
            when(mSidecar.getEnrollmentRemaining()).thenReturn(remaining);
            mActivity.onEnrollmentProgressChange(totalEnrollSteps, remaining);
            mActivity.onEnrollmentProgressChange(TOTAL_ENROLL_STEPS, remaining);
        }

        List<Integer> expectedLottieAssetOrder = List.of(
@@ -360,6 +362,16 @@ public class FingerprintEnrollEnrollingTest {
            doReturn(true).when(mSidecar).isEnrolling();
        }

        if (sensorType == TYPE_UDFPS_OPTICAL) {
            // UDFPS : STAGE_CENTER = 0, ... , STAGE_RIGHT_EDGE = 3
            final int totalStages = mUdfpsStageThresholds.length - 1;
            for (int stage = 0; stage <= totalStages; stage++) {
                doReturn(mUdfpsStageThresholds[stage]).when(mActivity).getStageThresholdSteps(
                        stage);
            }
            doReturn(true).when(mSidecar).isEnrolling();
        }

        ActivityController.of(mActivity).create(savedInstanceState);
        mTheme = mActivity.getTheme();
    }