| package com.android.documentsui; |
| |
| import static com.google.common.truth.Truth.assertThat; |
| |
| import static org.mockito.ArgumentMatchers.any; |
| import static org.mockito.ArgumentMatchers.anyInt; |
| import static org.mockito.ArgumentMatchers.anyString; |
| import static org.mockito.ArgumentMatchers.eq; |
| import static org.mockito.Mockito.mock; |
| import static org.mockito.Mockito.never; |
| import static org.mockito.Mockito.verify; |
| import static org.mockito.Mockito.when; |
| |
| import android.content.Context; |
| import android.content.pm.ApplicationInfo; |
| import android.content.pm.PackageManager; |
| import android.content.pm.ProviderInfo; |
| import android.graphics.drawable.Drawable; |
| |
| import androidx.test.InstrumentationRegistry; |
| import androidx.test.filters.SmallTest; |
| |
| import com.android.documentsui.testing.TestProvidersAccess; |
| |
| import org.junit.Before; |
| import org.junit.Test; |
| |
| @SmallTest |
| public class IconUtilsTest { |
| private static final String AUDIO_MIME_TYPE = "audio"; |
| private static final String IMAGE_MIME_TYPE = "image"; |
| private static final String TEXT_MIME_TYPE = "text"; |
| private static final String VIDEO_MIME_TYPE = "video"; |
| private static final String GENERIC_MIME_TYPE = "generic"; |
| |
| private Context mTargetContext; |
| |
| @Before |
| public void setUp() throws Exception { |
| mTargetContext = InstrumentationRegistry.getTargetContext(); |
| } |
| |
| @Test |
| public void testLoadMimeIcon_isAudioMimeType() { |
| assertThat(IconUtils.loadMimeIcon(mTargetContext, AUDIO_MIME_TYPE)).isNotNull(); |
| } |
| |
| @Test |
| public void testLoadMimeIcon_isImageMimeType() { |
| assertThat(IconUtils.loadMimeIcon(mTargetContext, IMAGE_MIME_TYPE)).isNotNull(); |
| } |
| |
| @Test |
| public void testLoadMimeIcon_isGenericMimeType() { |
| assertThat(IconUtils.loadMimeIcon(mTargetContext, GENERIC_MIME_TYPE)).isNotNull(); |
| } |
| |
| @Test |
| public void testLoadMimeIcon_isVideoMimeType() { |
| assertThat(IconUtils.loadMimeIcon(mTargetContext, VIDEO_MIME_TYPE)).isNotNull(); |
| } |
| |
| @Test |
| public void testLoadMimeIcon_isTextMimeType() { |
| assertThat(IconUtils.loadMimeIcon(mTargetContext, TEXT_MIME_TYPE)).isNotNull(); |
| } |
| |
| @Test |
| public void testLoadMimeIcon_isMimeTypeNull_shouldReturnNull() { |
| assertThat(IconUtils.loadMimeIcon(mTargetContext, null)).isNull(); |
| } |
| |
| @Test |
| public void testLoadPackageIcon() throws PackageManager.NameNotFoundException { |
| final String authority = "a"; |
| final int icon = 1234; |
| final ProviderInfo providerInfo = new ProviderInfo(); |
| |
| Context context = mock(Context.class); |
| PackageManager packageManager = mock(PackageManager.class); |
| Drawable drawable = mock(Drawable.class); |
| |
| when(context.getPackageManager()).thenReturn(packageManager); |
| when(packageManager.resolveContentProvider(eq(authority), anyInt())).thenReturn( |
| providerInfo); |
| when(packageManager.getDrawable(anyString(), eq(icon), any(ApplicationInfo.class))) |
| .thenReturn(drawable); |
| |
| IconUtils.loadPackageIcon(context, TestProvidersAccess.USER_ID, authority, icon, |
| /* maybeShowBadge= */false); |
| |
| verify(packageManager).getDrawable(any(), eq(icon), any()); |
| verify(packageManager, never()).getUserBadgedIcon(drawable, |
| TestProvidersAccess.USER_HANDLE); |
| } |
| |
| @Test |
| public void testLoadPackageIcon_maybeShowBadge() throws PackageManager.NameNotFoundException { |
| final String authority = "a"; |
| final int icon = 1234; |
| final ProviderInfo providerInfo = new ProviderInfo(); |
| |
| Context context = mock(Context.class); |
| PackageManager packageManager = mock(PackageManager.class); |
| Drawable drawable = mock(Drawable.class); |
| |
| when(context.getPackageManager()).thenReturn(packageManager); |
| when(packageManager.resolveContentProvider(eq(authority), anyInt())).thenReturn( |
| providerInfo); |
| when(packageManager.getDrawable(any(), eq(icon), any())).thenReturn(drawable); |
| |
| IconUtils.loadPackageIcon(context, TestProvidersAccess.USER_ID, authority, icon, |
| /* maybeShowBadge= */true); |
| |
| verify(packageManager).getDrawable(any(), eq(icon), any()); |
| verify(packageManager).getUserBadgedIcon(drawable, TestProvidersAccess.USER_HANDLE); |
| } |
| } |