]> source.dussan.org Git - poi.git/commitdiff
Test case for bug 21775
authorRainer Klute <klute@apache.org>
Sat, 26 Jul 2003 21:25:14 +0000 (21:25 +0000)
committerRainer Klute <klute@apache.org>
Sat, 26 Jul 2003 21:25:14 +0000 (21:25 +0000)
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353252 13f79535-47bb-0310-9956-ffa450edef68

src/testcases/org/apache/poi/hpsf/basic/TestEmptyProperties.java [new file with mode: 0644]
src/testcases/org/apache/poi/hpsf/data/TestCorel.shw [new file with mode: 0755]

diff --git a/src/testcases/org/apache/poi/hpsf/basic/TestEmptyProperties.java b/src/testcases/org/apache/poi/hpsf/basic/TestEmptyProperties.java
new file mode 100644 (file)
index 0000000..fbe9fbf
--- /dev/null
@@ -0,0 +1,189 @@
+package org.apache.poi.hpsf.basic;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.poi.hpsf.HPSFException;
+import org.apache.poi.hpsf.MarkUnsupportedException;
+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;
+
+/**
+ * <p>Test case for OLE2 files with empty properties. An empty property's type
+ * is {@link Variant.VT_EMPTY}.</p>
+ *
+ * @author Rainer Klute <a
+ * href="mailto:klute@rainer-klute.de">&lt;klute@rainer-klute.de&gt;</a>
+ * @since 2003-07-25
+ * @version $Id$
+ */
+public class TestEmptyProperties extends TestCase
+{
+
+    /**
+     * <p>This test file's summary information stream contains some empty
+     * properties.</p>
+     */
+    static final String POI_FS = "TestCorel.shw";
+
+    static final String[] POI_FILES = new String[]
+        {
+            "PerfectOffice_MAIN",
+            "\005SummaryInformation",
+            "Main"
+        };
+
+    POIFile[] poiFiles;
+
+
+
+    /**
+     * <p>Constructor</p>
+     * 
+     * @param name The name of the test case
+     */
+    public TestEmptyProperties(final String name)
+    {
+        super(name);
+    }
+
+
+
+    /**
+     * <p>Read a the test file from the "data" directory.</p>
+     *
+     * @exception FileNotFoundException if the file containing the test data
+     * does not exist
+     * @exception IOException if an I/O exception occurs
+     */
+    public void setUp() throws FileNotFoundException, IOException
+    {
+        final File dataDir =
+            new File(System.getProperty("HPSF.testdata.path"));
+        final File data = new File(dataDir, POI_FS);
+
+        poiFiles = Util.readPOIFiles(data);
+    }
+
+
+
+    /**
+     * <p>Checks the names of the files in the POI filesystem. They
+     * are expected to be in a certain order.</p>
+     * 
+     * @exception IOException if an I/O exception occurs
+     */
+    public void testReadFiles() throws IOException
+    {
+        String[] expected = POI_FILES;
+        for (int i = 0; i < expected.length; i++)
+            Assert.assertEquals(poiFiles[i].getName(), expected[i]);
+    }
+
+
+
+    /**
+     * <p>Tests whether property sets can be created from the POI
+     * files in the POI file system. This test case expects the first
+     * file to be a {@link SummaryInformation}, the second file to be
+     * a {@link DocumentSummaryInformation} and the rest to be no
+     * property sets. In the latter cases a {@link
+     * NoPropertySetStreamException} will be thrown when trying to
+     * create a {@link PropertySet}.</p>
+     * 
+     * @exception IOException if an I/O exception occurs
+     */
+    public void testCreatePropertySets() throws IOException
+    { 
+        Class[] expected = new Class[]
+            {
+                NoPropertySetStreamException.class,
+                SummaryInformation.class,
+                NoPropertySetStreamException.class
+            };
+        for (int i = 0; i < expected.length; i++)
+        {
+            InputStream in = new ByteArrayInputStream(poiFiles[i].getBytes());
+            Object o;
+            try
+            {
+                o = PropertySetFactory.create(in);
+            }
+            catch (NoPropertySetStreamException ex)
+            {
+                o = ex;
+            }
+            catch (UnexpectedPropertySetTypeException ex)
+            {
+                o = ex;
+            }
+            catch (MarkUnsupportedException ex)
+            {
+                o = ex;
+            }
+            in.close();
+            Assert.assertEquals(o.getClass(), expected[i]);
+        }
+    }
+
+
+
+    /**
+     * <p>Tests the {@link PropertySet} methods. The test file has two
+     * property sets: the first one is a {@link SummaryInformation},
+     * the second one is a {@link DocumentSummaryInformation}.</p>
+     * 
+     * @exception IOException if an I/O exception occurs
+     * @exception HPSFException if an HPSF operation fails
+     */
+    public void testPropertySetMethods() throws IOException, HPSFException
+    {
+        byte[] b = poiFiles[1].getBytes();
+        PropertySet ps =
+            PropertySetFactory.create(new ByteArrayInputStream(b));
+        SummaryInformation s = (SummaryInformation) ps;
+        assertNull(s.getTitle());
+        assertNull(s.getSubject());
+        assertNotNull(s.getAuthor());
+        assertNull(s.getKeywords());
+        assertNull(s.getComments());
+        assertNotNull(s.getTemplate());
+        assertNotNull(s.getLastAuthor());
+        assertNotNull(s.getRevNumber());
+        assertNull(s.getEditTime());
+        assertNull(s.getLastPrinted());
+        assertNull(s.getCreateDateTime());
+        assertNull(s.getLastSaveDateTime());
+        assertEquals(s.getPageCount(), 0);
+        assertEquals(s.getWordCount(), 0);
+        assertEquals(s.getCharCount(), 0);
+        assertNull(s.getThumbnail());
+        assertNull(s.getApplicationName());
+    }
+
+
+
+    /**
+     * <p>Runs the test cases stand-alone.</p>
+     * 
+     * @param args the command-line arguments (unused)
+     * 
+     * @exception Throwable if any exception or error occurs
+     */
+    public static void main(final String[] args) throws Throwable
+    {
+        System.setProperty("HPSF.testdata.path",
+                           "./src/testcases/org/apache/poi/hpsf/data");
+        junit.textui.TestRunner.run(TestBasic.class);
+    }
+
+}
diff --git a/src/testcases/org/apache/poi/hpsf/data/TestCorel.shw b/src/testcases/org/apache/poi/hpsf/data/TestCorel.shw
new file mode 100755 (executable)
index 0000000..e0af194
Binary files /dev/null and b/src/testcases/org/apache/poi/hpsf/data/TestCorel.shw differ