package com.bumptech.glide.load.resource.transcode; import static com.bumptech.glide.tests.Util.mockResource; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.graphics.Bitmap; import com.bumptech.glide.load.engine.Resource; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.Shadows; import org.robolectric.annotation.Config; @RunWith(RobolectricTestRunner.class) @Config(manifest = Config.NONE, sdk = 18) public class BitmapBytesTranscoderTest { private BitmapBytesTranscoderHarness harness; @Before() public void setUp() { harness = new BitmapBytesTranscoderHarness(); } @Test public void testReturnsBytesOfGivenBitmap() { String transcodedDescription = harness.getTranscodedDescription(); assertThat(transcodedDescription).startsWith(harness.description); } @Test public void testUsesGivenQuality() { harness.quality = 66; String transcodedDescription = harness.getTranscodedDescription(); assertThat(transcodedDescription).contains(String.valueOf(harness.quality)); } @Test public void testUsesGivenFormat() { for (Bitmap.CompressFormat format : Bitmap.CompressFormat.values()) { harness.compressFormat = format; String transcodedDescription = harness.getTranscodedDescription(); assertThat(transcodedDescription).contains(format.name()); } } @Test public void testBitmapResourceIsRecycled() { harness.getTranscodedDescription(); verify(harness.bitmapResource).recycle(); } private static class BitmapBytesTranscoderHarness { Bitmap.CompressFormat compressFormat = Bitmap.CompressFormat.JPEG; int quality = 100; final String description = "TestDescription"; Bitmap bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ALPHA_8); Resource<Bitmap> bitmapResource = mockResource(); public BitmapBytesTranscoderHarness() { when(bitmapResource.get()).thenReturn(bitmap); Shadows.shadowOf(bitmap).setDescription(description); } public String getTranscodedDescription() { BitmapBytesTranscoder transcoder = new BitmapBytesTranscoder(compressFormat, quality); Resource<byte[]> bytesResource = transcoder.transcode(bitmapResource); return new String(bytesResource.get()); } } }