blob: 491f32dd1185abfe53f55104754485776d198388 [file] [log] [blame]
arangelov24eec2f2018-05-30 18:24:23 +01001package com.android.settingslib.drawer;
2
Fan Zhang4c07a712018-08-06 10:04:14 -07003import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_ORDER;
arangelov24eec2f2018-05-30 18:24:23 +01004import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_PROFILE;
Fan Zhang83dde972018-07-23 16:51:14 -07005import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON;
6import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_URI;
arangelov24eec2f2018-05-30 18:24:23 +01007import static com.android.settingslib.drawer.TileUtils.PROFILE_ALL;
8import static com.android.settingslib.drawer.TileUtils.PROFILE_PRIMARY;
9
Fan Zhangb5bf7392018-07-25 13:36:33 -070010import static com.google.common.truth.Truth.assertThat;
11
Fan Zhang83dde972018-07-23 16:51:14 -070012import android.content.pm.ActivityInfo;
arangelov24eec2f2018-05-30 18:24:23 +010013import android.os.Bundle;
Fan Zhang1b0dfa32018-07-20 12:57:55 -070014
arangelov24eec2f2018-05-30 18:24:23 +010015import org.junit.Before;
arangelov24eec2f2018-05-30 18:24:23 +010016import org.junit.Test;
Fan Zhangb5bf7392018-07-25 13:36:33 -070017import org.junit.runner.RunWith;
James Lemieuxec3ad9e2018-11-28 17:49:14 -080018import org.robolectric.RobolectricTestRunner;
Fan Zhang83dde972018-07-23 16:51:14 -070019import org.robolectric.RuntimeEnvironment;
20
James Lemieuxec3ad9e2018-11-28 17:49:14 -080021@RunWith(RobolectricTestRunner.class)
arangelov24eec2f2018-05-30 18:24:23 +010022public class TileTest {
23
Fan Zhang83dde972018-07-23 16:51:14 -070024 private ActivityInfo mActivityInfo;
arangelov24eec2f2018-05-30 18:24:23 +010025 private Tile mTile;
26
27 @Before
28 public void setUp() {
Fan Zhang83dde972018-07-23 16:51:14 -070029 mActivityInfo = new ActivityInfo();
30 mActivityInfo.packageName = RuntimeEnvironment.application.getPackageName();
Fan Zhanga79ab482018-08-07 13:04:20 -070031 mActivityInfo.name = "abc";
Amin Shaikh10f363b2019-01-24 17:59:49 -050032 mActivityInfo.icon = com.android.internal.R.drawable.ic_plus;
Fan Zhangf5c1d762018-08-03 09:14:32 -070033 mActivityInfo.metaData = new Bundle();
34 mTile = new Tile(mActivityInfo, "category");
arangelov24eec2f2018-05-30 18:24:23 +010035 }
36
37 @Test
38 public void isPrimaryProfileOnly_profilePrimary_shouldReturnTrue() {
Fan Zhangf5c1d762018-08-03 09:14:32 -070039 mActivityInfo.metaData.putString(META_DATA_KEY_PROFILE, PROFILE_PRIMARY);
arangelov24eec2f2018-05-30 18:24:23 +010040 assertThat(mTile.isPrimaryProfileOnly()).isTrue();
41 }
42
43 @Test
44 public void isPrimaryProfileOnly_profileAll_shouldReturnFalse() {
Fan Zhangf5c1d762018-08-03 09:14:32 -070045 mActivityInfo.metaData.putString(META_DATA_KEY_PROFILE, PROFILE_ALL);
arangelov24eec2f2018-05-30 18:24:23 +010046 assertThat(mTile.isPrimaryProfileOnly()).isFalse();
47 }
48
49 @Test
50 public void isPrimaryProfileOnly_noExplicitValue_shouldReturnFalse() {
51 assertThat(mTile.isPrimaryProfileOnly()).isFalse();
52 }
53
54 @Test
55 public void isPrimaryProfileOnly_nullMetadata_shouldReturnFalse() {
Fan Zhangf5c1d762018-08-03 09:14:32 -070056 mActivityInfo.metaData = null;
arangelov24eec2f2018-05-30 18:24:23 +010057 assertThat(mTile.isPrimaryProfileOnly()).isFalse();
58 }
Fan Zhang83dde972018-07-23 16:51:14 -070059
60 @Test
Fan Zhang0e201232018-07-26 11:26:44 -070061 public void getIcon_noContextOrMetadata_returnNull() {
Fan Zhanga79ab482018-08-07 13:04:20 -070062 mActivityInfo.metaData = null;
63 final Tile tile = new Tile(mActivityInfo, "category");
Fan Zhang0e201232018-07-26 11:26:44 -070064 assertThat(tile.getIcon(null)).isNull();
65 assertThat(tile.getIcon(RuntimeEnvironment.application)).isNull();
Fan Zhang83dde972018-07-23 16:51:14 -070066 }
67
68 @Test
69 public void getIcon_providedByUri_returnNull() {
Fan Zhangf5c1d762018-08-03 09:14:32 -070070 mActivityInfo.metaData.putString(META_DATA_PREFERENCE_ICON_URI, "content://foobar/icon");
Fan Zhang83dde972018-07-23 16:51:14 -070071
Fan Zhang0e201232018-07-26 11:26:44 -070072 assertThat(mTile.getIcon(RuntimeEnvironment.application)).isNull();
Fan Zhang83dde972018-07-23 16:51:14 -070073 }
74
75 @Test
76 public void getIcon_hasIconMetadata_returnIcon() {
Philip P. Moltmann2d21d772018-08-30 11:06:49 -070077 mActivityInfo.metaData.putInt(META_DATA_PREFERENCE_ICON, android.R.drawable.ic_info);
Fan Zhang83dde972018-07-23 16:51:14 -070078
Fan Zhang0e201232018-07-26 11:26:44 -070079 assertThat(mTile.getIcon(RuntimeEnvironment.application).getResId())
Philip P. Moltmann2d21d772018-08-30 11:06:49 -070080 .isEqualTo(android.R.drawable.ic_info);
Fan Zhang83dde972018-07-23 16:51:14 -070081 }
82
83 @Test
84 public void getIcon_noIconMetadata_returnActivityIcon() {
Fan Zhangf5c1d762018-08-03 09:14:32 -070085 mActivityInfo.metaData.putInt(META_DATA_PREFERENCE_ICON, 0);
Fan Zhang83dde972018-07-23 16:51:14 -070086
Fan Zhang0e201232018-07-26 11:26:44 -070087 assertThat(mTile.getIcon(RuntimeEnvironment.application).getResId())
88 .isEqualTo(mActivityInfo.icon);
Fan Zhang83dde972018-07-23 16:51:14 -070089 }
Fan Zhangf5c1d762018-08-03 09:14:32 -070090
91 @Test
92 public void isIconTintable_hasMetadata_shouldReturnIconTintableMetadata() {
93 final Tile tile = new Tile(mActivityInfo, "category");
94
95 mActivityInfo.metaData.putBoolean(TileUtils.META_DATA_PREFERENCE_ICON_TINTABLE, false);
96 assertThat(tile.isIconTintable(RuntimeEnvironment.application)).isFalse();
97
98 mActivityInfo.metaData.putBoolean(TileUtils.META_DATA_PREFERENCE_ICON_TINTABLE, true);
99 assertThat(tile.isIconTintable(RuntimeEnvironment.application)).isTrue();
100 }
101
102 @Test
103 public void isIconTintable_noIcon_shouldReturnFalse() {
104 final Tile tile = new Tile(mActivityInfo, "category");
105
106 assertThat(tile.isIconTintable(RuntimeEnvironment.application)).isFalse();
107 }
108
109 @Test
110 public void isIconTintable_noMetadata_shouldReturnPackageNameCheck() {
111 final Tile tile1 = new Tile(mActivityInfo, "category");
112 assertThat(tile1.isIconTintable(RuntimeEnvironment.application)).isFalse();
113
114 final ActivityInfo activityInfo = new ActivityInfo();
115 activityInfo.packageName = "blah";
Fan Zhanga79ab482018-08-07 13:04:20 -0700116 activityInfo.name = "abc";
Fan Zhangf5c1d762018-08-03 09:14:32 -0700117
118 final Tile tile2 = new Tile(activityInfo, "category");
119 assertThat(tile2.isIconTintable(RuntimeEnvironment.application)).isTrue();
120 }
Fan Zhang4c07a712018-08-06 10:04:14 -0700121
122 @Test
123 public void getPriority_noMetadata_return0() {
124 final Tile tile = new Tile(mActivityInfo, "category");
125
126 assertThat(tile.getOrder()).isEqualTo(0);
127 }
128
129 @Test
130 public void getPriority_badMetadata_return0() {
131 mActivityInfo.metaData.putString(META_DATA_KEY_ORDER, "1");
132
133 final Tile tile = new Tile(mActivityInfo, "category");
134
135 assertThat(tile.getOrder()).isEqualTo(0);
136 }
137
138 @Test
139 public void getPriority_validMetadata_returnMetadataValue() {
140 mActivityInfo.metaData.putInt(META_DATA_KEY_ORDER, 1);
141
142 final Tile tile = new Tile(mActivityInfo, "category");
143
144 assertThat(tile.getOrder()).isEqualTo(1);
145 }
arangelov24eec2f2018-05-30 18:24:23 +0100146}