@Test public void testEngineLoadCancelledOnCancel() { Engine.LoadStatus loadStatus = mock(Engine.LoadStatus.class); when(harness.engine.load( anyInt(), anyInt(), any(ResourceDecoder.class), any(DataFetcher.class), any(Encoder.class), any(ResourceDecoder.class), any(Transformation.class), any(ResourceEncoder.class), any(ResourceTranscoder.class), any(Priority.class), anyBoolean(), any(DiskCacheStrategy.class), any(ResourceCallback.class))) .thenReturn(loadStatus); GenericRequest request = harness.getRequest(); request.begin(); request.onSizeReady(100, 100); request.cancel(); verify(loadStatus).cancel(); }
@Test public void testResourceOnlyReceivesOneGetOnResourceReady() { GenericRequest request = harness.getRequest(); request.onResourceReady(harness.resource); verify(harness.resource, times(1)).get(); }
@Test public void testIsFailedAfterNoResultAndNullException() { GenericRequest request = harness.getRequest(); request.onException(null); assertTrue(request.isFailed()); }
@Test public void testEngineLoadPassedCorrectPriority() { Priority expected = Priority.HIGH; harness.priority = expected; GenericRequest request = harness.getRequest(); request.begin(); request.onSizeReady(100, 100); verify(harness.engine) .load( anyInt(), anyInt(), any(ResourceDecoder.class), any(DataFetcher.class), any(Encoder.class), any(ResourceDecoder.class), any(Transformation.class), any(ResourceEncoder.class), any(ResourceTranscoder.class), eq(expected), anyBoolean(), any(DiskCacheStrategy.class), any(ResourceCallback.class)); }
@Test public void testIsCancelledAfterClear() { GenericRequest request = harness.getRequest(); request.clear(); assertTrue(request.isCancelled()); }
@Test public void testIsFailedAfterException() { GenericRequest request = harness.getRequest(); request.onException(new Exception("test")); assertTrue(request.isFailed()); }
@Test public void testIsPausedAfterPause() { GenericRequest request = harness.getRequest(); request.pause(); assertTrue(request.isPaused()); }
@Test public void testRequestListenerIsCalledWithLoadedFromMemoryIfLoadCompletesSynchronously() { final GenericRequest request = harness.getRequest(); when(harness.engine.load( anyInt(), anyInt(), any(ResourceDecoder.class), any(DataFetcher.class), any(Encoder.class), any(ResourceDecoder.class), any(Transformation.class), any(ResourceEncoder.class), any(ResourceTranscoder.class), any(Priority.class), anyBoolean(), any(DiskCacheStrategy.class), any(ResourceCallback.class))) .thenAnswer( new Answer<Object>() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { request.onResourceReady(harness.resource); return null; } }); request.begin(); request.onSizeReady(100, 100); verify(harness.requestListener) .onResourceReady( eq(harness.result), any(Number.class), any(Target.class), eq(true), anyBoolean()); }
@Test public void testIsNotCancelledAfterPause() { GenericRequest request = harness.getRequest(); request.pause(); assertFalse(request.isCancelled()); }
@Test public void testCanReRunCancelledRequests() { doAnswer(new CallSizeReady(100, 100)) .when(harness.target) .getSize(any(SizeReadyCallback.class)); when(harness.engine.load( anyInt(), anyInt(), any(ResourceDecoder.class), any(DataFetcher.class), any(Encoder.class), any(ResourceDecoder.class), any(Transformation.class), any(ResourceEncoder.class), any(ResourceTranscoder.class), any(Priority.class), anyBoolean(), any(DiskCacheStrategy.class), any(ResourceCallback.class))) .thenAnswer(new CallResourceCallback(harness.resource)); GenericRequest request = harness.getRequest(); request.begin(); request.cancel(); request.begin(); verify(harness.target, times(2)).onResourceReady(eq(harness.result), any(GlideAnimation.class)); }
@Test public void testIsNotCompleteAfterClear() { GenericRequest request = harness.getRequest(); request.onResourceReady(harness.resource); request.clear(); assertFalse(request.isComplete()); }
@Test public void testIsCompleteAfterReceivingResource() { GenericRequest request = harness.getRequest(); request.onResourceReady(harness.resource); assertTrue(request.isComplete()); }
@Test public void testIsNotRunningAfterComplete() { GenericRequest request = harness.getRequest(); request.begin(); request.onResourceReady(harness.resource); assertFalse(request.isRunning()); }
@Test public void testIsNotRunningAfterFailing() { GenericRequest request = harness.getRequest(); request.begin(); request.onException(new RuntimeException("Test")); assertFalse(request.isRunning()); }
@Test public void testIsNotRunningAfterClear() { GenericRequest request = harness.getRequest(); request.begin(); request.clear(); assertFalse(request.isRunning()); }
@Test public void testCallsTargetOnResourceReadyIfNoRequestListener() { harness.requestListener = null; GenericRequest request = harness.getRequest(); request.onResourceReady(harness.resource); verify(harness.target).onResourceReady(eq(harness.result), any(GlideAnimation.class)); }
@Test public void testDoesNotSetErrorDrawableIfRequestCoordinatorDoesntAllowIt() { harness.errorDrawable = new ColorDrawable(Color.RED); GenericRequest request = harness.getRequest(); when(harness.requestCoordinator.canNotifyStatusChanged(any(Request.class))).thenReturn(false); request.onException(new IOException("Test")); verify(harness.target, never()).onLoadFailed(any(Exception.class), any(Drawable.class)); }
@Test public void testDoesNotCallGetSizeIfOverrideWidthAndHeightAreSet() { harness.overrideWidth = 100; harness.overrideHeight = 100; GenericRequest request = harness.getRequest(); request.begin(); verify(harness.target, never()).getSize(any(SizeReadyCallback.class)); }
@Test public void testCallsGetSizeIfOverrideHeightIsLessThanZero() { harness.overrideHeight = -1; harness.overrideWidth = 100; GenericRequest request = harness.getRequest(); request.begin(); verify(harness.target).getSize(any(SizeReadyCallback.class)); }
@Test public void testTargetIsCalledWithAnimationFromFactory() { GenericRequest request = harness.getRequest(); GlideAnimation<List> glideAnimation = mock(GlideAnimation.class); when(harness.factory.build(anyBoolean(), anyBoolean())).thenReturn(glideAnimation); request.onResourceReady(harness.resource); verify(harness.target).onResourceReady(eq(harness.result), eq(glideAnimation)); }
@Test public void testIsNotPausedAfterBeginningWhilePaused() { GenericRequest request = harness.getRequest(); request.pause(); request.begin(); assertFalse(request.isPaused()); assertTrue(request.isRunning()); }
@Test public void testRequestListenerIsCalledWithTarget() { GenericRequest request = harness.getRequest(); request.onResourceReady(harness.resource); verify(harness.requestListener) .onResourceReady( any(List.class), any(Number.class), eq(harness.target), anyBoolean(), anyBoolean()); }
@Test public void testCallsTargetOnExceptionIfNoRequestListener() { harness.requestListener = null; GenericRequest request = harness.getRequest(); Exception exception = new IOException("test"); request.onException(exception); verify(harness.target).onLoadFailed(eq(exception), eq(harness.errorDrawable)); }
@Test public void testIsNotFailedAfterBegin() { GenericRequest request = harness.getRequest(); request.onResourceReady(null); request.begin(); assertFalse(request.isFailed()); }
@Test public void testResourceIsRecycledOnClear() { GenericRequest request = harness.getRequest(); request.onResourceReady(harness.resource); request.clear(); verify(harness.engine).release(eq(harness.resource)); }
@Test public void testRequestListenerIsCalledWithIsFirstResourceIfNoRequestCoordinator() { harness.requestCoordinator = null; GenericRequest request = harness.getRequest(); request.onResourceReady(harness.resource); verify(harness.requestListener) .onResourceReady( eq(harness.result), any(Number.class), any(Target.class), anyBoolean(), eq(true)); }
@Test public void testDoesNotCallTargetOnResourceReadyIfRequestListenerReturnsTrue() { GenericRequest request = harness.getRequest(); when(harness.requestListener.onResourceReady( any(List.class), any(Number.class), eq(harness.target), anyBoolean(), anyBoolean())) .thenReturn(true); request.onResourceReady(harness.resource); verify(harness.target, never()).onResourceReady(any(List.class), any(GlideAnimation.class)); }
@Test public void testCallsTargetOnResourceReadyIfRequestListenerReturnsFalse() { GenericRequest request = harness.getRequest(); when(harness.requestListener.onResourceReady( any(List.class), any(Number.class), eq(harness.target), anyBoolean(), anyBoolean())) .thenReturn(false); request.onResourceReady(harness.resource); verify(harness.target).onResourceReady(eq(harness.result), any(GlideAnimation.class)); }
@Test public void testCanHandleNullResources() { GenericRequest request = harness.getRequest(); request.onResourceReady(null); assertTrue(request.isFailed()); verify(harness.requestListener) .onException(any(Exception.class), any(Number.class), eq(harness.target), anyBoolean()); }
@Test public void testOnSizeReadyWithNullDataFetcherCallsOnException() { GenericRequest request = harness.getRequest(); when(harness.modelLoader.getResourceFetcher(any(Number.class), anyInt(), anyInt())) .thenReturn(null); request.begin(); request.onSizeReady(100, 100); verify(harness.requestListener) .onException(any(Exception.class), any(Number.class), any(Target.class), anyBoolean()); }