diff options
Diffstat (limited to 'tests/src/com/android/gallery3d/exif/ExifReaderTest.java')
-rw-r--r-- | tests/src/com/android/gallery3d/exif/ExifReaderTest.java | 165 |
1 files changed, 0 insertions, 165 deletions
diff --git a/tests/src/com/android/gallery3d/exif/ExifReaderTest.java b/tests/src/com/android/gallery3d/exif/ExifReaderTest.java deleted file mode 100644 index 4b5c02941..000000000 --- a/tests/src/com/android/gallery3d/exif/ExifReaderTest.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.gallery3d.exif; - -import android.test.suitebuilder.annotation.MediumTest; - -import android.graphics.BitmapFactory; - -import java.util.List; -import java.util.Map; - -public class ExifReaderTest extends ExifXmlDataTestCase { - private static final String TAG = "ExifReaderTest"; - - private ExifInterface mInterface; - private List<Map<Short, List<String>>> mGroundTruth; - - @Override - public void setUp() throws Exception { - super.setUp(); - mGroundTruth = ExifXmlReader.readXml(getXmlParser()); - } - - public ExifReaderTest(int imgRes, int xmlRes) { - super(imgRes, xmlRes); - mInterface = new ExifInterface(); - } - - public ExifReaderTest(String imgPath, String xmlPath) { - super(imgPath, xmlPath); - mInterface = new ExifInterface(); - } - - @MediumTest - public void testRead() throws Exception { - try { - ExifReader reader = new ExifReader(mInterface); - ExifData exifData = reader.read(getImageInputStream()); - for (int i = 0; i < IfdId.TYPE_IFD_COUNT; i++) { - checkIfd(exifData.getIfdData(i), mGroundTruth.get(i)); - } - checkThumbnail(exifData); - } catch (Exception e) { - throw new Exception(getImageTitle(), e); - } - } - - private void checkThumbnail(ExifData exifData) { - Map<Short, List<String>> ifd1Truth = mGroundTruth.get(IfdId.TYPE_IFD_1); - - List<String> typeTagValue = ifd1Truth.get(ExifInterface.TAG_COMPRESSION); - if (typeTagValue == null) - return; - - IfdData ifd1 = exifData.getIfdData(IfdId.TYPE_IFD_1); - if (ifd1 == null) - fail(getImageTitle() + ": failed to find IFD1"); - - String typeTagTruth = typeTagValue.get(0); - - int type = (int) ifd1.getTag(ExifInterface.getTrueTagKey(ExifInterface.TAG_COMPRESSION)) - .getValueAt(0); - - if (String.valueOf(ExifInterface.Compression.JPEG).equals(typeTagTruth)) { - assertTrue(getImageTitle(), type == ExifInterface.Compression.JPEG); - assertTrue(getImageTitle(), exifData.hasCompressedThumbnail()); - byte[] thumbnail = exifData.getCompressedThumbnail(); - assertTrue(getImageTitle(), - BitmapFactory.decodeByteArray(thumbnail, 0, thumbnail.length) != null); - } else if (String.valueOf(ExifInterface.Compression.UNCOMPRESSION).equals(typeTagTruth)) { - assertTrue(getImageTitle(), type == ExifInterface.Compression.UNCOMPRESSION); - // Try to check the strip count with the formula provided by EXIF spec. - int planarType = ExifInterface.PlanarConfiguration.CHUNKY; - ExifTag planarTag = ifd1.getTag(ExifInterface - .getTrueTagKey(ExifInterface.TAG_PLANAR_CONFIGURATION)); - if (planarTag != null) { - planarType = (int) planarTag.getValueAt(0); - } - - if (!ifd1Truth.containsKey(ExifInterface.TAG_IMAGE_LENGTH) || - !ifd1Truth.containsKey(ExifInterface.TAG_ROWS_PER_STRIP)) { - return; - } - - ExifTag heightTag = ifd1.getTag(ExifInterface - .getTrueTagKey(ExifInterface.TAG_IMAGE_LENGTH)); - ExifTag rowPerStripTag = ifd1.getTag(ExifInterface - .getTrueTagKey(ExifInterface.TAG_ROWS_PER_STRIP)); - - // Fail the test if required tags are missing - if (heightTag == null || rowPerStripTag == null) { - fail(getImageTitle()); - } - - int imageLength = (int) heightTag.getValueAt(0); - int rowsPerStrip = (int) rowPerStripTag.getValueAt(0); - int stripCount = ifd1.getTag( - ExifInterface.getTrueTagKey(ExifInterface.TAG_STRIP_OFFSETS)) - .getComponentCount(); - - if (planarType == ExifInterface.PlanarConfiguration.CHUNKY) { - assertTrue(getImageTitle(), - stripCount == (imageLength + rowsPerStrip - 1) / rowsPerStrip); - } else { - if (!ifd1Truth.containsKey(ExifInterface.TAG_SAMPLES_PER_PIXEL)) { - return; - } - ExifTag samplePerPixelTag = ifd1.getTag(ExifInterface - .getTrueTagKey(ExifInterface.TAG_SAMPLES_PER_PIXEL)); - int samplePerPixel = (int) samplePerPixelTag.getValueAt(0); - assertTrue(getImageTitle(), - stripCount == - (imageLength + rowsPerStrip - 1) / rowsPerStrip * samplePerPixel); - } - - if (!ifd1Truth.containsKey(ExifInterface.TAG_STRIP_BYTE_COUNTS)) { - return; - } - ExifTag byteCountTag = ifd1.getTag(ExifInterface - .getTrueTagKey(ExifInterface.TAG_STRIP_BYTE_COUNTS)); - short byteCountDataType = byteCountTag.getDataType(); - for (int i = 0; i < stripCount; i++) { - if (byteCountDataType == ExifTag.TYPE_UNSIGNED_SHORT) { - assertEquals(getImageTitle(), - byteCountTag.getValueAt(i), exifData.getStrip(i).length); - } else { - assertEquals(getImageTitle(), - byteCountTag.getValueAt(i), exifData.getStrip(i).length); - } - } - } - } - - private void checkIfd(IfdData ifd, Map<Short, List<String>> ifdValue) { - if (ifd == null) { - assertEquals(getImageTitle(), 0, ifdValue.size()); - return; - } - ExifTag[] tags = ifd.getAllTags(); - for (ExifTag tag : tags) { - List<String> 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(), - truth.contains(Util.tagValueToString(tag).trim())); - } - assertEquals(getImageTitle(), ifdValue.size(), tags.length); - } -} |