Add test cases for legacy components.
Bug: 168567356 Test: make RunSettingsRoboTests ROBOTEST_FILTER=ColorPreferenceTest && make RunSettingsRoboTests ROBOTEST_FILTER=EdgeTypePreferenceTest Change-Id: I7ffc0561c6124050fe8c37007e547facdf8ab278
This commit is contained in:
@@ -0,0 +1,200 @@
|
|||||||
|
/*
|
||||||
|
* 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 static org.mockito.Mockito.doReturn;
|
||||||
|
import static org.mockito.Mockito.spy;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.graphics.drawable.ColorDrawable;
|
||||||
|
import android.util.AttributeSet;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import androidx.preference.PreferenceViewHolder;
|
||||||
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
|
|
||||||
|
import com.android.settings.R;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.robolectric.Robolectric;
|
||||||
|
import org.robolectric.RobolectricTestRunner;
|
||||||
|
|
||||||
|
/** Tests for {@link ColorPreference}. */
|
||||||
|
@RunWith(RobolectricTestRunner.class)
|
||||||
|
public class ColorPreferenceTest {
|
||||||
|
|
||||||
|
private Context mContext;
|
||||||
|
private static final int COLOR_TRANSPARENT_VALUE = 0;
|
||||||
|
private static final int COLOR_WHITE_VALUE = 0xFFFFFFFF;
|
||||||
|
private static final int COLOR_BLACK_VALUE = 0xFF000000;
|
||||||
|
private static final String COLOR_TRANSPARENT = "TRANSPARENT";
|
||||||
|
private static final String COLOR_WHITE = "WHITE";
|
||||||
|
private static final String COLOR_BLACK = "BLACK";
|
||||||
|
private final int[] mColorValues =
|
||||||
|
{COLOR_TRANSPARENT_VALUE, COLOR_WHITE_VALUE, COLOR_BLACK_VALUE};
|
||||||
|
private final String[] mColorTitles = {COLOR_TRANSPARENT, COLOR_WHITE, COLOR_BLACK};
|
||||||
|
private View mRootView;
|
||||||
|
private ImageView mImageView;
|
||||||
|
private TextView mTextView;
|
||||||
|
private ColorPreference mColorPreference;
|
||||||
|
private PreferenceViewHolder mViewHolder;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void init() {
|
||||||
|
mContext = ApplicationProvider.getApplicationContext();
|
||||||
|
mRootView = spy(new View(mContext));
|
||||||
|
mViewHolder = spy(PreferenceViewHolder.createInstanceForTests(mRootView));
|
||||||
|
mImageView = spy(new ImageView(mContext));
|
||||||
|
mTextView = spy(new TextView(mContext));
|
||||||
|
|
||||||
|
final AttributeSet attributeSet = Robolectric.buildAttributeSet().build();
|
||||||
|
mColorPreference = new ColorPreference(mContext, attributeSet);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void setPreviewEnabled_enabled_shouldSetCustomLayout() {
|
||||||
|
mColorPreference.setPreviewEnabled(true);
|
||||||
|
|
||||||
|
assertThat(mColorPreference.getWidgetLayoutResource()).isEqualTo(R.layout.preference_color);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void setPreviewEnabled_disabled_shouldSetInvalidId() {
|
||||||
|
mColorPreference.setPreviewEnabled(false);
|
||||||
|
|
||||||
|
assertThat(mColorPreference.getWidgetLayoutResource()).isEqualTo(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void setTitles_titlesExist_returnTitle() {
|
||||||
|
mColorPreference.setTitles(mColorTitles);
|
||||||
|
|
||||||
|
assertThat(mColorPreference.getTitleAt(/* index= */ 0)).isEqualTo(mColorTitles[0]);
|
||||||
|
assertThat(mColorPreference.getTitleAt(/* index= */ 1)).isEqualTo(mColorTitles[1]);
|
||||||
|
assertThat(mColorPreference.getTitleAt(/* index= */ 2)).isEqualTo(mColorTitles[2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void setTitles_noTitle_returnRGBText() {
|
||||||
|
final int testIndex = 0;
|
||||||
|
mColorPreference.setValues(mColorValues);
|
||||||
|
final ListDialogPreference listDialogPreference = (ListDialogPreference) mColorPreference;
|
||||||
|
final int value = listDialogPreference.getValueAt(testIndex);
|
||||||
|
final int r = Color.red(value);
|
||||||
|
final int g = Color.green(value);
|
||||||
|
final int b = Color.blue(value);
|
||||||
|
final String rgbText = mContext.getString(R.string.color_custom, r, g, b);
|
||||||
|
|
||||||
|
mColorPreference.setTitles(null);
|
||||||
|
final CharSequence title = mColorPreference.getTitleAt(testIndex);
|
||||||
|
|
||||||
|
assertThat(title).isEqualTo(rgbText);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onBindViewHolder_enabled_transparent_matchBackgroundResource() {
|
||||||
|
doReturn(mImageView).when(mViewHolder).findViewById(R.id.color_preview);
|
||||||
|
mColorPreference.setPreviewEnabled(true);
|
||||||
|
|
||||||
|
mColorPreference.setEnabled(true);
|
||||||
|
mColorPreference.setTitles(mColorTitles);
|
||||||
|
mColorPreference.setValues(mColorValues);
|
||||||
|
mColorPreference.setValue(COLOR_TRANSPARENT_VALUE);
|
||||||
|
mColorPreference.onBindViewHolder(mViewHolder);
|
||||||
|
|
||||||
|
verify(mImageView).setBackgroundResource(R.drawable.transparency_tileable);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onBindViewHolder_enabled_titlesExist_matchDescription() {
|
||||||
|
doReturn(mImageView).when(mViewHolder).findViewById(R.id.color_preview);
|
||||||
|
mColorPreference.setPreviewEnabled(true);
|
||||||
|
|
||||||
|
mColorPreference.setEnabled(true);
|
||||||
|
mColorPreference.setTitles(mColorTitles);
|
||||||
|
mColorPreference.setValues(mColorValues);
|
||||||
|
mColorPreference.setValue(COLOR_WHITE_VALUE);
|
||||||
|
mColorPreference.onBindViewHolder(mViewHolder);
|
||||||
|
|
||||||
|
verify(mImageView).setContentDescription(COLOR_WHITE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onBindViewHolder_disabled_matchAlpha() {
|
||||||
|
doReturn(mImageView).when(mViewHolder).findViewById(R.id.color_preview);
|
||||||
|
mColorPreference.setPreviewEnabled(true);
|
||||||
|
mColorPreference.setValues(mColorValues);
|
||||||
|
mColorPreference.setValue(COLOR_WHITE_VALUE);
|
||||||
|
|
||||||
|
mColorPreference.setEnabled(false);
|
||||||
|
mColorPreference.onBindViewHolder(mViewHolder);
|
||||||
|
|
||||||
|
verify(mImageView).setAlpha(0.2f);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onBindListItem_transparent_matchBackgroundResource() {
|
||||||
|
final int colorTransparentIndex = 0;
|
||||||
|
doReturn(mImageView).when(mRootView).findViewById(R.id.color_swatch);
|
||||||
|
doReturn(mTextView).when(mRootView).findViewById(R.id.summary);
|
||||||
|
mColorPreference.setTitles(mColorTitles);
|
||||||
|
mColorPreference.setValues(mColorValues);
|
||||||
|
|
||||||
|
mColorPreference.onBindListItem(mRootView, colorTransparentIndex);
|
||||||
|
|
||||||
|
verify(mImageView).setBackgroundResource(R.drawable.transparency_tileable);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onBindListItem_colorDrawable_matchColor() {
|
||||||
|
final int testIndex = 0;
|
||||||
|
final ColorDrawable colorDrawable = spy(new ColorDrawable());
|
||||||
|
doReturn(mImageView).when(mRootView).findViewById(R.id.color_swatch);
|
||||||
|
doReturn(colorDrawable).when(mImageView).getDrawable();
|
||||||
|
doReturn(mTextView).when(mRootView).findViewById(R.id.summary);
|
||||||
|
mColorPreference.setTitles(mColorTitles);
|
||||||
|
mColorPreference.setValues(mColorValues);
|
||||||
|
|
||||||
|
mColorPreference.onBindListItem(mRootView, testIndex);
|
||||||
|
final int argb = mColorPreference.getValueAt(testIndex);
|
||||||
|
final int alpha = Color.alpha(argb);
|
||||||
|
|
||||||
|
verify(colorDrawable).setColor(alpha);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onBindListItem_colorDrawable_matchSummary() {
|
||||||
|
final int testIndex = 0;
|
||||||
|
doReturn(mImageView).when(mRootView).findViewById(R.id.color_swatch);
|
||||||
|
doReturn(mTextView).when(mRootView).findViewById(R.id.summary);
|
||||||
|
mColorPreference.setTitles(mColorTitles);
|
||||||
|
mColorPreference.setValues(mColorValues);
|
||||||
|
|
||||||
|
mColorPreference.onBindListItem(mRootView, /* index= */ testIndex);
|
||||||
|
final CharSequence title = mColorPreference.getTitleAt(testIndex);
|
||||||
|
|
||||||
|
verify(mTextView).setText(title);
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,97 @@
|
|||||||
|
/*
|
||||||
|
* 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 static org.mockito.Mockito.doReturn;
|
||||||
|
import static org.mockito.Mockito.spy;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.util.AttributeSet;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.accessibility.CaptioningManager.CaptionStyle;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
|
|
||||||
|
import com.android.internal.widget.SubtitleView;
|
||||||
|
import com.android.settings.R;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.robolectric.Robolectric;
|
||||||
|
import org.robolectric.RobolectricTestRunner;
|
||||||
|
|
||||||
|
/** Tests for {@link EdgeTypePreference}. */
|
||||||
|
@RunWith(RobolectricTestRunner.class)
|
||||||
|
public class EdgeTypePreferenceTest {
|
||||||
|
|
||||||
|
private Context mContext;
|
||||||
|
private View mRootView;
|
||||||
|
private TextView mSummaryView;
|
||||||
|
private SubtitleView mSubtitleView;
|
||||||
|
private EdgeTypePreference mEdgeTypePreference;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void init() {
|
||||||
|
mContext = ApplicationProvider.getApplicationContext();
|
||||||
|
mRootView = spy(new View(mContext));
|
||||||
|
mSummaryView = spy(new TextView(mContext));
|
||||||
|
mSubtitleView = spy(new SubtitleView(mContext));
|
||||||
|
|
||||||
|
final AttributeSet attributeSet = Robolectric.buildAttributeSet().build();
|
||||||
|
mEdgeTypePreference = spy(new EdgeTypePreference(mContext, attributeSet));
|
||||||
|
doReturn(mSubtitleView).when(mRootView).findViewById(R.id.preview);
|
||||||
|
doReturn(mSummaryView).when(mRootView).findViewById(R.id.summary);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldDisableDependents_edgeTypeNone_returnTrue() {
|
||||||
|
mEdgeTypePreference.setValue(CaptionStyle.EDGE_TYPE_NONE);
|
||||||
|
final boolean shouldDisableDependents =
|
||||||
|
mEdgeTypePreference.shouldDisableDependents();
|
||||||
|
|
||||||
|
assertThat(shouldDisableDependents).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onBindListItem_initSubtitleView() {
|
||||||
|
final int testIndex = 0;
|
||||||
|
mEdgeTypePreference.onBindListItem(mRootView, testIndex);
|
||||||
|
final float density = mContext.getResources().getDisplayMetrics().density;
|
||||||
|
final int value = mEdgeTypePreference.getValueAt(testIndex);
|
||||||
|
|
||||||
|
verify(mSubtitleView).setForegroundColor(Color.WHITE);
|
||||||
|
verify(mSubtitleView).setBackgroundColor(Color.TRANSPARENT);
|
||||||
|
verify(mSubtitleView).setTextSize(32f * density);
|
||||||
|
verify(mSubtitleView).setEdgeType(value);
|
||||||
|
verify(mSubtitleView).setEdgeColor(Color.BLACK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onBindListItem_setSummary() {
|
||||||
|
final int testIndex = 0;
|
||||||
|
mEdgeTypePreference.onBindListItem(mRootView, testIndex);
|
||||||
|
final CharSequence title = mEdgeTypePreference.getTitleAt(testIndex);
|
||||||
|
|
||||||
|
verify(mSummaryView).setText(title);
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user