package com.bumptech.glide.load.resource.bitmap; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotSame; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; @RunWith(RobolectricTestRunner.class) @Config(manifest = Config.NONE, sdk = 18) public class BitmapDrawableResourceTest { private BitmapDrawableResourceHarness harness; @Before public void setUp() { harness = new BitmapDrawableResourceHarness(); } @Test public void testReturnsGivenBitmapFromGet() { assertEquals(harness.bitmap, harness.create().get().getBitmap()); } @Test public void testReturnsDifferentDrawableEachTime() { BitmapDrawableResource resource = harness.create(); BitmapDrawable first = resource.get(); BitmapDrawable second = resource.get(); assertNotSame(first, second); } @Test public void testReturnsSizeFromGivenBitmap() { assertEquals(harness.bitmap.getHeight() * harness.bitmap.getRowBytes(), harness.create().getSize()); } @Test public void testBitmapIsReturnedToPoolOnRecycle() { harness.create().recycle(); verify(harness.bitmapPool).put(eq(harness.bitmap)); } private static class BitmapDrawableResourceHarness { BitmapPool bitmapPool = mock(BitmapPool.class); Bitmap bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888); public BitmapDrawableResource create() { return new BitmapDrawableResource( new BitmapDrawable(RuntimeEnvironment.application.getResources(), bitmap), bitmapPool); } } }