From 5c6ba285b70841311b5f38d91616c1e39a1f9e89 Mon Sep 17 00:00:00 2001 From: Daniel Norman Date: Thu, 13 Apr 2023 12:42:33 -0700 Subject: [PATCH] Fixes SelectLongPressTimeoutPreferenceControllerTest summary check. This preference was updated in commit 6c3805288b15ae27d115cc89f50a672cd923870e 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 --- ...gPressTimeoutPreferenceControllerTest.java | 97 +++++++++++++++++++ ...gPressTimeoutPreferenceControllerTest.java | 79 --------------- 2 files changed, 97 insertions(+), 79 deletions(-) create mode 100644 tests/robotests/src/com/android/settings/accessibility/SelectLongPressTimeoutPreferenceControllerTest.java delete mode 100644 tests/unit/src/com/android/settings/accessibility/SelectLongPressTimeoutPreferenceControllerTest.java diff --git a/tests/robotests/src/com/android/settings/accessibility/SelectLongPressTimeoutPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/SelectLongPressTimeoutPreferenceControllerTest.java new file mode 100644 index 00000000000..7482e242e5e --- /dev/null +++ b/tests/robotests/src/com/android/settings/accessibility/SelectLongPressTimeoutPreferenceControllerTest.java @@ -0,0 +1,97 @@ +/* + * 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. + * 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.accessibility; + +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 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; + +/** Tests for {@link SelectLongPressTimeoutPreferenceController}. */ +@RunWith(RobolectricTestRunner.class) +public class SelectLongPressTimeoutPreferenceControllerTest { + 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 final Context mContext = ApplicationProvider.getApplicationContext(); + private SelectLongPressTimeoutPreferenceController mController; + private ListPreference mPreference; + + @Before + public void setUp() { + 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_shouldReturnAvailable() { + assertThat(mController.getAvailabilityStatus()) + .isEqualTo(BasePreferenceController.AVAILABLE); + } + + @Test + public void updateState_toShortTimeout_shouldReturnShortSummary() { + Settings.Secure.putInt(mContext.getContentResolver(), + Settings.Secure.LONG_PRESS_TIMEOUT, SHORT_VALUE); + mController.updateState(mPreference); + + assertThat(mPreference.getSummary().toString()).isEqualTo("Short"); + } + + @Test + public void updateState_toMediumTimeout_shouldReturnMediumSummary() { + Settings.Secure.putInt(mContext.getContentResolver(), + Settings.Secure.LONG_PRESS_TIMEOUT, MEDIUM_VALUE); + mController.updateState(mPreference); + + assertThat(mPreference.getSummary().toString()).isEqualTo("Medium"); + } + + @Test + 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(mPreference.getSummary().toString()).isEmpty(); + } +} diff --git a/tests/unit/src/com/android/settings/accessibility/SelectLongPressTimeoutPreferenceControllerTest.java b/tests/unit/src/com/android/settings/accessibility/SelectLongPressTimeoutPreferenceControllerTest.java deleted file mode 100644 index 899fc092080..00000000000 --- a/tests/unit/src/com/android/settings/accessibility/SelectLongPressTimeoutPreferenceControllerTest.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (C) 2020 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.accessibility; - -import static com.google.common.truth.Truth.assertThat; - -import android.content.Context; -import android.provider.Settings; - -import androidx.test.core.app.ApplicationProvider; -import androidx.test.ext.junit.runners.AndroidJUnit4; - -import com.android.settings.core.BasePreferenceController; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; - -@RunWith(AndroidJUnit4.class) -public class SelectLongPressTimeoutPreferenceControllerTest { - private static final int VALID_VALUE = 1500; - private static final int INVALID_VALUE = 0; - private static final int DEFAULT_VALUE = 400; - - private Context mContext; - private SelectLongPressTimeoutPreferenceController mController; - - @Before - public void setUp() { - mContext = ApplicationProvider.getApplicationContext(); - mController = new SelectLongPressTimeoutPreferenceController(mContext, "press_timeout"); - } - - @Test - public void getAvailabilityStatus_byDefault_shouldReturnAvailable() { - assertThat(mController.getAvailabilityStatus()) - .isEqualTo(BasePreferenceController.AVAILABLE); - } - - @Test - public void getSummary_byDefault_shouldReturnShort() { - Settings.Secure.putInt(mContext.getContentResolver(), - Settings.Secure.LONG_PRESS_TIMEOUT, DEFAULT_VALUE); - final String expected = "Short"; - - assertThat(mController.getSummary()).isEqualTo(expected); - } - - @Test - public void getSummary_validValue_shouldReturnLong() { - Settings.Secure.putInt(mContext.getContentResolver(), - Settings.Secure.LONG_PRESS_TIMEOUT, VALID_VALUE); - final String expected = "Long"; - - assertThat(mController.getSummary()).isEqualTo(expected); - } - - @Test - public void getSummary_invalidValue_shouldReturnNull() { - Settings.Secure.putInt(mContext.getContentResolver(), - Settings.Secure.LONG_PRESS_TIMEOUT, INVALID_VALUE); - - assertThat(mController.getSummary()).isNull(); - } -}