@SuppressWarnings("unchecked") @Before public void setUp() { MockitoAnnotations.initMocks(this); when(handler.obtainMessage(anyInt(), isA(DelayTarget.class))).thenReturn(mock(Message.class)); firstFrame = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888); ByteBuffer byteBuffer = ByteBuffer.allocate(10); when(gifDecoder.getData()).thenReturn(byteBuffer); requestBuilder = mock(RequestBuilder.class, new ReturnsSelfAnswer()); loader = createGifFrameLoader(handler); }
private void runTestFileDefaultLoader() { File file = new File("fake"); mockUri(Uri.fromFile(file)); requestManager.load(file).into(target); requestManager.load(file).into(imageView); verify(target).onResourceReady(isA(BitmapDrawable.class), isA(Transition.class)); verify(target).setRequest((Request) notNull()); assertNotNull(imageView.getDrawable()); }
@Test public void testByteArrayDefaultLoader() { byte[] bytes = new byte[10]; requestManager.load(bytes).into(target); requestManager.load(bytes).into(imageView); verify(target).onResourceReady(isA(BitmapDrawable.class), isA(Transition.class)); verify(target).setRequest((Request) notNull()); assertNotNull(imageView.getDrawable()); }
private void runTestIntegerDefaultLoader() { int integer = android.R.drawable.star_on; mockUri("android.resource://" + "android" + "/drawable/star_on"); requestManager.load(integer).into(target); requestManager.load(integer).into(imageView); verify(target).onResourceReady(isA(BitmapDrawable.class), isA(Transition.class)); verify(target).setRequest((Request) notNull()); assertNotNull(imageView.getDrawable()); }
@Test public void testAppliesGravityOnDrawAfterBoundsChange() { Rect bounds = new Rect(0, 0, frameWidth * 2, frameHeight * 2); drawable.setBounds(bounds); Canvas canvas = mock(Canvas.class); drawable.draw(canvas); verify(canvas).drawBitmap(isA(Bitmap.class), (Rect) isNull(), eq(bounds), eq(paint)); }
@Test public void testAddsNewRequestToRequestTracker() { getNullModelRequest().into(target); verify(requestManager).track(eq(target), isA(Request.class)); }
@Test public void testGetNextFrameIncrementsSignatureAndAdvancesDecoderBeforeStartingLoad() { InOrder order = inOrder(gifDecoder, requestBuilder); order.verify(gifDecoder).advance(); order.verify(requestBuilder).apply(isA(RequestOptions.class)); order.verify(requestBuilder).into(aTarget()); }
private RequestBuilder<Object> getNullModelRequest() { when(glideContext.buildImageViewTarget(isA(ImageView.class), isA(Class.class))) .thenReturn(mock(ViewTarget.class)); when(glideContext.getDefaultRequestOptions()).thenReturn(new RequestOptions()); when(requestManager.getDefaultRequestOptions()) .thenReturn(new RequestOptions()); when(requestManager.getDefaultTransitionOptions(any(Class.class))) .thenReturn(new GenericTransitionOptions<>()); return new RequestBuilder<>(glide, requestManager, Object.class, context) .load((Object) null); } }
@SuppressWarnings("unchecked") private <T> void registerMockStreamModelLoader(final Class<T> modelClass) { ModelLoader<T, InputStream> modelLoader = mockStreamModelLoader(modelClass); ModelLoaderFactory<T, InputStream> modelLoaderFactory = mock(ModelLoaderFactory.class); when(modelLoaderFactory.build(isA(MultiModelLoaderFactory.class))).thenReturn(modelLoader); Glide.get(context).getRegistry() .prepend(modelClass, InputStream.class, modelLoaderFactory); }
@Test public void testLoadResource_withNullInputStream_callsLoadFailed() { Context context = RuntimeEnvironment.application; Uri uri = Uri.parse("file://nothing"); ContentResolver contentResolver = context.getContentResolver(); ContentResolverShadow shadow = Shadow.extract(contentResolver); shadow.registerInputStream(uri, null /*inputStream*/); StreamLocalUriFetcher fetcher = new StreamLocalUriFetcher(context.getContentResolver(), uri); fetcher.loadData(Priority.LOW, callback); verify(callback).onLoadFailed(isA(FileNotFoundException.class)); } }
@Test public void testCallsLoadFailedIfStatusCodeIsNegativeOne() throws Exception { mockWebServer.enqueue(new MockResponse().setResponseCode(-1)); getFetcher().loadData(Priority.LOW, callback); waitForResponseLatch.await(); verify(callback).onLoadFailed(isA(VolleyError.class)); }
@Test public void testCallsLoadFailedIfStatusCodeIs400() throws Exception { mockWebServer.enqueue(new MockResponse().setResponseCode(400).setBody("error")); getFetcher().loadData(Priority.LOW, callback); waitForResponseLatch.await(); verify(callback).onLoadFailed(isA(VolleyError.class)); }
@Test public void testCanHandleNullResources() { SingleRequest<List> request = builder.addRequestListener(listener1).build(); request.onResourceReady(null, DataSource.LOCAL); assertTrue(request.isFailed()); verify(listener1).onLoadFailed(isAGlideException(), isA(Number.class), eq(builder.target), anyBoolean()); }
@Test public void testFailsIfStatusCodeIsNegativeOne() throws Exception { mockWebServer.enqueue(new MockResponse().setResponseCode(-1)); getFetcher().loadData(Priority.LOW, callback); verify(callback).onLoadFailed(isA(IOException.class)); }
@Test public void testFailsIfRedirectLocationIsNotPresent() throws Exception { mockWebServer.enqueue(new MockResponse().setResponseCode(301)); getFetcher().loadData(Priority.NORMAL, callback); verify(callback).onLoadFailed(isA(IOException.class)); }
@Test public void testFailsOnRedirectLoops() throws Exception { mockWebServer.enqueue(new MockResponse().setResponseCode(301) .setHeader("Location", mockWebServer.url("/redirect").toString())); mockWebServer.enqueue(new MockResponse().setResponseCode(301) .setHeader("Location", mockWebServer.url("/redirect").toString())); getFetcher().loadData(Priority.IMMEDIATE, callback); verify(callback).onLoadFailed(isA(IOException.class)); }