package com.bumptech.glide.load.model; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.when; import android.net.Uri; import com.bumptech.glide.load.Options; import com.bumptech.glide.load.data.DataFetcher; import java.io.File; import java.io.IOException; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; /** * Tests for the {@link UriLoader} class. */ @RunWith(RobolectricTestRunner.class) @Config(manifest = Config.NONE, sdk = 18) public class UriLoaderTest { // Not a magic number, just arbitrary non zero. private static final int IMAGE_SIDE = 120; @Mock DataFetcher<Object> localUriFetcher; @Mock UriLoader.LocalUriFetcherFactory<Object> factory; private UriLoader<Object> loader; private Options options; @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); options = new Options(); loader = new UriLoader<>(factory); } @Test public void testHandlesFileUris() throws IOException { Uri fileUri = Uri.fromFile(new File("f")); when(factory.build(eq(fileUri))).thenReturn(localUriFetcher); assertTrue(loader.handles(fileUri)); assertEquals(localUriFetcher, loader.buildLoadData(fileUri, IMAGE_SIDE, IMAGE_SIDE, options).fetcher); } @Test public void testHandlesResourceUris() throws IOException { Uri resourceUri = Uri.parse("android.resource://com.bumptech.glide.tests/raw/ic_launcher"); when(factory.build(eq(resourceUri))).thenReturn(localUriFetcher); assertTrue(loader.handles(resourceUri)); assertEquals(localUriFetcher, loader.buildLoadData(resourceUri, IMAGE_SIDE, IMAGE_SIDE, options).fetcher); } @Test public void testHandlesContentUris() { Uri contentUri = Uri.parse("content://com.bumptech.glide"); when(factory.build(eq(contentUri))).thenReturn(localUriFetcher); assertTrue(loader.handles(contentUri)); assertEquals(localUriFetcher, loader.buildLoadData(contentUri, IMAGE_SIDE, IMAGE_SIDE, options).fetcher); } }