Author: britter Date: Mon Jan 12 19:26:54 2015 New Revision: 1651171 URL: http://svn.apache.org/r1651171 Log: Break up large test into smaller tests
Modified: commons/proper/imaging/trunk/src/test/java/org/apache/commons/imaging/formats/jpeg/iptc/IptcUpdateTest.java 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=1651171&r1=1651170&r2=1651171&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:26:54 2015 @@ -23,6 +23,7 @@ import static org.junit.Assert.assertTru import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; +import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; import java.util.Collection; @@ -30,14 +31,13 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.apache.commons.imaging.ImageReadException; +import org.apache.commons.imaging.ImageWriteException; 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.Debug; import org.apache.commons.imaging.util.IoUtils; -import org.junit.After; -import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; @@ -64,214 +64,158 @@ public class IptcUpdateTest extends Iptc 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_READ_THUMBNAILS, Boolean.valueOf(!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 File noIptcFile = removeIptc(byteSource); + + final JpegPhotoshopMetadata outMetadata = new JpegImageParser() + .getPhotoshopMetadata(new ByteSourceFile(noIptcFile), + params); + + // FIXME should either be null or empty + assertTrue(outMetadata == null + || outMetadata.getItems().size() == 0); + } - final JpegPhotoshopMetadata outMetadata = new JpegImageParser() - .getPhotoshopMetadata(new ByteSourceFile(noIptcFile), - params); - assertTrue(outMetadata == null - || outMetadata.getItems().size() == 0); - } + public File removeIptc(ByteSource byteSource) throws Exception { + final File noIptcFile = createTempFile(imageFile.getName() + ".iptc.remove.", ".jpg"); + + OutputStream os = new FileOutputStream(noIptcFile); + os = new BufferedOutputStream(os); + new JpegIptcRewriter().removeIPTC(byteSource, os); + os.close(); + return noIptcFile; } @Test - public void testRemoveInsertUpdate() throws Exception { + public void testInsert() throws Exception { 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); + params.put(PARAM_KEY_READ_THUMBNAILS, Boolean.valueOf(!ignoreImageData)); - final JpegPhotoshopMetadata metadata = new JpegImageParser() - .getPhotoshopMetadata(byteSource, params); + 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 File noIptcFile = removeIptc(byteSource); - // Debug.debug("Source Segments:"); - // new JpegUtils().dumpJFIF(new ByteSourceFile(noIptcFile)); + final List<IptcBlock> newBlocks = new ArrayList<IptcBlock>(); + final List<IptcRecord> newRecords = new ArrayList<IptcRecord>(); - final JpegPhotoshopMetadata outMetadata = new JpegImageParser() - .getPhotoshopMetadata(new ByteSourceFile(noIptcFile), - params); - assertTrue(outMetadata == null - || outMetadata.getItems().size() == 0); + 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); } - { - // 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); - } - } + final ByteSource updateByteSource = new ByteSourceFile(updated); + final JpegPhotoshopMetadata outMetadata = new JpegImageParser() + .getPhotoshopMetadata(updateByteSource, params); - 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); - } + assertNotNull(outMetadata); + assertTrue(outMetadata.getItems().size() == 2); + } + + @Test + public void testUpdate() throws Exception { + final ByteSource byteSource = new ByteSourceFile(imageFile); - // Debug.debug("Source Segments:"); - // new JpegUtils().dumpJFIF(new ByteSourceFile(updated)); + final Map<String, Object> params = new HashMap<String, Object>(); + final boolean ignoreImageData = isPhilHarveyTestImage(imageFile); + params.put(PARAM_KEY_READ_THUMBNAILS, Boolean.valueOf(!ignoreImageData)); - 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 JpegPhotoshopMetadata metadata = new JpegImageParser().getPhotoshopMetadata(byteSource, params); + assertNotNull(metadata); - { - // test update + final List<IptcBlock> newBlocks = metadata.photoshopApp13Data.getNonIptcBlocks(); + final List<IptcRecord> newRecords = new ArrayList<IptcRecord>(); - 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")); - 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 PhotoshopApp13Data newData = new PhotoshopApp13Data(newRecords, + newBlocks); + + final File updated = writeIptc(byteSource, newData); + + final ByteSource updateByteSource = new ByteSourceFile(updated); + final JpegPhotoshopMetadata outMetadata = new JpegImageParser() + .getPhotoshopMetadata(updateByteSource, params); - // Debug.debug("Source Segments:"); - // new JpegUtils().dumpJFIF(new ByteSourceFile(updated)); + assertNotNull(outMetadata); + assertTrue(outMetadata.getItems().size() == 2); + } - 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()); + public File writeIptc(ByteSource byteSource, PhotoshopApp13Data newData) throws IOException, ImageReadException, ImageWriteException { + 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); } + return updated; + } + + @Test + public void testNoChangeUpdate() throws Exception { + final ByteSource byteSource = new ByteSourceFile(imageFile); - { - // test insert + final Map<String, Object> params = new HashMap<String, Object>(); + final boolean ignoreImageData = isPhilHarveyTestImage(imageFile); + params.put(PARAM_KEY_READ_THUMBNAILS, Boolean.valueOf(!ignoreImageData)); - final List<IptcBlock> newBlocks = new ArrayList<IptcBlock>(); - final List<IptcRecord> newRecords = new ArrayList<IptcRecord>(); + final JpegPhotoshopMetadata metadata = new JpegImageParser().getPhotoshopMetadata(byteSource, params); + assertNotNull(metadata); - 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); + final List<IptcBlock> newBlocks = metadata.photoshopApp13Data.getNonIptcBlocks(); + final List<IptcRecord> oldRecords = metadata.photoshopApp13Data.getRecords(); + final List<IptcRecord> newRecords = new ArrayList<IptcRecord>(); + for (final IptcRecord record : oldRecords) { + if (record.iptcType != IptcTypes.CITY + && record.iptcType != IptcTypes.CREDIT) { + newRecords.add(record); } + } - // Debug.debug("Source Segments:"); - // new JpegUtils().dumpJFIF(new ByteSourceFile(updated)); + newRecords.add(new IptcRecord(IptcTypes.CITY, "Albany, NY")); + newRecords.add(new IptcRecord(IptcTypes.CREDIT, "William Sorensen")); - 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 PhotoshopApp13Data newData = new PhotoshopApp13Data(newRecords, newBlocks); + + final File updated = writeIptc(byteSource, newData); + + final ByteSource updateByteSource = new ByteSourceFile(updated); + final JpegPhotoshopMetadata outMetadata = new JpegImageParser().getPhotoshopMetadata(updateByteSource, params); + assertNotNull(outMetadata); + assertTrue(outMetadata.getItems().size() == newRecords.size()); } }