| /* |
| * Copyright (C) 2015 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.volley.toolbox; |
| |
| import android.graphics.Bitmap; |
| import android.widget.ImageView; |
| import com.android.volley.Request; |
| import com.android.volley.RequestQueue; |
| import org.junit.Assert; |
| import org.junit.Before; |
| import org.junit.Test; |
| import org.junit.runner.RunWith; |
| import org.robolectric.RobolectricTestRunner; |
| |
| import static org.junit.Assert.assertNotNull; |
| import static org.mockito.Mockito.*; |
| |
| @RunWith(RobolectricTestRunner.class) |
| public class ImageLoaderTest { |
| private RequestQueue mRequestQueue; |
| private ImageLoader.ImageCache mImageCache; |
| private ImageLoader mImageLoader; |
| |
| @Before |
| public void setUp() { |
| mRequestQueue = mock(RequestQueue.class); |
| mImageCache = mock(ImageLoader.ImageCache.class); |
| mImageLoader = new ImageLoader(mRequestQueue, mImageCache); |
| } |
| |
| @Test |
| public void isCachedChecksCache() throws Exception { |
| when(mImageCache.getBitmap(anyString())).thenReturn(null); |
| Assert.assertFalse(mImageLoader.isCached("http://foo", 0, 0)); |
| } |
| |
| @Test |
| public void getWithCacheHit() throws Exception { |
| Bitmap bitmap = Bitmap.createBitmap(1, 1, null); |
| ImageLoader.ImageListener listener = mock(ImageLoader.ImageListener.class); |
| when(mImageCache.getBitmap(anyString())).thenReturn(bitmap); |
| ImageLoader.ImageContainer ic = mImageLoader.get("http://foo", listener); |
| Assert.assertSame(bitmap, ic.getBitmap()); |
| verify(listener).onResponse(ic, true); |
| } |
| |
| @Test |
| public void getWithCacheMiss() throws Exception { |
| when(mImageCache.getBitmap(anyString())).thenReturn(null); |
| ImageLoader.ImageListener listener = mock(ImageLoader.ImageListener.class); |
| // Ask for the image to be loaded. |
| mImageLoader.get("http://foo", listener); |
| // Second pass to test deduping logic. |
| mImageLoader.get("http://foo", listener); |
| // Response callback should be called both times. |
| verify(listener, times(2)).onResponse(any(ImageLoader.ImageContainer.class), eq(true)); |
| // But request should be enqueued only once. |
| verify(mRequestQueue, times(1)).add(any(Request.class)); |
| } |
| |
| @Test |
| public void publicMethods() throws Exception { |
| // Catch API breaking changes. |
| ImageLoader.getImageListener(null, -1, -1); |
| mImageLoader.setBatchedResponseDelay(1000); |
| |
| assertNotNull(ImageLoader.class.getConstructor(RequestQueue.class, |
| ImageLoader.ImageCache.class)); |
| |
| assertNotNull(ImageLoader.class.getMethod("getImageListener", ImageView.class, |
| int.class, int.class)); |
| assertNotNull(ImageLoader.class.getMethod("isCached", String.class, int.class, int.class)); |
| assertNotNull(ImageLoader.class.getMethod("isCached", String.class, int.class, int.class, |
| ImageView.ScaleType.class)); |
| assertNotNull(ImageLoader.class.getMethod("get", String.class, |
| ImageLoader.ImageListener.class)); |
| assertNotNull(ImageLoader.class.getMethod("get", String.class, |
| ImageLoader.ImageListener.class, int.class, int.class)); |
| assertNotNull(ImageLoader.class.getMethod("get", String.class, |
| ImageLoader.ImageListener.class, int.class, int.class, ImageView.ScaleType.class)); |
| assertNotNull(ImageLoader.class.getMethod("setBatchedResponseDelay", int.class)); |
| |
| assertNotNull(ImageLoader.ImageListener.class.getMethod("onResponse", |
| ImageLoader.ImageContainer.class, boolean.class)); |
| } |
| } |
| |