package com.bumptech.glide.load.data;
import static com.google.common.truth.Truth.assertThat;
import com.bumptech.glide.load.engine.bitmap_recycle.ArrayPool;
import com.bumptech.glide.load.engine.bitmap_recycle.LruArrayPool;
import com.bumptech.glide.load.resource.bitmap.DefaultImageHeaderParser;
import com.bumptech.glide.testutil.TestResourceUtil;
import java.io.IOException;
import java.io.InputStream;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
@RunWith(RobolectricTestRunner.class)
@Config(manifest = Config.NONE, sdk = 18)
public class ExifOrientationStreamTest {
private ArrayPool byteArrayPool;
private InputStream openOrientationExample(boolean isLandscape, int item) {
String filePrefix = isLandscape ? "Landscape" : "Portrait";
return TestResourceUtil.openResource(getClass(),
"exif-orientation-examples/" + filePrefix + "_" + item + ".jpg");
}
@Before
public void setUp() {
byteArrayPool = new LruArrayPool();
}
@Test
public void testIncludesGivenExifOrientation() throws IOException {
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
InputStream toWrap = openOrientationExample(true /*isLandscape*/, j + 1);
InputStream wrapped = new ExifOrientationStream(toWrap, i);
DefaultImageHeaderParser parser = new DefaultImageHeaderParser();
assertThat(parser.getOrientation(wrapped, byteArrayPool)).isEqualTo(i);
toWrap = openOrientationExample(false /*isLandscape*/, j + 1);
wrapped = new ExifOrientationStream(toWrap, i);
assertThat(parser.getOrientation(wrapped, byteArrayPool)).isEqualTo(i);
}
}
}
}