package com.bumptech.glide.load.resource.gif;
import static com.google.common.truth.Truth.assertThat;
import com.bumptech.glide.load.ImageHeaderParser;
import com.bumptech.glide.load.Options;
import com.bumptech.glide.load.ResourceDecoder;
import com.bumptech.glide.load.engine.bitmap_recycle.LruArrayPool;
import com.bumptech.glide.load.resource.bitmap.DefaultImageHeaderParser;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
@RunWith(RobolectricTestRunner.class)
@Config(manifest = Config.NONE, sdk = 18)
public class StreamGifDecoderTest {
private static final byte[] GIF_HEADER = new byte[] { 0x47, 0x49, 0x46 };
@Mock
ResourceDecoder<ByteBuffer, GifDrawable> byteBufferDecoder;
private StreamGifDecoder decoder;
private Options options;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
List<ImageHeaderParser> parsers = new ArrayList<ImageHeaderParser>();
parsers.add(new DefaultImageHeaderParser());
decoder = new StreamGifDecoder(parsers, byteBufferDecoder, new LruArrayPool());
options = new Options();
}
@Test
public void testDoesNotHandleStreamIfEnabledButNotAGif() throws IOException {
assertThat(decoder.handles(new ByteArrayInputStream(new byte[0]), options)).isFalse();
}
@Test
public void testHandlesStreamIfContainsGifHeaderAndDisabledIsNotSet() throws IOException {
assertThat(decoder.handles(new ByteArrayInputStream(GIF_HEADER), options)).isTrue();
}
@Test
public void testHandlesStreamIfContainsGifHeaderAndDisabledIsFalse() throws IOException {
options.set(StreamGifDecoder.DISABLE_ANIMATION, false);
assertThat(decoder.handles(new ByteArrayInputStream(GIF_HEADER), options)).isTrue();
}
@Test
public void testDoesNotHandleStreamIfDisabled() throws IOException {
options.set(StreamGifDecoder.DISABLE_ANIMATION, true);
assertThat(decoder.handles(new ByteArrayInputStream(GIF_HEADER), options)).isFalse();
}
}