@Test public void load_withResourceInActiveResources_doesNotCheckMemoryCache() { harness.activeResources.activate(harness.cacheKey, harness.resource); harness.doLoad(); verify(harness.cb).onResourceReady(eq(harness.resource), eq(DataSource.MEMORY_CACHE)); verify(harness.cache, never()).remove(any(Key.class)); }
@Test public void testAppliesTransformationsInOrder() { final int width = 584; final int height = 768; MultiTransformation<Object> transformation = new MultiTransformation<>(first, second); when(first.transform(anyContext(), eq(initial), eq(width), eq(height))) .thenReturn(firstTransformed); when(second.transform(anyContext(), eq(firstTransformed), eq(width), eq(height))) .thenReturn(secondTransformed); assertEquals(secondTransformed, transformation.transform(context, initial, width, height)); }
@Test public void testAddsNewUrlToCacheIfNotPresentInCache() { urlLoader.resultUrl = "fakeUrl"; Object model = new Object(); int width = 400; int height = 500; doAnswer(new Answer<Void>() { @Override public Void answer(InvocationOnMock invocationOnMock) { GlideUrl glideUrl = (GlideUrl) invocationOnMock.getArguments()[3]; assertEquals(urlLoader.resultUrl, glideUrl.toStringUrl()); return null; } }).when(modelCache).put(eq(model), eq(width), eq(height), any(GlideUrl.class)); urlLoader.buildLoadData(model, width, height, options); verify(modelCache).put(eq(model), eq(width), eq(height), any(GlideUrl.class)); }
@Test public void testStartsAnimationOnAnimate() { Animation animation = mock(Animation.class); when(viewTransitionAnimationFactory.build(any(Context.class))).thenReturn(animation); viewAnimation.transition(null, adapter); verify(view).clearAnimation(); verify(view).startAnimation(eq(animation)); } }
@Test public void testRequestListenerIsCalledWithNotLoadedFromMemoryCacheIfLoadCompletesAsynchronously() { SingleRequest<List> request = builder.addRequestListener(listener1).build(); request.onSizeReady(100, 100); request.onResourceReady(builder.resource, DataSource.LOCAL); verify(listener1) .onResourceReady(eq(builder.result), any(Number.class), isAListTarget(), eq(DataSource.LOCAL), anyBoolean()); }
@Test public void testFactoryReturnsActualAnimationIfNotIsFromMemoryCacheAndIsFirstResource() { Transition<Object> transition = factory.build(DataSource.DATA_DISK_CACHE, true /*isFirstResource*/); Animation animation = mock(Animation.class); when(viewTransitionAnimationFactory.build(any(Context.class))).thenReturn(animation); Transition.ViewAdapter adapter = mock(Transition.ViewAdapter.class); View view = mock(View.class); when(adapter.getView()).thenReturn(view); transition.transition(new Object(), adapter); verify(view).startAnimation(eq(animation)); } }
@Test public void testDoesNotNotifyCancelledIfReceivedException() { EngineJob<Object> job = harness.getJob(); job.start(harness.decodeJob); job.onLoadFailed(new GlideException("test")); verify(harness.listener) .onEngineJobComplete(eq(job), eq(harness.key), isNull(EngineResource.class)); verify(harness.listener, never()).onEngineJobCancelled(any(EngineJob.class), any(Key.class)); }
@Test public void testRequestListenerIsCalledWithTarget() { SingleRequest<List> request = builder.addRequestListener(listener1).build(); request.onResourceReady(builder.resource, DataSource.DATA_DISK_CACHE); verify(listener1) .onResourceReady(any(List.class), any(Number.class), eq(builder.target), isADataSource(), anyBoolean()); }
@Test public void testCallsAnimatorWithGivenView() { ImageView view = new ImageView(RuntimeEnvironment.application); ViewAdapter adapter = mock(ViewAdapter.class); when(adapter.getView()).thenReturn(view); animation.transition(new Object(), adapter); verify(animator).animate(eq(view)); }