Author: britter
Date: Mon Jan 12 19:01:50 2015
New Revision: 1651164

URL: http://svn.apache.org/r1651164
Log:
Make IptcUpdateTest a parameterized test (extracted testing of add 
functionality into a separate test for this purpose)

Added:
    
commons/proper/imaging/trunk/src/test/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcAddTest.java
   (with props)
Modified:
    
commons/proper/imaging/trunk/src/test/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcBaseTest.java
    
commons/proper/imaging/trunk/src/test/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcUpdateTest.java

Added: 
commons/proper/imaging/trunk/src/test/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcAddTest.java
URL: 
http://svn.apache.org/viewvc/commons/proper/imaging/trunk/src/test/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcAddTest.java?rev=1651164&view=auto
==============================================================================
--- 
commons/proper/imaging/trunk/src/test/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcAddTest.java
 (added)
+++ 
commons/proper/imaging/trunk/src/test/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcAddTest.java
 Mon Jan 12 19:01:50 2015
@@ -0,0 +1,132 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.commons.imaging.formats.jpeg.iptc;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.imaging.common.bytesource.ByteSource;
+import org.apache.commons.imaging.common.bytesource.ByteSourceFile;
+import org.apache.commons.imaging.formats.jpeg.JpegImageParser;
+import org.apache.commons.imaging.formats.jpeg.JpegPhotoshopMetadata;
+import org.apache.commons.imaging.util.IoUtils;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+@RunWith(Parameterized.class)
+public class IptcAddTest extends IptcBaseTest {
+
+    private File imageFile;
+
+    @Parameterized.Parameters
+    public static Collection<File> data() throws Exception {
+        return getJpegImages();
+    }
+
+    public IptcAddTest(File imageFile) {
+        this.imageFile = imageFile;
+    }
+
+    /*
+         * Add a few IPTC values to JPEG images, whether or not they have 
existing
+         * IPTC data.
+         */
+    @Test
+    public void testAddIptcData() throws Exception {
+        final ByteSource byteSource = new ByteSourceFile(imageFile);
+
+        final Map<String, Object> params = new HashMap<String, Object>();
+        final boolean ignoreImageData = isPhilHarveyTestImage(imageFile);
+        params.put(PARAM_KEY_READ_THUMBNAILS, 
Boolean.valueOf(!ignoreImageData));
+
+        final JpegPhotoshopMetadata metadata = new 
JpegImageParser().getPhotoshopMetadata(byteSource, params);
+
+        {
+            final List<IptcBlock> newBlocks = new ArrayList<IptcBlock>();
+            List<IptcRecord> newRecords = new ArrayList<IptcRecord>();
+
+            if (null != metadata) {
+                final boolean keepOldIptcNonTextValues = true;
+                if (keepOldIptcNonTextValues) {
+                    newBlocks.addAll(metadata.photoshopApp13Data
+                            .getNonIptcBlocks());
+                }
+                final boolean keepOldIptcTextValues = true;
+                if (keepOldIptcTextValues) {
+                    final List<IptcRecord> oldRecords = 
metadata.photoshopApp13Data
+                            .getRecords();
+
+                    newRecords = new ArrayList<IptcRecord>();
+                    for (int j = 0; j < oldRecords.size(); j++) {
+                        final IptcRecord record = oldRecords.get(j);
+                        if (record.iptcType != IptcTypes.CITY
+                                && record.iptcType != IptcTypes.CREDIT) {
+                            newRecords.add(record);
+                        }
+                    }
+                }
+            }
+
+            newRecords.add(new IptcRecord(IptcTypes.CITY, "Albany, NY"));
+            newRecords.add(new IptcRecord(IptcTypes.CREDIT,
+                    "William Sorensen"));
+
+            final PhotoshopApp13Data newData = new 
PhotoshopApp13Data(newRecords,
+                    newBlocks);
+
+            final File updated = createTempFile(imageFile.getName()
+                    + ".iptc.add.", ".jpg");
+            OutputStream os = null;
+            boolean canThrow = false;
+            try {
+                os = new FileOutputStream(updated);
+                os = new BufferedOutputStream(os);
+                new JpegIptcRewriter().writeIPTC(byteSource, os, newData);
+                canThrow = true;
+            } finally {
+                IoUtils.closeQuietly(canThrow, os);
+            }
+
+            // Debug.debug("Destination Segments:");
+            // new JpegUtils().dumpJFIF(new ByteSourceFile(updated));
+
+            final ByteSource updateByteSource = new ByteSourceFile(updated);
+            final JpegPhotoshopMetadata outMetadata = new JpegImageParser()
+                    .getPhotoshopMetadata(updateByteSource, params);
+
+            // Debug.debug("outMetadata", outMetadata.toString());
+            // Debug.debug("hasIptcSegment", new JpegImageParser()
+            // .hasIptcSegment(updateByteSource));
+
+            assertNotNull(outMetadata);
+            assertTrue(outMetadata.getItems().size() == newRecords.size());
+            // assertEquals(metadata.toString(), outMetadata.toString());
+        }
+    }
+}

Propchange: 
commons/proper/imaging/trunk/src/test/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcAddTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
commons/proper/imaging/trunk/src/test/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcBaseTest.java
URL: 
http://svn.apache.org/viewvc/commons/proper/imaging/trunk/src/test/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcBaseTest.java?rev=1651164&r1=1651163&r2=1651164&view=diff
==============================================================================
--- 
commons/proper/imaging/trunk/src/test/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcBaseTest.java
 (original)
+++ 
commons/proper/imaging/trunk/src/test/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcBaseTest.java
 Mon Jan 12 19:01:50 2015
@@ -80,7 +80,7 @@ public abstract class IptcBaseTest exten
         return getTestImage(JPEG_IMAGE_FILTER);
     }
 
-    protected List<File> getJpegImages() throws IOException, 
ImageReadException {
+    protected static List<File> getJpegImages() throws IOException, 
ImageReadException {
         return getTestImages(JPEG_IMAGE_FILTER);
     }
 

Modified: 
commons/proper/imaging/trunk/src/test/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcUpdateTest.java
URL: 
http://svn.apache.org/viewvc/commons/proper/imaging/trunk/src/test/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcUpdateTest.java?rev=1651164&r1=1651163&r2=1651164&view=diff
==============================================================================
--- 
commons/proper/imaging/trunk/src/test/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcUpdateTest.java
 (original)
+++ 
commons/proper/imaging/trunk/src/test/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcUpdateTest.java
 Mon Jan 12 19:01:50 2015
@@ -25,6 +25,7 @@ import java.io.File;
 import java.io.FileOutputStream;
 import java.io.OutputStream;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -38,18 +39,20 @@ import org.apache.commons.imaging.util.I
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
 
+@RunWith(Parameterized.class)
 public class IptcUpdateTest extends IptcBaseTest {
-    private List<File> imagesWithIptcData;
+    private File imageFile;
 
-    @Before
-    public void setUp() throws Exception {
-        imagesWithIptcData = getImagesWithIptcData();
+    @Parameterized.Parameters
+    public static Collection<File> data() throws Exception {
+        return getImagesWithIptcData();
     }
 
-    @After
-    public void tearDown() throws Exception {
-        imagesWithIptcData = null;
+    public IptcUpdateTest(File imageFile) {
+        this.imageFile = imageFile;
     }
 
     /*
@@ -57,325 +60,218 @@ public class IptcUpdateTest extends Iptc
      */
     @Test
     public void testRemove() throws Exception {
-        final List<File> images = imagesWithIptcData;
-        for (int i = 0; i < images.size(); i++) {
-
-            final File imageFile = images.get(i);
-            // Debug.debug("imageFile", imageFile);
-            // Debug.debug();
-
-            final ByteSource byteSource = new ByteSourceFile(imageFile);
-
-            final Map<String, Object> params = new HashMap<String, Object>();
-            final boolean ignoreImageData = isPhilHarveyTestImage(imageFile);
-            params.put(PARAM_KEY_READ_THUMBNAILS, new 
Boolean(!ignoreImageData));
-
-            final JpegPhotoshopMetadata metadata = new JpegImageParser()
-                    .getPhotoshopMetadata(byteSource, params);
-            assertNotNull(metadata);
-            // metadata.dump();
-
-            final File noIptcFile = createTempFile(imageFile.getName()
-                    + ".iptc.remove.", ".jpg");
-            {
-                // test remove
-
-                OutputStream os = null;
-                boolean canThrow = false;
-                try {
-                    os = new FileOutputStream(noIptcFile);
-                    os = new BufferedOutputStream(os);
-                    new JpegIptcRewriter().removeIPTC(byteSource, os);
-                    canThrow = true;
-                } finally {
-                    IoUtils.closeQuietly(canThrow, os);
-                }
-
-                final JpegPhotoshopMetadata outMetadata = new JpegImageParser()
-                        .getPhotoshopMetadata(new ByteSourceFile(noIptcFile),
-                                params);
-                assertTrue(outMetadata == null
-                        || outMetadata.getItems().size() == 0);
-            }
+        final ByteSource byteSource = new ByteSourceFile(imageFile);
 
+        final Map<String, Object> params = new HashMap<String, Object>();
+        final boolean ignoreImageData = isPhilHarveyTestImage(imageFile);
+        params.put(PARAM_KEY_READ_THUMBNAILS, new Boolean(!ignoreImageData));
+
+        final JpegPhotoshopMetadata metadata = new JpegImageParser()
+                .getPhotoshopMetadata(byteSource, params);
+        assertNotNull(metadata);
+        // metadata.dump();
+
+        final File noIptcFile = createTempFile(imageFile.getName()
+                + ".iptc.remove.", ".jpg");
+        {
+            // test remove
+
+            OutputStream os = null;
+            boolean canThrow = false;
+            try {
+                os = new FileOutputStream(noIptcFile);
+                os = new BufferedOutputStream(os);
+                new JpegIptcRewriter().removeIPTC(byteSource, os);
+                canThrow = true;
+            } finally {
+                IoUtils.closeQuietly(canThrow, os);
+            }
+
+            final JpegPhotoshopMetadata outMetadata = new JpegImageParser()
+                    .getPhotoshopMetadata(new ByteSourceFile(noIptcFile),
+                            params);
+            assertTrue(outMetadata == null
+                    || outMetadata.getItems().size() == 0);
         }
     }
 
     @Test
     public void testRemoveInsertUpdate() throws Exception {
-        final List<File> images = imagesWithIptcData;
-        for (int i = 0; i < images.size(); i++) {
-
-            final File imageFile = images.get(i);
-            Debug.debug("imageFile", imageFile);
-            Debug.debug();
-
-            final ByteSource byteSource = new ByteSourceFile(imageFile);
-            // Debug.debug("Segments:");
-            // new JpegUtils().dumpJFIF(byteSource);
-
-            final Map<String, Object> params = new HashMap<String, Object>();
-            final boolean ignoreImageData = isPhilHarveyTestImage(imageFile);
-            params.put(PARAM_KEY_READ_THUMBNAILS, new 
Boolean(!ignoreImageData));
-            // params.put(PARAM_KEY_VERBOSE, Boolean.TRUE);
-            // params.put(PARAM_KEY_VERBOSE, Boolean.TRUE);
-
-            final JpegPhotoshopMetadata metadata = new JpegImageParser()
-                    .getPhotoshopMetadata(byteSource, params);
-            assertNotNull(metadata);
-            metadata.dump();
-
-            final File noIptcFile = createTempFile(imageFile.getName()
-                    + ".iptc.remove.", ".jpg");
-            {
-                // test remove
-
-                OutputStream os = null;
-                boolean canThrow = false;
-                try {
-                    os = new FileOutputStream(noIptcFile);
-                    os = new BufferedOutputStream(os);
-                    new JpegIptcRewriter().removeIPTC(byteSource, os);
-                    canThrow = true;
-                } finally {
-                    IoUtils.closeQuietly(canThrow, os);
-                }
-
-                // Debug.debug("Source Segments:");
-                // new JpegUtils().dumpJFIF(new ByteSourceFile(noIptcFile));
-
-                final JpegPhotoshopMetadata outMetadata = new JpegImageParser()
-                        .getPhotoshopMetadata(new ByteSourceFile(noIptcFile),
-                                params);
-                assertTrue(outMetadata == null
-                        || outMetadata.getItems().size() == 0);
-            }
-            {
-                // test no-change update
-
-                final List<IptcBlock> newBlocks = 
metadata.photoshopApp13Data.getNonIptcBlocks();
-                final List<IptcRecord> oldRecords = 
metadata.photoshopApp13Data.getRecords();
-                final List<IptcRecord> newRecords = new 
ArrayList<IptcRecord>();
-                for (int j = 0; j < oldRecords.size(); j++) {
-                    final IptcRecord record = oldRecords.get(j);
-                    if (record.iptcType != IptcTypes.CITY
-                            && record.iptcType != IptcTypes.CREDIT) {
-                        newRecords.add(record);
-                    }
-                }
-
-                newRecords.add(new IptcRecord(IptcTypes.CITY, "Albany, NY"));
-                newRecords.add(new IptcRecord(IptcTypes.CREDIT,
-                        "William Sorensen"));
-
-                final PhotoshopApp13Data newData = new 
PhotoshopApp13Data(newRecords,
-                        newBlocks);
-
-                final File updated = createTempFile(imageFile.getName()
-                        + ".iptc.update.", ".jpg");
-                OutputStream os = null;
-                boolean canThrow = false;
-                try {
-                    os = new FileOutputStream(updated);
-                    os = new BufferedOutputStream(os);
-                    new JpegIptcRewriter().writeIPTC(byteSource, os, newData);
-                    canThrow = true;
-                } finally {
-                    IoUtils.closeQuietly(canThrow, os);
-                }
-
-                // Debug.debug("Source Segments:");
-                // new JpegUtils().dumpJFIF(new ByteSourceFile(updated));
-
-                final ByteSource updateByteSource = new 
ByteSourceFile(updated);
-                final JpegPhotoshopMetadata outMetadata = new JpegImageParser()
-                        .getPhotoshopMetadata(updateByteSource, params);
-
-                // Debug.debug("outMetadata", outMetadata.toString());
-                // Debug.debug("hasIptcSegment", new JpegImageParser()
-                // .hasIptcSegment(updateByteSource));
-
-                assertNotNull(outMetadata);
-                assertTrue(outMetadata.getItems().size() == newRecords.size());
-                // assertEquals(metadata.toString(), outMetadata.toString());
-            }
-
-            {
-                // test update
-
-                final List<IptcBlock> newBlocks = 
metadata.photoshopApp13Data.getNonIptcBlocks();
-                final List<IptcRecord> newRecords = new 
ArrayList<IptcRecord>();
+        final ByteSource byteSource = new ByteSourceFile(imageFile);
+        // Debug.debug("Segments:");
+        // new JpegUtils().dumpJFIF(byteSource);
+
+        final Map<String, Object> params = new HashMap<String, Object>();
+        final boolean ignoreImageData = isPhilHarveyTestImage(imageFile);
+        params.put(PARAM_KEY_READ_THUMBNAILS, new Boolean(!ignoreImageData));
+        // params.put(PARAM_KEY_VERBOSE, Boolean.TRUE);
+        // params.put(PARAM_KEY_VERBOSE, Boolean.TRUE);
+
+        final JpegPhotoshopMetadata metadata = new JpegImageParser()
+                .getPhotoshopMetadata(byteSource, params);
+        assertNotNull(metadata);
+        metadata.dump();
+
+        final File noIptcFile = createTempFile(imageFile.getName()
+                + ".iptc.remove.", ".jpg");
+        {
+            // test remove
+
+            OutputStream os = null;
+            boolean canThrow = false;
+            try {
+                os = new FileOutputStream(noIptcFile);
+                os = new BufferedOutputStream(os);
+                new JpegIptcRewriter().removeIPTC(byteSource, os);
+                canThrow = true;
+            } finally {
+                IoUtils.closeQuietly(canThrow, os);
+            }
+
+            // Debug.debug("Source Segments:");
+            // new JpegUtils().dumpJFIF(new ByteSourceFile(noIptcFile));
+
+            final JpegPhotoshopMetadata outMetadata = new JpegImageParser()
+                    .getPhotoshopMetadata(new ByteSourceFile(noIptcFile),
+                            params);
+            assertTrue(outMetadata == null
+                    || outMetadata.getItems().size() == 0);
+        }
+        {
+            // test no-change update
 
-                newRecords.add(new IptcRecord(IptcTypes.CITY, "Albany, NY"));
-                newRecords.add(new IptcRecord(IptcTypes.CREDIT,
-                        "William Sorensen"));
-
-                final PhotoshopApp13Data newData = new 
PhotoshopApp13Data(newRecords,
-                        newBlocks);
-
-                final File updated = createTempFile(imageFile.getName()
-                        + ".iptc.update.", ".jpg");
-                OutputStream os = null;
-                boolean canThrow = false;
-                try {
-                    os = new FileOutputStream(updated);
-                    os = new BufferedOutputStream(os);
-                    new JpegIptcRewriter().writeIPTC(byteSource, os, newData);
-                    canThrow = true;
-                } finally {
-                    IoUtils.closeQuietly(canThrow, os);
+            final List<IptcBlock> newBlocks = 
metadata.photoshopApp13Data.getNonIptcBlocks();
+            final List<IptcRecord> oldRecords = 
metadata.photoshopApp13Data.getRecords();
+            final List<IptcRecord> newRecords = new ArrayList<IptcRecord>();
+            for (int j = 0; j < oldRecords.size(); j++) {
+                final IptcRecord record = oldRecords.get(j);
+                if (record.iptcType != IptcTypes.CITY
+                        && record.iptcType != IptcTypes.CREDIT) {
+                    newRecords.add(record);
                 }
-
-                // Debug.debug("Source Segments:");
-                // new JpegUtils().dumpJFIF(new ByteSourceFile(updated));
-
-                final ByteSource updateByteSource = new 
ByteSourceFile(updated);
-                final JpegPhotoshopMetadata outMetadata = new JpegImageParser()
-                        .getPhotoshopMetadata(updateByteSource, params);
-
-                // Debug.debug("outMetadata", outMetadata.toString());
-                // Debug.debug("hasIptcSegment", new JpegImageParser()
-                // .hasIptcSegment(updateByteSource));
-
-                assertNotNull(outMetadata);
-                assertTrue(outMetadata.getItems().size() == 2);
-                // assertEquals(metadata.toString(), outMetadata.toString());
             }
 
-            {
-                // test insert
-
-                final List<IptcBlock> newBlocks = new ArrayList<IptcBlock>();
-                final List<IptcRecord> newRecords = new 
ArrayList<IptcRecord>();
-
-                newRecords.add(new IptcRecord(IptcTypes.CITY, "Albany, NY"));
-                newRecords.add(new IptcRecord(IptcTypes.CREDIT,
-                        "William Sorensen"));
-
-                final PhotoshopApp13Data newData = new 
PhotoshopApp13Data(newRecords,
-                        newBlocks);
-
-                final File updated = createTempFile(imageFile.getName()
-                        + ".iptc.insert.", ".jpg");
-                OutputStream os = null;
-                boolean canThrow = false;
-                try {
-                    os = new FileOutputStream(updated);
-                    os = new BufferedOutputStream(os);
-                    new JpegIptcRewriter().writeIPTC(new ByteSourceFile(
-                            noIptcFile), os, newData);
-                    canThrow = true;
-                } finally {
-                    IoUtils.closeQuietly(canThrow, os);
-                }
+            newRecords.add(new IptcRecord(IptcTypes.CITY, "Albany, NY"));
+            newRecords.add(new IptcRecord(IptcTypes.CREDIT,
+                    "William Sorensen"));
+
+            final PhotoshopApp13Data newData = new 
PhotoshopApp13Data(newRecords,
+                    newBlocks);
+
+            final File updated = createTempFile(imageFile.getName()
+                    + ".iptc.update.", ".jpg");
+            OutputStream os = null;
+            boolean canThrow = false;
+            try {
+                os = new FileOutputStream(updated);
+                os = new BufferedOutputStream(os);
+                new JpegIptcRewriter().writeIPTC(byteSource, os, newData);
+                canThrow = true;
+            } finally {
+                IoUtils.closeQuietly(canThrow, os);
+            }
+
+            // Debug.debug("Source Segments:");
+            // new JpegUtils().dumpJFIF(new ByteSourceFile(updated));
+
+            final ByteSource updateByteSource = new ByteSourceFile(updated);
+            final JpegPhotoshopMetadata outMetadata = new JpegImageParser()
+                    .getPhotoshopMetadata(updateByteSource, params);
+
+            // Debug.debug("outMetadata", outMetadata.toString());
+            // Debug.debug("hasIptcSegment", new JpegImageParser()
+            // .hasIptcSegment(updateByteSource));
+
+            assertNotNull(outMetadata);
+            assertTrue(outMetadata.getItems().size() == newRecords.size());
+            // assertEquals(metadata.toString(), outMetadata.toString());
+        }
 
-                // Debug.debug("Source Segments:");
-                // new JpegUtils().dumpJFIF(new ByteSourceFile(updated));
+        {
+            // test update
 
-                final ByteSource updateByteSource = new 
ByteSourceFile(updated);
-                final JpegPhotoshopMetadata outMetadata = new JpegImageParser()
-                        .getPhotoshopMetadata(updateByteSource, params);
-
-                // Debug.debug("outMetadata", outMetadata.toString());
-                // Debug.debug("hasIptcSegment", new JpegImageParser()
-                // .hasIptcSegment(updateByteSource));
-
-                assertNotNull(outMetadata);
-                assertTrue(outMetadata.getItems().size() == 2);
-                // assertEquals(metadata.toString(), outMetadata.toString());
-            }
+            final List<IptcBlock> newBlocks = 
metadata.photoshopApp13Data.getNonIptcBlocks();
+            final List<IptcRecord> newRecords = new ArrayList<IptcRecord>();
 
+            newRecords.add(new IptcRecord(IptcTypes.CITY, "Albany, NY"));
+            newRecords.add(new IptcRecord(IptcTypes.CREDIT,
+                    "William Sorensen"));
+
+            final PhotoshopApp13Data newData = new 
PhotoshopApp13Data(newRecords,
+                    newBlocks);
+
+            final File updated = createTempFile(imageFile.getName()
+                    + ".iptc.update.", ".jpg");
+            OutputStream os = null;
+            boolean canThrow = false;
+            try {
+                os = new FileOutputStream(updated);
+                os = new BufferedOutputStream(os);
+                new JpegIptcRewriter().writeIPTC(byteSource, os, newData);
+                canThrow = true;
+            } finally {
+                IoUtils.closeQuietly(canThrow, os);
+            }
+
+            // Debug.debug("Source Segments:");
+            // new JpegUtils().dumpJFIF(new ByteSourceFile(updated));
+
+            final ByteSource updateByteSource = new ByteSourceFile(updated);
+            final JpegPhotoshopMetadata outMetadata = new JpegImageParser()
+                    .getPhotoshopMetadata(updateByteSource, params);
+
+            // Debug.debug("outMetadata", outMetadata.toString());
+            // Debug.debug("hasIptcSegment", new JpegImageParser()
+            // .hasIptcSegment(updateByteSource));
+
+            assertNotNull(outMetadata);
+            assertTrue(outMetadata.getItems().size() == 2);
+            // assertEquals(metadata.toString(), outMetadata.toString());
         }
-    }
 
-    /*
-     * Add a few IPTC values to JPEG images, whether or not they have existing
-     * IPTC data.
-     */
-    @Test
-    public void testAddIptcData() throws Exception {
-        final List<File> images = getJpegImages();
-        for (int i = 0; i < images.size(); i++) {
-
-            final File imageFile = images.get(i);
-            // Debug.debug("imageFile", imageFile);
-            // Debug.debug();
-
-            final ByteSource byteSource = new ByteSourceFile(imageFile);
-            // Debug.debug("Segments:");
-            // new JpegUtils().dumpJFIF(byteSource);
-
-            final Map<String, Object> params = new HashMap<String, Object>();
-            final boolean ignoreImageData = isPhilHarveyTestImage(imageFile);
-            params.put(PARAM_KEY_READ_THUMBNAILS, new 
Boolean(!ignoreImageData));
-
-            final JpegPhotoshopMetadata metadata = new JpegImageParser()
-                    .getPhotoshopMetadata(byteSource, params);
-            // metadata.dump();
-
-            {
-                final List<IptcBlock> newBlocks = new ArrayList<IptcBlock>();
-                List<IptcRecord> newRecords = new ArrayList<IptcRecord>();
-
-                if (null != metadata) {
-                    final boolean keepOldIptcNonTextValues = true;
-                    if (keepOldIptcNonTextValues) {
-                        newBlocks.addAll(metadata.photoshopApp13Data
-                                .getNonIptcBlocks());
-                    }
-                    final boolean keepOldIptcTextValues = true;
-                    if (keepOldIptcTextValues) {
-                        final List<IptcRecord> oldRecords = 
metadata.photoshopApp13Data
-                                .getRecords();
-
-                        newRecords = new ArrayList<IptcRecord>();
-                        for (int j = 0; j < oldRecords.size(); j++) {
-                            final IptcRecord record = oldRecords.get(j);
-                            if (record.iptcType != IptcTypes.CITY
-                                    && record.iptcType != IptcTypes.CREDIT) {
-                                newRecords.add(record);
-                            }
-                        }
-                    }
-                }
+        {
+            // test insert
 
-                newRecords.add(new IptcRecord(IptcTypes.CITY, "Albany, NY"));
-                newRecords.add(new IptcRecord(IptcTypes.CREDIT,
-                        "William Sorensen"));
-
-                final PhotoshopApp13Data newData = new 
PhotoshopApp13Data(newRecords,
-                        newBlocks);
-
-                final File updated = createTempFile(imageFile.getName()
-                        + ".iptc.add.", ".jpg");
-                OutputStream os = null;
-                boolean canThrow = false;
-                try {
-                    os = new FileOutputStream(updated);
-                    os = new BufferedOutputStream(os);
-                    new JpegIptcRewriter().writeIPTC(byteSource, os, newData);
-                    canThrow = true;
-                } finally {
-                    IoUtils.closeQuietly(canThrow, os);
-                }
-
-                // Debug.debug("Destination Segments:");
-                // new JpegUtils().dumpJFIF(new ByteSourceFile(updated));
-
-                final ByteSource updateByteSource = new 
ByteSourceFile(updated);
-                final JpegPhotoshopMetadata outMetadata = new JpegImageParser()
-                        .getPhotoshopMetadata(updateByteSource, params);
-
-                // Debug.debug("outMetadata", outMetadata.toString());
-                // Debug.debug("hasIptcSegment", new JpegImageParser()
-                // .hasIptcSegment(updateByteSource));
-
-                assertNotNull(outMetadata);
-                assertTrue(outMetadata.getItems().size() == newRecords.size());
-                // assertEquals(metadata.toString(), outMetadata.toString());
-            }
+            final List<IptcBlock> newBlocks = new ArrayList<IptcBlock>();
+            final List<IptcRecord> newRecords = new ArrayList<IptcRecord>();
 
+            newRecords.add(new IptcRecord(IptcTypes.CITY, "Albany, NY"));
+            newRecords.add(new IptcRecord(IptcTypes.CREDIT,
+                    "William Sorensen"));
+
+            final PhotoshopApp13Data newData = new 
PhotoshopApp13Data(newRecords,
+                    newBlocks);
+
+            final File updated = createTempFile(imageFile.getName()
+                    + ".iptc.insert.", ".jpg");
+            OutputStream os = null;
+            boolean canThrow = false;
+            try {
+                os = new FileOutputStream(updated);
+                os = new BufferedOutputStream(os);
+                new JpegIptcRewriter().writeIPTC(new ByteSourceFile(
+                        noIptcFile), os, newData);
+                canThrow = true;
+            } finally {
+                IoUtils.closeQuietly(canThrow, os);
+            }
+
+            // Debug.debug("Source Segments:");
+            // new JpegUtils().dumpJFIF(new ByteSourceFile(updated));
+
+            final ByteSource updateByteSource = new ByteSourceFile(updated);
+            final JpegPhotoshopMetadata outMetadata = new JpegImageParser()
+                    .getPhotoshopMetadata(updateByteSource, params);
+
+            // Debug.debug("outMetadata", outMetadata.toString());
+            // Debug.debug("hasIptcSegment", new JpegImageParser()
+            // .hasIptcSegment(updateByteSource));
+
+            assertNotNull(outMetadata);
+            assertTrue(outMetadata.getItems().size() == 2);
+            // assertEquals(metadata.toString(), outMetadata.toString());
         }
+
     }
 
 }


Reply via email to