View | Details | Raw Unified | Return to bug 51265
Collapse All | Expand All

(-)src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java (-25 / +147 lines)
Lines 15-31 Link Here
15
   limitations under the License.
15
   limitations under the License.
16
==================================================================== */
16
==================================================================== */
17
17
18
package org.apache.poi.xwpf;
18
package org.apache.poi.xwpf.usermodel;
19
20
import java.io.IOException;
21
import java.io.OutputStream;
22
import java.util.Arrays;
23
import java.util.List;
19
24
20
import junit.framework.TestCase;
25
import junit.framework.TestCase;
21
26
27
import org.apache.poi.POIXMLDocumentPart;
22
import org.apache.poi.POIXMLProperties;
28
import org.apache.poi.POIXMLProperties;
23
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
29
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
24
import org.apache.poi.openxml4j.opc.OPCPackage;
30
import org.apache.poi.openxml4j.opc.OPCPackage;
25
import org.apache.poi.openxml4j.opc.PackagePart;
31
import org.apache.poi.openxml4j.opc.PackagePart;
26
import org.apache.poi.xwpf.usermodel.XWPFDocument;
32
import org.apache.poi.openxml4j.opc.PackagePartName;
27
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
33
import org.apache.poi.openxml4j.opc.PackageRelationship;
28
import org.apache.poi.xwpf.usermodel.XWPFRelation;
34
import org.apache.poi.openxml4j.opc.PackagingURIHelper;
35
import org.apache.poi.openxml4j.opc.TargetMode;
36
import org.apache.poi.xwpf.XWPFTestDataSamples;
29
import org.apache.xmlbeans.XmlCursor;
37
import org.apache.xmlbeans.XmlCursor;
30
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;
38
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;
31
39
Lines 65-71 Link Here
65
		assertNotNull(xml.getStyle());
73
		assertNotNull(xml.getStyle());
66
	}
74
	}
67
75
68
	public void testMetadataBasics() {
76
	public void testMetadataBasics() throws IOException {
69
		XWPFDocument xml = XWPFTestDataSamples.openSampleDocument("sample.docx");
77
		XWPFDocument xml = XWPFTestDataSamples.openSampleDocument("sample.docx");
70
		assertNotNull(xml.getProperties().getCoreProperties());
78
		assertNotNull(xml.getProperties().getCoreProperties());
71
		assertNotNull(xml.getProperties().getExtendedProperties());
79
		assertNotNull(xml.getProperties().getExtendedProperties());
Lines 78-84 Link Here
78
		assertEquals(null, xml.getProperties().getCoreProperties().getUnderlyingProperties().getSubjectProperty().getValue());
86
		assertEquals(null, xml.getProperties().getCoreProperties().getUnderlyingProperties().getSubjectProperty().getValue());
79
	}
87
	}
80
88
81
	public void testMetadataComplex() {
89
	public void testMetadataComplex() throws IOException {
82
		XWPFDocument xml = XWPFTestDataSamples.openSampleDocument("IllustrativeCases.docx");
90
		XWPFDocument xml = XWPFTestDataSamples.openSampleDocument("IllustrativeCases.docx");
83
		assertNotNull(xml.getProperties().getCoreProperties());
91
		assertNotNull(xml.getProperties().getCoreProperties());
84
		assertNotNull(xml.getProperties().getExtendedProperties());
92
		assertNotNull(xml.getProperties().getExtendedProperties());
Lines 98-104 Link Here
98
		assertEquals("Apache POI", props.getExtendedProperties().getUnderlyingProperties().getApplication());
106
		assertEquals("Apache POI", props.getExtendedProperties().getUnderlyingProperties().getApplication());
99
	}
107
	}
100
	
108
	
101
	public void testAddParagraph(){
109
	public void testAddParagraph() throws IOException{
102
	   XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx");
110
	   XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx");
103
	   assertEquals(3, doc.getParagraphs().size());
111
	   assertEquals(3, doc.getParagraphs().size());
104
112
Lines 117-140 Link Here
117
	   assertSame(cP, doc.getParagraphs().get(0));
125
	   assertSame(cP, doc.getParagraphs().get(0));
118
	   assertEquals(5, doc.getParagraphs().size());
126
	   assertEquals(5, doc.getParagraphs().size());
119
	}
127
	}
120
	
128
121
	public void testAddPicture(){
129
    public void testAddPicture() throws IOException, InvalidFormatException
122
		XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx");
130
    {
123
		byte[] jpeg = "This is a jpeg".getBytes();
131
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx");
124
		try {
132
        byte[] jpeg = XWPFTestDataSamples.getImage("nature1.jpg");
125
			int jpegNum = doc.addPicture(jpeg, XWPFDocument.PICTURE_TYPE_JPEG);
133
        String relationId = doc.addPictureData(jpeg,XWPFDocument.PICTURE_TYPE_JPEG);
126
			byte[] newJpeg = doc.getAllPictures().get(jpegNum).getData();
134
        
127
			assertEquals(newJpeg.length, jpeg.length);
135
        byte[] newJpeg = ((XWPFPictureData) doc.getRelationById(relationId)).getData();
128
			for(int i = 0 ; i < jpeg.length; i++){
136
        assertEquals(newJpeg.length,jpeg.length);
129
				assertEquals(newJpeg[i], jpeg[i]); 
137
        for (int i = 0 ; i < jpeg.length ; i++)
130
			}
138
        {
131
		} catch (InvalidFormatException e) {
139
            assertEquals(newJpeg[i],jpeg[i]);
132
			// TODO Auto-generated catch block
140
        }
133
			e.printStackTrace();
141
    }
134
		}
142
135
	}
143
	public void testRemoveBodyElement() throws IOException {
136
	
137
	public void testRemoveBodyElement() {
138
	   XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx");
144
	   XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx");
139
	   assertEquals(3, doc.getParagraphs().size());
145
	   assertEquals(3, doc.getParagraphs().size());
140
      assertEquals(3, doc.getBodyElements().size());
146
      assertEquals(3, doc.getBodyElements().size());
Lines 194-197 Link Here
194
      assertEquals(p3, doc.getBodyElements().get(0));
200
      assertEquals(p3, doc.getBodyElements().get(0));
195
      assertEquals(p3, doc.getParagraphs().get(0));
201
      assertEquals(p3, doc.getParagraphs().get(0));
196
	}
202
	}
203
	
204
	public void testRegisterPackagePictureData() throws IOException, InvalidFormatException {
205
	    XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_1.docx");
206
	    
207
	    /* manually assemble a new image package part*/
208
	    OPCPackage opcPckg = doc.getPackage();
209
	    XWPFRelation jpgRelation = XWPFRelation.IMAGE_JPEG;
210
	    PackagePartName partName = PackagingURIHelper.createPartName(jpgRelation.getDefaultFileName().replace('#', '2'));
211
        PackagePart newImagePart = opcPckg.createPart(partName, jpgRelation.getContentType());
212
        byte[] nature1 = XWPFTestDataSamples.getImage("abstract4.jpg");
213
        OutputStream os = newImagePart.getOutputStream();
214
        os.write(nature1);
215
	    os.close();
216
	    XWPFHeader xwpfHeader = doc.getHeaderList().get(0);
217
	    PackageRelationship relationship = xwpfHeader.getPackagePart().addRelationship(partName, TargetMode.INTERNAL, jpgRelation.getRelation());
218
	    XWPFPictureData newPicData = new XWPFPictureData(newImagePart,relationship);
219
	    /* new part is now ready to rumble */
220
	    
221
	    assertFalse(xwpfHeader.getAllPictures().contains(newPicData));
222
	    assertFalse(doc.getAllPictures().contains(newPicData));
223
	    assertFalse(doc.getAllPackagePictures().contains(newPicData));
224
225
	    doc.registerPackagePictureData(newPicData);
226
	    
227
	    assertFalse(xwpfHeader.getAllPictures().contains(newPicData));
228
	    assertFalse(doc.getAllPictures().contains(newPicData));
229
	    assertTrue(doc.getAllPackagePictures().contains(newPicData));
230
	    
231
	    doc.getPackage().revert();
232
	}
233
234
	public void testFindPackagePictureData() throws IOException {
235
	    XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_1.docx");
236
	    byte[] nature1 = XWPFTestDataSamples.getImage("nature1.gif");
237
	    XWPFPictureData part = doc.findPackagePictureData(nature1, Document.PICTURE_TYPE_GIF);
238
	    assertNotNull(part);
239
	    assertTrue(doc.getAllPictures().contains(part));
240
	    assertTrue(doc.getAllPackagePictures().contains(part));
241
	    doc.getPackage().revert();
242
	}
243
	
244
	public void testGetAllPictures() throws IOException {
245
	    XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_3.docx");
246
	    List<XWPFPictureData> allPictures = doc.getAllPictures();
247
	    List<XWPFPictureData> allPackagePictures = doc.getAllPackagePictures();
248
	    
249
	    assertNotNull(allPictures);
250
	    assertEquals(3,allPictures.size());
251
	    for (XWPFPictureData xwpfPictureData : allPictures) {
252
	        assertTrue(allPackagePictures.contains(xwpfPictureData));
253
        }
254
255
	    try {
256
            allPictures.add(allPictures.get(0));
257
            fail("This list must be unmodifiable!");
258
        } catch (UnsupportedOperationException e) {
259
            // all ok
260
        }
261
	    
262
	    doc.getPackage().revert();
263
	}
264
265
	public void testGetAllPackagePictures() throws IOException {
266
	       XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_3.docx");
267
	        List<XWPFPictureData> allPackagePictures = doc.getAllPackagePictures();
268
	        
269
	        assertNotNull(allPackagePictures);
270
	        assertEquals(5,allPackagePictures.size());
271
272
	        try {
273
	            allPackagePictures.add(allPackagePictures.get(0));
274
	            fail("This list must be unmodifiable!");
275
	        } catch (UnsupportedOperationException e) {
276
	            // all ok
277
	        }
278
	        
279
	        doc.getPackage().revert();
280
	}
281
	
282
	public void testPictureHandlingSimpleFile() throws IOException, InvalidFormatException {
283
	    XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_1.docx");
284
	    assertEquals(1,doc.getAllPackagePictures().size());
285
	    byte[] newPic = XWPFTestDataSamples.getImage("abstract4.jpg");
286
	    String id1 = doc.addPictureData(newPic, Document.PICTURE_TYPE_JPEG);
287
	    assertEquals(2,doc.getAllPackagePictures().size());
288
	    /* copy data, to avoid instance-equality */
289
	    byte[] newPicCopy = Arrays.copyOf(newPic, newPic.length);
290
	    String id2 = doc.addPictureData(newPicCopy, Document.PICTURE_TYPE_JPEG);
291
	    assertEquals(id1,id2);
292
	    doc.getPackage().revert();
293
	}
294
	
295
	public void testPictureHandlingHeaderDocumentImages() throws IOException {
296
	    XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_2.docx");
297
	    assertEquals(1,doc.getAllPictures().size());
298
	    assertEquals(1,doc.getAllPackagePictures().size());
299
	    assertEquals(1,doc.getHeaderList().get(0).getAllPictures().size());
300
	    doc.getPackage().revert();
301
	}
302
	
303
	public void testPictureHandlingComplex() throws IOException, InvalidFormatException {
304
	    XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_3.docx");
305
	    XWPFHeader xwpfHeader = doc.getHeaderList().get(0);
306
307
	    assertEquals(3,doc.getAllPictures().size());
308
        assertEquals(3,xwpfHeader.getAllPictures().size());
309
	    assertEquals(5,doc.getAllPackagePictures().size());
310
	    
311
	    byte[] nature1 = XWPFTestDataSamples.getImage("nature1.jpg");
312
	    String id = doc.addPictureData(nature1, Document.PICTURE_TYPE_JPEG);
313
	    POIXMLDocumentPart part1 = xwpfHeader.getRelationById("rId1");
314
	    XWPFPictureData part2 = (XWPFPictureData) doc.getRelationById(id);
315
	    assertSame(part1,part2);
316
	    
317
	    doc.getPackage().revert();
318
	}
197
}
319
}
198
  + native
320
  + native
(-)src/ooxml/testcases/org/apache/poi/xwpf/TestPackageCorePropertiesGetKeywords.java (-1 / +3 lines)
Lines 17-22 Link Here
17
17
18
package org.apache.poi.xwpf;
18
package org.apache.poi.xwpf;
19
19
20
import java.io.IOException;
21
20
import junit.framework.TestCase;
22
import junit.framework.TestCase;
21
23
22
import org.apache.poi.POIXMLProperties.CoreProperties;
24
import org.apache.poi.POIXMLProperties.CoreProperties;
Lines 37-43 Link Here
37
 * 
39
 * 
38
 */
40
 */
39
public final class TestPackageCorePropertiesGetKeywords extends TestCase {
41
public final class TestPackageCorePropertiesGetKeywords extends TestCase {
40
	public void testGetSetKeywords() {
42
	public void testGetSetKeywords() throws IOException {
41
		XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestPoiXMLDocumentCorePropertiesGetKeywords.docx");
43
		XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestPoiXMLDocumentCorePropertiesGetKeywords.docx");
42
		String keywords = doc.getProperties().getCoreProperties().getKeywords();
44
		String keywords = doc.getProperties().getCoreProperties().getKeywords();
43
		assertEquals("extractor, test, rdf", keywords);
45
		assertEquals("extractor, test, rdf", keywords);
(-)src/ooxml/testcases/org/apache/poi/xwpf/TestAllExtendedProperties.java (-1 / +3 lines)
Lines 17-22 Link Here
17
17
18
package org.apache.poi.xwpf;
18
package org.apache.poi.xwpf;
19
19
20
import java.io.IOException;
21
20
import junit.framework.TestCase;
22
import junit.framework.TestCase;
21
23
22
import org.apache.poi.POIXMLProperties.CoreProperties;
24
import org.apache.poi.POIXMLProperties.CoreProperties;
Lines 41-47 Link Here
41
 * 
43
 * 
42
 */
44
 */
43
public final class TestAllExtendedProperties extends TestCase {
45
public final class TestAllExtendedProperties extends TestCase {
44
	public void testGetAllExtendedProperties() {
46
	public void testGetAllExtendedProperties() throws IOException {
45
		XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestPoiXMLDocumentCorePropertiesGetKeywords.docx");
47
		XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestPoiXMLDocumentCorePropertiesGetKeywords.docx");
46
		CTProperties ctProps = doc.getProperties().getExtendedProperties().getUnderlyingProperties();
48
		CTProperties ctProps = doc.getProperties().getExtendedProperties().getUnderlyingProperties();
47
		assertEquals("Microsoft Office Word",ctProps.getApplication());
49
		assertEquals("Microsoft Office Word",ctProps.getApplication());
(-)src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFPictureData.java (-83 / +89 lines)
Lines 17-22 Link Here
17
17
18
package org.apache.poi.xwpf.usermodel;
18
package org.apache.poi.xwpf.usermodel;
19
19
20
import java.io.IOException;
20
import java.util.Arrays;
21
import java.util.Arrays;
21
import java.util.List;
22
import java.util.List;
22
23
Lines 29-126 Link Here
29
import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy;
30
import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy;
30
31
31
public class TestXWPFPictureData extends TestCase {
32
public class TestXWPFPictureData extends TestCase {
32
	   public void testRead(){
33
    
33
		   XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("VariousPictures.docx");
34
    public void testRead() throws InvalidFormatException, IOException
34
	        List<XWPFPictureData> pictures = sampleDoc.getAllPictures();
35
    {
35
	        assertSame(pictures, sampleDoc.getAllPictures());
36
        XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("VariousPictures.docx");
37
        List<XWPFPictureData> pictures = sampleDoc.getAllPictures();
38
39
        assertEquals(5,pictures.size());
40
        String[] ext = {"wmf","png","emf","emf","jpeg"};
41
        for (int i = 0 ; i < pictures.size() ; i++)
42
        {
43
            assertEquals(ext[i],pictures.get(i).suggestFileExtension());
44
        }
36
45
37
	        assertEquals(5, pictures.size());
46
        int num = pictures.size();
38
	        String[] ext = {"wmf", "png", "emf", "emf", "jpeg"};
39
	        for (int i = 0; i < pictures.size(); i++) {
40
	            assertEquals(ext[i], pictures.get(i).suggestFileExtension());
41
	        }
42
47
43
	        int num = pictures.size();
48
        byte[] pictureData = XWPFTestDataSamples.getImage("nature1.jpg");
44
49
45
	        byte[] pictureData = {0xA, 0xB, 0XC, 0xD, 0xE, 0xF};
50
        String relationId = sampleDoc.addPictureData(pictureData,XWPFDocument.PICTURE_TYPE_JPEG);
51
        // picture list was updated
52
        assertEquals(num + 1,pictures.size());
53
        XWPFPictureData pict = (XWPFPictureData) sampleDoc.getRelationById(relationId);
54
        assertEquals("jpeg",pict.suggestFileExtension());
55
        assertTrue(Arrays.equals(pictureData,pict.getData()));
56
    }
46
57
47
	        int idx;
58
    public void testPictureInHeader() throws IOException
48
			try {
59
    {
49
				idx = sampleDoc.addPicture(pictureData, XWPFDocument.PICTURE_TYPE_JPEG);
60
        XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("headerPic.docx");
50
				assertEquals(num + 1, pictures.size());
61
        XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy();
51
				//idx is 0-based index in the #pictures array
52
				assertEquals(pictures.size() - 1, idx);
53
				XWPFPictureData pict = pictures.get(idx);
54
				assertEquals("jpeg", pict.suggestFileExtension());
55
				assertTrue(Arrays.equals(pictureData, pict.getData()));
56
			} catch (InvalidFormatException e) {
57
				// TODO Auto-generated catch block
58
				e.printStackTrace();
59
			}
60
	    }
61
62
62
        public void testPictureInHeader() {
63
        XWPFHeader header = policy.getDefaultHeader();
63
            XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("headerPic.docx");
64
            XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy();
65
64
66
            XWPFHeader header = policy.getDefaultHeader();
65
        List<XWPFPictureData> pictures = header.getAllPictures();
66
        assertEquals(1,pictures.size());
67
    }
67
68
68
            List<XWPFPictureData> pictures = header.getAllPictures();
69
    public void testNew() throws InvalidFormatException, IOException 
69
            assertEquals(1, pictures.size());
70
    {
71
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("EmptyDocumentWithHeaderFooter.docx");
72
        byte[] jpegData = XWPFTestDataSamples.getImage("nature1.jpg");
73
        byte[] gifData = XWPFTestDataSamples.getImage("nature1.gif");
74
        byte[] pngData = XWPFTestDataSamples.getImage("nature1.png");
75
76
        List<XWPFPictureData> pictures = doc.getAllPictures();
77
        assertEquals(0,pictures.size());
78
79
        // Document shouldn't have any image relationships
80
        assertEquals(13,doc.getPackagePart().getRelationships().size());
81
        for (PackageRelationship rel : doc.getPackagePart().getRelationships())
82
        {
83
            if (rel.getRelationshipType().equals(XSSFRelation.IMAGE_JPEG.getRelation()))
84
            {
85
                fail("Shouldn't have JPEG yet");
86
            }
70
        }
87
        }
71
88
72
	    public void testNew() throws Exception {
89
        // Add the image
73
	        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("EmptyDocumentWithHeaderFooter.docx");
90
        String relationId = doc.addPictureData(jpegData,XWPFDocument.PICTURE_TYPE_JPEG);
74
	        byte[] jpegData = "test jpeg data".getBytes();
91
        assertEquals(1,pictures.size());
75
	        byte[] wmfData =  "test wmf data".getBytes();
92
        XWPFPictureData jpgPicData = (XWPFPictureData) doc.getRelationById(relationId);
76
	        byte[] pngData =  "test png data".getBytes();
93
        assertEquals("jpeg",jpgPicData.suggestFileExtension());
77
	        
94
        assertTrue(Arrays.equals(jpegData,jpgPicData.getData()));
78
	        List<XWPFPictureData> pictures = doc.getAllPictures();
95
79
	        assertEquals(0, pictures.size());
96
        // Ensure it now has one
80
	        
97
        assertEquals(14,doc.getPackagePart().getRelationships().size());
81
	        // Document shouldn't have any image relationships
98
        PackageRelationship jpegRel = null;
82
	        assertEquals(13, doc.getPackagePart().getRelationships().size());
99
        for (PackageRelationship rel : doc.getPackagePart().getRelationships())
83
	        for(PackageRelationship rel : doc.getPackagePart().getRelationships()) {
100
        {
84
	           if(rel.getRelationshipType().equals(XSSFRelation.IMAGE_JPEG.getRelation())) {
101
            if (rel.getRelationshipType().equals(XWPFRelation.IMAGE_JPEG.getRelation()))
85
	              fail("Shouldn't have JPEG yet");
102
            {
86
	           }
103
                if (jpegRel != null)
87
	        }
88
	        
89
	        // Add the image
90
	        int jpegIdx;
91
	        
92
	        jpegIdx = doc.addPicture(jpegData, XWPFDocument.PICTURE_TYPE_JPEG);
93
	        assertEquals(1, pictures.size());
94
	        assertEquals("jpeg", pictures.get(jpegIdx).suggestFileExtension());
95
	        assertTrue(Arrays.equals(jpegData, pictures.get(jpegIdx).getData()));
96
	        
97
	        // Ensure it now has one
98
           assertEquals(14, doc.getPackagePart().getRelationships().size());
99
           PackageRelationship jpegRel = null;
100
           for(PackageRelationship rel : doc.getPackagePart().getRelationships()) {
101
              if(rel.getRelationshipType().equals(XWPFRelation.IMAGE_JPEG.getRelation())) {
102
                 if(jpegRel != null)
103
                    fail("Found 2 jpegs!");
104
                    fail("Found 2 jpegs!");
104
                 jpegRel = rel;
105
                jpegRel = rel;
105
              }
106
            }
106
           }
107
        }
107
           assertNotNull("JPEG Relationship not found", jpegRel);
108
        assertNotNull("JPEG Relationship not found",jpegRel);
108
           
109
109
           // Check the details
110
        // Check the details
110
           assertEquals(XWPFRelation.IMAGE_JPEG.getRelation(), jpegRel.getRelationshipType());
111
        assertEquals(XWPFRelation.IMAGE_JPEG.getRelation(),jpegRel.getRelationshipType());
111
           assertEquals("/word/document.xml", jpegRel.getSource().getPartName().toString());
112
        assertEquals("/word/document.xml",jpegRel.getSource().getPartName().toString());
112
           assertEquals("/word/media/image1.jpeg", jpegRel.getTargetURI().getPath());
113
        assertEquals("/word/media/image1.jpeg",jpegRel.getTargetURI().getPath());
114
115
        XWPFPictureData pictureDataByID = doc.getPictureDataByID(jpegRel.getId());
116
        byte[] newJPEGData = pictureDataByID.getData();
117
        assertEquals(newJPEGData.length,jpegData.length);
118
        for (int i = 0 ; i < newJPEGData.length ; i++)
119
        {
120
            assertEquals(newJPEGData[i],jpegData[i]);
121
        }
113
122
114
	        XWPFPictureData pictureDataByID = doc.getPictureDataByID(jpegRel.getId());
123
        // Save an re-load, check it appears
115
	        byte [] newJPEGData = pictureDataByID.getData();
124
        doc = XWPFTestDataSamples.writeOutAndReadBack(doc);
116
	        assertEquals(newJPEGData.length, jpegData.length);
125
        assertEquals(1,doc.getAllPictures().size());
117
	        for(int i = 0; i < newJPEGData.length; i++){
126
        assertEquals(1,doc.getAllPackagePictures().size());
118
	           assertEquals(newJPEGData[i], jpegData[i]);	
127
    }
119
	        }
128
    
120
	        
129
    public void testGetChecksum() {
121
	        // Save an re-load, check it appears
130
        
122
	        doc = XWPFTestDataSamples.writeOutAndReadBack(doc);
131
    }
123
	        assertEquals(1, doc.getAllPictures().size());
124
           assertEquals(1, doc.getAllPackagePictures().size());
125
	    }
126
}
132
}
(-)src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFRun.java (-2 / +4 lines)
Lines 17-22 Link Here
17
package org.apache.poi.xwpf.usermodel;
17
package org.apache.poi.xwpf.usermodel;
18
18
19
import java.io.ByteArrayInputStream;
19
import java.io.ByteArrayInputStream;
20
import java.io.IOException;
20
import java.math.BigInteger;
21
import java.math.BigInteger;
21
import java.util.List;
22
import java.util.List;
22
23
Lines 198-205 Link Here
198
    /**
199
    /**
199
     * Test that on an existing document, we do the
200
     * Test that on an existing document, we do the
200
     *  right thing with it
201
     *  right thing with it
202
     * @throws IOException 
201
     */
203
     */
202
    public void testExisting() {
204
    public void testExisting() throws IOException {
203
       XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestDocument.docx");
205
       XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestDocument.docx");
204
       XWPFParagraph p;
206
       XWPFParagraph p;
205
       XWPFRun run;
207
       XWPFRun run;
Lines 330-336 Link Here
330
       assertEquals(null, run.getCTR().getRPr());
332
       assertEquals(null, run.getCTR().getRPr());
331
    }
333
    }
332
334
333
    public void testPictureInHeader() {
335
    public void testPictureInHeader() throws IOException {
334
        XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("headerPic.docx");
336
        XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("headerPic.docx");
335
        XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy();
337
        XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy();
336
338
(-)src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFHeader.java (-4 / +20 lines)
Lines 29-35 Link Here
29
29
30
public final class TestXWPFHeader extends TestCase {
30
public final class TestXWPFHeader extends TestCase {
31
31
32
	public void testSimpleHeader() {
32
	public void testSimpleHeader() throws IOException {
33
		XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("headerFooter.docx");
33
		XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("headerFooter.docx");
34
34
35
		XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy();
35
		XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy();
Lines 40-46 Link Here
40
		assertNotNull(footer);
40
		assertNotNull(footer);
41
	}
41
	}
42
42
43
    public void testImageInHeader() {
43
    public void testImageInHeader() throws IOException {
44
        XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("headerPic.docx");
44
        XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("headerPic.docx");
45
45
46
        XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy();
46
        XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy();
Lines 110-116 Link Here
110
		// make sure that it contains two paragraphs of text and that
110
		// make sure that it contains two paragraphs of text and that
111
		// both do hold what is expected.
111
		// both do hold what is expected.
112
		footer = policy.getDefaultFooter();
112
		footer = policy.getDefaultFooter();
113
113
		
114
		XWPFParagraph[] paras = new XWPFParagraph[footer.getParagraphs().size()];
114
		XWPFParagraph[] paras = new XWPFParagraph[footer.getParagraphs().size()];
115
		int i=0;
115
		int i=0;
116
		for(XWPFParagraph p : footer.getParagraphs()) {
116
		for(XWPFParagraph p : footer.getParagraphs()) {
Lines 122-128 Link Here
122
		assertEquals("Second paragraph for the footer", paras[1].getText());
122
		assertEquals("Second paragraph for the footer", paras[1].getText());
123
	}
123
	}
124
124
125
	public void testSetWatermark() {
125
	public void testSetWatermark() throws IOException {
126
		XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("SampleDoc.docx");
126
		XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("SampleDoc.docx");
127
		// no header is set (yet)
127
		// no header is set (yet)
128
		XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy();
128
		XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy();
Lines 136-139 Link Here
136
		assertNotNull(policy.getFirstPageHeader());
136
		assertNotNull(policy.getFirstPageHeader());
137
		assertNotNull(policy.getEvenPageHeader());
137
		assertNotNull(policy.getEvenPageHeader());
138
	}
138
	}
139
	
140
	public void testAddPictureData() {
141
	    
142
	}
143
	
144
	public void testGetAllPictures() {
145
	    
146
	}
147
	
148
	public void testGetAllPackagePictures() {
149
	    
150
	}
151
	
152
	public void testGetPictureDataById() {
153
	    
154
	}
139
}
155
}
(-)src/ooxml/testcases/org/apache/poi/xwpf/TestXWPFDocument.java (-197 lines)
Lines 1-197 Link Here
1
/* ====================================================================
2
   Licensed to the Apache Software Foundation (ASF) under one or more
3
   contributor license agreements.  See the NOTICE file distributed with
4
   this work for additional information regarding copyright ownership.
5
   The ASF licenses this file to You under the Apache License, Version 2.0
6
   (the "License"); you may not use this file except in compliance with
7
   the License.  You may obtain a copy of the License at
8
9
       http://www.apache.org/licenses/LICENSE-2.0
10
11
   Unless required by applicable law or agreed to in writing, software
12
   distributed under the License is distributed on an "AS IS" BASIS,
13
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
   See the License for the specific language governing permissions and
15
   limitations under the License.
16
==================================================================== */
17
18
package org.apache.poi.xwpf;
19
20
import junit.framework.TestCase;
21
22
import org.apache.poi.POIXMLProperties;
23
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
24
import org.apache.poi.openxml4j.opc.OPCPackage;
25
import org.apache.poi.openxml4j.opc.PackagePart;
26
import org.apache.poi.xwpf.usermodel.XWPFDocument;
27
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
28
import org.apache.poi.xwpf.usermodel.XWPFRelation;
29
import org.apache.xmlbeans.XmlCursor;
30
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;
31
32
public final class TestXWPFDocument extends TestCase {
33
34
	public void testContainsMainContentType() throws Exception {
35
		XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx");
36
		OPCPackage pack = doc.getPackage();
37
38
		boolean found = false;
39
		for(PackagePart part : pack.getParts()) {
40
			if(part.getContentType().equals(XWPFRelation.DOCUMENT.getContentType())) {
41
				found = true;
42
			}
43
			if (false) {
44
				// successful tests should be silent
45
				System.out.println(part);
46
			}
47
		}
48
		assertTrue(found);
49
	}
50
51
	public void testOpen() throws Exception {
52
		XWPFDocument xml;
53
54
		// Simple file
55
		xml = XWPFTestDataSamples.openSampleDocument("sample.docx");
56
		// Check it has key parts
57
		assertNotNull(xml.getDocument());
58
		assertNotNull(xml.getDocument().getBody());
59
		assertNotNull(xml.getStyle());
60
61
		// Complex file
62
		xml = XWPFTestDataSamples.openSampleDocument("IllustrativeCases.docx");
63
		assertNotNull(xml.getDocument());
64
		assertNotNull(xml.getDocument().getBody());
65
		assertNotNull(xml.getStyle());
66
	}
67
68
	public void testMetadataBasics() {
69
		XWPFDocument xml = XWPFTestDataSamples.openSampleDocument("sample.docx");
70
		assertNotNull(xml.getProperties().getCoreProperties());
71
		assertNotNull(xml.getProperties().getExtendedProperties());
72
73
		assertEquals("Microsoft Office Word", xml.getProperties().getExtendedProperties().getUnderlyingProperties().getApplication());
74
		assertEquals(1315, xml.getProperties().getExtendedProperties().getUnderlyingProperties().getCharacters());
75
		assertEquals(10, xml.getProperties().getExtendedProperties().getUnderlyingProperties().getLines());
76
77
		assertEquals(null, xml.getProperties().getCoreProperties().getTitle());
78
		assertEquals(null, xml.getProperties().getCoreProperties().getUnderlyingProperties().getSubjectProperty().getValue());
79
	}
80
81
	public void testMetadataComplex() {
82
		XWPFDocument xml = XWPFTestDataSamples.openSampleDocument("IllustrativeCases.docx");
83
		assertNotNull(xml.getProperties().getCoreProperties());
84
		assertNotNull(xml.getProperties().getExtendedProperties());
85
86
		assertEquals("Microsoft Office Outlook", xml.getProperties().getExtendedProperties().getUnderlyingProperties().getApplication());
87
		assertEquals(5184, xml.getProperties().getExtendedProperties().getUnderlyingProperties().getCharacters());
88
		assertEquals(0, xml.getProperties().getExtendedProperties().getUnderlyingProperties().getLines());
89
90
		assertEquals(" ", xml.getProperties().getCoreProperties().getTitle());
91
		assertEquals(" ", xml.getProperties().getCoreProperties().getUnderlyingProperties().getSubjectProperty().getValue());
92
	}
93
94
	public void testWorkbookProperties() {
95
		XWPFDocument doc = new XWPFDocument();
96
		POIXMLProperties props = doc.getProperties();
97
		assertNotNull(props);
98
		assertEquals("Apache POI", props.getExtendedProperties().getUnderlyingProperties().getApplication());
99
	}
100
	
101
	public void testAddParagraph(){
102
	   XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx");
103
	   assertEquals(3, doc.getParagraphs().size());
104
105
	   XWPFParagraph p = doc.createParagraph();
106
	   assertEquals(p, doc.getParagraphs().get(3));
107
	   assertEquals(4, doc.getParagraphs().size());
108
	   
109
	   assertEquals(3, doc.getParagraphPos(3));
110
      assertEquals(3, doc.getPosOfParagraph(p));
111
112
	   CTP ctp = p.getCTP();
113
	   XWPFParagraph newP = doc.getParagraph(ctp);
114
	   assertSame(p, newP);
115
	   XmlCursor cursor = doc.getDocument().getBody().getPArray(0).newCursor();
116
	   XWPFParagraph cP = doc.insertNewParagraph(cursor);
117
	   assertSame(cP, doc.getParagraphs().get(0));
118
	   assertEquals(5, doc.getParagraphs().size());
119
	}
120
	
121
	public void testAddPicture(){
122
		XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx");
123
		byte[] jpeg = "This is a jpeg".getBytes();
124
		try {
125
			int jpegNum = doc.addPicture(jpeg, XWPFDocument.PICTURE_TYPE_JPEG);
126
			byte[] newJpeg = doc.getAllPictures().get(jpegNum).getData();
127
			assertEquals(newJpeg.length, jpeg.length);
128
			for(int i = 0 ; i < jpeg.length; i++){
129
				assertEquals(newJpeg[i], jpeg[i]); 
130
			}
131
		} catch (InvalidFormatException e) {
132
			// TODO Auto-generated catch block
133
			e.printStackTrace();
134
		}
135
	}
136
	
137
	public void testRemoveBodyElement() {
138
	   XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx");
139
	   assertEquals(3, doc.getParagraphs().size());
140
      assertEquals(3, doc.getBodyElements().size());
141
      
142
      XWPFParagraph p1 = doc.getParagraphs().get(0);
143
      XWPFParagraph p2 = doc.getParagraphs().get(1);
144
      XWPFParagraph p3 = doc.getParagraphs().get(2);
145
      
146
      assertEquals(p1, doc.getBodyElements().get(0));
147
      assertEquals(p1, doc.getParagraphs().get(0));
148
      assertEquals(p2, doc.getBodyElements().get(1));
149
      assertEquals(p2, doc.getParagraphs().get(1));
150
      assertEquals(p3, doc.getBodyElements().get(2));
151
      assertEquals(p3, doc.getParagraphs().get(2));
152
      
153
      // Add another
154
      XWPFParagraph p4 = doc.createParagraph();
155
      
156
      assertEquals(4, doc.getParagraphs().size());
157
      assertEquals(4, doc.getBodyElements().size());
158
      assertEquals(p1, doc.getBodyElements().get(0));
159
      assertEquals(p1, doc.getParagraphs().get(0));
160
      assertEquals(p2, doc.getBodyElements().get(1));
161
      assertEquals(p2, doc.getParagraphs().get(1));
162
      assertEquals(p3, doc.getBodyElements().get(2));
163
      assertEquals(p3, doc.getParagraphs().get(2));
164
      assertEquals(p4, doc.getBodyElements().get(3));
165
      assertEquals(p4, doc.getParagraphs().get(3));
166
      
167
      // Remove the 2nd
168
      assertEquals(true, doc.removeBodyElement(1));
169
      assertEquals(3, doc.getParagraphs().size());
170
      assertEquals(3, doc.getBodyElements().size());
171
      
172
      assertEquals(p1, doc.getBodyElements().get(0));
173
      assertEquals(p1, doc.getParagraphs().get(0));
174
      assertEquals(p3, doc.getBodyElements().get(1));
175
      assertEquals(p3, doc.getParagraphs().get(1));
176
      assertEquals(p4, doc.getBodyElements().get(2));
177
      assertEquals(p4, doc.getParagraphs().get(2));
178
      
179
      // Remove the 1st
180
      assertEquals(true, doc.removeBodyElement(0));
181
      assertEquals(2, doc.getParagraphs().size());
182
      assertEquals(2, doc.getBodyElements().size());
183
      
184
      assertEquals(p3, doc.getBodyElements().get(0));
185
      assertEquals(p3, doc.getParagraphs().get(0));
186
      assertEquals(p4, doc.getBodyElements().get(1));
187
      assertEquals(p4, doc.getParagraphs().get(1));
188
      
189
      // Remove the last
190
      assertEquals(true, doc.removeBodyElement(1));
191
      assertEquals(1, doc.getParagraphs().size());
192
      assertEquals(1, doc.getBodyElements().size());
193
      
194
      assertEquals(p3, doc.getBodyElements().get(0));
195
      assertEquals(p3, doc.getParagraphs().get(0));
196
	}
197
}
(-)src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFNumbering.java (-1 / +2 lines)
Lines 17-22 Link Here
17
17
18
package org.apache.poi.xwpf.usermodel;
18
package org.apache.poi.xwpf.usermodel;
19
19
20
import java.io.IOException;
20
import java.math.BigInteger;
21
import java.math.BigInteger;
21
22
22
import junit.framework.TestCase;
23
import junit.framework.TestCase;
Lines 25-31 Link Here
25
26
26
public class TestXWPFNumbering extends TestCase {
27
public class TestXWPFNumbering extends TestCase {
27
	
28
	
28
	public void testCompareAbstractNum(){
29
	public void testCompareAbstractNum() throws IOException{
29
		XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Numbering.docx");
30
		XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Numbering.docx");
30
		XWPFNumbering numbering = doc.getNumbering();
31
		XWPFNumbering numbering = doc.getNumbering();
31
		BigInteger numId = BigInteger.valueOf(1);
32
		BigInteger numId = BigInteger.valueOf(1);
(-)src/ooxml/testcases/org/apache/poi/xwpf/extractor/TestXWPFWordExtractor.java (-14 / +22 lines)
Lines 17-22 Link Here
17
17
18
package org.apache.poi.xwpf.extractor;
18
package org.apache.poi.xwpf.extractor;
19
19
20
import java.io.IOException;
21
20
import junit.framework.TestCase;
22
import junit.framework.TestCase;
21
23
22
import org.apache.poi.xwpf.XWPFTestDataSamples;
24
import org.apache.poi.xwpf.XWPFTestDataSamples;
Lines 29-36 Link Here
29
31
30
    /**
32
    /**
31
     * Get text out of the simple file
33
     * Get text out of the simple file
34
     * @throws IOException 
32
     */
35
     */
33
    public void testGetSimpleText() {
36
    public void testGetSimpleText() throws IOException {
34
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx");
37
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx");
35
        XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
38
        XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
36
39
Lines 58-65 Link Here
58
61
59
    /**
62
    /**
60
     * Tests getting the text out of a complex file
63
     * Tests getting the text out of a complex file
64
     * @throws IOException 
61
     */
65
     */
62
    public void testGetComplexText() {
66
    public void testGetComplexText() throws IOException {
63
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("IllustrativeCases.docx");
67
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("IllustrativeCases.docx");
64
        XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
68
        XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
65
69
Lines 91-97 Link Here
91
        assertEquals(134, ps);
95
        assertEquals(134, ps);
92
    }
96
    }
93
97
94
    public void testGetWithHyperlinks() {
98
    public void testGetWithHyperlinks() throws IOException {
95
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestDocument.docx");
99
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestDocument.docx");
96
        XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
100
        XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
97
101
Lines 116-122 Link Here
116
        );
120
        );
117
    }
121
    }
118
122
119
    public void testHeadersFooters() {
123
    public void testHeadersFooters() throws IOException {
120
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("ThreeColHeadFoot.docx");
124
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("ThreeColHeadFoot.docx");
121
        XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
125
        XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
122
126
Lines 159-165 Link Here
159
        );
163
        );
160
    }
164
    }
161
165
162
    public void testFootnotes() {
166
    public void testFootnotes() throws IOException {
163
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("footnotes.docx");
167
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("footnotes.docx");
164
        XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
168
        XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
165
169
Lines 167-180 Link Here
167
    }
171
    }
168
172
169
173
170
    public void testTableFootnotes() {
174
    public void testTableFootnotes() throws IOException {
171
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("table_footnotes.docx");
175
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("table_footnotes.docx");
172
        XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
176
        XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
173
177
174
        assertTrue(extractor.getText().contains("snoska"));
178
        assertTrue(extractor.getText().contains("snoska"));
175
    }
179
    }
176
180
177
    public void testFormFootnotes() {
181
    public void testFormFootnotes() throws IOException {
178
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("form_footnotes.docx");
182
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("form_footnotes.docx");
179
        XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
183
        XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
180
184
Lines 183-196 Link Here
183
        assertTrue("Unable to find expected word in text\n" + text, text.contains("test phrase"));
187
        assertTrue("Unable to find expected word in text\n" + text, text.contains("test phrase"));
184
    }
188
    }
185
189
186
    public void testEndnotes() {
190
    public void testEndnotes() throws IOException {
187
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("endnotes.docx");
191
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("endnotes.docx");
188
        XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
192
        XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
189
193
190
        assertTrue(extractor.getText().contains("XXX"));
194
        assertTrue(extractor.getText().contains("XXX"));
191
    }
195
    }
192
196
193
    public void testInsertedDeletedText() {
197
    public void testInsertedDeletedText() throws IOException {
194
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("delins.docx");
198
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("delins.docx");
195
        XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
199
        XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
196
200
Lines 198-204 Link Here
198
        assertTrue(extractor.getText().contains("extremely well"));
202
        assertTrue(extractor.getText().contains("extremely well"));
199
    }
203
    }
200
204
201
    public void testParagraphHeader() {
205
    public void testParagraphHeader() throws IOException {
202
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Headers.docx");
206
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Headers.docx");
203
        XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
207
        XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
204
208
Lines 210-217 Link Here
210
    /**
214
    /**
211
     * Test that we can open and process .docm
215
     * Test that we can open and process .docm
212
     *  (macro enabled) docx files (bug #45690)
216
     *  (macro enabled) docx files (bug #45690)
217
     * @throws IOException 
213
     */
218
     */
214
    public void testDOCMFiles() {
219
    public void testDOCMFiles() throws IOException {
215
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("45690.docm");
220
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("45690.docm");
216
        XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
221
        XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
217
222
Lines 224-231 Link Here
224
     * Test that we handle things like tabs and
229
     * Test that we handle things like tabs and
225
     *  carriage returns properly in the text that
230
     *  carriage returns properly in the text that
226
     *  we're extracting (bug #49189)
231
     *  we're extracting (bug #49189)
232
     * @throws IOException 
227
     */
233
     */
228
    public void testDocTabs() {
234
    public void testDocTabs() throws IOException {
229
       XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("WithTabs.docx");
235
       XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("WithTabs.docx");
230
       XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
236
       XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
231
 
237
 
Lines 241-248 Link Here
241
    /**
247
    /**
242
     * The output should not contain field codes, e.g. those specified in the
248
     * The output should not contain field codes, e.g. those specified in the
243
     * w:instrText tag (spec sec. 17.16.23)
249
     * w:instrText tag (spec sec. 17.16.23)
250
     * @throws IOException 
244
     */
251
     */
245
    public void testNoFieldCodes() {
252
    public void testNoFieldCodes() throws IOException {
246
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("FieldCodes.docx");
253
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("FieldCodes.docx");
247
        XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
254
        XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
248
        String text = extractor.getText();
255
        String text = extractor.getText();
Lines 254-261 Link Here
254
    /**
261
    /**
255
     * The output should contain the values of simple fields, those specified
262
     * The output should contain the values of simple fields, those specified
256
     * with the fldSimple element (spec sec. 17.16.19)
263
     * with the fldSimple element (spec sec. 17.16.19)
264
     * @throws IOException 
257
     */
265
     */
258
    public void testFldSimpleContent() {
266
    public void testFldSimpleContent() throws IOException {
259
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("FldSimple.docx");
267
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("FldSimple.docx");
260
        XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
268
        XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
261
        String text = extractor.getText();
269
        String text = extractor.getText();
(-)src/ooxml/testcases/org/apache/poi/xwpf/AllXWPFTests.java (+1 lines)
Lines 22-27 Link Here
22
22
23
import org.apache.poi.xwpf.extractor.TestXWPFWordExtractor;
23
import org.apache.poi.xwpf.extractor.TestXWPFWordExtractor;
24
import org.apache.poi.xwpf.model.TestXWPFHeaderFooterPolicy;
24
import org.apache.poi.xwpf.model.TestXWPFHeaderFooterPolicy;
25
import org.apache.poi.xwpf.usermodel.TestXWPFDocument;
25
import org.apache.poi.xwpf.usermodel.TestXWPFHeader;
26
import org.apache.poi.xwpf.usermodel.TestXWPFHeader;
26
import org.apache.poi.xwpf.usermodel.TestXWPFHeadings;
27
import org.apache.poi.xwpf.usermodel.TestXWPFHeadings;
27
import org.apache.poi.xwpf.usermodel.TestXWPFNumbering;
28
import org.apache.poi.xwpf.usermodel.TestXWPFNumbering;
(-)src/ooxml/testcases/org/apache/poi/TestPOIXMLProperties.java (-4 / +9 lines)
Lines 17-32 Link Here
17
17
18
package org.apache.poi;
18
package org.apache.poi;
19
19
20
import java.util.*;
20
import java.io.IOException;
21
import java.util.Calendar;
22
import java.util.Date;
23
import java.util.GregorianCalendar;
24
import java.util.Locale;
25
import java.util.TimeZone;
21
26
22
import junit.framework.TestCase;
27
import junit.framework.TestCase;
23
28
24
import org.apache.poi.POIXMLProperties.CoreProperties;
29
import org.apache.poi.POIXMLProperties.CoreProperties;
30
import org.apache.poi.openxml4j.util.Nullable;
25
import org.apache.poi.xssf.XSSFTestDataSamples;
31
import org.apache.poi.xssf.XSSFTestDataSamples;
26
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
32
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
27
import org.apache.poi.xwpf.XWPFTestDataSamples;
33
import org.apache.poi.xwpf.XWPFTestDataSamples;
28
import org.apache.poi.xwpf.usermodel.XWPFDocument;
34
import org.apache.poi.xwpf.usermodel.XWPFDocument;
29
import org.apache.poi.openxml4j.util.Nullable;
30
35
31
/**
36
/**
32
 * Test setting extended and custom OOXML properties
37
 * Test setting extended and custom OOXML properties
Lines 35-41 Link Here
35
	private POIXMLProperties _props;
40
	private POIXMLProperties _props;
36
	private CoreProperties _coreProperties;
41
	private CoreProperties _coreProperties;
37
42
38
	public void setUp() {
43
	public void setUp() throws IOException {
39
		XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("documentProperties.docx");
44
		XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("documentProperties.docx");
40
		_props = sampleDoc.getProperties();
45
		_props = sampleDoc.getProperties();
41
		_coreProperties = _props.getCoreProperties();
46
		_coreProperties = _props.getCoreProperties();
Lines 152-158 Link Here
152
		assertEquals("Hello World", title);
157
		assertEquals("Hello World", title);
153
	}
158
	}
154
159
155
    public void testTransitiveSetters() {
160
    public void testTransitiveSetters() throws IOException {
156
		XWPFDocument doc = new XWPFDocument();
161
		XWPFDocument doc = new XWPFDocument();
157
        CoreProperties cp = doc.getProperties().getCoreProperties();
162
        CoreProperties cp = doc.getProperties().getCoreProperties();
158
163
(-)src/ooxml/testcases/org/apache/poi/xwpf/XWPFTestDataSamples.java (-15 / +15 lines)
Lines 22-27 Link Here
22
import java.io.InputStream;
22
import java.io.InputStream;
23
23
24
import org.apache.poi.POIDataSamples;
24
import org.apache.poi.POIDataSamples;
25
import org.apache.poi.util.IOUtils;
26
import org.apache.poi.util.PackageHelper;
25
import org.apache.poi.xwpf.usermodel.XWPFDocument;
27
import org.apache.poi.xwpf.usermodel.XWPFDocument;
26
28
27
/**
29
/**
Lines 29-51 Link Here
29
 */
31
 */
30
public class XWPFTestDataSamples {
32
public class XWPFTestDataSamples {
31
33
32
    public static XWPFDocument openSampleDocument(String sampleName) {
34
    public static XWPFDocument openSampleDocument(String sampleName) throws IOException {
33
        InputStream is = POIDataSamples.getDocumentInstance().openResourceAsStream(sampleName);
35
        InputStream is = POIDataSamples.getDocumentInstance().openResourceAsStream(sampleName);
34
        try {
36
        return new XWPFDocument(is);
35
            return new XWPFDocument(is);
37
    }
36
        } catch (IOException e) {
38
37
            throw new RuntimeException(e);
39
    public static XWPFDocument writeOutAndReadBack(XWPFDocument doc) throws IOException {
38
        }
40
        ByteArrayOutputStream baos = new ByteArrayOutputStream(4096);
41
        doc.write(baos);
42
        ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
43
        return new XWPFDocument(bais);
39
    }
44
    }
40
45
41
    public static XWPFDocument writeOutAndReadBack(XWPFDocument doc) {
46
    public static byte[] getImage(String filename) throws IOException {
42
        try {
47
        InputStream is = POIDataSamples.getDocumentInstance().openResourceAsStream(filename);
43
            ByteArrayOutputStream baos = new ByteArrayOutputStream(4096);
48
        byte[] result = IOUtils.toByteArray(is);
44
            doc.write(baos);
49
        return result;
45
            ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
46
            return new XWPFDocument(bais);
47
        } catch (IOException e) {
48
            throw new RuntimeException(e);
49
        }
50
    }
50
    }
51
}
51
}
(-)src/ooxml/testcases/org/apache/poi/util/TestIdentifierManager.java (+113 lines)
Line 0 Link Here
1
package org.apache.poi.util;
2
3
import junit.framework.TestCase;
4
5
public class TestIdentifierManager extends TestCase
6
{
7
    public void testBasic()
8
    {
9
        IdentifierManager manager = new IdentifierManager(0L,100L);
10
        assertEquals(101L,manager.getRemainingIdentifiers());
11
        assertEquals(0L,manager.reserveNew());
12
        assertEquals(100L,manager.getRemainingIdentifiers());
13
        assertEquals(1L,manager.reserve(0L));
14
        assertEquals(99L,manager.getRemainingIdentifiers());
15
    }
16
17
    public void testLongLimits()
18
    {
19
        long min = IdentifierManager.MIN_ID;
20
        long max = IdentifierManager.MAX_ID;
21
        IdentifierManager manager = new IdentifierManager(min,max);
22
        assertTrue("Limits lead to a long variable overflow", max - min + 1 > 0);
23
        assertTrue("Limits lead to a long variable overflow", manager.getRemainingIdentifiers() > 0);
24
        assertEquals(min,manager.reserveNew());
25
        assertEquals(max,manager.reserve(max));
26
        assertEquals(max - min -1, manager.getRemainingIdentifiers());
27
        manager.release(max);
28
        manager.release(min);
29
    }
30
    
31
    public void testReserve()
32
    {
33
        IdentifierManager manager = new IdentifierManager(10L,30L);
34
        assertEquals(12L,manager.reserve(12L));
35
        long reserve = manager.reserve(12L);
36
        assertFalse("Same id must be reserved twice!",reserve == 12L);
37
        assertTrue(manager.release(12L));
38
        assertTrue(manager.release(reserve));
39
        assertFalse(manager.release(12L));
40
        assertFalse(manager.release(reserve));
41
        
42
        manager = new IdentifierManager(0L,2L);
43
        assertEquals(0L,manager.reserve(0L));
44
        assertEquals(1L,manager.reserve(1L));
45
        assertEquals(2L,manager.reserve(2L));
46
        try
47
        {
48
            manager.reserve(0L);
49
            fail("Exception expected");
50
        }
51
        catch(IllegalStateException e)
52
        {
53
            // expected
54
        }
55
        try
56
        {
57
            manager.reserve(1L);
58
            fail("Exception expected");
59
        }
60
        catch(IllegalStateException e)
61
        {
62
            // expected
63
        }
64
        try
65
        {
66
            manager.reserve(2L);
67
            fail("Exception expected");
68
        }
69
        catch(IllegalStateException e)
70
        {
71
            // expected
72
        }
73
    }
74
75
    public void testReserveNew()
76
    {
77
        IdentifierManager manager = new IdentifierManager(10L,12L);
78
        assertSame(10L,manager.reserveNew());
79
        assertSame(11L,manager.reserveNew());
80
        assertSame(12L,manager.reserveNew());
81
        try {
82
            manager.reserveNew();
83
            fail("IllegalStateException expected");
84
        }
85
        catch (IllegalStateException e)
86
        {
87
            // expected
88
        }
89
    }
90
    
91
    public void testRelease() {
92
        IdentifierManager manager = new IdentifierManager(10L,20L);
93
        assertEquals(10L,manager.reserve(10L));
94
        assertEquals(11L,manager.reserve(11L));
95
        assertEquals(12L,manager.reserve(12L));
96
        assertEquals(13L,manager.reserve(13L));
97
        assertEquals(14L,manager.reserve(14L));
98
        
99
        assertTrue(manager.release(10L));
100
        assertEquals(10L,manager.reserve(10L));
101
        assertTrue(manager.release(10L));
102
        
103
        assertTrue(manager.release(11L));
104
        assertEquals(11L,manager.reserve(11L));
105
        assertTrue(manager.release(11L));
106
        assertFalse(manager.release(11L));
107
        assertFalse(manager.release(10L));
108
109
        assertEquals(10L,manager.reserve(10L));
110
        assertEquals(11L,manager.reserve(11L));
111
        assertTrue(manager.release(12L));
112
    }
113
}
0
  + text/plain
114
  + text/plain
(-)src/ooxml/testcases/org/apache/poi/xwpf/model/TestXWPFHeaderFooterPolicy.java (-2 / +4 lines)
Lines 17-22 Link Here
17
17
18
package org.apache.poi.xwpf.model;
18
package org.apache.poi.xwpf.model;
19
19
20
import java.io.IOException;
21
20
import junit.framework.TestCase;
22
import junit.framework.TestCase;
21
23
22
import org.apache.poi.xwpf.XWPFTestDataSamples;
24
import org.apache.poi.xwpf.XWPFTestDataSamples;
Lines 33-41 Link Here
33
	private XWPFDocument oddEven;
35
	private XWPFDocument oddEven;
34
	private XWPFDocument diffFirst;
36
	private XWPFDocument diffFirst;
35
37
36
	protected void setUp() {
38
	protected void setUp() throws IOException {
37
39
38
		noHeader = XWPFTestDataSamples.openSampleDocument("NoHeadFoot.docx");
40
	    noHeader = XWPFTestDataSamples.openSampleDocument("NoHeadFoot.docx");
39
		header = XWPFTestDataSamples.openSampleDocument("ThreeColHead.docx");
41
		header = XWPFTestDataSamples.openSampleDocument("ThreeColHead.docx");
40
		headerFooter = XWPFTestDataSamples.openSampleDocument("SimpleHeadThreeColFoot.docx");
42
		headerFooter = XWPFTestDataSamples.openSampleDocument("SimpleHeadThreeColFoot.docx");
41
		footer = XWPFTestDataSamples.openSampleDocument("FancyFoot.docx");
43
		footer = XWPFTestDataSamples.openSampleDocument("FancyFoot.docx");
(-)src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java (-1 / +2 lines)
Lines 17-22 Link Here
17
17
18
package org.apache.poi.xwpf.usermodel;
18
package org.apache.poi.xwpf.usermodel;
19
19
20
import java.io.IOException;
20
import java.util.ArrayList;
21
import java.util.ArrayList;
21
import java.util.List;
22
import java.util.List;
22
23
Lines 30-36 Link Here
30
//		super.setUp();
31
//		super.setUp();
31
//	}
32
//	}
32
	
33
	
33
	public void testGetUsedStyles(){
34
	public void testGetUsedStyles() throws IOException{
34
		XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("Styles.docx");
35
		XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("Styles.docx");
35
		List<XWPFStyle> testUsedStyleList = new ArrayList<XWPFStyle>();
36
		List<XWPFStyle> testUsedStyleList = new ArrayList<XWPFStyle>();
36
		XWPFStyles styles = sampleDoc.getStyles();
37
		XWPFStyles styles = sampleDoc.getStyles();
(-)src/ooxml/testcases/org/apache/poi/xwpf/model/TestXWPFDecorators.java (-4 / +6 lines)
Lines 17-22 Link Here
17
17
18
package org.apache.poi.xwpf.model;
18
package org.apache.poi.xwpf.model;
19
19
20
import java.io.IOException;
21
20
import junit.framework.TestCase;
22
import junit.framework.TestCase;
21
23
22
import org.apache.poi.xwpf.XWPFTestDataSamples;
24
import org.apache.poi.xwpf.XWPFTestDataSamples;
Lines 32-41 Link Here
32
   private XWPFDocument hyperlink;
34
   private XWPFDocument hyperlink;
33
   private XWPFDocument comments;
35
   private XWPFDocument comments;
34
36
35
   protected void setUp() {
37
   protected void setUp() throws IOException {
36
      simple = XWPFTestDataSamples.openSampleDocument("SampleDoc.docx");
38
        simple = XWPFTestDataSamples.openSampleDocument("SampleDoc.docx");
37
      hyperlink = XWPFTestDataSamples.openSampleDocument("TestDocument.docx");
39
        hyperlink = XWPFTestDataSamples.openSampleDocument("TestDocument.docx");
38
      comments = XWPFTestDataSamples.openSampleDocument("WordWithAttachments.docx");
40
        comments = XWPFTestDataSamples.openSampleDocument("WordWithAttachments.docx");
39
   }
41
   }
40
42
41
   public void testHyperlink() {
43
   public void testHyperlink() {
(-)src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java (-3 / +6 lines)
Lines 17-22 Link Here
17
17
18
package org.apache.poi.xwpf.usermodel;
18
package org.apache.poi.xwpf.usermodel;
19
19
20
import java.io.IOException;
20
import java.math.BigInteger;
21
import java.math.BigInteger;
21
import java.util.List;
22
import java.util.List;
22
23
Lines 49-56 Link Here
49
50
50
    /**
51
    /**
51
     * Check that we get the right paragraph from the header
52
     * Check that we get the right paragraph from the header
53
     * @throws IOException 
52
     */
54
     */
53
    public void disabled_testHeaderParagraph() {
55
    public void disabled_testHeaderParagraph() throws IOException {
54
        XWPFDocument xml = XWPFTestDataSamples.openSampleDocument("ThreeColHead.docx");
56
        XWPFDocument xml = XWPFTestDataSamples.openSampleDocument("ThreeColHead.docx");
55
57
56
        XWPFHeader hdr = xml.getHeaderFooterPolicy().getDefaultHeader();
58
        XWPFHeader hdr = xml.getHeaderFooterPolicy().getDefaultHeader();
Lines 67-74 Link Here
67
69
68
    /**
70
    /**
69
     * Check that we get the right paragraphs from the document
71
     * Check that we get the right paragraphs from the document
72
     * @throws IOException 
70
     */
73
     */
71
    public void disabled_testDocumentParagraph() {
74
    public void disabled_testDocumentParagraph() throws IOException {
72
        XWPFDocument xml = XWPFTestDataSamples.openSampleDocument("ThreeColHead.docx");
75
        XWPFDocument xml = XWPFTestDataSamples.openSampleDocument("ThreeColHead.docx");
73
        List<XWPFParagraph> ps = xml.getParagraphs();
76
        List<XWPFParagraph> ps = xml.getParagraphs();
74
        assertEquals(10, ps.size());
77
        assertEquals(10, ps.size());
Lines 231-237 Link Here
231
        assertEquals(STOnOff.TRUE, ppr.getPageBreakBefore().getVal());
234
        assertEquals(STOnOff.TRUE, ppr.getPageBreakBefore().getVal());
232
    }
235
    }
233
236
234
    public void testBookmarks() {
237
    public void testBookmarks() throws IOException {
235
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("bookmarks.docx");
238
        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("bookmarks.docx");
236
        XWPFParagraph paragraph = doc.getParagraphs().get(0);
239
        XWPFParagraph paragraph = doc.getParagraphs().get(0);
237
        assertEquals("Sample Word Document", paragraph.getText());
240
        assertEquals("Sample Word Document", paragraph.getText());

Return to bug 51265