ASF Bugzilla – Attachment 27116 Details for
Bug 51265
Enhance Handling of Picture Parts
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Add Image-Handling Unit-Tests
TestXWPFDocument.patch (text/plain), 9.76 KB, created by
Stefan Stern
on 2011-06-06 06:53:57 UTC
(
hide
)
Description:
Add Image-Handling Unit-Tests
Filename:
MIME Type:
Creator:
Stefan Stern
Created:
2011-06-06 06:53:57 UTC
Size:
9.76 KB
patch
obsolete
>Index: src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java >=================================================================== >--- src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java (revision 1126325) >+++ src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java (working copy) >@@ -15,17 +15,25 @@ > limitations under the License. > ==================================================================== */ > >-package org.apache.poi.xwpf; >+package org.apache.poi.xwpf.usermodel; >+ >+import java.io.IOException; >+import java.io.OutputStream; >+import java.util.Arrays; >+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.XWPFRelation; >+import org.apache.poi.openxml4j.opc.PackagePartName; >+import org.apache.poi.openxml4j.opc.PackageRelationship; >+import org.apache.poi.openxml4j.opc.PackagingURIHelper; >+import org.apache.poi.openxml4j.opc.TargetMode; >+import org.apache.poi.xwpf.XWPFTestDataSamples; > import org.apache.xmlbeans.XmlCursor; > import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP; > >@@ -65,7 +73,7 @@ > assertNotNull(xml.getStyle()); > } > >- public void testMetadataBasics() { >+ public void testMetadataBasics() throws IOException { > XWPFDocument xml = XWPFTestDataSamples.openSampleDocument("sample.docx"); > assertNotNull(xml.getProperties().getCoreProperties()); > assertNotNull(xml.getProperties().getExtendedProperties()); >@@ -78,7 +86,7 @@ > assertEquals(null, xml.getProperties().getCoreProperties().getUnderlyingProperties().getSubjectProperty().getValue()); > } > >- public void testMetadataComplex() { >+ public void testMetadataComplex() throws IOException { > XWPFDocument xml = XWPFTestDataSamples.openSampleDocument("IllustrativeCases.docx"); > assertNotNull(xml.getProperties().getCoreProperties()); > assertNotNull(xml.getProperties().getExtendedProperties()); >@@ -98,7 +106,7 @@ > assertEquals("Apache POI", props.getExtendedProperties().getUnderlyingProperties().getApplication()); > } > >- public void testAddParagraph(){ >+ public void testAddParagraph() throws IOException{ > XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx"); > assertEquals(3, doc.getParagraphs().size()); > >@@ -117,24 +125,22 @@ > assertSame(cP, doc.getParagraphs().get(0)); > assertEquals(5, doc.getParagraphs().size()); > } >- >- public void testAddPicture(){ >- XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx"); >- byte[] jpeg = "This is a jpeg".getBytes(); >- try { >- int jpegNum = doc.addPicture(jpeg, XWPFDocument.PICTURE_TYPE_JPEG); >- byte[] newJpeg = doc.getAllPictures().get(jpegNum).getData(); >- assertEquals(newJpeg.length, jpeg.length); >- for(int i = 0 ; i < jpeg.length; i++){ >- assertEquals(newJpeg[i], jpeg[i]); >- } >- } catch (InvalidFormatException e) { >- // TODO Auto-generated catch block >- e.printStackTrace(); >- } >- } >- >- public void testRemoveBodyElement() { >+ >+ public void testAddPicture() throws IOException, InvalidFormatException >+ { >+ XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx"); >+ byte[] jpeg = XWPFTestDataSamples.getImage("nature1.jpg"); >+ String relationId = doc.addPictureData(jpeg,XWPFDocument.PICTURE_TYPE_JPEG); >+ >+ byte[] newJpeg = ((XWPFPictureData) doc.getRelationById(relationId)).getData(); >+ assertEquals(newJpeg.length,jpeg.length); >+ for (int i = 0 ; i < jpeg.length ; i++) >+ { >+ assertEquals(newJpeg[i],jpeg[i]); >+ } >+ } >+ >+ public void testRemoveBodyElement() throws IOException { > XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx"); > assertEquals(3, doc.getParagraphs().size()); > assertEquals(3, doc.getBodyElements().size()); >@@ -194,4 +200,120 @@ > assertEquals(p3, doc.getBodyElements().get(0)); > assertEquals(p3, doc.getParagraphs().get(0)); > } >+ >+ public void testRegisterPackagePictureData() throws IOException, InvalidFormatException { >+ XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_1.docx"); >+ >+ /* manually assemble a new image package part*/ >+ OPCPackage opcPckg = doc.getPackage(); >+ XWPFRelation jpgRelation = XWPFRelation.IMAGE_JPEG; >+ PackagePartName partName = PackagingURIHelper.createPartName(jpgRelation.getDefaultFileName().replace('#', '2')); >+ PackagePart newImagePart = opcPckg.createPart(partName, jpgRelation.getContentType()); >+ byte[] nature1 = XWPFTestDataSamples.getImage("abstract4.jpg"); >+ OutputStream os = newImagePart.getOutputStream(); >+ os.write(nature1); >+ os.close(); >+ XWPFHeader xwpfHeader = doc.getHeaderList().get(0); >+ PackageRelationship relationship = xwpfHeader.getPackagePart().addRelationship(partName, TargetMode.INTERNAL, jpgRelation.getRelation()); >+ XWPFPictureData newPicData = new XWPFPictureData(newImagePart,relationship); >+ /* new part is now ready to rumble */ >+ >+ assertFalse(xwpfHeader.getAllPictures().contains(newPicData)); >+ assertFalse(doc.getAllPictures().contains(newPicData)); >+ assertFalse(doc.getAllPackagePictures().contains(newPicData)); >+ >+ doc.registerPackagePictureData(newPicData); >+ >+ assertFalse(xwpfHeader.getAllPictures().contains(newPicData)); >+ assertFalse(doc.getAllPictures().contains(newPicData)); >+ assertTrue(doc.getAllPackagePictures().contains(newPicData)); >+ >+ doc.getPackage().revert(); >+ } >+ >+ public void testFindPackagePictureData() throws IOException { >+ XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_1.docx"); >+ byte[] nature1 = XWPFTestDataSamples.getImage("nature1.gif"); >+ XWPFPictureData part = doc.findPackagePictureData(nature1, Document.PICTURE_TYPE_GIF); >+ assertNotNull(part); >+ assertTrue(doc.getAllPictures().contains(part)); >+ assertTrue(doc.getAllPackagePictures().contains(part)); >+ doc.getPackage().revert(); >+ } >+ >+ public void testGetAllPictures() throws IOException { >+ XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_3.docx"); >+ List<XWPFPictureData> allPictures = doc.getAllPictures(); >+ List<XWPFPictureData> allPackagePictures = doc.getAllPackagePictures(); >+ >+ assertNotNull(allPictures); >+ assertEquals(3,allPictures.size()); >+ for (XWPFPictureData xwpfPictureData : allPictures) { >+ assertTrue(allPackagePictures.contains(xwpfPictureData)); >+ } >+ >+ try { >+ allPictures.add(allPictures.get(0)); >+ fail("This list must be unmodifiable!"); >+ } catch (UnsupportedOperationException e) { >+ // all ok >+ } >+ >+ doc.getPackage().revert(); >+ } >+ >+ public void testGetAllPackagePictures() throws IOException { >+ XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_3.docx"); >+ List<XWPFPictureData> allPackagePictures = doc.getAllPackagePictures(); >+ >+ assertNotNull(allPackagePictures); >+ assertEquals(5,allPackagePictures.size()); >+ >+ try { >+ allPackagePictures.add(allPackagePictures.get(0)); >+ fail("This list must be unmodifiable!"); >+ } catch (UnsupportedOperationException e) { >+ // all ok >+ } >+ >+ doc.getPackage().revert(); >+ } >+ >+ public void testPictureHandlingSimpleFile() throws IOException, InvalidFormatException { >+ XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_1.docx"); >+ assertEquals(1,doc.getAllPackagePictures().size()); >+ byte[] newPic = XWPFTestDataSamples.getImage("abstract4.jpg"); >+ String id1 = doc.addPictureData(newPic, Document.PICTURE_TYPE_JPEG); >+ assertEquals(2,doc.getAllPackagePictures().size()); >+ /* copy data, to avoid instance-equality */ >+ byte[] newPicCopy = Arrays.copyOf(newPic, newPic.length); >+ String id2 = doc.addPictureData(newPicCopy, Document.PICTURE_TYPE_JPEG); >+ assertEquals(id1,id2); >+ doc.getPackage().revert(); >+ } >+ >+ public void testPictureHandlingHeaderDocumentImages() throws IOException { >+ XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_2.docx"); >+ assertEquals(1,doc.getAllPictures().size()); >+ assertEquals(1,doc.getAllPackagePictures().size()); >+ assertEquals(1,doc.getHeaderList().get(0).getAllPictures().size()); >+ doc.getPackage().revert(); >+ } >+ >+ public void testPictureHandlingComplex() throws IOException, InvalidFormatException { >+ XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_3.docx"); >+ XWPFHeader xwpfHeader = doc.getHeaderList().get(0); >+ >+ assertEquals(3,doc.getAllPictures().size()); >+ assertEquals(3,xwpfHeader.getAllPictures().size()); >+ assertEquals(5,doc.getAllPackagePictures().size()); >+ >+ byte[] nature1 = XWPFTestDataSamples.getImage("nature1.jpg"); >+ String id = doc.addPictureData(nature1, Document.PICTURE_TYPE_JPEG); >+ POIXMLDocumentPart part1 = xwpfHeader.getRelationById("rId1"); >+ XWPFPictureData part2 = (XWPFPictureData) doc.getRelationById(id); >+ assertSame(part1,part2); >+ >+ doc.getPackage().revert(); >+ } > } > >Property changes on: src\ooxml\testcases\org\apache\poi\xwpf\usermodel\TestXWPFDocument.java >___________________________________________________________________ >Added: svn:eol-style > + native >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 51265
:
27062
|
27063
| 27116