]> source.dussan.org Git - poi.git/commitdiff
Refactor the HMEF contents checks to use a superclass, and stub out the Rtf Message...
authorNick Burch <nick@apache.org>
Sat, 5 Mar 2011 15:37:24 +0000 (15:37 +0000)
committerNick Burch <nick@apache.org>
Sat, 5 Mar 2011 15:37:24 +0000 (15:37 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1078304 13f79535-47bb-0310-9956-ffa450edef68

src/scratchpad/testcases/org/apache/poi/hmef/HMEFTest.java [new file with mode: 0644]
src/scratchpad/testcases/org/apache/poi/hmef/TestAttachments.java
src/scratchpad/testcases/org/apache/poi/hmef/TestCompressedRTF.java
src/scratchpad/testcases/org/apache/poi/hmef/TestHMEFMessage.java

diff --git a/src/scratchpad/testcases/org/apache/poi/hmef/HMEFTest.java b/src/scratchpad/testcases/org/apache/poi/hmef/HMEFTest.java
new file mode 100644 (file)
index 0000000..8c68b68
--- /dev/null
@@ -0,0 +1,46 @@
+/* ====================================================================
+   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.poi.hmef;
+
+import java.io.IOException;
+
+import junit.framework.TestCase;
+
+import org.apache.poi.POIDataSamples;
+import org.apache.poi.util.IOUtils;
+
+public abstract class HMEFTest extends TestCase {
+   protected static final POIDataSamples _samples = POIDataSamples.getHMEFInstance();
+   
+   protected void assertContents(String filename, Attachment attachment) 
+         throws IOException {
+      assertEquals(filename, attachment.getLongFilename());
+      assertContents(filename, attachment.getContents());
+   }
+   protected void assertContents(String filename, byte[] actual) 
+         throws IOException {
+      byte[] expected = IOUtils.toByteArray(
+            _samples.openResourceAsStream("quick-contents/" + filename)
+      );
+      
+      assertEquals(expected.length, actual.length);
+      for(int i=0; i<expected.length; i++) {
+         assertEquals("Byte " + i + " wrong", expected[i], actual[i]);
+      }
+   }
+}
index 79582b1f089c6a74ad41b07bc5502049f1c04a1c..18ccde4df1b7a5af81c41b449243a79bc43c1da9 100644 (file)
 
 package org.apache.poi.hmef;
 
-import java.io.IOException;
 import java.text.DateFormat;
 import java.util.List;
 import java.util.Locale;
 import java.util.TimeZone;
 
-import junit.framework.TestCase;
-
-import org.apache.poi.POIDataSamples;
-import org.apache.poi.util.IOUtils;
-
-public final class TestAttachments extends TestCase {
-   private static final POIDataSamples _samples = POIDataSamples.getHMEFInstance();
+public final class TestAttachments extends HMEFTest {
    private HMEFMessage quick;
    
    @Override
@@ -121,19 +114,4 @@ public final class TestAttachments extends TestCase {
       assertContents("quick.txt", attachments.get(3));
       assertContents("quick.xml", attachments.get(4));
    }
-   
-   private void assertContents(String filename, Attachment attachment) 
-         throws IOException {
-      assertEquals(filename, attachment.getLongFilename());
-      
-      byte[] expected = IOUtils.toByteArray(
-            _samples.openResourceAsStream("quick-contents/" + filename)
-      );
-      byte[] actual = attachment.getContents();
-      
-      assertEquals(expected.length, actual.length);
-      for(int i=0; i<expected.length; i++) {
-         assertEquals("Byte " + i + " wrong", expected[i], actual[i]);
-      }
-   }
 }
index 36991c43cfdf5f3a027f1738aedb5e03621a5c25..0a44a9691b11e9b52d8f622db82fff87318aff0b 100644 (file)
@@ -25,6 +25,7 @@ import org.apache.poi.POIDataSamples;
 import org.apache.poi.hmef.attribute.MAPIAttribute;
 import org.apache.poi.hmef.attribute.MAPIRtfAttribute;
 import org.apache.poi.hsmf.datatypes.MAPIProperty;
+import org.apache.poi.util.IOUtils;
 import org.apache.poi.util.LittleEndian;
 import org.apache.poi.util.StringUtil;
 
@@ -145,13 +146,30 @@ public final class TestCompressedRTF extends TestCase {
 
     /**
      * Check that we can correctly decode the whole file
-     * @throws Exception
+     * TODO Fix what looks like a padding issue
      */
-    public void testFull() throws Exception {
+    public void DISABLEDtestFull() throws Exception {
        HMEFMessage msg = new HMEFMessage(
              _samples.openResourceAsStream("quick-winmail.dat")
        );
        
-       // TODO
+       MAPIAttribute attr = msg.getMessageMAPIAttribute(MAPIProperty.RTF_COMPRESSED);
+       assertNotNull(attr);
+       MAPIRtfAttribute rtfAttr = (MAPIRtfAttribute)attr;
+       
+       byte[] expected = IOUtils.toByteArray(
+             _samples.openResourceAsStream("quick-contents/message.rtf")
+       );
+       byte[] decomp = rtfAttr.getData();
+       
+       // By byte
+       assertEquals(expected.length, decomp.length);
+       assertEquals(expected, decomp);
+       
+       // By String
+       String expString = new String(expected, "ASCII");
+       String decompStr = rtfAttr.getDataString();
+       assertEquals(expString.length(), decompStr.length());
+       assertEquals(expString, decompStr);
     }
 }
index 449b2722e061c5e550c8186c35d9659781e3c76c..9e1bfa4d44d5515a7d76fbd6e13e1887e01b4663 100644 (file)
 
 package org.apache.poi.hmef;
 
-import junit.framework.TestCase;
-
-import org.apache.poi.POIDataSamples;
+import org.apache.poi.hmef.attribute.MAPIRtfAttribute;
 import org.apache.poi.hmef.attribute.TNEFProperty;
+import org.apache.poi.hsmf.datatypes.MAPIProperty;
 import org.apache.poi.util.LittleEndian;
 
-public final class TestHMEFMessage extends TestCase {
-    private static final POIDataSamples _samples = POIDataSamples.getHMEFInstance();
-
+public final class TestHMEFMessage extends HMEFTest {
        public void testOpen() throws Exception {
                HMEFMessage msg = new HMEFMessage(
                 _samples.openResourceAsStream("quick-winmail.dat")
@@ -102,4 +99,26 @@ public final class TestHMEFMessage extends TestCase {
       assertEquals("This is a test message", msg.getSubject());
       assertEquals("{\\rtf1", msg.getBody().substring(0, 6));
    }
+
+   /**
+    * Checks that the compressed RTF message contents
+    *  can be correctly extracted
+    * TODO Fix what looks like a padding issue
+    */
+   public void DISABLEDtestMessageContents() throws Exception {
+      HMEFMessage msg = new HMEFMessage(
+            _samples.openResourceAsStream("quick-winmail.dat")
+      );
+      
+      // Firstly by byte
+      MAPIRtfAttribute rtf = (MAPIRtfAttribute)
+         msg.getMessageMAPIAttribute(MAPIProperty.RTF_COMPRESSED);
+      assertContents("message.rtf", rtf.getData());
+      
+      // Then by String
+      String contents = msg.getBody();
+      // It's all low bytes
+      byte[] contentsBytes = contents.getBytes("ASCII");
+      assertContents("message.rtf", contentsBytes);
+   }
 }