You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by da...@apache.org on 2016/09/07 19:03:44 UTC

svn commit: r1759662 - in /commons/proper/imaging/trunk/src: main/java/org/apache/commons/imaging/formats/tiff/constants/ExifTagConstants.java test/java/org/apache/commons/imaging/formats/tiff/TiffTagIntegrityTest.java

Author: damjan
Date: Wed Sep  7 19:03:44 2016
New Revision: 1759662

URL: http://svn.apache.org/viewvc?rev=1759662&view=rev
Log:
List the newly added EXIF tags in the list of all EXIF tags.
Improve the unit test that should have caught that it was missing.


Modified:
    commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/ExifTagConstants.java
    commons/proper/imaging/trunk/src/test/java/org/apache/commons/imaging/formats/tiff/TiffTagIntegrityTest.java

Modified: commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/ExifTagConstants.java
URL: http://svn.apache.org/viewvc/commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/ExifTagConstants.java?rev=1759662&r1=1759661&r2=1759662&view=diff
==============================================================================
--- commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/ExifTagConstants.java (original)
+++ commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/tiff/constants/ExifTagConstants.java Wed Sep  7 19:03:44 2016
@@ -600,7 +600,14 @@ public final class ExifTagConstants {
                     EXIF_TAG_COMPRESSED_BITS_PER_PIXEL, EXIF_TAG_SHUTTER_SPEED_VALUE,
                     EXIF_TAG_APERTURE_VALUE, EXIF_TAG_BRIGHTNESS_VALUE,
                     EXIF_TAG_EXPOSURE_COMPENSATION, EXIF_TAG_MAX_APERTURE_VALUE,
-                    EXIF_TAG_SUBJECT_DISTANCE, EXIF_TAG_METERING_MODE,
+                    EXIF_TAG_SUBJECT_DISTANCE, EXIF_TAG_IMAGE_UNIQUE_ID,
+                    EXIF_TAG_CAMERA_OWNER_NAME,
+                    EXIF_TAG_BODY_SERIAL_NUMBER,
+                    EXIF_TAG_LENS_SPECIFICATION,
+                    EXIF_TAG_LENS_MAKE,
+                    EXIF_TAG_LENS_MODEL,
+                    EXIF_TAG_LENS_SERIAL_NUMBER,
+                    EXIF_TAG_METERING_MODE,
                     EXIF_TAG_LIGHT_SOURCE, EXIF_TAG_FLASH, EXIF_TAG_FOCAL_LENGTH,
                     EXIF_TAG_SUBJECT_AREA,
                     EXIF_TAG_STO_NITS, EXIF_TAG_SUB_SEC_TIME,

Modified: commons/proper/imaging/trunk/src/test/java/org/apache/commons/imaging/formats/tiff/TiffTagIntegrityTest.java
URL: http://svn.apache.org/viewvc/commons/proper/imaging/trunk/src/test/java/org/apache/commons/imaging/formats/tiff/TiffTagIntegrityTest.java?rev=1759662&r1=1759661&r2=1759662&view=diff
==============================================================================
--- commons/proper/imaging/trunk/src/test/java/org/apache/commons/imaging/formats/tiff/TiffTagIntegrityTest.java (original)
+++ commons/proper/imaging/trunk/src/test/java/org/apache/commons/imaging/formats/tiff/TiffTagIntegrityTest.java Wed Sep  7 19:03:44 2016
@@ -16,10 +16,14 @@
  */
 package org.apache.commons.imaging.formats.tiff;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
+import java.util.Set;
+import java.util.TreeSet;
 
 import org.apache.commons.imaging.ImagingTest;
 import org.apache.commons.imaging.formats.tiff.constants.AdobePageMaker6TagConstants;
@@ -79,32 +83,36 @@ public class TiffTagIntegrityTest extend
         verifyFields(WangTagConstants.class, WangTagConstants.ALL_WANG_TAGS);
     }
 
-    private void verifyFields(final Class<?> cls, final List<TagInfo> tags) {
-        final Field[] fields = cls.getFields();
-        int tagCount = 0;
-        int foundCount = 0;
-        for (final Field field : fields) {
+    private void verifyFields(final Class<?> cls, final List<TagInfo> allTags) {
+        ArrayList<Integer> fieldTags = new ArrayList<>();
+        for (final Field field : cls.getFields()) {
             field.setAccessible(true);
-            if (!(field.getType().isInstance(TagInfo.class))) {
-                continue;
-            }
-            ++tagCount;
-            TagInfo src = null;
+            Object obj = null;
             try {
-                src = (TagInfo) field.get(null);
+                obj = field.get(null);
             } catch (final IllegalAccessException illegalAccess) {
             }
-            if (src == null) {
+            if (obj == null) {
                 continue;
             }
-            for (int i = 0; i < tags.size(); i++) {
-                final TagInfo tagInfo = tags.get(i);
-                if (tagInfo.tag == src.tag) {
-                    ++foundCount;
-                    break;
-                }
+            if (!(obj instanceof TagInfo)) {
+                continue;
             }
+            TagInfo src = (TagInfo) obj;
+            if (src.tag == -1) {
+                // Skip TiffTagConstants.TIFF_TAG_UNKNOWN
+                continue;
+            }
+            fieldTags.add(src.tag);
+        }
+        Collections.sort(fieldTags);
+        final Set<Integer> allTagSet = new TreeSet<>();
+        for (final TagInfo tagInfo : allTags) {
+            assertTrue("Missing field " + tagInfo.tag, Collections.binarySearch(fieldTags, tagInfo.tag) >= 0);
+            allTagSet.add(tagInfo.tag);
+        }
+        for (final Integer tag : fieldTags) {
+            assertTrue("Missing tag " + tag, allTagSet.contains(tag));
         }
-        assertEquals(tagCount, foundCount);
     }
 }