static Bitmap makeBitmap() { return makeBitmap(10, 10); }
@Test public void forAndroidXmlResourceRequest() { Resources resources = mockResources(XML_RESOURCE_VALUE); when(context.getResources()).thenReturn(resources); Action action = mockAction(RESOURCE_ID_KEY_1, null, null, RESOURCE_ID_1); ResourceDrawableRequestHandler requestHandler = ResourceDrawableRequestHandler.create(context, makeLoaderWithDrawable(null)); BitmapHunter hunter = forRequest(mockPicasso(requestHandler), dispatcher, cache, stats, action); assertThat(hunter.requestHandler).isInstanceOf(ResourceDrawableRequestHandler.class); }
@Test public void invokesErrorIfTargetIsNotNullWithErrorResourceId() { ImageView target = mockImageViewTarget(); Callback callback = mockCallback(); Picasso mock = mock(Picasso.class); ImageViewAction request = new ImageViewAction(mock, target, null, null, RESOURCE_ID_1, false, callback); Exception e = new RuntimeException(); request.error(e); verify(target).setImageResource(RESOURCE_ID_1); verify(callback).onError(e); }
@Test public void cancelExistingRequestWithUnknownTarget() { ImageView target = mockImageViewTarget(); Action action = mockAction(URI_KEY_1, URI_1, target); picasso.cancelRequest(target); verifyZeroInteractions(action, dispatcher); }
@Test public void performPauseTagIsIdempotent() { Action action = mockAction(URI_KEY_1, URI_1, mockTarget(), "tag"); BitmapHunter hunter = mockHunter(URI_KEY_1, new RequestHandler.Result(bitmap1, MEMORY), action); dispatcher.hunterMap.put(URI_KEY_1, hunter); dispatcher.pausedTags.add("tag"); dispatcher.performPauseTag("tag"); verify(hunter, never()).getAction(); }
@Test public void completeInvokesSuccessOnAllSuccessfulRequests() { Action action1 = mockAction(URI_KEY_1, URI_1, mockImageViewTarget()); Action action2 = mockCanceledAction(); BitmapHunter hunter = mockHunter(URI_KEY_1, new RequestHandler.Result(bitmap, MEMORY)); when(hunter.getActions()).thenReturn(Arrays.asList(action1, action2)); picasso.complete(hunter); verifyActionComplete(action1); verify(action2, never()).complete(any(RequestHandler.Result.class)); }
@Test public void performRetryMarksForReplayIfSupportedScansNetworkChangesAndShouldNotRetry() { NetworkInfo networkInfo = mockNetworkInfo(true); Action action = mockAction(URI_KEY_1, URI_1, mockTarget()); BitmapHunter hunter = mockHunter(URI_KEY_1, new RequestHandler.Result(bitmap1, MEMORY), action); when(hunter.supportsReplay()).thenReturn(true); when(hunter.shouldRetry(anyBoolean(), any(NetworkInfo.class))).thenReturn(false); when(connectivityManager.getActiveNetworkInfo()).thenReturn(networkInfo); dispatcher.performRetry(hunter); assertThat(dispatcher.hunterMap).isEmpty(); assertThat(dispatcher.failedActions).hasSize(1); verify(service, never()).submit(hunter); }
@Test public void forAndroidBitmapResourceUriWithId() { Action action = mockAction(RESOURCE_ID_URI_KEY, RESOURCE_ID_URI); BitmapHunter hunter = forRequest(mockPicasso(new ResourceRequestHandler(context)), dispatcher, cache, stats, action); assertThat(hunter.requestHandler).isInstanceOf(ResourceRequestHandler.class); }
@Test public void completeDeliversToSingleAndMultiple() { Action action = mockAction(URI_KEY_1, URI_1, mockImageViewTarget()); Action action2 = mockAction(URI_KEY_1, URI_1, mockImageViewTarget()); BitmapHunter hunter = mockHunter(URI_KEY_1, new RequestHandler.Result(bitmap, MEMORY)); when(hunter.getAction()).thenReturn(action); when(hunter.getActions()).thenReturn(Arrays.asList(action2)); picasso.complete(hunter); verifyActionComplete(action); verifyActionComplete(action2); }
@Test public void cancelExistingRequestWithDeferredImageViewTarget() { ImageView target = mockImageViewTarget(); DeferredRequestCreator deferredRequestCreator = mockDeferredRequestCreator(); picasso.targetToDeferredRequestCreator.put(target, deferredRequestCreator); picasso.cancelRequest(target); verify(deferredRequestCreator).cancel(); assertThat(picasso.targetToDeferredRequestCreator).isEmpty(); }
@Test public void performSubmitWithShutdownAttachesRequest() { BitmapHunter hunter = mockHunter(URI_KEY_1 + KEY_SEPARATOR, new RequestHandler.Result(bitmap1, MEMORY)); dispatcher.hunterMap.put(URI_KEY_1 + KEY_SEPARATOR, hunter); when(service.isShutdown()).thenReturn(true); Action action = mockAction(URI_KEY_1, URI_1); dispatcher.performSubmit(action); assertThat(dispatcher.hunterMap).hasSize(1); verify(hunter).attach(action); verify(service, never()).submit(any(BitmapHunter.class)); }
@Test public void performRetryDoesNotMarkForReplayIfNotSupported() { NetworkInfo networkInfo = mockNetworkInfo(true); BitmapHunter hunter = mockHunter(URI_KEY_1, new RequestHandler.Result(bitmap1, MEMORY), mockAction(URI_KEY_1, URI_1)); when(hunter.supportsReplay()).thenReturn(false); when(hunter.shouldRetry(anyBoolean(), any(NetworkInfo.class))).thenReturn(false); when(connectivityManager.getActiveNetworkInfo()).thenReturn(networkInfo); dispatcher.performRetry(hunter); assertThat(dispatcher.hunterMap).isEmpty(); assertThat(dispatcher.failedActions).isEmpty(); verify(service, never()).submit(hunter); }
@Test public void invokesTargetAndCallbackSuccessIfTargetIsNotNull() { Bitmap bitmap = makeBitmap(); Dispatcher dispatcher = mock(Dispatcher.class); PlatformLruCache cache = new PlatformLruCache(0); Picasso picasso = new Picasso(RuntimeEnvironment.application, dispatcher, UNUSED_CALL_FACTORY, null, cache, null, NO_TRANSFORMERS, NO_HANDLERS, mock(Stats.class), Bitmap.Config.ARGB_8888, false, false); ImageView target = mockImageViewTarget(); Callback callback = mockCallback(); ImageViewAction request = new ImageViewAction(picasso, target, null, null, 0, false, callback); request.complete(new RequestHandler.Result(bitmap, MEMORY)); verify(target).setImageDrawable(any(PicassoDrawable.class)); verify(callback).onSuccess(); }
@Test public void stopPlaceholderAnimationOnError() { Picasso picasso = mock(Picasso.class); AnimationDrawable placeholder = mock(AnimationDrawable.class); ImageView target = mockImageViewTarget(); when(target.getDrawable()).thenReturn(placeholder); ImageViewAction request = new ImageViewAction(picasso, target, null, null, 0, false, null); request.error(new RuntimeException()); verify(placeholder).stop(); } }
@Test public void waitsForAnotherLayoutIfWidthOrHeightIsZero() { ImageView target = mockFitImageViewTarget(true); when(target.getWidth()).thenReturn(0); when(target.getHeight()).thenReturn(0); RequestCreator creator = mock(RequestCreator.class); DeferredRequestCreator request = new DeferredRequestCreator(creator, target, null); request.onPreDraw(); verify(target.getViewTreeObserver(), never()).removeOnPreDrawListener(request); verifyZeroInteractions(creator); }
@Test public void decodesImageThumbnailWithImageMimeType() { final Bitmap bitmap = makeBitmap(20, 20); Request request = new Request.Builder(MEDIA_STORE_CONTENT_1_URL, 0, ARGB_8888) .stableKey(MEDIA_STORE_CONTENT_KEY_1).resize(100, 100).build(); Action action = mockAction(request); MediaStoreRequestHandler requestHandler = create("image/png"); requestHandler.load(null, action.request, new RequestHandler.Callback() { @Override public void onSuccess(Result result) { assertBitmapsEqual(result.getBitmap(), bitmap); } @Override public void onError(@NonNull Throwable t) { fail(t.getMessage()); } }); }
@Test public void cancelClearsCallback() { ImageView target = mockFitImageViewTarget(true); Callback callback = mockCallback(); DeferredRequestCreator request = new DeferredRequestCreator(mock(RequestCreator.class), target, callback); assertThat(request.callback).isNotNull(); request.cancel(); assertThat(request.callback).isNull(); }
@Test public void invokesSuccessIfTargetIsNotNull() { Bitmap bitmap = makeBitmap(); BitmapTarget target = mockTarget(); BitmapTargetAction request = new BitmapTargetAction(mock(Picasso.class), target, null, null, 0); request.complete(new RequestHandler.Result(bitmap, MEMORY)); verify(target).onBitmapLoaded(bitmap, MEMORY); }
@Test public void completeSetsBitmapOnRemoteViews() { Callback callback = mockCallback(); Bitmap bitmap = makeBitmap(); RemoteViewsAction action = createAction(callback); action.complete(new RequestHandler.Result(bitmap, NETWORK)); verify(remoteViews).setImageViewBitmap(1, bitmap); verify(callback).onSuccess(); }
static BitmapHunter mockHunter(String key, RequestHandler.Result result) { return mockHunter(key, result, null); }