arangelov | 24eec2f | 2018-05-30 18:24:23 +0100 | [diff] [blame] | 1 | package com.android.settingslib.drawer; |
| 2 | |
Fan Zhang | 4c07a71 | 2018-08-06 10:04:14 -0700 | [diff] [blame] | 3 | import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_ORDER; |
arangelov | 24eec2f | 2018-05-30 18:24:23 +0100 | [diff] [blame] | 4 | import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_PROFILE; |
Fan Zhang | 83dde97 | 2018-07-23 16:51:14 -0700 | [diff] [blame] | 5 | import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON; |
| 6 | import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_URI; |
arangelov | 24eec2f | 2018-05-30 18:24:23 +0100 | [diff] [blame] | 7 | import static com.android.settingslib.drawer.TileUtils.PROFILE_ALL; |
| 8 | import static com.android.settingslib.drawer.TileUtils.PROFILE_PRIMARY; |
| 9 | |
Fan Zhang | b5bf739 | 2018-07-25 13:36:33 -0700 | [diff] [blame] | 10 | import static com.google.common.truth.Truth.assertThat; |
| 11 | |
Fan Zhang | 83dde97 | 2018-07-23 16:51:14 -0700 | [diff] [blame] | 12 | import android.content.pm.ActivityInfo; |
arangelov | 24eec2f | 2018-05-30 18:24:23 +0100 | [diff] [blame] | 13 | import android.os.Bundle; |
Fan Zhang | 1b0dfa3 | 2018-07-20 12:57:55 -0700 | [diff] [blame] | 14 | |
arangelov | 24eec2f | 2018-05-30 18:24:23 +0100 | [diff] [blame] | 15 | import org.junit.Before; |
arangelov | 24eec2f | 2018-05-30 18:24:23 +0100 | [diff] [blame] | 16 | import org.junit.Test; |
Fan Zhang | b5bf739 | 2018-07-25 13:36:33 -0700 | [diff] [blame] | 17 | import org.junit.runner.RunWith; |
James Lemieux | ec3ad9e | 2018-11-28 17:49:14 -0800 | [diff] [blame] | 18 | import org.robolectric.RobolectricTestRunner; |
Fan Zhang | 83dde97 | 2018-07-23 16:51:14 -0700 | [diff] [blame] | 19 | import org.robolectric.RuntimeEnvironment; |
| 20 | |
James Lemieux | ec3ad9e | 2018-11-28 17:49:14 -0800 | [diff] [blame] | 21 | @RunWith(RobolectricTestRunner.class) |
arangelov | 24eec2f | 2018-05-30 18:24:23 +0100 | [diff] [blame] | 22 | public class TileTest { |
| 23 | |
Fan Zhang | 83dde97 | 2018-07-23 16:51:14 -0700 | [diff] [blame] | 24 | private ActivityInfo mActivityInfo; |
arangelov | 24eec2f | 2018-05-30 18:24:23 +0100 | [diff] [blame] | 25 | private Tile mTile; |
| 26 | |
| 27 | @Before |
| 28 | public void setUp() { |
Fan Zhang | 83dde97 | 2018-07-23 16:51:14 -0700 | [diff] [blame] | 29 | mActivityInfo = new ActivityInfo(); |
| 30 | mActivityInfo.packageName = RuntimeEnvironment.application.getPackageName(); |
Fan Zhang | a79ab48 | 2018-08-07 13:04:20 -0700 | [diff] [blame] | 31 | mActivityInfo.name = "abc"; |
Amin Shaikh | 10f363b | 2019-01-24 17:59:49 -0500 | [diff] [blame] | 32 | mActivityInfo.icon = com.android.internal.R.drawable.ic_plus; |
Fan Zhang | f5c1d76 | 2018-08-03 09:14:32 -0700 | [diff] [blame] | 33 | mActivityInfo.metaData = new Bundle(); |
| 34 | mTile = new Tile(mActivityInfo, "category"); |
arangelov | 24eec2f | 2018-05-30 18:24:23 +0100 | [diff] [blame] | 35 | } |
| 36 | |
| 37 | @Test |
| 38 | public void isPrimaryProfileOnly_profilePrimary_shouldReturnTrue() { |
Fan Zhang | f5c1d76 | 2018-08-03 09:14:32 -0700 | [diff] [blame] | 39 | mActivityInfo.metaData.putString(META_DATA_KEY_PROFILE, PROFILE_PRIMARY); |
arangelov | 24eec2f | 2018-05-30 18:24:23 +0100 | [diff] [blame] | 40 | assertThat(mTile.isPrimaryProfileOnly()).isTrue(); |
| 41 | } |
| 42 | |
| 43 | @Test |
| 44 | public void isPrimaryProfileOnly_profileAll_shouldReturnFalse() { |
Fan Zhang | f5c1d76 | 2018-08-03 09:14:32 -0700 | [diff] [blame] | 45 | mActivityInfo.metaData.putString(META_DATA_KEY_PROFILE, PROFILE_ALL); |
arangelov | 24eec2f | 2018-05-30 18:24:23 +0100 | [diff] [blame] | 46 | 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 Zhang | f5c1d76 | 2018-08-03 09:14:32 -0700 | [diff] [blame] | 56 | mActivityInfo.metaData = null; |
arangelov | 24eec2f | 2018-05-30 18:24:23 +0100 | [diff] [blame] | 57 | assertThat(mTile.isPrimaryProfileOnly()).isFalse(); |
| 58 | } |
Fan Zhang | 83dde97 | 2018-07-23 16:51:14 -0700 | [diff] [blame] | 59 | |
| 60 | @Test |
Fan Zhang | 0e20123 | 2018-07-26 11:26:44 -0700 | [diff] [blame] | 61 | public void getIcon_noContextOrMetadata_returnNull() { |
Fan Zhang | a79ab48 | 2018-08-07 13:04:20 -0700 | [diff] [blame] | 62 | mActivityInfo.metaData = null; |
| 63 | final Tile tile = new Tile(mActivityInfo, "category"); |
Fan Zhang | 0e20123 | 2018-07-26 11:26:44 -0700 | [diff] [blame] | 64 | assertThat(tile.getIcon(null)).isNull(); |
| 65 | assertThat(tile.getIcon(RuntimeEnvironment.application)).isNull(); |
Fan Zhang | 83dde97 | 2018-07-23 16:51:14 -0700 | [diff] [blame] | 66 | } |
| 67 | |
| 68 | @Test |
| 69 | public void getIcon_providedByUri_returnNull() { |
Fan Zhang | f5c1d76 | 2018-08-03 09:14:32 -0700 | [diff] [blame] | 70 | mActivityInfo.metaData.putString(META_DATA_PREFERENCE_ICON_URI, "content://foobar/icon"); |
Fan Zhang | 83dde97 | 2018-07-23 16:51:14 -0700 | [diff] [blame] | 71 | |
Fan Zhang | 0e20123 | 2018-07-26 11:26:44 -0700 | [diff] [blame] | 72 | assertThat(mTile.getIcon(RuntimeEnvironment.application)).isNull(); |
Fan Zhang | 83dde97 | 2018-07-23 16:51:14 -0700 | [diff] [blame] | 73 | } |
| 74 | |
| 75 | @Test |
| 76 | public void getIcon_hasIconMetadata_returnIcon() { |
Philip P. Moltmann | 2d21d77 | 2018-08-30 11:06:49 -0700 | [diff] [blame] | 77 | mActivityInfo.metaData.putInt(META_DATA_PREFERENCE_ICON, android.R.drawable.ic_info); |
Fan Zhang | 83dde97 | 2018-07-23 16:51:14 -0700 | [diff] [blame] | 78 | |
Fan Zhang | 0e20123 | 2018-07-26 11:26:44 -0700 | [diff] [blame] | 79 | assertThat(mTile.getIcon(RuntimeEnvironment.application).getResId()) |
Philip P. Moltmann | 2d21d77 | 2018-08-30 11:06:49 -0700 | [diff] [blame] | 80 | .isEqualTo(android.R.drawable.ic_info); |
Fan Zhang | 83dde97 | 2018-07-23 16:51:14 -0700 | [diff] [blame] | 81 | } |
| 82 | |
| 83 | @Test |
| 84 | public void getIcon_noIconMetadata_returnActivityIcon() { |
Fan Zhang | f5c1d76 | 2018-08-03 09:14:32 -0700 | [diff] [blame] | 85 | mActivityInfo.metaData.putInt(META_DATA_PREFERENCE_ICON, 0); |
Fan Zhang | 83dde97 | 2018-07-23 16:51:14 -0700 | [diff] [blame] | 86 | |
Fan Zhang | 0e20123 | 2018-07-26 11:26:44 -0700 | [diff] [blame] | 87 | assertThat(mTile.getIcon(RuntimeEnvironment.application).getResId()) |
| 88 | .isEqualTo(mActivityInfo.icon); |
Fan Zhang | 83dde97 | 2018-07-23 16:51:14 -0700 | [diff] [blame] | 89 | } |
Fan Zhang | f5c1d76 | 2018-08-03 09:14:32 -0700 | [diff] [blame] | 90 | |
| 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 Zhang | a79ab48 | 2018-08-07 13:04:20 -0700 | [diff] [blame] | 116 | activityInfo.name = "abc"; |
Fan Zhang | f5c1d76 | 2018-08-03 09:14:32 -0700 | [diff] [blame] | 117 | |
| 118 | final Tile tile2 = new Tile(activityInfo, "category"); |
| 119 | assertThat(tile2.isIconTintable(RuntimeEnvironment.application)).isTrue(); |
| 120 | } |
Fan Zhang | 4c07a71 | 2018-08-06 10:04:14 -0700 | [diff] [blame] | 121 | |
| 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 | } |
arangelov | 24eec2f | 2018-05-30 18:24:23 +0100 | [diff] [blame] | 146 | } |