From 2e9ed9cba12cf0e2618a5d4d1ce0157c235685e7 Mon Sep 17 00:00:00 2001
From: Dominik Stadler
Date: Sun, 16 Feb 2014 09:11:28 +0000
Subject: [PATCH] Fix unit tests broken by newly added test-file, ignore
TestFontRendering as it is inherently unstable currently
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1568744 13f79535-47bb-0310-9956-ffa450edef68
---
.../poi/hslf/usermodel/TestFontRendering.java | 2 +
.../poi/hpsf/basic/TestReadAllFiles.java | 24 +-
.../org/apache/poi/hpsf/basic/TestWrite.java | 251 +++++++-----------
.../poi/hpsf/basic/TestWriteWellKnown.java | 127 ++++-----
4 files changed, 176 insertions(+), 228 deletions(-)
diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestFontRendering.java b/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestFontRendering.java
index 5057290dbe..5f981f5405 100644
--- a/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestFontRendering.java
+++ b/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestFontRendering.java
@@ -41,6 +41,7 @@ import javax.imageio.ImageIO;
import org.apache.poi.POIDataSamples;
import org.apache.poi.hslf.model.Slide;
import org.apache.poi.hslf.model.TextPainter;
+import org.junit.Ignore;
import org.junit.Test;
/**
@@ -49,6 +50,7 @@ import org.junit.Test;
public class TestFontRendering {
private static POIDataSamples slTests = POIDataSamples.getSlideShowInstance();
+ @Ignore("This fails on some systems because fonts are rendered slightly different")
@Test
public void bug55902mixedFontWithChineseCharacters() throws Exception {
// font files need to be downloaded first via
diff --git a/src/testcases/org/apache/poi/hpsf/basic/TestReadAllFiles.java b/src/testcases/org/apache/poi/hpsf/basic/TestReadAllFiles.java
index 53c2948d70..3b27fee32b 100644
--- a/src/testcases/org/apache/poi/hpsf/basic/TestReadAllFiles.java
+++ b/src/testcases/org/apache/poi/hpsf/basic/TestReadAllFiles.java
@@ -58,13 +58,7 @@ public class TestReadAllFiles extends TestCase {
public boolean accept(final File f)
{
// exclude files that we know will fail
- for(String exclude : excludes) {
- if(f.getAbsolutePath().endsWith(exclude)) {
- return false;
- }
- }
-
- return f.isFile();
+ return f.isFile() && checkExclude(f);
}
});
@@ -86,4 +80,20 @@ public class TestReadAllFiles extends TestCase {
}
}
}
+
+ /**
+ * Returns true if the file should be checked, false if it should be excluded.
+ *
+ * @param f
+ * @return
+ */
+ public static boolean checkExclude(File f) {
+ for(String exclude : excludes) {
+ if(f.getAbsolutePath().endsWith(exclude)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
}
diff --git a/src/testcases/org/apache/poi/hpsf/basic/TestWrite.java b/src/testcases/org/apache/poi/hpsf/basic/TestWrite.java
index ef7ef6ab53..c7fafe30dd 100644
--- a/src/testcases/org/apache/poi/hpsf/basic/TestWrite.java
+++ b/src/testcases/org/apache/poi/hpsf/basic/TestWrite.java
@@ -17,43 +17,16 @@
package org.apache.poi.hpsf.basic;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileFilter;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.io.UnsupportedEncodingException;
+import java.io.*;
import java.nio.charset.Charset;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
-import junit.framework.Assert;
import junit.framework.TestCase;
+
import org.apache.poi.POIDataSamples;
-import org.apache.poi.hpsf.ClassID;
-import org.apache.poi.hpsf.HPSFRuntimeException;
-import org.apache.poi.hpsf.IllegalPropertySetDataException;
-import org.apache.poi.hpsf.MutableProperty;
-import org.apache.poi.hpsf.MutablePropertySet;
-import org.apache.poi.hpsf.MutableSection;
-import org.apache.poi.hpsf.NoFormatIDException;
-import org.apache.poi.hpsf.NoPropertySetStreamException;
-import org.apache.poi.hpsf.PropertySet;
-import org.apache.poi.hpsf.PropertySetFactory;
-import org.apache.poi.hpsf.ReadingNotSupportedException;
-import org.apache.poi.hpsf.Section;
-import org.apache.poi.hpsf.SummaryInformation;
-import org.apache.poi.hpsf.UnsupportedVariantTypeException;
-import org.apache.poi.hpsf.Variant;
-import org.apache.poi.hpsf.VariantSupport;
-import org.apache.poi.hpsf.WritingNotSupportedException;
+import org.apache.poi.hpsf.*;
import org.apache.poi.hpsf.wellknown.PropertyIDMap;
import org.apache.poi.hpsf.wellknown.SectionIDMap;
import org.apache.poi.poifs.eventfilesystem.POIFSReader;
@@ -63,6 +36,7 @@ import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.util.CodePageUtil;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.TempFile;
+import org.junit.Assert;
/**
* Tests HPSF's writing functionality.
@@ -665,19 +639,26 @@ public class TestWrite extends TestCase
* the origin file and check whether they are equal.
*
*
+ * @throws IOException
*/
- public void testRecreate()
+ public void testRecreate() throws IOException
{
final File dataDir = _samples.getFile("");
final File[] fileList = dataDir.listFiles(new FileFilter()
{
+ @Override
public boolean accept(final File f)
{
- return f.getName().startsWith("Test");
+ return f.getName().startsWith("Test") && TestReadAllFiles.checkExclude(f);
}
});
- for (int i = 0; i < fileList.length; i++)
- testRecreate(fileList[i]);
+ for (int i = 0; i < fileList.length; i++) {
+ try {
+ testRecreate(fileList[i]);
+ } catch (Exception e) {
+ throw new IOException("While handling file " + fileList[i], e);
+ }
+ }
}
@@ -687,58 +668,53 @@ public class TestWrite extends TestCase
* POI filesystem.
*
* @param f the POI filesystem to check
+ * @throws IOException
+ * @throws HPSFException
*/
- private void testRecreate(final File f)
+ private void testRecreate(final File f) throws IOException, HPSFException
{
- try
+ /* Read the POI filesystem's property set streams: */
+ final POIFile[] psf1 = Util.readPropertySets(f);
+
+ /* Create a new POI filesystem containing the origin file's
+ * property set streams: */
+ final File copy = TempFile.createTempFile(f.getName(), "");
+ copy.deleteOnExit();
+ final OutputStream out = new FileOutputStream(copy);
+ final POIFSFileSystem poiFs = new POIFSFileSystem();
+ for (int i = 0; i < psf1.length; i++)
{
- /* Read the POI filesystem's property set streams: */
- final POIFile[] psf1 = Util.readPropertySets(f);
-
- /* Create a new POI filesystem containing the origin file's
- * property set streams: */
- final File copy = TempFile.createTempFile(f.getName(), "");
- copy.deleteOnExit();
- final OutputStream out = new FileOutputStream(copy);
- final POIFSFileSystem poiFs = new POIFSFileSystem();
- for (int i = 0; i < psf1.length; i++)
- {
- final InputStream in =
- new ByteArrayInputStream(psf1[i].getBytes());
- final PropertySet psIn = PropertySetFactory.create(in);
- final MutablePropertySet psOut = new MutablePropertySet(psIn);
- final ByteArrayOutputStream psStream =
- new ByteArrayOutputStream();
- psOut.write(psStream);
- psStream.close();
- final byte[] streamData = psStream.toByteArray();
- poiFs.createDocument(new ByteArrayInputStream(streamData),
- psf1[i].getName());
- poiFs.writeFilesystem(out);
- }
- out.close();
+ final InputStream in =
+ new ByteArrayInputStream(psf1[i].getBytes());
+ final PropertySet psIn = PropertySetFactory.create(in);
+ final MutablePropertySet psOut = new MutablePropertySet(psIn);
+ final ByteArrayOutputStream psStream =
+ new ByteArrayOutputStream();
+ psOut.write(psStream);
+ psStream.close();
+ final byte[] streamData = psStream.toByteArray();
+ poiFs.createDocument(new ByteArrayInputStream(streamData),
+ psf1[i].getName());
+ poiFs.writeFilesystem(out);
+ }
+ out.close();
- /* Read the property set streams from the POI filesystem just
- * created. */
- final POIFile[] psf2 = Util.readPropertySets(copy);
- for (int i = 0; i < psf2.length; i++)
- {
- final byte[] bytes1 = psf1[i].getBytes();
- final byte[] bytes2 = psf2[i].getBytes();
- final InputStream in1 = new ByteArrayInputStream(bytes1);
- final InputStream in2 = new ByteArrayInputStream(bytes2);
- final PropertySet ps1 = PropertySetFactory.create(in1);
- final PropertySet ps2 = PropertySetFactory.create(in2);
-
- /* Compare the property set stream with the corresponding one
- * from the origin file and check whether they are equal. */
- assertEquals("Equality for file " + f.getName(), ps1, ps2);
- }
- }
- catch (Exception ex)
+ /* Read the property set streams from the POI filesystem just
+ * created. */
+ final POIFile[] psf2 = Util.readPropertySets(copy);
+ for (int i = 0; i < psf2.length; i++)
{
- handle(ex);
+ final byte[] bytes1 = psf1[i].getBytes();
+ final byte[] bytes2 = psf2[i].getBytes();
+ final InputStream in1 = new ByteArrayInputStream(bytes1);
+ final InputStream in2 = new ByteArrayInputStream(bytes2);
+ final PropertySet ps1 = PropertySetFactory.create(in1);
+ final PropertySet ps2 = PropertySetFactory.create(in2);
+
+ /* Compare the property set stream with the corresponding one
+ * from the origin file and check whether they are equal. */
+ assertEquals("Equality for file " + f.getName(), ps1, ps2);
}
}
@@ -746,51 +722,46 @@ public class TestWrite extends TestCase
/**
* Tests writing and reading back a proper dictionary.
+ * @throws IOException
+ * @throws HPSFException
*/
- public void testDictionary()
+ public void testDictionary() throws IOException, HPSFException
{
- try
- {
- final File copy = TempFile.createTempFile("Test-HPSF", "ole2");
- copy.deleteOnExit();
+ final File copy = TempFile.createTempFile("Test-HPSF", "ole2");
+ copy.deleteOnExit();
- /* Write: */
- final OutputStream out = new FileOutputStream(copy);
- final POIFSFileSystem poiFs = new POIFSFileSystem();
- final MutablePropertySet ps1 = new MutablePropertySet();
- final MutableSection s = (MutableSection) ps1.getSections().get(0);
- final Map m = new HashMap(3, 1.0f);
- m.put(Long.valueOf(1), "String 1");
- m.put(Long.valueOf(2), "String 2");
- m.put(Long.valueOf(3), "String 3");
- s.setDictionary(m);
- s.setFormatID(SectionIDMap.DOCUMENT_SUMMARY_INFORMATION_ID[0]);
- int codepage = CodePageUtil.CP_UNICODE;
- s.setProperty(PropertyIDMap.PID_CODEPAGE, Variant.VT_I2,
- Integer.valueOf(codepage));
- poiFs.createDocument(ps1.toInputStream(), "Test");
- poiFs.writeFilesystem(out);
- out.close();
+ /* Write: */
+ final OutputStream out = new FileOutputStream(copy);
+ final POIFSFileSystem poiFs = new POIFSFileSystem();
+ final MutablePropertySet ps1 = new MutablePropertySet();
+ final MutableSection s = (MutableSection) ps1.getSections().get(0);
+ final Map m = new HashMap(3, 1.0f);
+ m.put(Long.valueOf(1), "String 1");
+ m.put(Long.valueOf(2), "String 2");
+ m.put(Long.valueOf(3), "String 3");
+ s.setDictionary(m);
+ s.setFormatID(SectionIDMap.DOCUMENT_SUMMARY_INFORMATION_ID[0]);
+ int codepage = CodePageUtil.CP_UNICODE;
+ s.setProperty(PropertyIDMap.PID_CODEPAGE, Variant.VT_I2,
+ Integer.valueOf(codepage));
+ poiFs.createDocument(ps1.toInputStream(), "Test");
+ poiFs.writeFilesystem(out);
+ out.close();
- /* Read back: */
- final POIFile[] psf = Util.readPropertySets(copy);
- Assert.assertEquals(1, psf.length);
- final byte[] bytes = psf[0].getBytes();
- final InputStream in = new ByteArrayInputStream(bytes);
- final PropertySet ps2 = PropertySetFactory.create(in);
+ /* Read back: */
+ final POIFile[] psf = Util.readPropertySets(copy);
+ Assert.assertEquals(1, psf.length);
+ final byte[] bytes = psf[0].getBytes();
+ final InputStream in = new ByteArrayInputStream(bytes);
+ final PropertySet ps2 = PropertySetFactory.create(in);
- /* Check if the result is a DocumentSummaryInformation stream, as
- * specified. */
- assertTrue(ps2.isDocumentSummaryInformation());
+ /* Check if the result is a DocumentSummaryInformation stream, as
+ * specified. */
+ assertTrue(ps2.isDocumentSummaryInformation());
- /* Compare the property set stream with the corresponding one
- * from the origin file and check whether they are equal. */
- assertEquals(ps1, ps2);
- }
- catch (Exception ex)
- {
- handle(ex);
- }
+ /* Compare the property set stream with the corresponding one
+ * from the origin file and check whether they are equal. */
+ assertEquals(ps1, ps2);
}
@@ -798,8 +769,10 @@ public class TestWrite extends TestCase
/**
* Tests writing and reading back a proper dictionary with an invalid
* codepage. (HPSF writes Unicode dictionaries only.)
+ * @throws IOException
+ * @throws HPSFException
*/
- public void testDictionaryWithInvalidCodepage()
+ public void testDictionaryWithInvalidCodepage() throws IOException, HPSFException
{
try
{
@@ -829,44 +802,6 @@ public class TestWrite extends TestCase
{
assertTrue(true);
}
- catch (Exception ex)
- {
- handle(ex);
- }
- }
-
-
-
- /**
- * Handles unexpected exceptions in testcases.
- *
- * @param ex The exception that has been thrown.
- */
- private void handle(final Exception ex)
- {
- final StringWriter sw = new StringWriter();
- final PrintWriter pw = new PrintWriter(sw);
- Throwable t = ex;
- while (t != null)
- {
- t.printStackTrace(pw);
- if (t instanceof HPSFRuntimeException)
- t = ((HPSFRuntimeException) t).getReason();
- else
- t = null;
- if (t != null)
- pw.println("Caused by:");
- }
- pw.close();
- try
- {
- sw.close();
- }
- catch (IOException ex2)
- {
- ex.printStackTrace();
- }
- fail(sw.toString());
}
diff --git a/src/testcases/org/apache/poi/hpsf/basic/TestWriteWellKnown.java b/src/testcases/org/apache/poi/hpsf/basic/TestWriteWellKnown.java
index 54ebe48b75..e74eedf8a7 100644
--- a/src/testcases/org/apache/poi/hpsf/basic/TestWriteWellKnown.java
+++ b/src/testcases/org/apache/poi/hpsf/basic/TestWriteWellKnown.java
@@ -32,26 +32,13 @@ import java.util.Map;
import junit.framework.TestCase;
-import org.apache.poi.hpsf.CustomProperties;
-import org.apache.poi.hpsf.CustomProperty;
-import org.apache.poi.hpsf.DocumentSummaryInformation;
-import org.apache.poi.hpsf.MarkUnsupportedException;
-import org.apache.poi.hpsf.MutableProperty;
-import org.apache.poi.hpsf.MutableSection;
-import org.apache.poi.hpsf.NoPropertySetStreamException;
-import org.apache.poi.hpsf.PropertySet;
-import org.apache.poi.hpsf.PropertySetFactory;
-import org.apache.poi.hpsf.SummaryInformation;
-import org.apache.poi.hpsf.UnexpectedPropertySetTypeException;
-import org.apache.poi.hpsf.Variant;
-import org.apache.poi.hpsf.VariantSupport;
-import org.apache.poi.hpsf.WritingNotSupportedException;
+import org.apache.poi.POIDataSamples;
+import org.apache.poi.hpsf.*;
import org.apache.poi.hpsf.wellknown.SectionIDMap;
import org.apache.poi.poifs.filesystem.DirectoryEntry;
import org.apache.poi.poifs.filesystem.DocumentEntry;
import org.apache.poi.poifs.filesystem.DocumentInputStream;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
-import org.apache.poi.POIDataSamples;
import org.apache.poi.util.TempFile;
/**
@@ -69,6 +56,7 @@ public class TestWriteWellKnown extends TestCase {
/**
* @see TestCase#setUp()
*/
+ @Override
public void setUp()
{
VariantSupport.setLogUnsupportedTypes(false);
@@ -92,58 +80,65 @@ public class TestWriteWellKnown extends TestCase {
final File dataDir = _samples.getFile("");
final File[] docs = dataDir.listFiles(new FileFilter()
{
+ @Override
public boolean accept(final File file)
{
- return file.isFile() && file.getName().startsWith("Test");
- }});
+ return file.isFile() && file.getName().startsWith("Test") && TestReadAllFiles.checkExclude(file);
+ }
+ });
+
for (int i = 0; i < docs.length; i++)
{
- final File doc = docs[i];
-
- /* Read a test document doc into a POI filesystem. */
- final POIFSFileSystem poifs = new POIFSFileSystem(new FileInputStream(doc));
- final DirectoryEntry dir = poifs.getRoot();
- DocumentEntry dsiEntry = null;
- try
- {
- dsiEntry = (DocumentEntry) dir.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME);
- }
- catch (FileNotFoundException ex)
- {
+ try {
+ final File doc = docs[i];
+
+ /* Read a test document doc into a POI filesystem. */
+ final POIFSFileSystem poifs = new POIFSFileSystem(new FileInputStream(doc));
+ final DirectoryEntry dir = poifs.getRoot();
+ DocumentEntry dsiEntry = null;
+ try
+ {
+ dsiEntry = (DocumentEntry) dir.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME);
+ }
+ catch (FileNotFoundException ex)
+ {
+ /*
+ * A missing document summary information stream is not an error
+ * and therefore silently ignored here.
+ */
+ }
+
/*
- * A missing document summary information stream is not an error
- * and therefore silently ignored here.
+ * If there is a document summry information stream, read it from
+ * the POI filesystem.
*/
- }
-
- /*
- * If there is a document summry information stream, read it from
- * the POI filesystem.
- */
- if (dsiEntry != null)
- {
- final DocumentInputStream dis = new DocumentInputStream(dsiEntry);
- final PropertySet ps = new PropertySet(dis);
- final DocumentSummaryInformation dsi = new DocumentSummaryInformation(ps);
-
- /* Execute the get... methods. */
- dsi.getByteCount();
- dsi.getByteOrder();
- dsi.getCategory();
- dsi.getCompany();
- dsi.getCustomProperties();
- // FIXME dsi.getDocparts();
- // FIXME dsi.getHeadingPair();
- dsi.getHiddenCount();
- dsi.getLineCount();
- dsi.getLinksDirty();
- dsi.getManager();
- dsi.getMMClipCount();
- dsi.getNoteCount();
- dsi.getParCount();
- dsi.getPresentationFormat();
- dsi.getScale();
- dsi.getSlideCount();
+ if (dsiEntry != null)
+ {
+ final DocumentInputStream dis = new DocumentInputStream(dsiEntry);
+ final PropertySet ps = new PropertySet(dis);
+ final DocumentSummaryInformation dsi = new DocumentSummaryInformation(ps);
+
+ /* Execute the get... methods. */
+ dsi.getByteCount();
+ dsi.getByteOrder();
+ dsi.getCategory();
+ dsi.getCompany();
+ dsi.getCustomProperties();
+ // FIXME dsi.getDocparts();
+ // FIXME dsi.getHeadingPair();
+ dsi.getHiddenCount();
+ dsi.getLineCount();
+ dsi.getLinksDirty();
+ dsi.getManager();
+ dsi.getMMClipCount();
+ dsi.getNoteCount();
+ dsi.getParCount();
+ dsi.getPresentationFormat();
+ dsi.getScale();
+ dsi.getSlideCount();
+ }
+ } catch (Exception e) {
+ throw new IOException("While handling file " + docs[i], e);
}
}
}
@@ -587,6 +582,7 @@ public class TestWriteWellKnown extends TestCase {
{
final AllDataFilesTester.TestTask task = new AllDataFilesTester.TestTask()
{
+ @Override
public void runTest(final File file) throws FileNotFoundException,
IOException, NoPropertySetStreamException,
MarkUnsupportedException,
@@ -638,15 +634,20 @@ public class TestWriteWellKnown extends TestCase {
final File dataDir = _samples.getFile("");
final File[] docs = dataDir.listFiles(new FileFilter()
{
+ @Override
public boolean accept(final File file)
{
- return file.isFile() && file.getName().startsWith("Test");
+ return file.isFile() && file.getName().startsWith("Test") && TestReadAllFiles.checkExclude(file);
}
});
for (int i = 0; i < docs.length; i++)
{
- task.runTest(docs[i]);
+ try {
+ task.runTest(docs[i]);
+ } catch (Exception e) {
+ throw new IOException("While handling file " + docs[i], e);
+ }
}
}
--
2.39.5