From d02dee4c6846f67588c86f4d8b78a9e1a276a916 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Fri, 27 May 2011 13:36:00 +0000 Subject: [PATCH] Add unit test from Stefan for bug #51172 - DOCX gif support git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1128301 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/xwpf/TestXWPFDocument.java | 26 ++++++++++++++++++ test-data/document/WithGIF.docx | Bin 0 -> 20875 bytes 2 files changed, 26 insertions(+) create mode 100644 test-data/document/WithGIF.docx diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/TestXWPFDocument.java b/src/ooxml/testcases/org/apache/poi/xwpf/TestXWPFDocument.java index ebdeea294b..b3f1ce34ad 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/TestXWPFDocument.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/TestXWPFDocument.java @@ -17,14 +17,19 @@ package org.apache.poi.xwpf; +import java.util.ArrayList; +import java.util.List; + import junit.framework.TestCase; +import org.apache.poi.POIXMLDocumentPart; import org.apache.poi.POIXMLProperties; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.openxml4j.opc.PackagePart; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; +import org.apache.poi.xwpf.usermodel.XWPFPictureData; import org.apache.poi.xwpf.usermodel.XWPFRelation; import org.apache.xmlbeans.XmlCursor; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP; @@ -194,4 +199,25 @@ public final class TestXWPFDocument extends TestCase { assertEquals(p3, doc.getBodyElements().get(0)); assertEquals(p3, doc.getParagraphs().get(0)); } + + public void testGIFSupport() throws Exception + { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("WithGIF.docx"); + ArrayList gifParts = doc.getPackage().getPartsByContentType(XWPFRelation.IMAGE_GIF.getContentType()); + assertEquals("Expected exactly one GIF part in package.",1,gifParts.size()); + PackagePart gifPart = gifParts.get(0); + + List relations = doc.getRelations(); + POIXMLDocumentPart gifDocPart = null; + for (POIXMLDocumentPart docPart : relations) + { + if (gifPart == docPart.getPackagePart()) + { + assertNull("More than one POIXMLDocumentPart for GIF PackagePart.",gifDocPart); + gifDocPart = docPart; + } + } + assertNotNull("GIF part not related to document.xml PackagePart",gifDocPart); + assertTrue("XWPFRelation for GIF image was not recognized properly, as the POIXMLDocumentPart created was of a wrong type.",XWPFRelation.IMAGE_GIF.getRelationClass().isInstance(gifDocPart)); + } } diff --git a/test-data/document/WithGIF.docx b/test-data/document/WithGIF.docx new file mode 100644 index 0000000000000000000000000000000000000000..8af42d588095b184337f09ea3a1b1a0a5d5b5245 GIT binary patch literal 20875 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 CG5@Rp literal 0 HcmV?d00001