Centralize logic for finding/opening sample files

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@805928 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Yegor Kozlov 2009-08-19 18:51:44 +00:00
parent ee3718b5a7
commit 3316b64495
36 changed files with 497 additions and 659 deletions

View File

@ -200,6 +200,7 @@ under the License.
<pathelement location="${ooxml.output.dir}"/> <pathelement location="${ooxml.output.dir}"/>
<pathelement location="${ooxml.output.test.dir}"/> <pathelement location="${ooxml.output.test.dir}"/>
<pathelement location="${main.output.test.dir}"/> <!-- ooxml tests use some utilities from main tests --> <pathelement location="${main.output.test.dir}"/> <!-- ooxml tests use some utilities from main tests -->
<pathelement location="${scratchpad.output.test.dir}"/>
<pathelement location="${junit.jar1.dir}"/> <pathelement location="${junit.jar1.dir}"/>
</path> </path>
@ -519,6 +520,7 @@ under the License.
<path refid="ooxml.classpath"/> <path refid="ooxml.classpath"/>
<pathelement path="${ooxml.output.dir}"/> <pathelement path="${ooxml.output.dir}"/>
<pathelement path="${main.output.test.dir}"/> <pathelement path="${main.output.test.dir}"/>
<pathelement path="${scratchpad.output.test.dir}"/>
<pathelement location="${junit.jar1.dir}"/> <pathelement location="${junit.jar1.dir}"/>
</classpath> </classpath>
</javac> </javac>

View File

@ -22,23 +22,18 @@ package org.apache.poi;
import junit.framework.TestCase; import junit.framework.TestCase;
import java.io.*; import java.io.*;
import org.apache.poi.hssf.HSSFTestDataSamples;
import org.apache.poi.openxml4j.opc.OPCPackage;
/** /**
* Class to test that HXF correctly detects OOXML * Class to test that HXF correctly detects OOXML
* documents * documents
*/ */
public class TestDetectAsOOXML extends TestCase public class TestDetectAsOOXML extends TestCase
{ {
public String dirname;
public void setUp() {
dirname = System.getProperty("HSSF.testdata.path");
}
public void testOpensProperly() throws Exception public void testOpensProperly() throws Exception
{ {
File f = new File(dirname + "/sample.xlsx"); OPCPackage.open(HSSFTestDataSamples.openSampleFileStream("sample.xlsx"));
POIXMLDocument.openPackage(f.toString());
} }
public void testDetectAsPOIFS() throws Exception { public void testDetectAsPOIFS() throws Exception {
@ -46,19 +41,19 @@ public class TestDetectAsOOXML extends TestCase
// ooxml file is // ooxml file is
in = new PushbackInputStream( in = new PushbackInputStream(
new FileInputStream(dirname + "/SampleSS.xlsx"), 10 HSSFTestDataSamples.openSampleFileStream("SampleSS.xlsx"), 10
); );
assertTrue(POIXMLDocument.hasOOXMLHeader(in)); assertTrue(POIXMLDocument.hasOOXMLHeader(in));
// xls file isn't // xls file isn't
in = new PushbackInputStream( in = new PushbackInputStream(
new FileInputStream(dirname + "/SampleSS.xls"), 10 HSSFTestDataSamples.openSampleFileStream("SampleSS.xls"), 10
); );
assertFalse(POIXMLDocument.hasOOXMLHeader(in)); assertFalse(POIXMLDocument.hasOOXMLHeader(in));
// text file isn't // text file isn't
in = new PushbackInputStream( in = new PushbackInputStream(
new FileInputStream(dirname + "/SampleSS.txt"), 10 HSSFTestDataSamples.openSampleFileStream("SampleSS.txt"), 10
); );
assertFalse(POIXMLDocument.hasOOXMLHeader(in)); assertFalse(POIXMLDocument.hasOOXMLHeader(in));
} }

View File

@ -175,7 +175,7 @@ public final class TestPOIXMLProperties extends TestCase {
public void testGetSetRevision() { public void testGetSetRevision() {
String revision = _coreProperties.getRevision(); String revision = _coreProperties.getRevision();
assertTrue("Revision number is 1", new Integer(_coreProperties.getRevision()).intValue() > 1); assertTrue("Revision number is 1", new Integer(revision)> 1);
_coreProperties.setRevision("20"); _coreProperties.setRevision("20");
assertEquals("20", _coreProperties.getRevision()); assertEquals("20", _coreProperties.getRevision());
_coreProperties.setRevision("20xx"); _coreProperties.setRevision("20xx");

View File

@ -17,10 +17,8 @@
package org.apache.poi.ss; package org.apache.poi.ss;
import java.io.File;
import java.io.FileInputStream;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.HSSFTestDataSamples;
import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory; import org.apache.poi.ss.usermodel.WorkbookFactory;
@ -30,26 +28,14 @@ import org.apache.poi.openxml4j.opc.OPCPackage;
import junit.framework.TestCase; import junit.framework.TestCase;
public final class TestWorkbookFactory extends TestCase { public final class TestWorkbookFactory extends TestCase {
private File xls; private String xls;
private File xlsx; private String xlsx;
private File txt; private String txt;
protected void setUp() { protected void setUp() {
xls = new File( xls = "SampleSS.xls";
System.getProperty("HSSF.testdata.path") + xlsx = "SampleSS.xlsx";
File.separator + "SampleSS.xls" txt = "SampleSS.txt";
);
xlsx = new File(
System.getProperty("HSSF.testdata.path") +
File.separator + "SampleSS.xlsx"
);
txt = new File(
System.getProperty("HSSF.testdata.path") +
File.separator + "SampleSS.txt"
);
assertTrue(xls.exists());
assertTrue(xlsx.exists());
assertTrue(txt.exists());
} }
public void testCreateNative() throws Exception { public void testCreateNative() throws Exception {
@ -57,14 +43,15 @@ public final class TestWorkbookFactory extends TestCase {
// POIFS -> hssf // POIFS -> hssf
wb = WorkbookFactory.create( wb = WorkbookFactory.create(
new POIFSFileSystem(new FileInputStream(xls)) new POIFSFileSystem(HSSFTestDataSamples.openSampleFileStream(xls))
); );
assertNotNull(wb); assertNotNull(wb);
assertTrue(wb instanceof HSSFWorkbook); assertTrue(wb instanceof HSSFWorkbook);
// Package -> xssf // Package -> xssf
wb = WorkbookFactory.create( wb = WorkbookFactory.create(
OPCPackage.open(xlsx.toString()) OPCPackage.open(
HSSFTestDataSamples.openSampleFileStream(xlsx))
); );
assertNotNull(wb); assertNotNull(wb);
assertTrue(wb instanceof XSSFWorkbook); assertTrue(wb instanceof XSSFWorkbook);
@ -80,20 +67,20 @@ public final class TestWorkbookFactory extends TestCase {
// InputStream -> either // InputStream -> either
wb = WorkbookFactory.create( wb = WorkbookFactory.create(
new FileInputStream(xls) HSSFTestDataSamples.openSampleFileStream(xls)
); );
assertNotNull(wb); assertNotNull(wb);
assertTrue(wb instanceof HSSFWorkbook); assertTrue(wb instanceof HSSFWorkbook);
wb = WorkbookFactory.create( wb = WorkbookFactory.create(
new FileInputStream(xlsx) HSSFTestDataSamples.openSampleFileStream(xlsx)
); );
assertNotNull(wb); assertNotNull(wb);
assertTrue(wb instanceof XSSFWorkbook); assertTrue(wb instanceof XSSFWorkbook);
try { try {
wb = WorkbookFactory.create( wb = WorkbookFactory.create(
new FileInputStream(txt) HSSFTestDataSamples.openSampleFileStream(txt)
); );
fail(); fail();
} catch(IllegalArgumentException e) { } catch(IllegalArgumentException e) {

View File

@ -38,6 +38,14 @@ import org.apache.poi.util.TempFile;
* @author Josh Micich * @author Josh Micich
*/ */
public class XSSFTestDataSamples { public class XSSFTestDataSamples {
public static InputStream openSampleFileStream(String sampleFileName) {
return HSSFTestDataSamples.openSampleFileStream(sampleFileName);
}
public static byte[] getTestDataFileContent(String fileName) {
return HSSFTestDataSamples.getTestDataFileContent(fileName);
}
public static final XSSFWorkbook openSampleWorkbook(String sampleName) { public static final XSSFWorkbook openSampleWorkbook(String sampleName) {
InputStream is = HSSFTestDataSamples.openSampleFileStream(sampleName); InputStream is = HSSFTestDataSamples.openSampleFileStream(sampleName);
try { try {

View File

@ -25,31 +25,16 @@ import junit.framework.TestCase;
import org.apache.poi.util.IOUtils; import org.apache.poi.util.IOUtils;
import org.apache.poi.xssf.usermodel.XSSFRichTextString; import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import org.apache.poi.xssf.XSSFTestDataSamples;
import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.openxml4j.opc.OPCPackage;
/** /**
* Tests for {@link XSSFReader} * Tests for {@link XSSFReader}
*/ */
public final class TestXSSFReader extends TestCase { public final class TestXSSFReader extends TestCase {
private String dirName;
@Override
protected void setUp() {
dirName = System.getProperty("HSSF.testdata.path");
assertNotNull(dirName);
assertTrue( (new File(dirName)).exists() );
// Use system out logger
System.setProperty(
"org.apache.poi.util.POILogger",
"org.apache.poi.util.SystemOutLogger"
);
}
public void testGetBits() throws Exception { public void testGetBits() throws Exception {
File f = new File(dirName, "SampleSS.xlsx"); OPCPackage pkg = OPCPackage.open(XSSFTestDataSamples.openSampleFileStream("SampleSS.xlsx"));
OPCPackage pkg = OPCPackage.open(f.toString());
XSSFReader r = new XSSFReader(pkg); XSSFReader r = new XSSFReader(pkg);
@ -62,8 +47,7 @@ public final class TestXSSFReader extends TestCase {
} }
public void testStyles() throws Exception { public void testStyles() throws Exception {
File f = new File(dirName, "SampleSS.xlsx"); OPCPackage pkg = OPCPackage.open(XSSFTestDataSamples.openSampleFileStream("SampleSS.xlsx"));
OPCPackage pkg = OPCPackage.open(f.toString());
XSSFReader r = new XSSFReader(pkg); XSSFReader r = new XSSFReader(pkg);
@ -72,8 +56,7 @@ public final class TestXSSFReader extends TestCase {
} }
public void testStrings() throws Exception { public void testStrings() throws Exception {
File f = new File(dirName, "SampleSS.xlsx"); OPCPackage pkg = OPCPackage.open(XSSFTestDataSamples.openSampleFileStream("SampleSS.xlsx"));
OPCPackage pkg = OPCPackage.open(f.toString());
XSSFReader r = new XSSFReader(pkg); XSSFReader r = new XSSFReader(pkg);
@ -82,8 +65,7 @@ public final class TestXSSFReader extends TestCase {
} }
public void testSheets() throws Exception { public void testSheets() throws Exception {
File f = new File(dirName, "SampleSS.xlsx"); OPCPackage pkg = OPCPackage.open(XSSFTestDataSamples.openSampleFileStream("SampleSS.xlsx"));
OPCPackage pkg = OPCPackage.open(f.toString());
XSSFReader r = new XSSFReader(pkg); XSSFReader r = new XSSFReader(pkg);
byte[] data = new byte[4096]; byte[] data = new byte[4096];
@ -115,8 +97,7 @@ public final class TestXSSFReader extends TestCase {
* (as they are defined in the workbook.xml) * (as they are defined in the workbook.xml)
*/ */
public void testOrderOfSheets() throws Exception { public void testOrderOfSheets() throws Exception {
File f = new File(dirName, "reordered_sheets.xlsx"); OPCPackage pkg = OPCPackage.open(XSSFTestDataSamples.openSampleFileStream("reordered_sheets.xlsx"));
OPCPackage pkg = OPCPackage.open(f.toString());
XSSFReader r = new XSSFReader(pkg); XSSFReader r = new XSSFReader(pkg);

View File

@ -19,7 +19,6 @@ package org.apache.poi.xssf.model;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.File;
import java.util.List; import java.util.List;
import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Cell;
@ -120,14 +119,7 @@ public class TestCommentsTable extends TestCase {
} }
public void testDontLoostNewLines() throws Exception { public void testDontLoostNewLines() throws Exception {
File xml = new File( XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("WithVariousData.xlsx");
System.getProperty("HSSF.testdata.path") +
File.separator + "WithVariousData.xlsx"
);
assertTrue(xml.exists());
OPCPackage pkg = OPCPackage.open(xml.toString());
XSSFWorkbook wb = new XSSFWorkbook(pkg);
List<POIXMLDocumentPart> rels = wb.getSheetAt(0).getRelations(); List<POIXMLDocumentPart> rels = wb.getSheetAt(0).getRelations();
CommentsTable ct = null; CommentsTable ct = null;
for(POIXMLDocumentPart p : rels) { for(POIXMLDocumentPart p : rels) {
@ -171,13 +163,7 @@ public class TestCommentsTable extends TestCase {
} }
public void testExisting() throws Exception { public void testExisting() throws Exception {
File xml = new File( XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("WithVariousData.xlsx");
System.getProperty("HSSF.testdata.path") +
File.separator + "WithVariousData.xlsx"
);
assertTrue(xml.exists());
XSSFWorkbook workbook = new XSSFWorkbook(xml.toString());
Sheet sheet1 = workbook.getSheetAt(0); Sheet sheet1 = workbook.getSheetAt(0);
Sheet sheet2 = workbook.getSheetAt(1); Sheet sheet2 = workbook.getSheetAt(1);
@ -207,13 +193,7 @@ public class TestCommentsTable extends TestCase {
} }
public void testWriteRead() throws Exception { public void testWriteRead() throws Exception {
File xml = new File( XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("WithVariousData.xlsx");
System.getProperty("HSSF.testdata.path") +
File.separator + "WithVariousData.xlsx"
);
assertTrue(xml.exists());
XSSFWorkbook workbook = new XSSFWorkbook(xml.toString());
XSSFSheet sheet1 = workbook.getSheetAt(0); XSSFSheet sheet1 = workbook.getSheetAt(0);
XSSFSheet sheet2 = workbook.getSheetAt(1); XSSFSheet sheet2 = workbook.getSheetAt(1);
@ -260,13 +240,7 @@ public class TestCommentsTable extends TestCase {
} }
public void testReadWriteMultipleAuthors() throws Exception { public void testReadWriteMultipleAuthors() throws Exception {
File xml = new File( XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("WithMoreVariousData.xlsx");
System.getProperty("HSSF.testdata.path") +
File.separator + "WithMoreVariousData.xlsx"
);
assertTrue(xml.exists());
XSSFWorkbook workbook = new XSSFWorkbook(xml.toString());
XSSFSheet sheet1 = workbook.getSheetAt(0); XSSFSheet sheet1 = workbook.getSheetAt(0);
XSSFSheet sheet2 = workbook.getSheetAt(1); XSSFSheet sheet2 = workbook.getSheetAt(1);

View File

@ -17,8 +17,6 @@
package org.apache.poi.xssf.model; package org.apache.poi.xssf.model;
import java.io.File;
import org.apache.poi.xssf.usermodel.XSSFCellStyle; import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.XSSFTestDataSamples; import org.apache.poi.xssf.XSSFTestDataSamples;
@ -26,15 +24,7 @@ import org.apache.poi.xssf.XSSFTestDataSamples;
import junit.framework.TestCase; import junit.framework.TestCase;
public final class TestStylesTable extends TestCase { public final class TestStylesTable extends TestCase {
private File xml; private String testFile = "Formatting.xlsx";
protected void setUp() {
xml = new File(
System.getProperty("HSSF.testdata.path") +
File.separator + "Formatting.xlsx"
);
assertTrue(xml.exists());
}
public void testCreateNew() { public void testCreateNew() {
StylesTable st = new StylesTable(); StylesTable st = new StylesTable();
@ -64,7 +54,7 @@ public final class TestStylesTable extends TestCase {
} }
public void testLoadExisting() throws Exception { public void testLoadExisting() throws Exception {
XSSFWorkbook workbook = new XSSFWorkbook(xml.toString()); XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook(testFile);
assertNotNull(workbook.getStylesSource()); assertNotNull(workbook.getStylesSource());
StylesTable st = workbook.getStylesSource(); StylesTable st = workbook.getStylesSource();
@ -72,7 +62,7 @@ public final class TestStylesTable extends TestCase {
doTestExisting(st); doTestExisting(st);
} }
public void testLoadSaveLoad() throws Exception { public void testLoadSaveLoad() throws Exception {
XSSFWorkbook workbook = new XSSFWorkbook(xml.toString()); XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook(testFile);
assertNotNull(workbook.getStylesSource()); assertNotNull(workbook.getStylesSource());
StylesTable st = workbook.getStylesSource(); StylesTable st = workbook.getStylesSource();
@ -136,7 +126,7 @@ public final class TestStylesTable extends TestCase {
} }
public void testPopulateExisting() throws Exception { public void testPopulateExisting() throws Exception {
XSSFWorkbook workbook = new XSSFWorkbook(xml.toString()); XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook(testFile);
assertNotNull(workbook.getStylesSource()); assertNotNull(workbook.getStylesSource());
StylesTable st = workbook.getStylesSource(); StylesTable st = workbook.getStylesSource();

View File

@ -39,13 +39,7 @@ public final class TestXSSFHyperlink extends BaseTestHyperlink {
} }
public void testLoadExisting() throws Exception { public void testLoadExisting() throws Exception {
File xml = new File( XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("WithMoreVariousData.xlsx");
System.getProperty("HSSF.testdata.path") +
File.separator + "WithMoreVariousData.xlsx"
);
assertTrue(xml.exists());
XSSFWorkbook workbook = new XSSFWorkbook(xml.toString());
assertEquals(3, workbook.getNumberOfSheets()); assertEquals(3, workbook.getNumberOfSheets());
XSSFSheet sheet = workbook.getSheetAt(0); XSSFSheet sheet = workbook.getSheetAt(0);
@ -56,13 +50,7 @@ public final class TestXSSFHyperlink extends BaseTestHyperlink {
} }
public void testLoadSave() throws Exception { public void testLoadSave() throws Exception {
File xml = new File( XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("WithMoreVariousData.xlsx");
System.getProperty("HSSF.testdata.path") +
File.separator + "WithMoreVariousData.xlsx"
);
assertTrue(xml.exists());
XSSFWorkbook workbook = new XSSFWorkbook(xml.toString());
CreationHelper createHelper = workbook.getCreationHelper(); CreationHelper createHelper = workbook.getCreationHelper();
assertEquals(3, workbook.getNumberOfSheets()); assertEquals(3, workbook.getNumberOfSheets());
XSSFSheet sheet = workbook.getSheetAt(0); XSSFSheet sheet = workbook.getSheetAt(0);

View File

@ -17,8 +17,6 @@
package org.apache.poi.xssf.usermodel; package org.apache.poi.xssf.usermodel;
import java.io.File;
import org.apache.poi.ss.usermodel.BaseTestSheet; import org.apache.poi.ss.usermodel.BaseTestSheet;
import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.Workbook;
@ -54,13 +52,7 @@ public class TestXSSFSheet extends BaseTestSheet {
} }
public void testExistingHeaderFooter() throws Exception { public void testExistingHeaderFooter() throws Exception {
File xml = new File( XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("45540_classic_Header.xlsx");
System.getProperty("HSSF.testdata.path") +
File.separator + "45540_classic_Header.xlsx"
);
assertTrue(xml.exists());
XSSFWorkbook workbook = new XSSFWorkbook(xml.toString());
XSSFOddHeader hdr; XSSFOddHeader hdr;
XSSFOddFooter ftr; XSSFOddFooter ftr;

View File

@ -29,27 +29,10 @@ import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFRelation; import org.apache.poi.xwpf.usermodel.XWPFRelation;
public final class TestXWPFDocument extends TestCase { public final class TestXWPFDocument extends TestCase {
private File sampleFile;
private File complexFile;
protected void setUp() throws Exception {
super.setUp();
sampleFile = new File(
System.getProperty("HWPF.testdata.path") +
File.separator + "sample.docx"
);
complexFile = new File(
System.getProperty("HWPF.testdata.path") +
File.separator + "IllustrativeCases.docx"
);
assertTrue(sampleFile.exists());
assertTrue(complexFile.exists());
}
public void testContainsMainContentType() throws Exception { public void testContainsMainContentType() throws Exception {
OPCPackage pack = POIXMLDocument.openPackage(sampleFile.toString()); XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx");
OPCPackage pack = doc.getPackage();
boolean found = false; boolean found = false;
for(PackagePart part : pack.getParts()) { for(PackagePart part : pack.getParts()) {
@ -62,40 +45,24 @@ public final class TestXWPFDocument extends TestCase {
} }
public void testOpen() throws Exception { public void testOpen() throws Exception {
POIXMLDocument.openPackage(sampleFile.toString());
POIXMLDocument.openPackage(complexFile.toString());
new XWPFDocument(
POIXMLDocument.openPackage(sampleFile.toString())
);
new XWPFDocument(
POIXMLDocument.openPackage(complexFile.toString())
);
XWPFDocument xml; XWPFDocument xml;
// Simple file // Simple file
xml = new XWPFDocument( xml = XWPFTestDataSamples.openSampleDocument("sample.docx");
POIXMLDocument.openPackage(sampleFile.toString())
);
// Check it has key parts // Check it has key parts
assertNotNull(xml.getDocument()); assertNotNull(xml.getDocument());
assertNotNull(xml.getDocument().getBody()); assertNotNull(xml.getDocument().getBody());
assertNotNull(xml.getStyle()); assertNotNull(xml.getStyle());
// Complex file // Complex file
xml = new XWPFDocument( xml = XWPFTestDataSamples.openSampleDocument("IllustrativeCases.docx");
POIXMLDocument.openPackage(complexFile.toString())
);
assertNotNull(xml.getDocument()); assertNotNull(xml.getDocument());
assertNotNull(xml.getDocument().getBody()); assertNotNull(xml.getDocument().getBody());
assertNotNull(xml.getStyle()); assertNotNull(xml.getStyle());
} }
public void testMetadataBasics() throws Exception { public void testMetadataBasics() throws Exception {
XWPFDocument xml = new XWPFDocument( XWPFDocument xml = XWPFTestDataSamples.openSampleDocument("sample.docx");
POIXMLDocument.openPackage(sampleFile.toString())
);
assertNotNull(xml.getProperties().getCoreProperties()); assertNotNull(xml.getProperties().getCoreProperties());
assertNotNull(xml.getProperties().getExtendedProperties()); assertNotNull(xml.getProperties().getExtendedProperties());
@ -108,9 +75,7 @@ public final class TestXWPFDocument extends TestCase {
} }
public void testMetadataComplex() throws Exception { public void testMetadataComplex() throws Exception {
XWPFDocument xml = new XWPFDocument( XWPFDocument xml = XWPFTestDataSamples.openSampleDocument("IllustrativeCases.docx");
POIXMLDocument.openPackage(complexFile.toString())
);
assertNotNull(xml.getProperties().getCoreProperties()); assertNotNull(xml.getProperties().getCoreProperties());
assertNotNull(xml.getProperties().getExtendedProperties()); assertNotNull(xml.getProperties().getExtendedProperties());

View File

@ -0,0 +1,54 @@
/* ====================================================================
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.xwpf;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.hwpf.HWPFTestDataSamples;
import org.apache.poi.POIDataSamples;
import java.io.*;
/**
* @author Yegor Kozlov
*/
public class XWPFTestDataSamples {
public static XWPFDocument openSampleDocument(String sampleName) {
InputStream is = HWPFTestDataSamples.openSampleFileStream(sampleName);
try {
return new XWPFDocument(is);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static XWPFDocument writeOutAndReadBack(XWPFDocument doc) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream(4096);
doc.write(baos);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
return new XWPFDocument(bais);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static POIDataSamples getInstance(){
return HWPFTestDataSamples.getInstance();
}
}

View File

@ -21,6 +21,7 @@ import java.io.IOException;
import org.apache.poi.POIXMLDocument; import org.apache.poi.POIXMLDocument;
import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.XWPFTestDataSamples;
import junit.framework.TestCase; import junit.framework.TestCase;
@ -33,7 +34,7 @@ public class TestXWPFWordExtractor extends TestCase {
* Get text out of the simple file * Get text out of the simple file
*/ */
public void testGetSimpleText() throws Exception { public void testGetSimpleText() throws Exception {
XWPFDocument doc = open("sample.docx"); XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx");
XWPFWordExtractor extractor = new XWPFWordExtractor(doc); XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
String text = extractor.getText(); String text = extractor.getText();
@ -62,7 +63,7 @@ public class TestXWPFWordExtractor extends TestCase {
* Tests getting the text out of a complex file * Tests getting the text out of a complex file
*/ */
public void testGetComplexText() throws Exception { public void testGetComplexText() throws Exception {
XWPFDocument doc = open("IllustrativeCases.docx"); XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("IllustrativeCases.docx");
XWPFWordExtractor extractor = new XWPFWordExtractor(doc); XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
String text = extractor.getText(); String text = extractor.getText();
@ -94,7 +95,7 @@ public class TestXWPFWordExtractor extends TestCase {
} }
public void testGetWithHyperlinks() throws Exception { public void testGetWithHyperlinks() throws Exception {
XWPFDocument doc = open("TestDocument.docx"); XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestDocument.docx");
XWPFWordExtractor extractor = new XWPFWordExtractor(doc); XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
// Now check contents // Now check contents
@ -119,7 +120,7 @@ public class TestXWPFWordExtractor extends TestCase {
} }
public void testHeadersFooters() throws Exception { public void testHeadersFooters() throws Exception {
XWPFDocument doc = open("ThreeColHeadFoot.docx"); XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("ThreeColHeadFoot.docx");
XWPFWordExtractor extractor = new XWPFWordExtractor(doc); XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
assertEquals( assertEquals(
@ -138,7 +139,7 @@ public class TestXWPFWordExtractor extends TestCase {
// Now another file, expect multiple headers // Now another file, expect multiple headers
// and multiple footers // and multiple footers
doc = open("DiffFirstPageHeadFoot.docx"); doc = XWPFTestDataSamples.openSampleDocument("DiffFirstPageHeadFoot.docx");
extractor = new XWPFWordExtractor(doc); extractor = new XWPFWordExtractor(doc);
extractor = extractor =
new XWPFWordExtractor(doc); new XWPFWordExtractor(doc);
@ -162,7 +163,7 @@ public class TestXWPFWordExtractor extends TestCase {
} }
public void testFootnotes() throws Exception { public void testFootnotes() throws Exception {
XWPFDocument doc = open("footnotes.docx"); XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("footnotes.docx");
XWPFWordExtractor extractor = new XWPFWordExtractor(doc); XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
assertTrue(extractor.getText().contains("snoska")); assertTrue(extractor.getText().contains("snoska"));
@ -170,14 +171,14 @@ public class TestXWPFWordExtractor extends TestCase {
public void testTableFootnotes() throws Exception { public void testTableFootnotes() throws Exception {
XWPFDocument doc = open("table_footnotes.docx"); XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("table_footnotes.docx");
XWPFWordExtractor extractor = new XWPFWordExtractor(doc); XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
assertTrue(extractor.getText().contains("snoska")); assertTrue(extractor.getText().contains("snoska"));
} }
public void testFormFootnotes() throws Exception { public void testFormFootnotes() throws Exception {
XWPFDocument doc = open("form_footnotes.docx"); XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("form_footnotes.docx");
XWPFWordExtractor extractor = new XWPFWordExtractor(doc); XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
String text = extractor.getText(); String text = extractor.getText();
@ -186,33 +187,18 @@ public class TestXWPFWordExtractor extends TestCase {
} }
public void testEndnotes() throws Exception { public void testEndnotes() throws Exception {
XWPFDocument doc = open("endnotes.docx"); XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("endnotes.docx");
XWPFWordExtractor extractor = new XWPFWordExtractor(doc); XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
assertTrue(extractor.getText().contains("XXX")); assertTrue(extractor.getText().contains("XXX"));
} }
public void testInsertedDeletedText() throws Exception { public void testInsertedDeletedText() throws Exception {
XWPFDocument doc = open("delins.docx"); XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("delins.docx");
XWPFWordExtractor extractor = new XWPFWordExtractor(doc); XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
assertTrue(extractor.getText().contains("pendant worn")); assertTrue(extractor.getText().contains("pendant worn"));
assertTrue(extractor.getText().contains("extremely well")); assertTrue(extractor.getText().contains("extremely well"));
} }
//TODO use the same logic for opening test files as in HSSFTestDataSamples
private XWPFDocument open(String sampleFileName) throws IOException {
File file = new File(
System.getProperty("HWPF.testdata.path"), sampleFileName);
try {
if(!sampleFileName.equals(file.getCanonicalFile().getName())){
throw new RuntimeException("File name is case-sensitive: requested '" + sampleFileName
+ "' but actual file is '" + file.getCanonicalFile().getName() + "'");
}
} catch (IOException e){
throw new RuntimeException(e);
}
return new XWPFDocument(POIXMLDocument.openPackage(file.getPath()));
}
} }

View File

@ -20,6 +20,7 @@ import java.io.File;
import org.apache.poi.POIXMLDocument; import org.apache.poi.POIXMLDocument;
import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.XWPFTestDataSamples;
import junit.framework.TestCase; import junit.framework.TestCase;
@ -36,49 +37,13 @@ public class TestXWPFHeaderFooterPolicy extends TestCase {
protected void setUp() throws Exception { protected void setUp() throws Exception {
super.setUp(); super.setUp();
File file;
file = new File( noHeader = XWPFTestDataSamples.openSampleDocument("NoHeadFoot.docx");
System.getProperty("HWPF.testdata.path") + header = XWPFTestDataSamples.openSampleDocument("ThreeColHead.docx");
File.separator + "NoHeadFoot.docx" headerFooter = XWPFTestDataSamples.openSampleDocument("SimpleHeadThreeColFoot.docx");
); footer = XWPFTestDataSamples.openSampleDocument("FancyFoot.docx");
assertTrue(file.exists()); oddEven = XWPFTestDataSamples.openSampleDocument("PageSpecificHeadFoot.docx");
noHeader = new XWPFDocument(POIXMLDocument.openPackage(file.toString())); diffFirst = XWPFTestDataSamples.openSampleDocument("DiffFirstPageHeadFoot.docx");
file = new File(
System.getProperty("HWPF.testdata.path") +
File.separator + "ThreeColHead.docx"
);
assertTrue(file.exists());
header = new XWPFDocument(POIXMLDocument.openPackage(file.toString()));
file = new File(
System.getProperty("HWPF.testdata.path") +
File.separator + "SimpleHeadThreeColFoot.docx"
);
assertTrue(file.exists());
headerFooter = new XWPFDocument(POIXMLDocument.openPackage(file.toString()));
file = new File(
System.getProperty("HWPF.testdata.path") +
File.separator + "FancyFoot.docx"
);
assertTrue(file.exists());
footer = new XWPFDocument(POIXMLDocument.openPackage(file.toString()));
file = new File(
System.getProperty("HWPF.testdata.path") +
File.separator + "PageSpecificHeadFoot.docx"
);
assertTrue(file.exists());
oddEven = new XWPFDocument(POIXMLDocument.openPackage(file.toString()));
file = new File(
System.getProperty("HWPF.testdata.path") +
File.separator + "DiffFirstPageHeadFoot.docx"
);
assertTrue(file.exists());
diffFirst = new XWPFDocument(POIXMLDocument.openPackage(file.toString()));
} }
public void testPolicy() { public void testPolicy() {

View File

@ -23,6 +23,7 @@ import junit.framework.TestCase;
import org.apache.poi.POIXMLDocument; import org.apache.poi.POIXMLDocument;
import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy; import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy;
import org.apache.poi.xwpf.XWPFTestDataSamples;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHdrFtr; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHdrFtr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR;
@ -31,16 +32,8 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTText;
public class TestXWPFHeader extends TestCase { public class TestXWPFHeader extends TestCase {
public void testSimpleHeader() throws IOException { public void testSimpleHeader() throws IOException {
File sampleFile = new File( XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("headerFooter.docx");
System.getProperty("HWPF.testdata.path") +
File.separator + "headerFooter.docx"
);
assertTrue(sampleFile.exists());
XWPFDocument sampleDoc;
sampleDoc = new XWPFDocument(
POIXMLDocument.openPackage(sampleFile.toString())
);
XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy(); XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy();
@ -55,15 +48,7 @@ public class TestXWPFHeader extends TestCase {
} }
public void testSetHeader() throws IOException { public void testSetHeader() throws IOException {
File sampleFile = new File( XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("SampleDoc.docx");
System.getProperty("HWPF.testdata.path") +
File.separator + "SampleDoc.docx"
);
assertTrue(sampleFile.exists());
XWPFDocument sampleDoc;
sampleDoc = new XWPFDocument(
POIXMLDocument.openPackage(sampleFile.toString())
);
// no header is set (yet) // no header is set (yet)
XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy(); XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy();
assertNull(policy.getDefaultHeader()); assertNull(policy.getDefaultHeader());

View File

@ -22,6 +22,7 @@ import java.math.BigInteger;
import junit.framework.TestCase; import junit.framework.TestCase;
import org.apache.poi.POIXMLDocument; import org.apache.poi.POIXMLDocument;
import org.apache.poi.xwpf.XWPFTestDataSamples;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBorder; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBorder;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTInd; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTInd;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTJc; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTJc;
@ -41,26 +42,13 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTextAlignment;
* Tests for XWPF Paragraphs * Tests for XWPF Paragraphs
*/ */
public final class TestXWPFParagraph extends TestCase { public final class TestXWPFParagraph extends TestCase {
/**
* A simple file
*/
private XWPFDocument xml;
protected void setUp() throws Exception {
super.setUp();
File file = new File(
System.getProperty("HWPF.testdata.path") +
File.separator + "ThreeColHead.docx"
);
assertTrue(file.exists());
xml = new XWPFDocument(POIXMLDocument.openPackage(file.toString()));
}
/** /**
* Check that we get the right paragraph from the header * Check that we get the right paragraph from the header
*/ */
public void disabled_testHeaderParagraph() { public void disabled_testHeaderParagraph() {
XWPFDocument xml = XWPFTestDataSamples.openSampleDocument("ThreeColHead.docx");
XWPFHeader hdr = xml.getHeaderFooterPolicy().getDefaultHeader(); XWPFHeader hdr = xml.getHeaderFooterPolicy().getDefaultHeader();
assertNotNull(hdr); assertNotNull(hdr);
@ -77,6 +65,7 @@ public final class TestXWPFParagraph extends TestCase {
* Check that we get the right paragraphs from the document * Check that we get the right paragraphs from the document
*/ */
public void disabled_testDocumentParagraph() { public void disabled_testDocumentParagraph() {
XWPFDocument xml = XWPFTestDataSamples.openSampleDocument("ThreeColHead.docx");
XWPFParagraph[] ps = xml.getParagraphs(); XWPFParagraph[] ps = xml.getParagraphs();
assertEquals(10, ps.length); assertEquals(10, ps.length);

View File

@ -41,17 +41,8 @@ public final class HWPFDocFixture
{ {
try try
{ {
String filename = System.getProperty("HWPF.testdata.path"); POIFSFileSystem filesystem = new POIFSFileSystem(
if (filename == null) HWPFTestDataSamples.openSampleFileStream("test.doc"));
{
filename = "c:";
}
filename = filename + "/test.doc";
POIFSFileSystem filesystem = new POIFSFileSystem(new FileInputStream(
new File(filename)));
DocumentEntry documentProps = DocumentEntry documentProps =
(DocumentEntry) filesystem.getRoot().getEntry("WordDocument"); (DocumentEntry) filesystem.getRoot().getEntry("WordDocument");

View File

@ -0,0 +1,65 @@
/* ====================================================================
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.hwpf;
import org.apache.poi.POIDataSamples;
import java.io.*;
public class HWPFTestDataSamples extends POIDataSamples {
private static final HWPFTestDataSamples _inst = new HWPFTestDataSamples("HWPF.testdata.path", "SampleDoc.doc");
private HWPFTestDataSamples(String dir, String classPathTestFile){
super(dir, classPathTestFile);
}
public static POIDataSamples getInstance(){
return _inst;
}
public static InputStream openSampleFileStream(String sampleFileName) {
return _inst.openResourceAsStream(sampleFileName);
}
public static byte[] getTestDataFileContent(String fileName) {
return _inst.readFile(fileName);
}
public static HWPFDocument openSampleFile(String sampleFileName) {
try {
return new HWPFDocument(_inst.openResourceAsStream(sampleFileName));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
/**
* Writes a spreadsheet to a <tt>ByteArrayOutputStream</tt> and reads it back
* from a <tt>ByteArrayInputStream</tt>.<p/>
* Useful for verifying that the serialisation round trip
*/
public static HWPFDocument writeOutAndReadBack(HWPFDocument original) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream(4096);
original.write(baos);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
return new HWPFDocument(bais);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}

View File

@ -17,9 +17,6 @@
package org.apache.poi.hwpf; package org.apache.poi.hwpf;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List; import java.util.List;
import junit.framework.TestCase; import junit.framework.TestCase;
@ -43,33 +40,32 @@ public final class TestHWPFPictures extends TestCase {
private String imgDFile; private String imgDFile;
protected void setUp() { protected void setUp() {
String dirname = System.getProperty("HWPF.testdata.path");
docAFile = dirname + "/testPictures.doc"; docAFile = "testPictures.doc";
docBFile = dirname + "/two_images.doc"; docBFile = "two_images.doc";
docCFile = dirname + "/vector_image.doc"; docCFile = "vector_image.doc";
docDFile = dirname + "/GaiaTest.doc"; docDFile = "GaiaTest.doc";
imgAFile = dirname + "/simple_image.jpg"; imgAFile = "simple_image.jpg";
imgBFile = dirname + "/simple_image.png"; imgBFile = "simple_image.png";
imgCFile = dirname + "/vector_image.emf"; imgCFile = "vector_image.emf";
imgDFile = dirname + "/GaiaTestImg.png"; imgDFile = "GaiaTestImg.png";
} }
/** /**
* Test just opening the files * Test just opening the files
*/ */
public void testOpen() throws Exception { public void testOpen() throws Exception {
HWPFDocument docA = new HWPFDocument(new FileInputStream(docAFile)); HWPFDocument docA = HWPFTestDataSamples.openSampleFile(docAFile);
HWPFDocument docB = new HWPFDocument(new FileInputStream(docBFile)); HWPFDocument docB = HWPFTestDataSamples.openSampleFile(docBFile);
} }
/** /**
* Test that we have the right numbers of images in each file * Test that we have the right numbers of images in each file
*/ */
public void testImageCount() throws Exception { public void testImageCount() throws Exception {
HWPFDocument docA = new HWPFDocument(new FileInputStream(docAFile)); HWPFDocument docA = HWPFTestDataSamples.openSampleFile(docAFile);
HWPFDocument docB = new HWPFDocument(new FileInputStream(docBFile)); HWPFDocument docB = HWPFTestDataSamples.openSampleFile(docBFile);
assertNotNull(docA.getPicturesTable()); assertNotNull(docA.getPicturesTable());
assertNotNull(docB.getPicturesTable()); assertNotNull(docB.getPicturesTable());
@ -88,7 +84,7 @@ public final class TestHWPFPictures extends TestCase {
* Test that we have the right images in at least one file * Test that we have the right images in at least one file
*/ */
public void testImageData() throws Exception { public void testImageData() throws Exception {
HWPFDocument docB = new HWPFDocument(new FileInputStream(docBFile)); HWPFDocument docB = HWPFTestDataSamples.openSampleFile(docBFile);
PicturesTable picB = docB.getPicturesTable(); PicturesTable picB = docB.getPicturesTable();
List picturesB = picB.getAllPictures(); List picturesB = picB.getAllPictures();
@ -115,7 +111,7 @@ public final class TestHWPFPictures extends TestCase {
* Test that compressed image data is correctly returned. * Test that compressed image data is correctly returned.
*/ */
public void testCompressedImageData() throws Exception { public void testCompressedImageData() throws Exception {
HWPFDocument docC = new HWPFDocument(new FileInputStream(docCFile)); HWPFDocument docC = HWPFTestDataSamples.openSampleFile(docCFile);
PicturesTable picC = docC.getPicturesTable(); PicturesTable picC = docC.getPicturesTable();
List picturesC = picC.getAllPictures(); List picturesC = picC.getAllPictures();
@ -136,7 +132,7 @@ public final class TestHWPFPictures extends TestCase {
* bug #44937 * bug #44937
*/ */
public void BROKENtestEscherDrawing() throws Exception { public void BROKENtestEscherDrawing() throws Exception {
HWPFDocument docD = new HWPFDocument(new FileInputStream(docDFile)); HWPFDocument docD = HWPFTestDataSamples.openSampleFile(docDFile);
List allPictures = docD.getPicturesTable().getAllPictures(); List allPictures = docD.getPicturesTable().getAllPictures();
assertEquals(1, allPictures.size()); assertEquals(1, allPictures.size());
@ -158,23 +154,6 @@ public final class TestHWPFPictures extends TestCase {
} }
private static byte[] readFile(String file) { private static byte[] readFile(String file) {
ByteArrayOutputStream baos = new ByteArrayOutputStream(); return HWPFTestDataSamples.getTestDataFileContent(file);
try {
FileInputStream fis = new FileInputStream(file);
byte[] buffer = new byte[1024];
int read = 0;
while(read > -1) {
read = fis.read(buffer);
if(read > 0) {
baos.write(buffer,0,read);
}
}
fis.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
return baos.toByteArray();
} }
} }

View File

@ -17,8 +17,6 @@
package org.apache.poi.hwpf; package org.apache.poi.hwpf;
import java.io.FileInputStream;
import org.apache.poi.hwpf.usermodel.Range; import org.apache.poi.hwpf.usermodel.Range;
import junit.framework.TestCase; import junit.framework.TestCase;
@ -96,17 +94,8 @@ public final class TestHWPFRangeParts extends TestCase {
private HWPFDocument docUnicode; private HWPFDocument docUnicode;
public void setUp() throws Exception { public void setUp() throws Exception {
String dirname = System.getProperty("HWPF.testdata.path"); docUnicode = HWPFTestDataSamples.openSampleFile("HeaderFooterUnicode.doc");
docAscii = HWPFTestDataSamples.openSampleFile("ThreeColHeadFoot.doc");
String filename = dirname + "/HeaderFooterUnicode.doc";
docUnicode = new HWPFDocument(
new FileInputStream(filename)
);
filename = dirname + "/ThreeColHeadFoot.doc";
docAscii = new HWPFDocument(
new FileInputStream(filename)
);
} }
public void testBasics() { public void testBasics() {

View File

@ -17,10 +17,10 @@
package org.apache.poi.hwpf.extractor; package org.apache.poi.hwpf.extractor;
import java.io.FileInputStream;
import java.util.Iterator; import java.util.Iterator;
import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.HWPFTestDataSamples;
import org.apache.poi.hwpf.model.TextPiece; import org.apache.poi.hwpf.model.TextPiece;
import org.apache.poi.hwpf.usermodel.Paragraph; import org.apache.poi.hwpf.usermodel.Paragraph;
import org.apache.poi.hwpf.usermodel.Range; import org.apache.poi.hwpf.usermodel.Range;
@ -53,10 +53,7 @@ public final class TestDifferentRoutes extends TestCase {
private HWPFDocument doc; private HWPFDocument doc;
protected void setUp() throws Exception { protected void setUp() throws Exception {
String dirname = System.getProperty("HWPF.testdata.path"); doc = HWPFTestDataSamples.openSampleFile("test2.doc");
String filename = dirname + "/test2.doc";
doc = new HWPFDocument(new FileInputStream(filename));
} }
/** /**

View File

@ -17,14 +17,15 @@
package org.apache.poi.hwpf.extractor; package org.apache.poi.hwpf.extractor;
import java.io.FileInputStream;
import junit.framework.TestCase; import junit.framework.TestCase;
import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.HWPFTestDataSamples;
import org.apache.poi.poifs.filesystem.DirectoryNode; import org.apache.poi.poifs.filesystem.DirectoryNode;
import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import java.io.FileInputStream;
/** /**
* Test the different routes to extracting text * Test the different routes to extracting text
* *
@ -47,7 +48,7 @@ public final class TestWordExtractor extends TestCase {
"\r\n", "\r\n",
"It is otherwise very very boring.\r\n" "It is otherwise very very boring.\r\n"
}; };
private String p_text1_block = new String(); private String p_text1_block = "";
// Well behaved document // Well behaved document
private WordExtractor extractor; private WordExtractor extractor;
@ -64,18 +65,17 @@ public final class TestWordExtractor extends TestCase {
private String filename6; private String filename6;
protected void setUp() throws Exception { protected void setUp() throws Exception {
String dirname = System.getProperty("HWPF.testdata.path");
String pdirname = System.getProperty("POIFS.testdata.path"); String pdirname = System.getProperty("POIFS.testdata.path");
String filename = dirname + "/test2.doc"; String filename = "test2.doc";
String filename2 = dirname + "/test.doc"; String filename2 = "test.doc";
filename3 = pdirname + "/excel_with_embeded.xls"; filename3 = pdirname + "/excel_with_embeded.xls";
filename4 = dirname + "/ThreeColHeadFoot.doc"; filename4 = "ThreeColHeadFoot.doc";
filename5 = dirname + "/HeaderFooterUnicode.doc"; filename5 = "HeaderFooterUnicode.doc";
filename6 = dirname + "/footnote.doc"; filename6 = "footnote.doc";
extractor = new WordExtractor(new FileInputStream(filename)); extractor = new WordExtractor(HWPFTestDataSamples.openSampleFileStream(filename));
extractor2 = new WordExtractor(new FileInputStream(filename2)); extractor2 = new WordExtractor(HWPFTestDataSamples.openSampleFileStream(filename2));
// Build splat'd out text version // Build splat'd out text version
for(int i=0; i<p_text1.length; i++) { for(int i=0; i<p_text1.length; i++) {
@ -123,7 +123,8 @@ public final class TestWordExtractor extends TestCase {
* @throws Exception * @throws Exception
*/ */
public void testExtractFromEmbeded() throws Exception { public void testExtractFromEmbeded() throws Exception {
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(filename3)); POIFSFileSystem fs = new POIFSFileSystem(
new FileInputStream(filename3));
HWPFDocument doc; HWPFDocument doc;
WordExtractor extractor3; WordExtractor extractor3;
@ -164,9 +165,7 @@ public final class TestWordExtractor extends TestCase {
public void testWithHeader() throws Exception { public void testWithHeader() throws Exception {
// Non-unicode // Non-unicode
HWPFDocument doc = new HWPFDocument( HWPFDocument doc = HWPFTestDataSamples.openSampleFile(filename4);
new FileInputStream(filename4)
);
extractor = new WordExtractor(doc); extractor = new WordExtractor(doc);
assertEquals( assertEquals(
@ -181,9 +180,7 @@ public final class TestWordExtractor extends TestCase {
// Unicode // Unicode
doc = new HWPFDocument( doc = HWPFTestDataSamples.openSampleFile(filename5);
new FileInputStream(filename5)
);
extractor = new WordExtractor(doc); extractor = new WordExtractor(doc);
assertEquals( assertEquals(
@ -198,9 +195,7 @@ public final class TestWordExtractor extends TestCase {
public void testWithFooter() throws Exception { public void testWithFooter() throws Exception {
// Non-unicode // Non-unicode
HWPFDocument doc = new HWPFDocument( HWPFDocument doc = HWPFTestDataSamples.openSampleFile(filename4);
new FileInputStream(filename4)
);
extractor = new WordExtractor(doc); extractor = new WordExtractor(doc);
assertEquals( assertEquals(
@ -215,9 +210,7 @@ public final class TestWordExtractor extends TestCase {
// Unicode // Unicode
doc = new HWPFDocument( doc = HWPFTestDataSamples.openSampleFile(filename5);
new FileInputStream(filename5)
);
extractor = new WordExtractor(doc); extractor = new WordExtractor(doc);
assertEquals( assertEquals(
@ -231,9 +224,7 @@ public final class TestWordExtractor extends TestCase {
} }
public void testFootnote() throws Exception { public void testFootnote() throws Exception {
HWPFDocument doc = new HWPFDocument( HWPFDocument doc = HWPFTestDataSamples.openSampleFile(filename6);
new FileInputStream(filename6)
);
extractor = new WordExtractor(doc); extractor = new WordExtractor(doc);
String[] text = extractor.getFootnoteText(); String[] text = extractor.getFootnoteText();
@ -246,9 +237,7 @@ public final class TestWordExtractor extends TestCase {
} }
public void testEndnote() throws Exception { public void testEndnote() throws Exception {
HWPFDocument doc = new HWPFDocument( HWPFDocument doc = HWPFTestDataSamples.openSampleFile(filename6);
new FileInputStream(filename6)
);
extractor = new WordExtractor(doc); extractor = new WordExtractor(doc);
String[] text = extractor.getEndnoteText(); String[] text = extractor.getEndnoteText();
@ -261,9 +250,7 @@ public final class TestWordExtractor extends TestCase {
} }
public void testComments() throws Exception { public void testComments() throws Exception {
HWPFDocument doc = new HWPFDocument( HWPFDocument doc = HWPFTestDataSamples.openSampleFile(filename6);
new FileInputStream(filename6)
);
extractor = new WordExtractor(doc); extractor = new WordExtractor(doc);
String[] text = extractor.getCommentsText(); String[] text = extractor.getCommentsText();

View File

@ -20,6 +20,7 @@ package org.apache.poi.hwpf.extractor;
import java.io.FileInputStream; import java.io.FileInputStream;
import junit.framework.TestCase; import junit.framework.TestCase;
import org.apache.poi.hwpf.HWPFTestDataSamples;
/** /**
* Tests for bugs with the WordExtractor * Tests for bugs with the WordExtractor
@ -27,15 +28,10 @@ import junit.framework.TestCase;
* @author Nick Burch (nick at torchbox dot com) * @author Nick Burch (nick at torchbox dot com)
*/ */
public final class TestWordExtractorBugs extends TestCase { public final class TestWordExtractorBugs extends TestCase {
private String dirname;
protected void setUp() {
dirname = System.getProperty("HWPF.testdata.path");
}
public void testProblemMetadata() throws Exception { public void testProblemMetadata() throws Exception {
String filename = dirname + "/ProblemExtracting.doc";
WordExtractor extractor = WordExtractor extractor =
new WordExtractor(new FileInputStream(filename)); new WordExtractor(HWPFTestDataSamples.openSampleFileStream("ProblemExtracting.doc"));
// Check it gives text without error // Check it gives text without error
extractor.getText(); extractor.getText();

View File

@ -24,6 +24,7 @@ import java.util.List;
import junit.framework.TestCase; import junit.framework.TestCase;
import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.HWPFTestDataSamples;
/** /**
* Unit test for {@link SavedByTable} and {@link SavedByEntry}. * Unit test for {@link SavedByTable} and {@link SavedByEntry}.
@ -33,8 +34,6 @@ import org.apache.poi.hwpf.HWPFDocument;
public final class TestSavedByTable public final class TestSavedByTable
extends TestCase extends TestCase
{ {
/** Data dir */
private File testFile = new File(new File(System.getProperty("HWPF.testdata.path")), "saved-by-table.doc");
/** The expected entries in the test document. */ /** The expected entries in the test document. */
private List expected = Arrays.asList(new Object[] { private List expected = Arrays.asList(new Object[] {
@ -62,16 +61,7 @@ public final class TestSavedByTable
// This document is widely available on the internet as "blair.doc". // This document is widely available on the internet as "blair.doc".
// I tried stripping the content and saving the document but my version // I tried stripping the content and saving the document but my version
// of Word (from Office XP) strips this table out. // of Word (from Office XP) strips this table out.
InputStream stream = new BufferedInputStream(new FileInputStream(testFile)); HWPFDocument doc = HWPFTestDataSamples.openSampleFile("saved-by-table.doc");
HWPFDocument doc;
try
{
doc = new HWPFDocument(stream);
}
finally
{
stream.close();
}
// Check what we just read. // Check what we just read.
assertEquals("List of saved-by entries was not as expected", assertEquals("List of saved-by entries was not as expected",

View File

@ -19,19 +19,18 @@ package org.apache.poi.hwpf.model;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import junit.framework.TestCase; import junit.framework.TestCase;
import org.apache.poi.hwpf.HWPFDocFixture; import org.apache.poi.hwpf.HWPFDocFixture;
import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.HWPFTestDataSamples;
import org.apache.poi.hwpf.model.io.HWPFFileSystem; import org.apache.poi.hwpf.model.io.HWPFFileSystem;
public final class TestTextPieceTable extends TestCase { public final class TestTextPieceTable extends TestCase {
private HWPFDocFixture _hWPFDocFixture; private HWPFDocFixture _hWPFDocFixture;
private String dirname; //private String dirname;
public void testReadWrite() public void testReadWrite()
throws Exception throws Exception
@ -66,9 +65,7 @@ public final class TestTextPieceTable extends TestCase {
* working with pure-ascii * working with pure-ascii
*/ */
public void testAsciiParts() throws Exception { public void testAsciiParts() throws Exception {
HWPFDocument doc = new HWPFDocument( HWPFDocument doc = HWPFTestDataSamples.openSampleFile("ThreeColHeadFoot.doc");
new FileInputStream(new File(dirname, "ThreeColHeadFoot.doc"))
);
TextPieceTable tbl = doc.getTextTable(); TextPieceTable tbl = doc.getTextTable();
// All ascii, so stored in one big lump // All ascii, so stored in one big lump
@ -101,9 +98,7 @@ public final class TestTextPieceTable extends TestCase {
* working with a mix ascii, unicode file * working with a mix ascii, unicode file
*/ */
public void testUnicodeParts() throws Exception { public void testUnicodeParts() throws Exception {
HWPFDocument doc = new HWPFDocument( HWPFDocument doc = HWPFTestDataSamples.openSampleFile("HeaderFooterUnicode.doc");
new FileInputStream(new File(dirname, "HeaderFooterUnicode.doc"))
);
TextPieceTable tbl = doc.getTextTable(); TextPieceTable tbl = doc.getTextTable();
// In three bits, split every 512 bytes // In three bits, split every 512 bytes
@ -177,8 +172,6 @@ public final class TestTextPieceTable extends TestCase {
_hWPFDocFixture = new HWPFDocFixture(this); _hWPFDocFixture = new HWPFDocFixture(this);
_hWPFDocFixture.setUp(); _hWPFDocFixture.setUp();
dirname = System.getProperty("HWPF.testdata.path");
} }
protected void tearDown() protected void tearDown()

View File

@ -19,34 +19,28 @@ package org.apache.poi.hwpf.usermodel;
import junit.framework.TestCase; import junit.framework.TestCase;
import java.io.FileInputStream;
import org.apache.poi.hwpf.usermodel.CharacterRun; import org.apache.poi.hwpf.usermodel.CharacterRun;
import org.apache.poi.hwpf.usermodel.Paragraph; import org.apache.poi.hwpf.usermodel.Paragraph;
import org.apache.poi.hwpf.usermodel.Range; import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.HWPFTestDataSamples;
public class TestBug46610 extends TestCase { public class TestBug46610 extends TestCase {
private String dirname;
protected void setUp() {
dirname = System.getProperty("HWPF.testdata.path");
}
public void testUtf() throws Exception { public void testUtf() throws Exception {
HWPFDocument doc = new HWPFDocument(new FileInputStream(dirname + "/Bug46610_1.doc")); HWPFDocument doc = HWPFTestDataSamples.openSampleFile("Bug46610_1.doc");
runExtract(doc); runExtract(doc);
} }
public void testUtf2() throws Exception { public void testUtf2() throws Exception {
HWPFDocument doc = new HWPFDocument(new FileInputStream(dirname + "/Bug46610_2.doc")); HWPFDocument doc = HWPFTestDataSamples.openSampleFile("Bug46610_2.doc");
runExtract(doc); runExtract(doc);
} }
public void testExtraction() throws Exception { public void testExtraction() throws Exception {
HWPFDocument doc = new HWPFDocument(new FileInputStream(dirname + "/Bug46610_3.doc")); HWPFDocument doc = HWPFTestDataSamples.openSampleFile("Bug46610_3.doc");
String text = runExtract(doc); String text = runExtract(doc);

View File

@ -17,12 +17,10 @@
package org.apache.poi.hwpf.usermodel; package org.apache.poi.hwpf.usermodel;
import java.io.File;
import java.io.FileInputStream;
import junit.framework.TestCase; import junit.framework.TestCase;
import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.HWPFTestDataSamples;
/** /**
* Tests for the handling of header stories into headers, footers etc * Tests for the handling of header stories into headers, footers etc
@ -38,21 +36,15 @@ public final class TestHeaderStories extends TestCase {
private HWPFDocument withFields; private HWPFDocument withFields;
protected void setUp() throws Exception { protected void setUp() throws Exception {
String dirname = System.getProperty("HWPF.testdata.path");
none = new HWPFDocument(new FileInputStream(new File(dirname, "NoHeadFoot.doc"))); none = HWPFTestDataSamples.openSampleFile("NoHeadFoot.doc");
header = new HWPFDocument(new FileInputStream(new File(dirname, "ThreeColHead.doc"))); header = HWPFTestDataSamples.openSampleFile("ThreeColHead.doc");
footer = new HWPFDocument(new FileInputStream(new File(dirname, "ThreeColFoot.doc"))); footer = HWPFTestDataSamples.openSampleFile("ThreeColFoot.doc");
headerFooter = new HWPFDocument(new FileInputStream(new File(dirname, headerFooter = HWPFTestDataSamples.openSampleFile("SimpleHeadThreeColFoot.doc");
"SimpleHeadThreeColFoot.doc"))); oddEven = HWPFTestDataSamples.openSampleFile("PageSpecificHeadFoot.doc");
oddEven = new HWPFDocument(new FileInputStream( diffFirst = HWPFTestDataSamples.openSampleFile("DiffFirstPageHeadFoot.doc");
new File(dirname, "PageSpecificHeadFoot.doc"))); unicode = HWPFTestDataSamples.openSampleFile("HeaderFooterUnicode.doc");
diffFirst = new HWPFDocument(new FileInputStream(new File(dirname, withFields = HWPFTestDataSamples.openSampleFile("HeaderWithMacros.doc");
"DiffFirstPageHeadFoot.doc")));
unicode = new HWPFDocument(
new FileInputStream(new File(dirname, "HeaderFooterUnicode.doc")));
withFields = new HWPFDocument(
new FileInputStream(new File(dirname, "HeaderWithMacros.doc")));
} }
public void testNone() { public void testNone() {

View File

@ -17,14 +17,12 @@
package org.apache.poi.hwpf.usermodel; package org.apache.poi.hwpf.usermodel;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.util.List; import java.util.List;
import junit.framework.TestCase; import junit.framework.TestCase;
import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.HWPFTestDataSamples;
import org.apache.poi.util.LittleEndian; import org.apache.poi.util.LittleEndian;
/** /**
@ -33,14 +31,12 @@ import org.apache.poi.util.LittleEndian;
* @author Nick Burch (nick at torchbox dot com) * @author Nick Burch (nick at torchbox dot com)
*/ */
public final class TestPictures extends TestCase { public final class TestPictures extends TestCase {
private String dirname = System.getProperty("HWPF.testdata.path");
/** /**
* two jpegs * two jpegs
*/ */
public void testTwoImages() throws Exception { public void testTwoImages() throws Exception {
HWPFDocument doc = new HWPFDocument(new FileInputStream(dirname + "/two_images.doc")); HWPFDocument doc = HWPFTestDataSamples.openSampleFile("two_images.doc");
List pics = doc.getPicturesTable().getAllPictures(); List pics = doc.getPicturesTable().getAllPictures();
assertNotNull(pics); assertNotNull(pics);
@ -64,7 +60,7 @@ public final class TestPictures extends TestCase {
* pngs and jpegs * pngs and jpegs
*/ */
public void testDifferentImages() throws Exception { public void testDifferentImages() throws Exception {
HWPFDocument doc = new HWPFDocument(new FileInputStream(dirname + "/testPictures.doc")); HWPFDocument doc = HWPFTestDataSamples.openSampleFile("testPictures.doc");
List pics = doc.getPicturesTable().getAllPictures(); List pics = doc.getPicturesTable().getAllPictures();
assertNotNull(pics); assertNotNull(pics);
@ -90,7 +86,7 @@ public final class TestPictures extends TestCase {
* emf image, nice and simple * emf image, nice and simple
*/ */
public void testEmfImage() throws Exception { public void testEmfImage() throws Exception {
HWPFDocument doc = new HWPFDocument(new FileInputStream(dirname + "/vector_image.doc")); HWPFDocument doc = HWPFTestDataSamples.openSampleFile("vector_image.doc");
List pics = doc.getPicturesTable().getAllPictures(); List pics = doc.getPicturesTable().getAllPictures();
assertNotNull(pics); assertNotNull(pics);
@ -102,7 +98,7 @@ public final class TestPictures extends TestCase {
assertTrue(pic.getSize() > 128); assertTrue(pic.getSize() > 128);
// Check right contents // Check right contents
byte[] emf = loadImage("vector_image.emf"); byte[] emf = HWPFTestDataSamples.getTestDataFileContent("vector_image.emf");
byte[] pemf = pic.getContent(); byte[] pemf = pic.getContent();
assertEquals(emf.length, pemf.length); assertEquals(emf.length, pemf.length);
for(int i=0; i<emf.length; i++) { for(int i=0; i<emf.length; i++) {
@ -119,7 +115,7 @@ public final class TestPictures extends TestCase {
// pictures. Instead it has an office drawing object. Need to rewrite this test after // pictures. Instead it has an office drawing object. Need to rewrite this test after
// revisiting the implementation of office drawing objects. // revisiting the implementation of office drawing objects.
HWPFDocument doc = new HWPFDocument(new FileInputStream(dirname + "/emf_2003_image.doc")); HWPFDocument doc = HWPFTestDataSamples.openSampleFile("emf_2003_image.doc");
List pics = doc.getPicturesTable().getAllPictures(); List pics = doc.getPicturesTable().getAllPictures();
assertNotNull(pics); assertNotNull(pics);
@ -141,22 +137,10 @@ public final class TestPictures extends TestCase {
} }
public void testPicturesWithTable() throws Exception { public void testPicturesWithTable() throws Exception {
HWPFDocument doc = new HWPFDocument(new FileInputStream( HWPFDocument doc = HWPFTestDataSamples.openSampleFile("Bug44603.doc");
new File(dirname, "Bug44603.doc")));
List pics = doc.getPicturesTable().getAllPictures(); List pics = doc.getPicturesTable().getAllPictures();
assertEquals(pics.size(), 2); assertEquals(pics.size(), 2);
} }
private byte[] loadImage(String filename) throws Exception {
ByteArrayOutputStream b = new ByteArrayOutputStream();
FileInputStream fis = new FileInputStream(dirname + "/" + filename);
byte[] buf = new byte[4096];
int read = 0;
while( (read = fis.read(buf)) > -1 ) {
b.write(buf, 0, read);
}
return b.toByteArray();
}
} }

View File

@ -17,12 +17,10 @@
package org.apache.poi.hwpf.usermodel; package org.apache.poi.hwpf.usermodel;
import java.io.File;
import java.io.FileInputStream;
import org.apache.poi.EncryptedDocumentException; import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.HWPFTestCase; import org.apache.poi.hwpf.HWPFTestCase;
import org.apache.poi.hwpf.HWPFTestDataSamples;
import org.apache.poi.hwpf.model.StyleSheet; import org.apache.poi.hwpf.model.StyleSheet;
/** /**
@ -32,14 +30,11 @@ import org.apache.poi.hwpf.model.StyleSheet;
*/ */
public final class TestProblems extends HWPFTestCase { public final class TestProblems extends HWPFTestCase {
private String dirname = System.getProperty("HWPF.testdata.path");
/** /**
* ListEntry passed no ListTable * ListEntry passed no ListTable
*/ */
public void testListEntryNoListTable() throws Exception { public void testListEntryNoListTable() throws Exception {
HWPFDocument doc = new HWPFDocument(new FileInputStream( HWPFDocument doc = HWPFTestDataSamples.openSampleFile("ListEntryNoListTable.doc");
new File(dirname, "ListEntryNoListTable.doc")));
Range r = doc.getRange(); Range r = doc.getRange();
StyleSheet styleSheet = doc.getStyleSheet(); StyleSheet styleSheet = doc.getStyleSheet();
@ -56,8 +51,7 @@ public final class TestProblems extends HWPFTestCase {
* AIOOB for TableSprmUncompressor.unCompressTAPOperation * AIOOB for TableSprmUncompressor.unCompressTAPOperation
*/ */
public void testSprmAIOOB() throws Exception { public void testSprmAIOOB() throws Exception {
HWPFDocument doc = new HWPFDocument(new FileInputStream( HWPFDocument doc = HWPFTestDataSamples.openSampleFile("AIOOB-Tap.doc");
new File(dirname, "AIOOB-Tap.doc")));
Range r = doc.getRange(); Range r = doc.getRange();
StyleSheet styleSheet = doc.getStyleSheet(); StyleSheet styleSheet = doc.getStyleSheet();
@ -75,8 +69,7 @@ public final class TestProblems extends HWPFTestCase {
* Bugs #45062 and #44292 * Bugs #45062 and #44292
*/ */
public void testTableCellLastParagraph() throws Exception { public void testTableCellLastParagraph() throws Exception {
HWPFDocument doc = new HWPFDocument(new FileInputStream( HWPFDocument doc = HWPFTestDataSamples.openSampleFile("Bug44292.doc");
new File(dirname, "Bug44292.doc")));
Range r = doc.getRange(); Range r = doc.getRange();
assertEquals(6, r.numParagraphs()); assertEquals(6, r.numParagraphs());
assertEquals(0, r.getStartOffset()); assertEquals(0, r.getStartOffset());
@ -115,8 +108,7 @@ public final class TestProblems extends HWPFTestCase {
} }
public void testRangeDelete() throws Exception { public void testRangeDelete() throws Exception {
HWPFDocument doc = new HWPFDocument(new FileInputStream( HWPFDocument doc = HWPFTestDataSamples.openSampleFile("Bug28627.doc");
new File(dirname, "Bug28627.doc")));
Range range = doc.getRange(); Range range = doc.getRange();
int numParagraphs = range.numParagraphs(); int numParagraphs = range.numParagraphs();
@ -155,8 +147,7 @@ public final class TestProblems extends HWPFTestCase {
*/ */
public void testEncryptedFile() throws Exception { public void testEncryptedFile() throws Exception {
try { try {
new HWPFDocument(new FileInputStream( HWPFTestDataSamples.openSampleFile("PasswordProtected.doc");
new File(dirname, "PasswordProtected.doc")));
fail(); fail();
} catch(EncryptedDocumentException e) { } catch(EncryptedDocumentException e) {
// Good // Good
@ -164,8 +155,7 @@ public final class TestProblems extends HWPFTestCase {
} }
public void testWriteProperties() throws Exception { public void testWriteProperties() throws Exception {
HWPFDocument doc = new HWPFDocument(new FileInputStream( HWPFDocument doc = HWPFTestDataSamples.openSampleFile("SampleDoc.doc");
new File(dirname, "SampleDoc.doc")));
assertEquals("Nick Burch", doc.getSummaryInformation().getAuthor()); assertEquals("Nick Burch", doc.getSummaryInformation().getAuthor());
// Write and read // Write and read

View File

@ -17,11 +17,10 @@
package org.apache.poi.hwpf.usermodel; package org.apache.poi.hwpf.usermodel;
import java.io.FileInputStream;
import junit.framework.TestCase; import junit.framework.TestCase;
import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.HWPFTestDataSamples;
import org.apache.poi.hwpf.model.PAPX; import org.apache.poi.hwpf.model.PAPX;
/** /**
@ -48,10 +47,7 @@ public final class TestRangeDelete extends TestCase {
private String illustrativeDocFile; private String illustrativeDocFile;
protected void setUp() { protected void setUp() {
illustrativeDocFile = "testRangeDelete.doc";
String dirname = System.getProperty("HWPF.testdata.path");
illustrativeDocFile = dirname + "/testRangeDelete.doc";
} }
/** /**
@ -59,7 +55,7 @@ public final class TestRangeDelete extends TestCase {
*/ */
public void testOpen() throws Exception { public void testOpen() throws Exception {
HWPFDocument docA = new HWPFDocument(new FileInputStream(illustrativeDocFile)); HWPFDocument docA = HWPFTestDataSamples.openSampleFile(illustrativeDocFile);
} }
/** /**
@ -67,7 +63,7 @@ public final class TestRangeDelete extends TestCase {
*/ */
public void testDocStructure() throws Exception { public void testDocStructure() throws Exception {
HWPFDocument daDoc = new HWPFDocument(new FileInputStream(illustrativeDocFile)); HWPFDocument daDoc = HWPFTestDataSamples.openSampleFile(illustrativeDocFile);
Range range; Range range;
Section section; Section section;
Paragraph para; Paragraph para;
@ -132,7 +128,7 @@ public final class TestRangeDelete extends TestCase {
*/ */
public void testRangeDeleteOne() throws Exception { public void testRangeDeleteOne() throws Exception {
HWPFDocument daDoc = new HWPFDocument(new FileInputStream(illustrativeDocFile)); HWPFDocument daDoc = HWPFTestDataSamples.openSampleFile(illustrativeDocFile);
Range range = daDoc.getOverallRange(); Range range = daDoc.getOverallRange();
assertEquals(1, range.numSections()); assertEquals(1, range.numSections());
@ -178,7 +174,7 @@ public final class TestRangeDelete extends TestCase {
*/ */
public void testRangeDeleteAll() throws Exception { public void testRangeDeleteAll() throws Exception {
HWPFDocument daDoc = new HWPFDocument(new FileInputStream(illustrativeDocFile)); HWPFDocument daDoc = HWPFTestDataSamples.openSampleFile(illustrativeDocFile);
Range range = daDoc.getRange(); Range range = daDoc.getRange();
assertEquals(1, range.numSections()); assertEquals(1, range.numSections());

View File

@ -17,11 +17,10 @@
package org.apache.poi.hwpf.usermodel; package org.apache.poi.hwpf.usermodel;
import java.io.FileInputStream;
import junit.framework.TestCase; import junit.framework.TestCase;
import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.HWPFTestDataSamples;
/** /**
* Test to see if Range.insertBefore() works even if the Range contains a * Test to see if Range.insertBefore() works even if the Range contains a
@ -40,10 +39,7 @@ public final class TestRangeInsertion extends TestCase {
private String illustrativeDocFile; private String illustrativeDocFile;
protected void setUp() { protected void setUp() {
illustrativeDocFile = "testRangeInsertion.doc";
String dirname = System.getProperty("HWPF.testdata.path");
illustrativeDocFile = dirname + "/testRangeInsertion.doc";
} }
/** /**
@ -51,7 +47,7 @@ public final class TestRangeInsertion extends TestCase {
*/ */
public void testOpen() throws Exception { public void testOpen() throws Exception {
HWPFDocument docA = new HWPFDocument(new FileInputStream(illustrativeDocFile)); HWPFDocument docA = HWPFTestDataSamples.openSampleFile(illustrativeDocFile);
} }
/** /**
@ -59,7 +55,7 @@ public final class TestRangeInsertion extends TestCase {
*/ */
public void testDocStructure() throws Exception { public void testDocStructure() throws Exception {
HWPFDocument daDoc = new HWPFDocument(new FileInputStream(illustrativeDocFile)); HWPFDocument daDoc = HWPFTestDataSamples.openSampleFile(illustrativeDocFile);
Range range = daDoc.getRange(); Range range = daDoc.getRange();
@ -87,7 +83,7 @@ public final class TestRangeInsertion extends TestCase {
*/ */
public void testRangeInsertion() throws Exception { public void testRangeInsertion() throws Exception {
HWPFDocument daDoc = new HWPFDocument(new FileInputStream(illustrativeDocFile)); HWPFDocument daDoc = HWPFTestDataSamples.openSampleFile(illustrativeDocFile);
/* /*
Range range = daDoc.getRange(); Range range = daDoc.getRange();

View File

@ -17,11 +17,10 @@
package org.apache.poi.hwpf.usermodel; package org.apache.poi.hwpf.usermodel;
import java.io.File;
import java.io.FileInputStream;
import java.util.List; import java.util.List;
import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.HWPFTestDataSamples;
import org.apache.poi.hwpf.model.PropertyNode; import org.apache.poi.hwpf.model.PropertyNode;
import junit.framework.TestCase; import junit.framework.TestCase;
@ -66,16 +65,9 @@ public final class TestRangeProperties extends TestCase {
private HWPFDocument u; private HWPFDocument u;
private HWPFDocument a; private HWPFDocument a;
private String dirname;
protected void setUp() throws Exception { protected void setUp() throws Exception {
dirname = System.getProperty("HWPF.testdata.path"); u = HWPFTestDataSamples.openSampleFile("HeaderFooterUnicode.doc");
u = new HWPFDocument( a = HWPFTestDataSamples.openSampleFile("SampleDoc.doc");
new FileInputStream(new File(dirname, "HeaderFooterUnicode.doc"))
);
a = new HWPFDocument(
new FileInputStream(new File(dirname, "SampleDoc.doc"))
);
} }

View File

@ -17,11 +17,10 @@
package org.apache.poi.hwpf.usermodel; package org.apache.poi.hwpf.usermodel;
import java.io.FileInputStream;
import junit.framework.TestCase; import junit.framework.TestCase;
import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.HWPFTestDataSamples;
/** /**
* Test to see if Range.replaceText() works even if the Range contains a * Test to see if Range.replaceText() works even if the Range contains a
@ -40,21 +39,14 @@ public final class TestRangeReplacement extends TestCase {
"It is used to confirm that text replacement works even if Unicode characters (such as \u201c\u2014\u201d (U+2014), \u201c\u2e8e\u201d (U+2E8E), or \u201c\u2714\u201d (U+2714)) are present. Everybody should be thankful to the Apache Software Foundation and all the POI contributors for their assistance in this matter.\r"; "It is used to confirm that text replacement works even if Unicode characters (such as \u201c\u2014\u201d (U+2014), \u201c\u2e8e\u201d (U+2E8E), or \u201c\u2714\u201d (U+2714)) are present. Everybody should be thankful to the Apache Software Foundation and all the POI contributors for their assistance in this matter.\r";
private String expectedText3 = "Thank you, Apache Software Foundation!\r"; private String expectedText3 = "Thank you, Apache Software Foundation!\r";
private String illustrativeDocFile; private String illustrativeDocFile = "testRangeReplacement.doc";
protected void setUp() {
String dirname = System.getProperty("HWPF.testdata.path");
illustrativeDocFile = dirname + "/testRangeReplacement.doc";
}
/** /**
* Test just opening the files * Test just opening the files
*/ */
public void testOpen() throws Exception { public void testOpen() throws Exception {
HWPFDocument docA = new HWPFDocument(new FileInputStream(illustrativeDocFile)); HWPFDocument docA = HWPFTestDataSamples.openSampleFile(illustrativeDocFile);
} }
/** /**
@ -62,7 +54,7 @@ public final class TestRangeReplacement extends TestCase {
*/ */
public void testDocStructure() throws Exception { public void testDocStructure() throws Exception {
HWPFDocument daDoc = new HWPFDocument(new FileInputStream(illustrativeDocFile)); HWPFDocument daDoc = HWPFTestDataSamples.openSampleFile(illustrativeDocFile);
Range range = daDoc.getRange(); Range range = daDoc.getRange();
assertEquals(414, range.text().length()); assertEquals(414, range.text().length());
@ -91,7 +83,7 @@ public final class TestRangeReplacement extends TestCase {
*/ */
public void testRangeReplacementOne() throws Exception { public void testRangeReplacementOne() throws Exception {
HWPFDocument daDoc = new HWPFDocument(new FileInputStream(illustrativeDocFile)); HWPFDocument daDoc = HWPFTestDataSamples.openSampleFile(illustrativeDocFile);
Range range = daDoc.getRange(); Range range = daDoc.getRange();
assertEquals(1, range.numSections()); assertEquals(1, range.numSections());
@ -124,7 +116,7 @@ public final class TestRangeReplacement extends TestCase {
*/ */
public void testRangeReplacementAll() throws Exception { public void testRangeReplacementAll() throws Exception {
HWPFDocument daDoc = new HWPFDocument(new FileInputStream(illustrativeDocFile)); HWPFDocument daDoc = HWPFTestDataSamples.openSampleFile(illustrativeDocFile);
Range range = daDoc.getRange(); Range range = daDoc.getRange();
assertEquals(1, range.numSections()); assertEquals(1, range.numSections());

View File

@ -19,24 +19,23 @@ package org.apache.poi.hwpf.usermodel;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.util.List; import java.util.List;
import junit.framework.TestCase; import junit.framework.TestCase;
import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.HWPFTestDataSamples;
/** /**
* Test the shapes handling * Test the shapes handling
*/ */
public final class TestShapes extends TestCase { public final class TestShapes extends TestCase {
private String dirname = System.getProperty("HWPF.testdata.path");
/** /**
* two shapes, second is a group * two shapes, second is a group
*/ */
public void testShapes() throws Exception { public void testShapes() throws Exception {
HWPFDocument doc = new HWPFDocument(new FileInputStream(dirname + "/WithArtShapes.doc")); HWPFDocument doc = HWPFTestDataSamples.openSampleFile("WithArtShapes.doc");
List shapes = doc.getShapesTable().getAllShapes(); List shapes = doc.getShapesTable().getAllShapes();
List vshapes = doc.getShapesTable().getVisibleShapes(); List vshapes = doc.getShapesTable().getVisibleShapes();

View File

@ -0,0 +1,182 @@
/* ====================================================================
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;
import java.io.*;
/**
* Centralises logic for finding/opening sample files
*
*/
public abstract class POIDataSamples {
private File _resolvedDataDir;
/** <code>true</code> if standard system propery is not set,
* but the data is available on the test runtime classpath */
private boolean _sampleDataIsAvaliableOnClassPath;
private String _testDataDir;
/**
*
* @param dir the name of the system property that defines path to the test files
* @param classPathTestFile the name of the test file to check if resources are available from the classpath
*/
public POIDataSamples(String dir, String classPathTestFile){
_testDataDir = dir;
initialise(classPathTestFile);
}
/**
* Opens a sample file from the test data directory
*
* @param sampleFileName the file to open
* @return an open <tt>InputStream</tt> for the specified sample file
*/
public InputStream openResourceAsStream(String sampleFileName) {
if (_sampleDataIsAvaliableOnClassPath) {
InputStream result = sampleFileName == null ? null :
openClasspathResource(sampleFileName);
if(result == null) {
throw new RuntimeException("specified test sample file '" + sampleFileName
+ "' not found on the classpath");
}
// wrap to avoid temp warning method about auto-closing input stream
return new NonSeekableInputStream(result);
}
if (_resolvedDataDir == null) {
throw new RuntimeException("Must set system property '"
+ _testDataDir
+ "' properly before running tests");
}
File f = new File(_resolvedDataDir, sampleFileName);
if (!f.exists()) {
throw new RuntimeException("Sample file '" + sampleFileName
+ "' not found in data dir '" + _resolvedDataDir.getAbsolutePath() + "'");
}
try {
if(!sampleFileName.equals(f.getCanonicalFile().getName())){
throw new RuntimeException("File name is case-sensitive: requested '" + sampleFileName
+ "' but actual file is '" + f.getCanonicalFile().getName() + "'");
}
} catch (IOException e){
throw new RuntimeException(e);
}
try {
return new FileInputStream(f);
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
}
}
/**
*
* @param classPathTest test file to check if the resources are avaiable from the classpath
*/
private void initialise(String classPathTest) {
String dataDirName = System.getProperty(_testDataDir);
if (dataDirName == null) {
// check to see if we can just get the resources from the classpath
InputStream is = openClasspathResource(classPathTest);
if (is != null) {
try {
is.close(); // be nice
} catch (IOException e) {
throw new RuntimeException(e);
}
_sampleDataIsAvaliableOnClassPath = true;
return;
}
throw new RuntimeException("Must set system property '"
+ _testDataDir + "' before running tests");
}
File dataDir = new File(dataDirName);
if (!dataDir.exists()) {
throw new RuntimeException("Data dir '" + dataDirName
+ "' specified by system property '" + _testDataDir
+ "' does not exist");
}
// convert to canonical file, to make any subsequent error messages
// clearer.
try {
_resolvedDataDir = dataDir.getCanonicalFile();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
/**
* Opens a test sample file from the 'data' sub-package of this class's package.
*
* @param sampleFileName the file to open
* @return <code>null</code> if the sample file is not deployed on the classpath.
*/
private InputStream openClasspathResource(String sampleFileName) {
return getClass().getResourceAsStream("data/" + sampleFileName);
}
private static final class NonSeekableInputStream extends InputStream {
private final InputStream _is;
public NonSeekableInputStream(InputStream is) {
_is = is;
}
public int read() throws IOException {
return _is.read();
}
public int read(byte[] b, int off, int len) throws IOException {
return _is.read(b, off, len);
}
public boolean markSupported() {
return false;
}
public void close() throws IOException {
_is.close();
}
}
/**
* @param fileName the file to open
* @return byte array of sample file content from file found in standard hssf test data dir
*/
public byte[] readFile(String fileName) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
InputStream fis = openResourceAsStream(fileName);
byte[] buf = new byte[512];
while (true) {
int bytesRead = fis.read(buf);
if (bytesRead < 1) {
break;
}
bos.write(buf, 0, bytesRead);
}
fis.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
return bos.toByteArray();
}
}

View File

@ -26,139 +26,35 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.POIDataSamples;
/** /**
* Centralises logic for finding/opening sample files in the src/testcases/org/apache/poi/hssf/hssf/data folder. * Centralises logic for finding/opening sample files in the src/testcases/org/apache/poi/hssf/hssf/data folder.
* *
* @author Josh Micich * @author Josh Micich
*/ */
public final class HSSFTestDataSamples { public final class HSSFTestDataSamples extends POIDataSamples {
private static final String TEST_DATA_DIR_SYS_PROPERTY_NAME = "HSSF.testdata.path"; private static final HSSFTestDataSamples _inst = new HSSFTestDataSamples("HSSF.testdata.path", "SampleSS.xls");
private static boolean _isInitialised; private HSSFTestDataSamples(String dir, String classPathTestFile){
private static File _resolvedDataDir; super(dir, classPathTestFile);
/** <code>true</code> if standard system propery is not set, }
* but the data is available on the test runtime classpath */
private static boolean _sampleDataIsAvaliableOnClassPath;
/** public static POIDataSamples getInstance(){
* Opens a sample file from the standard HSSF test data directory return _inst;
* }
* @return an open <tt>InputStream</tt> for the specified sample file
*/
public static InputStream openSampleFileStream(String sampleFileName) {
if(!_isInitialised) { public static InputStream openSampleFileStream(String sampleFileName) {
try { return _inst.openResourceAsStream(sampleFileName);
initialise(); }
} finally { public static byte[] getTestDataFileContent(String fileName) {
_isInitialised = true; return _inst.readFile(fileName);
} }
}
if (_sampleDataIsAvaliableOnClassPath) {
InputStream result = openClasspathResource(sampleFileName);
if(result == null) {
throw new RuntimeException("specified test sample file '" + sampleFileName
+ "' not found on the classpath");
}
// System.out.println("opening cp: " + sampleFileName);
// wrap to avoid temp warning method about auto-closing input stream
return new NonSeekableInputStream(result);
}
if (_resolvedDataDir == null) {
throw new RuntimeException("Must set system property '"
+ TEST_DATA_DIR_SYS_PROPERTY_NAME
+ "' properly before running tests");
}
File f = new File(_resolvedDataDir, sampleFileName); public static HSSFWorkbook openSampleWorkbook(String sampleFileName) {
if (!f.exists()) {
throw new RuntimeException("Sample file '" + sampleFileName
+ "' not found in data dir '" + _resolvedDataDir.getAbsolutePath() + "'");
}
try {
if(!sampleFileName.equals(f.getCanonicalFile().getName())){
throw new RuntimeException("File name is case-sensitive: requested '" + sampleFileName
+ "' but actual file is '" + f.getCanonicalFile().getName() + "'");
}
} catch (IOException e){
throw new RuntimeException(e);
}
try {
return new FileInputStream(f);
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
}
}
private static void initialise() {
String dataDirName = System.getProperty(TEST_DATA_DIR_SYS_PROPERTY_NAME);
if (dataDirName == null) {
// check to see if we can just get the resources from the classpath
InputStream is = openClasspathResource("SampleSS.xls");
if (is != null) {
try {
is.close(); // be nice
} catch (IOException e) {
throw new RuntimeException(e);
}
_sampleDataIsAvaliableOnClassPath = true;
return;
}
throw new RuntimeException("Must set system property '"
+ TEST_DATA_DIR_SYS_PROPERTY_NAME + "' before running tests");
}
File dataDir = new File(dataDirName);
if (!dataDir.exists()) {
throw new RuntimeException("Data dir '" + dataDirName
+ "' specified by system property '" + TEST_DATA_DIR_SYS_PROPERTY_NAME
+ "' does not exist");
}
// convert to canonical file, to make any subsequent error messages
// clearer.
try { try {
_resolvedDataDir = dataDir.getCanonicalFile(); return new HSSFWorkbook(_inst.openResourceAsStream(sampleFileName));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
/**
* Opens a test sample file from the 'data' sub-package of this class's package.
* @return <code>null</code> if the sample file is not deployed on the classpath.
*/
private static InputStream openClasspathResource(String sampleFileName) {
return HSSFTestDataSamples.class.getResourceAsStream("data/" + sampleFileName);
}
private static final class NonSeekableInputStream extends InputStream {
private final InputStream _is;
public NonSeekableInputStream(InputStream is) {
_is = is;
}
public int read() throws IOException {
return _is.read();
}
public int read(byte[] b, int off, int len) throws IOException {
return _is.read(b, off, len);
}
public boolean markSupported() {
return false;
}
public void close() throws IOException {
_is.close();
}
}
public static HSSFWorkbook openSampleWorkbook(String sampleFileName) {
try {
return new HSSFWorkbook(openSampleFileStream(sampleFileName));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
@ -180,27 +76,4 @@ public final class HSSFTestDataSamples {
} }
} }
/**
* @return byte array of sample file content from file found in standard hssf test data dir
*/
public static byte[] getTestDataFileContent(String fileName) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
InputStream fis = HSSFTestDataSamples.openSampleFileStream(fileName);
byte[] buf = new byte[512];
while (true) {
int bytesRead = fis.read(buf);
if (bytesRead < 1) {
break;
}
bos.write(buf, 0, bytesRead);
}
fis.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
return bos.toByteArray();
}
} }