You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ni...@apache.org on 2011/05/15 22:57:56 UTC

svn commit: r1103540 - in /tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser: odf/ odf/ODFParserTest.java odf/OpenOfficeParserTest.java opendocument/

Author: nick
Date: Sun May 15 20:57:55 2011
New Revision: 1103540

URL: http://svn.apache.org/viewvc?rev=1103540&view=rev
Log:
TIKA-659 Merge the ODF parser tests, and put them in the new package

Added:
    tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/odf/
      - copied from r1103332, tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/opendocument/
Removed:
    tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/odf/OpenOfficeParserTest.java
    tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/opendocument/
Modified:
    tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/odf/ODFParserTest.java

Modified: tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/odf/ODFParserTest.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/odf/ODFParserTest.java?rev=1103540&r1=1103332&r2=1103540&view=diff
==============================================================================
--- tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/odf/ODFParserTest.java (original)
+++ tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/odf/ODFParserTest.java Sun May 15 20:57:55 2011
@@ -14,40 +14,197 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.tika.parser.opendocument;
+package org.apache.tika.parser.odf;
 
 import java.io.InputStream;
 
 import junit.framework.TestCase;
 
 import org.apache.tika.metadata.Metadata;
+import org.apache.tika.parser.ParseContext;
+import org.apache.tika.parser.Parser;
+import org.apache.tika.parser.opendocument.OpenOfficeParser;
 import org.apache.tika.sax.BodyContentHandler;
 import org.xml.sax.ContentHandler;
 
-import org.apache.tika.parser.odf.OpenDocumentParser;
-
 public class ODFParserTest extends TestCase {
+    /**
+     * For now, allow us to run some tests against both
+     *  the old and the new parser
+     */
+    private Parser[] getParsers() {
+       return new Parser[] {
+             new OpenDocumentParser(),
+             new OpenOfficeParser()
+       };
+    }
 
-    public void testXMLParser() throws Exception {
-        InputStream input = ODFParserTest.class.getResourceAsStream(
+    public void testOO3() throws Exception {
+       for (Parser parser : getParsers()) {
+          InputStream input = ODFParserTest.class.getResourceAsStream(
                 "/test-documents/testODFwithOOo3.odt");
-        try {
-            Metadata metadata = new Metadata();
-            ContentHandler handler = new BodyContentHandler();
-            new OpenDocumentParser().parse(input, handler, metadata);
-
-            assertEquals(
-                    "application/vnd.oasis.opendocument.text",
-                    metadata.get(Metadata.CONTENT_TYPE));
-            
-            String content = handler.toString();
-            assertTrue(content.contains("Tika is part of the Lucene project."));
-            assertTrue(content.contains("Solr"));
-            assertTrue(content.contains("one embedded"));
-            assertTrue(content.contains("Rectangle Title"));
-            assertTrue(content.contains("a blue background and dark border"));        } finally {
-            input.close();
-        }
+          try {
+             Metadata metadata = new Metadata();
+             ContentHandler handler = new BodyContentHandler();
+             parser.parse(input, handler, metadata, new ParseContext());
+
+             assertEquals(
+                   "application/vnd.oasis.opendocument.text",
+                   metadata.get(Metadata.CONTENT_TYPE));
+
+             String content = handler.toString();
+             assertTrue(content.contains("Tika is part of the Lucene project."));
+             assertTrue(content.contains("Solr"));
+             assertTrue(content.contains("one embedded"));
+             assertTrue(content.contains("Rectangle Title"));
+             assertTrue(content.contains("a blue background and dark border"));        
+          } finally {
+             input.close();
+          }
+       }
     }
 
+    public void testOO2() throws Exception {
+       for (Parser parser : getParsers()) {
+          InputStream input = ODFParserTest.class.getResourceAsStream(
+                 "/test-documents/testOpenOffice2.odt");
+          try {
+             Metadata metadata = new Metadata();
+             ContentHandler handler = new BodyContentHandler();
+             parser.parse(input, handler, metadata, new ParseContext());
+
+             assertEquals(
+                   "application/vnd.oasis.opendocument.text",
+                   metadata.get(Metadata.CONTENT_TYPE));
+             assertEquals("2007-09-14T11:07:10", metadata.get(Metadata.DATE));
+             assertEquals("2007-09-14T11:06:08", metadata.get(Metadata.CREATION_DATE));
+             assertEquals("en-US", metadata.get(Metadata.LANGUAGE));
+             assertEquals("PT1M7S", metadata.get(Metadata.EDIT_TIME));
+             assertEquals(
+                   "NeoOffice/2.2$Unix OpenOffice.org_project/680m18$Build-9161",
+                   metadata.get("generator"));
+             assertEquals("0", metadata.get("nbTab"));
+             assertEquals("0", metadata.get("nbObject"));
+             assertEquals("0", metadata.get("nbImg"));
+             assertEquals("1", metadata.get("nbPage"));
+             assertEquals("1", metadata.get("nbPara"));
+             assertEquals("14", metadata.get("nbWord"));
+             assertEquals("78", metadata.get("nbCharacter"));
+
+             // Custom metadata tags present but without values
+             assertEquals(null, metadata.get("custom:Info 1"));
+             assertEquals(null, metadata.get("custom:Info 2"));
+             assertEquals(null, metadata.get("custom:Info 3"));
+             assertEquals(null, metadata.get("custom:Info 4"));
+
+             String content = handler.toString();
+             assertTrue(content.contains(
+                   "This is a sample Open Office document,"
+                   + " written in NeoOffice 2.2.1 for the Mac."));
+          } finally {
+             input.close();
+          }
+       }
+   }
+
+   /**
+    * Similar to {@link #testXMLParser()}, but using a different
+    *  OO2 file with different metadata in it
+    */
+   public void testOO2Metadata() throws Exception {
+      InputStream input = ODFParserTest.class.getResourceAsStream(
+            "/test-documents/testOpenOffice2.odf");
+      try {
+           Metadata metadata = new Metadata();
+           ContentHandler handler = new BodyContentHandler();
+           new OpenDocumentParser().parse(input, handler, metadata);
+  
+           assertEquals(
+                   "application/vnd.oasis.opendocument.formula",
+                   metadata.get(Metadata.CONTENT_TYPE));
+           assertEquals(null, metadata.get(Metadata.DATE));
+           assertEquals("2006-01-27T11:55:22", metadata.get(Metadata.CREATION_DATE));
+           assertEquals("The quick brown fox jumps over the lazy dog", metadata.get(Metadata.TITLE));
+           assertEquals("Gym class featuring a brown fox and lazy dog", metadata.get(Metadata.SUBJECT));
+           assertEquals("PT0S", metadata.get(Metadata.EDIT_TIME));
+           assertEquals("1", metadata.get("editing-cycles"));
+           assertEquals(
+                   "OpenOffice.org/2.2$Win32 OpenOffice.org_project/680m14$Build-9134",
+                   metadata.get("generator"));
+           assertEquals("Pangram, fox, dog", metadata.get(Metadata.KEYWORDS));
+           
+           // User defined metadata
+           assertEquals("Text 1", metadata.get("custom:Info 1"));
+           assertEquals("2", metadata.get("custom:Info 2"));
+           assertEquals("false", metadata.get("custom:Info 3"));
+           assertEquals("true", metadata.get("custom:Info 4"));
+           
+           // No statistics present
+           assertEquals(null, metadata.get("nbTab"));
+           assertEquals(null, metadata.get("nbObject"));
+           assertEquals(null, metadata.get("nbImg"));
+           assertEquals(null, metadata.get("nbPage"));
+           assertEquals(null, metadata.get("nbPara"));
+           assertEquals(null, metadata.get("nbWord"));
+           assertEquals(null, metadata.get("nbCharacter"));
+  
+           // Note - contents of maths files not currently supported
+           String content = handler.toString();
+           assertEquals("", content);
+      } finally {
+          input.close();
+      }
+   }
+
+   /**
+    * Similar to {@link #testXMLParser()}, but using an OO3 file
+    */
+   public void testOO3Metadata() throws Exception {
+      InputStream input = ODFParserTest.class.getResourceAsStream(
+            "/test-documents/testODFwithOOo3.odt");
+      try {
+           Metadata metadata = new Metadata();
+           ContentHandler handler = new BodyContentHandler();
+           new OpenDocumentParser().parse(input, handler, metadata);
+  
+           assertEquals(
+                   "application/vnd.oasis.opendocument.text",
+                   metadata.get(Metadata.CONTENT_TYPE));
+           assertEquals("2009-10-05T21:22:38", metadata.get(Metadata.DATE));
+           assertEquals("2009-10-05T19:04:01", metadata.get(Metadata.CREATION_DATE));
+           assertEquals("Apache Tika", metadata.get(Metadata.TITLE));
+           assertEquals("Test document", metadata.get(Metadata.SUBJECT));
+           assertEquals("A rather complex document", metadata.get(Metadata.DESCRIPTION));
+           assertEquals("Bart Hanssens", metadata.get(Metadata.CREATOR));
+           assertEquals("Bart Hanssens", metadata.get("initial-creator"));
+           assertEquals("2", metadata.get("editing-cycles"));
+           assertEquals("PT02H03M24S", metadata.get(Metadata.EDIT_TIME));
+           assertEquals(
+                   "OpenOffice.org/3.1$Unix OpenOffice.org_project/310m19$Build-9420",
+                   metadata.get("generator"));
+           assertEquals("Apache, Lucene, Tika", metadata.get(Metadata.KEYWORDS));
+           
+           // User defined metadata
+           assertEquals("Bart Hanssens", metadata.get("custom:Editor"));
+           assertEquals(null, metadata.get("custom:Info 2"));
+           assertEquals(null, metadata.get("custom:Info 3"));
+           assertEquals(null, metadata.get("custom:Info 4"));
+           
+           // No statistics present
+           assertEquals("0", metadata.get("nbTab"));
+           assertEquals("2", metadata.get("nbObject"));
+           assertEquals("0", metadata.get("nbImg"));
+           assertEquals("2", metadata.get("nbPage"));
+           assertEquals("13", metadata.get("nbPara"));
+           assertEquals("54", metadata.get("nbWord"));
+           assertEquals("351", metadata.get("nbCharacter"));
+  
+           String content = handler.toString();
+           assertTrue(content.contains(
+                 "Apache Tika Tika is part of the Lucene project."
+           ));
+      } finally {
+          input.close();
+      }
+   }
 }
\ No newline at end of file