From c1ceb80741fe7f50af4d03e6996d12b28220d090 Mon Sep 17 00:00:00 2001 From: Earl Ou Date: Wed, 17 Oct 2012 13:57:23 +0800 Subject: Make original exif test pass with the exiftool ground truth Also add assertion message for debugging Change-Id: I4287afde01a2ad334b3d181d17863b1fa763950b --- .../com/android/gallery3d/exif/ExifParserTest.java | 27 +++++++++++++-------- .../com/android/gallery3d/exif/ExifReaderTest.java | 28 ++++++++++++++-------- .../gallery3d/exif/ExifXmlDataTestCase.java | 10 ++++++++ 3 files changed, 45 insertions(+), 20 deletions(-) (limited to 'tests/src') diff --git a/tests/src/com/android/gallery3d/exif/ExifParserTest.java b/tests/src/com/android/gallery3d/exif/ExifParserTest.java index f89ac29ff..fccf26175 100644 --- a/tests/src/com/android/gallery3d/exif/ExifParserTest.java +++ b/tests/src/com/android/gallery3d/exif/ExifParserTest.java @@ -76,14 +76,19 @@ public class ExifParserTest extends ExifXmlDataTestCase { // We can verify it by examining the sub-IFD or thumbnail itself. if (ExifTag.isSubIfdOffsetTag(tag.getTagId())) return; - String truthString = mGroundTruth.get(tag.getIfd()).get(tag.getTagId()); + // TODO: Test MakerNote and UserComment + if (tag.getTagId() == ExifTag.TAG_MAKER_NOTE + || tag.getTagId() == ExifTag.TAG_USER_COMMENT) return; + + String truthString = mGroundTruth.get(tag.getIfd()).get(tag.getTagId()).trim(); if (truthString == null) { - fail(String.format("Unknown Tag %02x", tag.getTagId())); + fail(String.format("Unknown Tag %02x", tag.getTagId()) + ", " + getImageTitle()); } String dataString = tag.valueToString().trim(); - assertEquals(String.format("Tag %02x", tag.getTagId()), truthString, dataString); + assertEquals(String.format("Tag %02x", tag.getTagId()) + ", " + getImageTitle(), + truthString, dataString); } private void parseOneIfd(int ifd, int options) @@ -95,11 +100,13 @@ public class ExifParserTest extends ExifXmlDataTestCase { while(event != ExifParser.EVENT_END) { switch (event) { case ExifParser.EVENT_START_OF_IFD: - assertEquals(ifd, parser.getCurrentIfd()); + assertEquals(getImageTitle(), ifd, parser.getCurrentIfd()); break; case ExifParser.EVENT_NEW_TAG: ExifTag tag = parser.getTag(); - if (!ExifTag.isSubIfdOffsetTag(tag.getTagId())) numOfTag++; + // The exiftool doesn't provide MakerNote tag + if (!ExifTag.isSubIfdOffsetTag(tag.getTagId()) + && tag.getTagId() != ExifTag.TAG_MAKER_NOTE) numOfTag++; if (tag.hasValue()) { checkTag(tag); } else { @@ -117,7 +124,7 @@ public class ExifParserTest extends ExifXmlDataTestCase { break; case ExifParser.EVENT_COMPRESSED_IMAGE: case ExifParser.EVENT_UNCOMPRESSED_STRIP: - fail("Invalid Event type: " + event); + fail("Invalid Event type: " + event + ", " + getImageTitle()); break; } event = parser.next(); @@ -148,7 +155,7 @@ public class ExifParserTest extends ExifXmlDataTestCase { while (event != ExifParser.EVENT_END) { switch (event) { case ExifParser.EVENT_START_OF_IFD: - assertEquals(IfdId.TYPE_IFD_0, parser.getCurrentIfd()); + assertEquals(getImageTitle(), IfdId.TYPE_IFD_0, parser.getCurrentIfd()); break; case ExifParser.EVENT_NEW_TAG: ExifTag tag = parser.getTag(); @@ -164,14 +171,14 @@ public class ExifParserTest extends ExifXmlDataTestCase { break; case ExifParser.EVENT_VALUE_OF_REGISTERED_TAG: tag = parser.getTag(); - assertEquals(ExifTag.TAG_MODEL, tag.getTagId()); + assertEquals(getImageTitle(), ExifTag.TAG_MODEL, tag.getTagId()); checkTag(tag); isTagFound = true; break; } event = parser.next(); } - assertTrue(isTagFound); + assertTrue(getImageTitle(), isTagFound); } public void testReadThumbnail() throws Exception { @@ -201,7 +208,7 @@ public class ExifParserTest extends ExifXmlDataTestCase { event = parser.next(); } if (mIsContainCompressedImage) { - assertNotNull(bmp); + assertNotNull(getImageTitle(), bmp); } } } diff --git a/tests/src/com/android/gallery3d/exif/ExifReaderTest.java b/tests/src/com/android/gallery3d/exif/ExifReaderTest.java index 3a78e091b..c753df64b 100644 --- a/tests/src/com/android/gallery3d/exif/ExifReaderTest.java +++ b/tests/src/com/android/gallery3d/exif/ExifReaderTest.java @@ -47,9 +47,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; @@ -67,20 +68,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); } } @@ -98,16 +102,20 @@ public class ExifReaderTest extends ExifXmlDataTestCase { private void checkIfd(IfdData ifd, Map 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) { - if (ExifTag.isSubIfdOffsetTag(tag.getTagId())) continue; - 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) { + assertEquals(String.format("Tag %x, ", tag.getTagId()) + getImageTitle(), + ifdValue.get(tag.getTagId()).trim(), tag.valueToString().trim()); + } size++; } - assertEquals(ifdValue.size(), size); + assertEquals(getImageTitle(), ifdValue.size(), size); } } diff --git a/tests/src/com/android/gallery3d/exif/ExifXmlDataTestCase.java b/tests/src/com/android/gallery3d/exif/ExifXmlDataTestCase.java index 16a7c6821..5b61778bd 100644 --- a/tests/src/com/android/gallery3d/exif/ExifXmlDataTestCase.java +++ b/tests/src/com/android/gallery3d/exif/ExifXmlDataTestCase.java @@ -29,6 +29,8 @@ import java.io.InputStreamReader; public class ExifXmlDataTestCase extends InstrumentationTestCase { + private static final String RES_ID_TITLE = "Resource ID: %x"; + private InputStream mImageInputStream; private InputStream mXmlInputStream; private XmlPullParser mXmlParser; @@ -78,4 +80,12 @@ public class ExifXmlDataTestCase extends InstrumentationTestCase { Util.closeSilently(mImageInputStream); Util.closeSilently(mXmlInputStream); } + + protected String getImageTitle() { + if (mImagePath != null) { + return mImagePath; + } else { + return String.format(RES_ID_TITLE, mImageResourceId); + } + } } -- cgit v1.2.3