summaryrefslogtreecommitdiffstats
path: root/tests/src/com/android/gallery3d/exif/ExifReaderTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/com/android/gallery3d/exif/ExifReaderTest.java')
-rw-r--r--tests/src/com/android/gallery3d/exif/ExifReaderTest.java90
1 files changed, 42 insertions, 48 deletions
diff --git a/tests/src/com/android/gallery3d/exif/ExifReaderTest.java b/tests/src/com/android/gallery3d/exif/ExifReaderTest.java
index 269120870..40d269ef6 100644
--- a/tests/src/com/android/gallery3d/exif/ExifReaderTest.java
+++ b/tests/src/com/android/gallery3d/exif/ExifReaderTest.java
@@ -16,49 +16,35 @@
package com.android.gallery3d.exif;
-import android.content.res.XmlResourceParser;
import android.graphics.BitmapFactory;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
public class ExifReaderTest extends ExifXmlDataTestCase {
private static final String TAG = "ExifReaderTest";
- private final HashMap<Short, String> mIfd0Value = new HashMap<Short, String>();
- private final HashMap<Short, String> mIfd1Value = new HashMap<Short, String>();
- private final HashMap<Short, String> mExifIfdValue = new HashMap<Short, String>();
- private final HashMap<Short, String> mInteroperabilityIfdValue = new HashMap<Short, String>();
-
- private InputStream mImageInputStream;
-
- public ExifReaderTest(int imageResourceId, int xmlResourceId) {
- super(imageResourceId, xmlResourceId);
+ public ExifReaderTest(int imgRes, int xmlRes) {
+ super(imgRes, xmlRes);
}
- @Override
- public void setUp() throws Exception {
- mImageInputStream = getInstrumentation()
- .getContext().getResources().openRawResource(mImageResourceId);
-
- XmlResourceParser parser =
- getInstrumentation().getContext().getResources().getXml(mXmlResourceId);
-
- ExifXmlReader.readXml(parser, mIfd0Value, mIfd1Value, mExifIfdValue
- , mInteroperabilityIfdValue);
- parser.close();
+ public ExifReaderTest(String imgPath, String xmlPath) {
+ super(imgPath, xmlPath);
}
- public void testRead() throws ExifInvalidFormatException, IOException {
- ExifReader reader = new ExifReader();
- ExifData exifData = reader.read(mImageInputStream);
- checkIfd(exifData.getIfdData(IfdId.TYPE_IFD_0), mIfd0Value);
- checkIfd(exifData.getIfdData(IfdId.TYPE_IFD_1), mIfd1Value);
- checkIfd(exifData.getIfdData(IfdId.TYPE_IFD_EXIF), mExifIfdValue);
- checkIfd(exifData.getIfdData(IfdId.TYPE_IFD_INTEROPERABILITY),
- mInteroperabilityIfdValue);
- checkThumbnail(exifData);
+ public void testRead() throws Exception {
+ try {
+ ExifReader reader = new ExifReader();
+ ExifData exifData = reader.read(getImageInputStream());
+ List<Map<Short, Set<String>>> groundTruth = ExifXmlReader.readXml(getXmlParser());
+ for (int i = 0; i < IfdId.TYPE_IFD_COUNT; i++) {
+ checkIfd(exifData.getIfdData(i), groundTruth.get(i));
+ }
+ checkThumbnail(exifData);
+ } catch (Exception e) {
+ throw new Exception(getImageTitle(), e);
+ }
}
private void checkThumbnail(ExifData exifData) {
@@ -66,9 +52,10 @@ public class ExifReaderTest extends ExifXmlDataTestCase {
if (ifd1 != null) {
if (ifd1.getTag(ExifTag.TAG_COMPRESSION).getUnsignedShort(0) ==
ExifTag.Compression.JPEG) {
- assertTrue(exifData.hasCompressedThumbnail());
+ assertTrue(getImageTitle(), exifData.hasCompressedThumbnail());
byte[] thumbnail = exifData.getCompressedThumbnail();
- assertTrue(BitmapFactory.decodeByteArray(thumbnail, 0, thumbnail.length) != null);
+ assertTrue(getImageTitle(),
+ BitmapFactory.decodeByteArray(thumbnail, 0, thumbnail.length) != null);
} else {
// Try to check the strip count with the formula provided by EXIF spec.
int planarType = ExifTag.PlanarConfiguration.CHUNKY;
@@ -86,20 +73,23 @@ public class ExifReaderTest extends ExifXmlDataTestCase {
ExifTag.TAG_STRIP_OFFSETS).getComponentCount();
if (planarType == ExifTag.PlanarConfiguration.CHUNKY) {
- assertTrue(stripCount == (imageLength + rowsPerStrip - 1) / rowsPerStrip);
+ assertTrue(getImageTitle(),
+ stripCount == (imageLength + rowsPerStrip - 1) / rowsPerStrip);
} else {
ExifTag samplePerPixelTag = ifd1.getTag(ExifTag.TAG_SAMPLES_PER_PIXEL);
int samplePerPixel = samplePerPixelTag.getUnsignedShort(0);
- assertTrue(stripCount ==
+ assertTrue(getImageTitle(),
+ stripCount ==
(imageLength + rowsPerStrip - 1) / rowsPerStrip * samplePerPixel);
}
for (int i = 0; i < stripCount; i++) {
ExifTag byteCountTag = ifd1.getTag(ExifTag.TAG_STRIP_BYTE_COUNTS);
if (byteCountTag.getDataType() == ExifTag.TYPE_UNSIGNED_SHORT) {
- assertEquals(byteCountTag.getUnsignedShort(i), exifData.getStrip(i).length);
+ assertEquals(getImageTitle(),
+ byteCountTag.getUnsignedShort(i), exifData.getStrip(i).length);
} else {
- assertEquals(
+ assertEquals(getImageTitle(),
byteCountTag.getUnsignedLong(i), exifData.getStrip(i).length);
}
}
@@ -115,20 +105,24 @@ public class ExifReaderTest extends ExifXmlDataTestCase {
}
}
- private void checkIfd(IfdData ifd, HashMap<Short, String> ifdValue) {
+ private void checkIfd(IfdData ifd, Map<Short, Set<String>> ifdValue) {
if (ifd == null) {
- assertEquals(0 ,ifdValue.size());
+ assertEquals(getImageTitle(), 0 ,ifdValue.size());
return;
}
ExifTag[] tags = ifd.getAllTags();
+ int size = 0;
for (ExifTag tag : tags) {
- assertEquals(ifdValue.get(tag.getTagId()), tag.valueToString().trim());
+ if (ExifTag.isSubIfdOffsetTag(tag.getTagId())
+ || tag.getTagId() == ExifTag.TAG_MAKER_NOTE) continue;
+ if (tag.getTagId() != ExifTag.TAG_USER_COMMENT) {
+ Set<String> truth = ifdValue.get(tag.getTagId());
+ assertNotNull(String.format("Tag %x, ", tag.getTagId()) + getImageTitle(), truth);
+ assertTrue(String.format("Tag %x, ", tag.getTagId()) + getImageTitle(),
+ truth.contains(tag.valueToString().trim()));
+ }
+ size++;
}
- assertEquals(ifdValue.size(), tags.length);
- }
-
- @Override
- public void tearDown() throws Exception {
- mImageInputStream.close();
+ assertEquals(getImageTitle(), ifdValue.size(), size);
}
}