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

Commit 5c6ba285 authored by Daniel Norman's avatar Daniel Norman
Browse files

Fixes SelectLongPressTimeoutPreferenceControllerTest summary check.

This preference was updated in
commit 6c380528
to use "%s" summary and remove the controller's getSummary()
implementation so the old test that checked the controller summary
was failing.

This new version checks the preference's summary directly, but that
seems to require running using the robotest runner instead of unit test
so this test was moved there and now follows patterns used by other
similar tests there.

Fix: 278110568
Test: SelectLongPressTimeoutPreferenceControllerTest
Change-Id: Ib65c823a568ad200ebeae74ad443f32441e5cb73
parent c81a93c8
Loading
Loading
Loading
Loading
+97 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2020 The Android Open Source Project
 * Copyright (C) 2023 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.
@@ -21,59 +21,77 @@ import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
import android.provider.Settings;

import androidx.preference.ListPreference;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;

import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;

@RunWith(AndroidJUnit4.class)
/** Tests for {@link SelectLongPressTimeoutPreferenceController}. */
@RunWith(RobolectricTestRunner.class)
public class SelectLongPressTimeoutPreferenceControllerTest {
    private static final int VALID_VALUE = 1500;
    private static final int SHORT_VALUE = 400;
    private static final int MEDIUM_VALUE = 1000;
    private static final int LONG_VALUE = 1500;
    private static final int INVALID_VALUE = 0;
    private static final int DEFAULT_VALUE = 400;

    private Context mContext;
    private final Context mContext = ApplicationProvider.getApplicationContext();
    private SelectLongPressTimeoutPreferenceController mController;
    private ListPreference mPreference;

    @Before
    public void setUp() {
        mContext = ApplicationProvider.getApplicationContext();
        mController = new SelectLongPressTimeoutPreferenceController(mContext, "press_timeout");
        mPreference = new ListPreference(mContext);
        mPreference.setEntries(R.array.long_press_timeout_selector_titles);
        mPreference.setEntryValues(R.array.long_press_timeout_selector_values);
        mPreference.setSummary("%s");
    }

    @Test
    public void getAvailabilityStatus_byDefault_shouldReturnAvailable() {
    public void getAvailabilityStatus_shouldReturnAvailable() {
        assertThat(mController.getAvailabilityStatus())
                .isEqualTo(BasePreferenceController.AVAILABLE);
    }

    @Test
    public void getSummary_byDefault_shouldReturnShort() {
    public void updateState_toShortTimeout_shouldReturnShortSummary() {
        Settings.Secure.putInt(mContext.getContentResolver(),
                Settings.Secure.LONG_PRESS_TIMEOUT, DEFAULT_VALUE);
        final String expected = "Short";
                Settings.Secure.LONG_PRESS_TIMEOUT, SHORT_VALUE);
        mController.updateState(mPreference);

        assertThat(mController.getSummary()).isEqualTo(expected);
        assertThat(mPreference.getSummary().toString()).isEqualTo("Short");
    }

    @Test
    public void getSummary_validValue_shouldReturnLong() {
    public void updateState_toMediumTimeout_shouldReturnMediumSummary() {
        Settings.Secure.putInt(mContext.getContentResolver(),
                Settings.Secure.LONG_PRESS_TIMEOUT, VALID_VALUE);
        final String expected = "Long";
                Settings.Secure.LONG_PRESS_TIMEOUT, MEDIUM_VALUE);
        mController.updateState(mPreference);

        assertThat(mController.getSummary()).isEqualTo(expected);
        assertThat(mPreference.getSummary().toString()).isEqualTo("Medium");
    }

    @Test
    public void getSummary_invalidValue_shouldReturnNull() {
    public void updateState_toLongTimeout_shouldReturnLongSummary() {
        Settings.Secure.putInt(mContext.getContentResolver(),
                Settings.Secure.LONG_PRESS_TIMEOUT, LONG_VALUE);
        mController.updateState(mPreference);

        assertThat(mPreference.getSummary().toString()).isEqualTo("Long");
    }

    @Test
    public void updateState_toInvalidTimeout_shouldReturnEmptySummary() {
        Settings.Secure.putInt(mContext.getContentResolver(),
                Settings.Secure.LONG_PRESS_TIMEOUT, INVALID_VALUE);
        mController.updateState(mPreference);

        assertThat(mController.getSummary()).isNull();
        assertThat(mPreference.getSummary().toString()).isEmpty();
    }
}