From 9cf0bba7e618f9a4831c3b02e255997191a50b5d Mon Sep 17 00:00:00 2001 From: Earl Ou Date: Thu, 18 Oct 2012 17:08:21 +0800 Subject: Use List to store duplicated exif tag Use List so the number of tags can be calculated. Change-Id: I5dfb085fccadab4f0febf2944b64d4dfe9ecbd63 --- .../com/android/gallery3d/exif/ExifParserTest.java | 9 ++++----- .../com/android/gallery3d/exif/ExifReaderTest.java | 7 +++---- .../com/android/gallery3d/exif/ExifXmlReader.java | 22 ++++++++++++++-------- 3 files changed, 21 insertions(+), 17 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 eb5a5742a..422d12717 100644 --- a/tests/src/com/android/gallery3d/exif/ExifParserTest.java +++ b/tests/src/com/android/gallery3d/exif/ExifParserTest.java @@ -21,7 +21,6 @@ import android.graphics.BitmapFactory; import java.util.List; import java.util.Map; -import java.util.Set; public class ExifParserTest extends ExifXmlDataTestCase { private static final String TAG = "ExifParserTest"; @@ -34,7 +33,7 @@ public class ExifParserTest extends ExifXmlDataTestCase { super(imgPath, xmlPath); } - private List>> mGroundTruth; + private List>> mGroundTruth; @Override public void setUp() throws Exception { @@ -76,7 +75,7 @@ public class ExifParserTest extends ExifXmlDataTestCase { } private void checkTag(ExifTag tag) { - Set truth = mGroundTruth.get(tag.getIfd()).get(tag.getTagId()); + List truth = mGroundTruth.get(tag.getIfd()).get(tag.getTagId()); if (truth == null) { fail(String.format("Unknown Tag %02x", tag.getTagId()) + ", " + getImageTitle()); @@ -93,7 +92,7 @@ public class ExifParserTest extends ExifXmlDataTestCase { private void parseOneIfd(int ifd, int options) throws Exception { try { - Map> expectedResult = mGroundTruth.get(ifd); + Map> expectedResult = mGroundTruth.get(ifd); int numOfTag = 0; ExifParser parser = ExifParser.parse(getImageInputStream(), options); int event = parser.next(); @@ -127,7 +126,7 @@ public class ExifParserTest extends ExifXmlDataTestCase { } event = parser.next(); } - assertEquals(expectedResult.size(), numOfTag); + assertEquals(getImageTitle(), ExifXmlReader.getTrueTagNumber(expectedResult), numOfTag); } catch (Exception e) { throw new Exception(getImageTitle(), e); } diff --git a/tests/src/com/android/gallery3d/exif/ExifReaderTest.java b/tests/src/com/android/gallery3d/exif/ExifReaderTest.java index 82dcdc7b1..404946252 100644 --- a/tests/src/com/android/gallery3d/exif/ExifReaderTest.java +++ b/tests/src/com/android/gallery3d/exif/ExifReaderTest.java @@ -20,7 +20,6 @@ import android.graphics.BitmapFactory; import java.util.List; import java.util.Map; -import java.util.Set; public class ExifReaderTest extends ExifXmlDataTestCase { private static final String TAG = "ExifReaderTest"; @@ -37,7 +36,7 @@ public class ExifReaderTest extends ExifXmlDataTestCase { try { ExifReader reader = new ExifReader(); ExifData exifData = reader.read(getImageInputStream()); - List>> groundTruth = ExifXmlReader.readXml(getXmlParser()); + List>> groundTruth = ExifXmlReader.readXml(getXmlParser()); for (int i = 0; i < IfdId.TYPE_IFD_COUNT; i++) { checkIfd(exifData.getIfdData(i), groundTruth.get(i)); } @@ -105,14 +104,14 @@ public class ExifReaderTest extends ExifXmlDataTestCase { } } - private void checkIfd(IfdData ifd, Map> ifdValue) { + private void checkIfd(IfdData ifd, Map> ifdValue) { if (ifd == null) { assertEquals(getImageTitle(), 0 ,ifdValue.size()); return; } ExifTag[] tags = ifd.getAllTags(); for (ExifTag tag : tags) { - Set truth = ifdValue.get(tag.getTagId()); + List truth = ifdValue.get(tag.getTagId()); assertNotNull(String.format("Tag %x, ", tag.getTagId()) + getImageTitle(), truth); if (truth.contains(null)) continue; assertTrue(String.format("Tag %x, ", tag.getTagId()) + getImageTitle(), diff --git a/tests/src/com/android/gallery3d/exif/ExifXmlReader.java b/tests/src/com/android/gallery3d/exif/ExifXmlReader.java index 5d1970988..bb08ccd1c 100644 --- a/tests/src/com/android/gallery3d/exif/ExifXmlReader.java +++ b/tests/src/com/android/gallery3d/exif/ExifXmlReader.java @@ -22,10 +22,8 @@ import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Set; public class ExifXmlReader { private static final String TAG_EXIF = "exif"; @@ -48,13 +46,13 @@ public class ExifXmlReader { * @throws XmlPullParserException * @throws IOException */ - static public List>> readXml(XmlPullParser parser) + static public List>> readXml(XmlPullParser parser) throws XmlPullParserException, IOException { - List>> exifData = - new ArrayList>>(IfdId.TYPE_IFD_COUNT); + List>> exifData = + new ArrayList>>(IfdId.TYPE_IFD_COUNT); for (int i = 0; i < IfdId.TYPE_IFD_COUNT; i++) { - exifData.add(new HashMap>()); + exifData.add(new HashMap>()); } while (parser.next() != XmlPullParser.END_DOCUMENT) { @@ -83,9 +81,9 @@ public class ExifXmlReader { if (ifdId < 0) { // TODO: the MarkerNote segment. } else { - Set tagData = exifData.get(ifdId).get(id); + List tagData = exifData.get(ifdId).get(id); if (tagData == null) { - tagData = new HashSet(); + tagData = new ArrayList(); exifData.get(ifdId).put(id, tagData); } if (NO_VALUE.equals(value)) { @@ -116,4 +114,12 @@ public class ExifXmlReader { return -1; } } + + static public int getTrueTagNumber(Map> ifdData) { + int size = 0; + for (List tag: ifdData.values()) { + size += tag.size(); + } + return size; + } } -- cgit v1.2.3