]> source.dussan.org Git - poi.git/commitdiff
More unit tests for the HSMF fixed sized property values (a few still remain to be...
authorNick Burch <nick@apache.org>
Wed, 26 Jun 2013 17:45:57 +0000 (17:45 +0000)
committerNick Burch <nick@apache.org>
Wed, 26 Jun 2013 17:45:57 +0000 (17:45 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1497023 13f79535-47bb-0310-9956-ffa450edef68

src/scratchpad/testcases/org/apache/poi/hsmf/TestFixedSizedProperties.java

index 1809b6f5741e34cd3acc1aae41e1302a329398d4..cf468785726098c2f886fd0b7f25c5439d25d25f 100644 (file)
@@ -23,10 +23,18 @@ import java.io.IOException;
 import java.io.PrintStream;
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
 import java.util.TimeZone;
 
 import org.apache.poi.POIDataSamples;
 import org.apache.poi.POITestCase;
+import org.apache.poi.hsmf.datatypes.ChunkBasedPropertyValue;
+import org.apache.poi.hsmf.datatypes.MAPIProperty;
+import org.apache.poi.hsmf.datatypes.PropertyValue;
+import org.apache.poi.hsmf.datatypes.PropertyValue.LongPropertyValue;
+import org.apache.poi.hsmf.datatypes.PropertyValue.TimePropertyValue;
 import org.apache.poi.hsmf.dev.HSMFDump;
 import org.apache.poi.hsmf.extractor.OutlookTextExtactor;
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
@@ -41,7 +49,8 @@ public final class TestFixedSizedProperties extends POITestCase {
    private MAPIMessage mapiMessageSucceeds;
    private MAPIMessage mapiMessageFails;
    private POIFSFileSystem fsMessageSucceeds;
-   private POIFSFileSystem fsMessageFails;     
+   private POIFSFileSystem fsMessageFails;
+   private SimpleDateFormat messageDateFormat;
 
    /**
     * Initialize this test, load up the messages.
@@ -54,6 +63,41 @@ public final class TestFixedSizedProperties extends POITestCase {
                 samples.openResourceAsStream(messageFails));           
       this.fsMessageSucceeds = new POIFSFileSystem(new FileInputStream(samples.getFile(messageSucceeds)));
       this.fsMessageFails = new POIFSFileSystem(new FileInputStream(samples.getFile(messageFails)));
+      
+      messageDateFormat = new SimpleDateFormat("E, d MMM yyyy HH:mm:ss");
+      messageDateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
+   }
+   
+   /**
+    * Check we can find a sensible number of properties on a few
+    * of our test files
+    */
+   public void testPropertiesFound() throws Exception {
+       Map<MAPIProperty,List<PropertyValue>> props;
+       
+       props = mapiMessageSucceeds.getMainChunks().getProperties();
+       assertTrue(props.toString(), props.size() > 10);
+       
+       props = mapiMessageFails.getMainChunks().getProperties();
+       assertTrue(props.toString(), props.size() > 10);
+   }
+   
+   /**
+    * Check we find properties of a variety of different types
+    */
+   public void testPropertyValueTypes() throws Exception {
+       Map<MAPIProperty,List<PropertyValue>> props =
+               mapiMessageSucceeds.getMainChunks().getProperties();
+       HashSet<Class<? extends PropertyValue>> seenTypes = new HashSet<Class<? extends PropertyValue>>();
+       for (List<PropertyValue> pvs : props.values()) {
+           for (PropertyValue pv : pvs) {
+               seenTypes.add(pv.getClass());
+           }
+       }
+       assertTrue(seenTypes.toString(), seenTypes.size() > 3);
+       assertTrue(seenTypes.toString(), seenTypes.contains(LongPropertyValue.class));
+       assertTrue(seenTypes.toString(), seenTypes.contains(TimePropertyValue.class));
+       assertTrue(seenTypes.toString(), seenTypes.contains(ChunkBasedPropertyValue.class));
    }
 
    /**
@@ -99,13 +143,25 @@ public final class TestFixedSizedProperties extends POITestCase {
    }
 
    /**
-    * TODO Work out why the Fri 22nd vs Monday 25th problem is occurring and fix
+    * Will be based on the ClientSubmit time
     */
-   public void DISABLEDtestClientSubmitTime() throws Exception {
-       SimpleDateFormat f = new SimpleDateFormat("E, d MMM yyyy HH:mm:ss");
-       f.setTimeZone(TimeZone.getTimeZone("GMT"));
-
+   public void testClientSubmitTime() throws Exception {
+       // Check via the message date
        Calendar clientSubmitTime = mapiMessageSucceeds.getMessageDate();
-       assertEquals("Fri, 22 Jun 2012 18:32:54", f.format(clientSubmitTime.getTime()));
+       assertEquals(
+               "Fri, 22 Jun 2012 18:32:54", 
+               messageDateFormat.format(clientSubmitTime.getTime()));
+       
+       // Fetch the property value directly
+       Map<MAPIProperty,List<PropertyValue>> props =
+               mapiMessageSucceeds.getMainChunks().getProperties();
+       List<PropertyValue> pv = props.get(MAPIProperty.CLIENT_SUBMIT_TIME); 
+       assertNotNull(pv);
+       assertEquals(1, pv.size());
+       
+       clientSubmitTime = (Calendar)pv.get(0).getValue();
+       assertEquals(
+               "Fri, 22 Jun 2012 18:32:54", 
+               messageDateFormat.format(clientSubmitTime.getTime()));
    }
 }