New feature “Text and reading options” for SetupWizard, Wallpaper, and Settings (4/n).
- Extending the interface of AppGridView to be flexible. It will be used in the TextReadingPreferenceFragment. 1. Add a new attribute "appCounts" into the view. 2. Default app counts as 6 if not set the attribute. Bug: 211503117 Test: make -j64 RunSettingsRoboTests ROBOTEST_FILTER=AppGridViewTest Change-Id: I94a5f1d037551f6faba0300a176feb11fba1f203
This commit is contained in:
@@ -18,26 +18,39 @@ package com.android.settings.display;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ActivityInfo;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.IconDrawableFactory;
|
||||
|
||||
import com.android.settings.R;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.Robolectric;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Tests for {@link AppGridView}.
|
||||
*/
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class AppGridViewTest {
|
||||
|
||||
@@ -87,4 +100,72 @@ public class AppGridViewTest {
|
||||
assertThat(entry1.compareTo(entry2)).isEqualTo(0);
|
||||
assertThat(entry1.compareTo(entry3)).isNotEqualTo(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void noAppCountAttribute_matchListSize() {
|
||||
final int appCountFromSystem = 8;
|
||||
setUpResolveInfos(appCountFromSystem);
|
||||
|
||||
final AppGridView appGridView = new AppGridView(mContext, /* attrs= */ null);
|
||||
|
||||
assertThat(appGridView.getAdapter().getCount()).isEqualTo(/* expected= */ 6);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setAppCountAttribute_matchListSize() {
|
||||
final int appCountFromSystem = 8;
|
||||
final int appCountFromAttr = 7;
|
||||
setUpResolveInfos(appCountFromSystem);
|
||||
|
||||
final AppGridView appGridView =
|
||||
new AppGridView(mContext, createAttributeSet(appCountFromAttr));
|
||||
|
||||
assertThat(appGridView.getAdapter().getCount()).isEqualTo(appCountFromAttr);
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void setAppCountAttribute_belowLowerBound_matchListSize() {
|
||||
final int appCountFromSystem = 9;
|
||||
final int appCountFromAttr = -1; // The num is just for the test.
|
||||
setUpResolveInfos(appCountFromSystem);
|
||||
|
||||
new AppGridView(mContext, createAttributeSet(appCountFromAttr));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setAppCountAttribute_aboveUpperBound_matchListSize() {
|
||||
final int appCountFromSystem = 10;
|
||||
final int appCountFromAttr = 15;
|
||||
setUpResolveInfos(appCountFromSystem);
|
||||
|
||||
final AppGridView appGridView =
|
||||
new AppGridView(mContext, createAttributeSet(appCountFromAttr));
|
||||
|
||||
assertThat(appGridView.getAdapter().getCount()).isEqualTo(appCountFromSystem);
|
||||
}
|
||||
|
||||
private AttributeSet createAttributeSet(int appCount) {
|
||||
return Robolectric.buildAttributeSet()
|
||||
.addAttribute(R.attr.appCount, String.valueOf(appCount))
|
||||
.build();
|
||||
}
|
||||
|
||||
private void setUpResolveInfos(int appCount) {
|
||||
when(mContext.getPackageManager().queryIntentActivities(
|
||||
any(Intent.class), anyInt()))
|
||||
.thenReturn(createFakeResolveInfos(appCount));
|
||||
}
|
||||
|
||||
private List<ResolveInfo> createFakeResolveInfos(int count) {
|
||||
final List<ResolveInfo> list = new ArrayList<>();
|
||||
|
||||
for (int i = 0; i < count; i++) {
|
||||
final ResolveInfo info = new ResolveInfo();
|
||||
info.nonLocalizedLabel = String.valueOf(i);
|
||||
|
||||
list.add(info);
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user