mirror of https://github.com/apache/poi.git
Close more file-handles in tests
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1858024 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
66d522873f
commit
bd8fab1196
|
@ -34,9 +34,9 @@ final class PlainCellCache {
|
|||
}
|
||||
|
||||
public static long toBookSheetColumn(int bookIndex, int sheetIndex, int columnIndex) {
|
||||
return ((bookIndex & 0xFFFFl) << 48) +
|
||||
((sheetIndex & 0xFFFFl) << 32) +
|
||||
((columnIndex & 0xFFFFl) << 0);
|
||||
return ((bookIndex & 0xFFFFL) << 48) +
|
||||
((sheetIndex & 0xFFFFL) << 32) +
|
||||
((columnIndex & 0xFFFFL) << 0);
|
||||
}
|
||||
|
||||
public Loc(long bookSheetColumn, int rowIndex) {
|
||||
|
@ -80,15 +80,19 @@ final class PlainCellCache {
|
|||
public PlainCellCache() {
|
||||
_plainValueEntriesByLoc = new HashMap<>();
|
||||
}
|
||||
|
||||
public void put(Loc key, PlainValueCellCacheEntry cce) {
|
||||
_plainValueEntriesByLoc.put(key, cce);
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
_plainValueEntriesByLoc.clear();
|
||||
}
|
||||
|
||||
public PlainValueCellCacheEntry get(Loc key) {
|
||||
return _plainValueEntriesByLoc.get(key);
|
||||
}
|
||||
|
||||
public void remove(Loc key) {
|
||||
_plainValueEntriesByLoc.remove(key);
|
||||
}
|
||||
|
|
|
@ -17,20 +17,6 @@
|
|||
|
||||
package org.apache.poi.xssf.usermodel;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.poi.ss.usermodel.Cell;
|
||||
import org.apache.poi.ss.util.AreaReference;
|
||||
import org.apache.poi.ss.util.CellReference;
|
||||
|
@ -43,44 +29,57 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTable;
|
|||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTableColumn;
|
||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTableStyleInfo;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
public final class TestXSSFTable {
|
||||
|
||||
@Test
|
||||
public void bug56274() throws IOException {
|
||||
// read sample file
|
||||
XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("56274.xlsx");
|
||||
try (XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("56274.xlsx")) {
|
||||
|
||||
// read the original sheet header order
|
||||
XSSFRow row = wb1.getSheetAt(0).getRow(0);
|
||||
List<String> headers = new ArrayList<>();
|
||||
for (Cell cell : row) {
|
||||
headers.add(cell.getStringCellValue());
|
||||
// read the original sheet header order
|
||||
XSSFRow row = wb1.getSheetAt(0).getRow(0);
|
||||
List<String> headers = new ArrayList<>();
|
||||
for (Cell cell : row) {
|
||||
headers.add(cell.getStringCellValue());
|
||||
}
|
||||
|
||||
// save the worksheet as-is using SXSSF
|
||||
File outputFile = TempFile.createTempFile("poi-56274", ".xlsx");
|
||||
SXSSFWorkbook outputWorkbook = new SXSSFWorkbook(wb1);
|
||||
FileOutputStream fos = new FileOutputStream(outputFile);
|
||||
outputWorkbook.write(fos);
|
||||
fos.close();
|
||||
outputWorkbook.close();
|
||||
|
||||
// re-read the saved file and make sure headers in the xml are in the original order
|
||||
FileInputStream fis = new FileInputStream(outputFile);
|
||||
XSSFWorkbook wb2 = new XSSFWorkbook(fis);
|
||||
fis.close();
|
||||
CTTable ctTable = wb2.getSheetAt(0).getTables().get(0).getCTTable();
|
||||
CTTableColumn[] ctTableColumnArray = ctTable.getTableColumns().getTableColumnArray();
|
||||
|
||||
assertEquals("number of headers in xml table should match number of header cells in worksheet",
|
||||
headers.size(), ctTableColumnArray.length);
|
||||
for (int i = 0; i < headers.size(); i++) {
|
||||
assertEquals("header name in xml table should match number of header cells in worksheet",
|
||||
headers.get(i), ctTableColumnArray[i].getName());
|
||||
}
|
||||
assertTrue(outputFile.delete());
|
||||
wb2.close();
|
||||
}
|
||||
|
||||
// save the worksheet as-is using SXSSF
|
||||
File outputFile = TempFile.createTempFile("poi-56274", ".xlsx");
|
||||
SXSSFWorkbook outputWorkbook = new SXSSFWorkbook(wb1);
|
||||
FileOutputStream fos = new FileOutputStream(outputFile);
|
||||
outputWorkbook.write(fos);
|
||||
fos.close();
|
||||
outputWorkbook.close();
|
||||
|
||||
// re-read the saved file and make sure headers in the xml are in the original order
|
||||
FileInputStream fis = new FileInputStream(outputFile);
|
||||
XSSFWorkbook wb2 = new XSSFWorkbook(fis);
|
||||
fis.close();
|
||||
CTTable ctTable = wb2.getSheetAt(0).getTables().get(0).getCTTable();
|
||||
CTTableColumn[] ctTableColumnArray = ctTable.getTableColumns().getTableColumnArray();
|
||||
|
||||
assertEquals("number of headers in xml table should match number of header cells in worksheet",
|
||||
headers.size(), ctTableColumnArray.length);
|
||||
for (int i = 0; i < headers.size(); i++) {
|
||||
assertEquals("header name in xml table should match number of header cells in worksheet",
|
||||
headers.get(i), ctTableColumnArray[i].getName());
|
||||
}
|
||||
assertTrue(outputFile.delete());
|
||||
wb2.close();
|
||||
wb1.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -119,234 +118,234 @@ public final class TestXSSFTable {
|
|||
|
||||
@Test
|
||||
public void findColumnIndex() throws IOException {
|
||||
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("StructuredReferences.xlsx");
|
||||
try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("StructuredReferences.xlsx")) {
|
||||
|
||||
XSSFTable table = wb.getTable("\\_Prime.1");
|
||||
assertNotNull(table);
|
||||
assertEquals("column header has special escaped characters",
|
||||
0, table.findColumnIndex("calc='#*'#"));
|
||||
assertEquals(1, table.findColumnIndex("Name"));
|
||||
assertEquals(2, table.findColumnIndex("Number"));
|
||||
XSSFTable table = wb.getTable("\\_Prime.1");
|
||||
assertNotNull(table);
|
||||
assertEquals("column header has special escaped characters",
|
||||
0, table.findColumnIndex("calc='#*'#"));
|
||||
assertEquals(1, table.findColumnIndex("Name"));
|
||||
assertEquals(2, table.findColumnIndex("Number"));
|
||||
|
||||
assertEquals("case insensitive", 2, table.findColumnIndex("NuMbEr"));
|
||||
assertEquals("case insensitive", 2, table.findColumnIndex("NuMbEr"));
|
||||
|
||||
// findColumnIndex should return -1 if no column header name matches
|
||||
assertEquals(-1, table.findColumnIndex(null));
|
||||
assertEquals(-1, table.findColumnIndex(""));
|
||||
assertEquals(-1, table.findColumnIndex("one"));
|
||||
|
||||
wb.close();
|
||||
// findColumnIndex should return -1 if no column header name matches
|
||||
assertEquals(-1, table.findColumnIndex(null));
|
||||
assertEquals(-1, table.findColumnIndex(""));
|
||||
assertEquals(-1, table.findColumnIndex("one"));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void findColumnIndexIsRelativeToTableNotSheet() throws IOException {
|
||||
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("DataTableCities.xlsx");
|
||||
XSSFTable table = wb.getTable("SmallCity");
|
||||
try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("DataTableCities.xlsx")) {
|
||||
XSSFTable table = wb.getTable("SmallCity");
|
||||
|
||||
// Make sure that XSSFTable.findColumnIndex returns the column index relative to the first
|
||||
// column in the table, not the column number in the sheet
|
||||
assertEquals(0, table.findColumnIndex("City")); // column I in worksheet but 0th column in table
|
||||
assertEquals(1, table.findColumnIndex("Latitude"));
|
||||
assertEquals(2, table.findColumnIndex("Longitude"));
|
||||
assertEquals(3, table.findColumnIndex("Population"));
|
||||
|
||||
wb.close();
|
||||
// Make sure that XSSFTable.findColumnIndex returns the column index relative to the first
|
||||
// column in the table, not the column number in the sheet
|
||||
assertEquals(0, table.findColumnIndex("City")); // column I in worksheet but 0th column in table
|
||||
assertEquals(1, table.findColumnIndex("Latitude"));
|
||||
assertEquals(2, table.findColumnIndex("Longitude"));
|
||||
assertEquals(3, table.findColumnIndex("Population"));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getSheetName() throws IOException {
|
||||
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("StructuredReferences.xlsx");
|
||||
XSSFTable table = wb.getTable("\\_Prime.1");
|
||||
assertEquals("Table", table.getSheetName());
|
||||
wb.close();
|
||||
try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("StructuredReferences.xlsx")) {
|
||||
XSSFTable table = wb.getTable("\\_Prime.1");
|
||||
assertEquals("Table", table.getSheetName());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isHasTotalsRow() throws IOException {
|
||||
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("StructuredReferences.xlsx");
|
||||
XSSFTable table = wb.getTable("\\_Prime.1");
|
||||
assertFalse(table.getTotalsRowCount() > 0);
|
||||
wb.close();
|
||||
try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("StructuredReferences.xlsx")) {
|
||||
XSSFTable table = wb.getTable("\\_Prime.1");
|
||||
assertFalse(table.getTotalsRowCount() > 0);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getStartColIndex() throws IOException {
|
||||
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("StructuredReferences.xlsx");
|
||||
XSSFTable table = wb.getTable("\\_Prime.1");
|
||||
assertEquals(0, table.getStartColIndex());
|
||||
wb.close();
|
||||
try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("StructuredReferences.xlsx")) {
|
||||
XSSFTable table = wb.getTable("\\_Prime.1");
|
||||
assertEquals(0, table.getStartColIndex());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getEndColIndex() throws IOException {
|
||||
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("StructuredReferences.xlsx");
|
||||
XSSFTable table = wb.getTable("\\_Prime.1");
|
||||
assertEquals(2, table.getEndColIndex());
|
||||
wb.close();
|
||||
try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("StructuredReferences.xlsx")) {
|
||||
XSSFTable table = wb.getTable("\\_Prime.1");
|
||||
assertEquals(2, table.getEndColIndex());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getStartRowIndex() throws IOException {
|
||||
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("StructuredReferences.xlsx");
|
||||
XSSFTable table = wb.getTable("\\_Prime.1");
|
||||
assertEquals(0, table.getStartRowIndex());
|
||||
wb.close();
|
||||
try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("StructuredReferences.xlsx")) {
|
||||
XSSFTable table = wb.getTable("\\_Prime.1");
|
||||
assertEquals(0, table.getStartRowIndex());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getEndRowIndex() throws IOException {
|
||||
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("StructuredReferences.xlsx");
|
||||
XSSFTable table = wb.getTable("\\_Prime.1");
|
||||
assertEquals(6, table.getEndRowIndex());
|
||||
wb.close();
|
||||
try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("StructuredReferences.xlsx")) {
|
||||
XSSFTable table = wb.getTable("\\_Prime.1");
|
||||
assertEquals(6, table.getEndRowIndex());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getStartCellReference() throws IOException {
|
||||
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("StructuredReferences.xlsx");
|
||||
XSSFTable table = wb.getTable("\\_Prime.1");
|
||||
assertEquals(new CellReference("A1"), table.getStartCellReference());
|
||||
wb.close();
|
||||
try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("StructuredReferences.xlsx")) {
|
||||
XSSFTable table = wb.getTable("\\_Prime.1");
|
||||
assertEquals(new CellReference("A1"), table.getStartCellReference());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getEndCellReference() throws IOException {
|
||||
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("StructuredReferences.xlsx");
|
||||
XSSFTable table = wb.getTable("\\_Prime.1");
|
||||
assertEquals(new CellReference("C7"), table.getEndCellReference());
|
||||
wb.close();
|
||||
try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("StructuredReferences.xlsx")) {
|
||||
XSSFTable table = wb.getTable("\\_Prime.1");
|
||||
assertEquals(new CellReference("C7"), table.getEndCellReference());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getNumberOfMappedColumns() throws IOException {
|
||||
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("StructuredReferences.xlsx");
|
||||
XSSFTable table = wb.getTable("\\_Prime.1");
|
||||
assertEquals(3, table.getNumberOfMappedColumns());
|
||||
wb.close();
|
||||
try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("StructuredReferences.xlsx")) {
|
||||
XSSFTable table = wb.getTable("\\_Prime.1");
|
||||
assertEquals(3, table.getNumberOfMappedColumns());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getColumnCount() throws IOException {
|
||||
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("StructuredReferences.xlsx");
|
||||
XSSFTable table = wb.getTable("\\_Prime.1");
|
||||
assertEquals(3, table.getColumnCount());
|
||||
wb.close();
|
||||
try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("StructuredReferences.xlsx")) {
|
||||
XSSFTable table = wb.getTable("\\_Prime.1");
|
||||
assertEquals(3, table.getColumnCount());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getAndSetDisplayName() throws IOException {
|
||||
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("StructuredReferences.xlsx");
|
||||
XSSFTable table = wb.getTable("\\_Prime.1");
|
||||
assertEquals("\\_Prime.1", table.getDisplayName());
|
||||
try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("StructuredReferences.xlsx")) {
|
||||
XSSFTable table = wb.getTable("\\_Prime.1");
|
||||
assertEquals("\\_Prime.1", table.getDisplayName());
|
||||
|
||||
table.setDisplayName(null);
|
||||
assertNull(table.getDisplayName());
|
||||
assertEquals("\\_Prime.1", table.getName()); // name and display name are different
|
||||
table.setDisplayName(null);
|
||||
assertNull(table.getDisplayName());
|
||||
assertEquals("\\_Prime.1", table.getName()); // name and display name are different
|
||||
|
||||
table.setDisplayName("Display name");
|
||||
assertEquals("Display name", table.getDisplayName());
|
||||
assertEquals("\\_Prime.1", table.getName()); // name and display name are different
|
||||
|
||||
wb.close();
|
||||
table.setDisplayName("Display name");
|
||||
assertEquals("Display name", table.getDisplayName());
|
||||
assertEquals("\\_Prime.1", table.getName()); // name and display name are different
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getCellReferences() {
|
||||
public void getCellReferences() throws IOException {
|
||||
// make sure that cached start and end cell references
|
||||
// can be synchronized with the underlying CTTable
|
||||
XSSFWorkbook wb = new XSSFWorkbook();
|
||||
XSSFSheet sh = wb.createSheet();
|
||||
XSSFTable table = sh.createTable();
|
||||
CTTable ctTable = table.getCTTable();
|
||||
ctTable.setRef("B2:E8");
|
||||
try (XSSFWorkbook wb = new XSSFWorkbook()) {
|
||||
XSSFSheet sh = wb.createSheet();
|
||||
XSSFTable table = sh.createTable();
|
||||
CTTable ctTable = table.getCTTable();
|
||||
ctTable.setRef("B2:E8");
|
||||
|
||||
assertEquals(new CellReference("B2"), table.getStartCellReference());
|
||||
assertEquals(new CellReference("E8"), table.getEndCellReference());
|
||||
assertEquals(new CellReference("B2"), table.getStartCellReference());
|
||||
assertEquals(new CellReference("E8"), table.getEndCellReference());
|
||||
|
||||
// At this point start and end cell reference are cached
|
||||
// and may not follow changes to the underlying CTTable
|
||||
ctTable.setRef("C1:M3");
|
||||
// At this point start and end cell reference are cached
|
||||
// and may not follow changes to the underlying CTTable
|
||||
ctTable.setRef("C1:M3");
|
||||
|
||||
assertEquals(new CellReference("B2"), table.getStartCellReference());
|
||||
assertEquals(new CellReference("E8"), table.getEndCellReference());
|
||||
assertEquals(new CellReference("B2"), table.getStartCellReference());
|
||||
assertEquals(new CellReference("E8"), table.getEndCellReference());
|
||||
|
||||
// Force a synchronization between CTTable and XSSFTable
|
||||
// start and end cell references
|
||||
table.updateReferences();
|
||||
// Force a synchronization between CTTable and XSSFTable
|
||||
// start and end cell references
|
||||
table.updateReferences();
|
||||
|
||||
assertEquals(new CellReference("C1"), table.getStartCellReference());
|
||||
assertEquals(new CellReference("M3"), table.getEndCellReference());
|
||||
|
||||
IOUtils.closeQuietly(wb);
|
||||
assertEquals(new CellReference("C1"), table.getStartCellReference());
|
||||
assertEquals(new CellReference("M3"), table.getEndCellReference());
|
||||
|
||||
IOUtils.closeQuietly(wb);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getRowCount() {
|
||||
XSSFWorkbook wb = new XSSFWorkbook();
|
||||
XSSFSheet sh = wb.createSheet();
|
||||
XSSFTable table = sh.createTable();
|
||||
CTTable ctTable = table.getCTTable();
|
||||
public void getRowCount() throws IOException {
|
||||
try (XSSFWorkbook wb = new XSSFWorkbook()) {
|
||||
XSSFSheet sh = wb.createSheet();
|
||||
XSSFTable table = sh.createTable();
|
||||
CTTable ctTable = table.getCTTable();
|
||||
|
||||
assertEquals(0, table.getRowCount());
|
||||
assertEquals(0, table.getRowCount());
|
||||
|
||||
ctTable.setRef("B2:B2");
|
||||
// update cell references to clear the cache
|
||||
table.updateReferences();
|
||||
assertEquals(1, table.getRowCount());
|
||||
ctTable.setRef("B2:B2");
|
||||
// update cell references to clear the cache
|
||||
table.updateReferences();
|
||||
assertEquals(1, table.getRowCount());
|
||||
|
||||
ctTable.setRef("B2:B12");
|
||||
// update cell references to clear the cache
|
||||
table.updateReferences();
|
||||
assertEquals(11, table.getRowCount());
|
||||
|
||||
IOUtils.closeQuietly(wb);
|
||||
ctTable.setRef("B2:B12");
|
||||
// update cell references to clear the cache
|
||||
table.updateReferences();
|
||||
assertEquals(11, table.getRowCount());
|
||||
|
||||
IOUtils.closeQuietly(wb);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetDataRowCount() {
|
||||
XSSFWorkbook wb = new XSSFWorkbook();
|
||||
XSSFSheet sh = wb.createSheet();
|
||||
AreaReference tableArea = new AreaReference("B2:B6", wb.getSpreadsheetVersion());
|
||||
XSSFTable table = sh.createTable(tableArea);
|
||||
public void testGetDataRowCount() throws IOException {
|
||||
try (XSSFWorkbook wb = new XSSFWorkbook()) {
|
||||
XSSFSheet sh = wb.createSheet();
|
||||
AreaReference tableArea = new AreaReference("B2:B6", wb.getSpreadsheetVersion());
|
||||
XSSFTable table = sh.createTable(tableArea);
|
||||
|
||||
assertEquals(5, table.getRowCount()); // includes column header
|
||||
assertEquals(4, table.getDataRowCount());
|
||||
|
||||
table.setArea(new AreaReference("B2:B7", wb.getSpreadsheetVersion()));
|
||||
|
||||
assertEquals(6, table.getRowCount());
|
||||
assertEquals(5, table.getDataRowCount());
|
||||
|
||||
IOUtils.closeQuietly(wb);
|
||||
assertEquals(5, table.getRowCount()); // includes column header
|
||||
assertEquals(4, table.getDataRowCount());
|
||||
|
||||
table.setArea(new AreaReference("B2:B7", wb.getSpreadsheetVersion()));
|
||||
|
||||
assertEquals(6, table.getRowCount());
|
||||
assertEquals(5, table.getDataRowCount());
|
||||
|
||||
IOUtils.closeQuietly(wb);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetDataRowCount() throws IOException {
|
||||
XSSFWorkbook wb = new XSSFWorkbook();
|
||||
XSSFSheet sh = wb.createSheet();
|
||||
|
||||
// 1 header row + 1 data row
|
||||
AreaReference tableArea = new AreaReference("C10:C11", wb.getSpreadsheetVersion());
|
||||
XSSFTable table = sh.createTable(tableArea);
|
||||
|
||||
assertEquals(2, table.getRowCount()); // includes all data and header/footer rows
|
||||
|
||||
assertEquals(1, table.getHeaderRowCount());
|
||||
assertEquals(1, table.getDataRowCount());
|
||||
assertEquals(0, table.getTotalsRowCount());
|
||||
try (XSSFWorkbook wb = new XSSFWorkbook()) {
|
||||
XSSFSheet sh = wb.createSheet();
|
||||
|
||||
table.setDataRowCount(5);
|
||||
|
||||
assertEquals(6, table.getRowCount());
|
||||
|
||||
assertEquals(1, table.getHeaderRowCount());
|
||||
assertEquals(5, table.getDataRowCount());
|
||||
assertEquals(0, table.getTotalsRowCount());
|
||||
|
||||
assertEquals("C10:C15", table.getArea().formatAsString());
|
||||
|
||||
|
||||
IOUtils.closeQuietly(wb);
|
||||
// 1 header row + 1 data row
|
||||
AreaReference tableArea = new AreaReference("C10:C11", wb.getSpreadsheetVersion());
|
||||
XSSFTable table = sh.createTable(tableArea);
|
||||
|
||||
assertEquals(2, table.getRowCount()); // includes all data and header/footer rows
|
||||
|
||||
assertEquals(1, table.getHeaderRowCount());
|
||||
assertEquals(1, table.getDataRowCount());
|
||||
assertEquals(0, table.getTotalsRowCount());
|
||||
|
||||
table.setDataRowCount(5);
|
||||
|
||||
assertEquals(6, table.getRowCount());
|
||||
|
||||
assertEquals(1, table.getHeaderRowCount());
|
||||
assertEquals(5, table.getDataRowCount());
|
||||
assertEquals(0, table.getTotalsRowCount());
|
||||
|
||||
assertEquals("C10:C15", table.getArea().formatAsString());
|
||||
|
||||
IOUtils.closeQuietly(wb);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -464,33 +463,34 @@ public final class TestXSSFTable {
|
|||
|
||||
@Test
|
||||
public void testDifferentHeaderTypes() throws IOException {
|
||||
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("TablesWithDifferentHeaders.xlsx");
|
||||
assertEquals(3, wb.getNumberOfSheets());
|
||||
XSSFSheet s;
|
||||
XSSFTable t;
|
||||
try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("TablesWithDifferentHeaders.xlsx")) {
|
||||
assertEquals(3, wb.getNumberOfSheets());
|
||||
XSSFSheet s;
|
||||
XSSFTable t;
|
||||
|
||||
// TODO Nicer column fetching
|
||||
|
||||
s = wb.getSheet("IntHeaders");
|
||||
assertEquals(1, s.getTables().size());
|
||||
t = s.getTables().get(0);
|
||||
assertEquals("A1:B2", t.getCellReferences().formatAsString());
|
||||
assertEquals("12", t.getCTTable().getTableColumns().getTableColumnArray(0).getName());
|
||||
assertEquals("34", t.getCTTable().getTableColumns().getTableColumnArray(1).getName());
|
||||
|
||||
s = wb.getSheet("FloatHeaders");
|
||||
assertEquals(1, s.getTables().size());
|
||||
t = s.getTables().get(0);
|
||||
assertEquals("A1:B2", t.getCellReferences().formatAsString());
|
||||
assertEquals("12.34", t.getCTTable().getTableColumns().getTableColumnArray(0).getName());
|
||||
assertEquals("34.56", t.getCTTable().getTableColumns().getTableColumnArray(1).getName());
|
||||
|
||||
s = wb.getSheet("NoExplicitHeaders");
|
||||
assertEquals(1, s.getTables().size());
|
||||
t = s.getTables().get(0);
|
||||
assertEquals("A1:B3", t.getCellReferences().formatAsString());
|
||||
assertEquals("Column1", t.getCTTable().getTableColumns().getTableColumnArray(0).getName());
|
||||
assertEquals("Column2", t.getCTTable().getTableColumns().getTableColumnArray(1).getName());
|
||||
// TODO Nicer column fetching
|
||||
|
||||
s = wb.getSheet("IntHeaders");
|
||||
assertEquals(1, s.getTables().size());
|
||||
t = s.getTables().get(0);
|
||||
assertEquals("A1:B2", t.getCellReferences().formatAsString());
|
||||
assertEquals("12", t.getCTTable().getTableColumns().getTableColumnArray(0).getName());
|
||||
assertEquals("34", t.getCTTable().getTableColumns().getTableColumnArray(1).getName());
|
||||
|
||||
s = wb.getSheet("FloatHeaders");
|
||||
assertEquals(1, s.getTables().size());
|
||||
t = s.getTables().get(0);
|
||||
assertEquals("A1:B2", t.getCellReferences().formatAsString());
|
||||
assertEquals("12.34", t.getCTTable().getTableColumns().getTableColumnArray(0).getName());
|
||||
assertEquals("34.56", t.getCTTable().getTableColumns().getTableColumnArray(1).getName());
|
||||
|
||||
s = wb.getSheet("NoExplicitHeaders");
|
||||
assertEquals(1, s.getTables().size());
|
||||
t = s.getTables().get(0);
|
||||
assertEquals("A1:B3", t.getCellReferences().formatAsString());
|
||||
assertEquals("Column1", t.getCTTable().getTableColumns().getTableColumnArray(0).getName());
|
||||
assertEquals("Column2", t.getCTTable().getTableColumns().getTableColumnArray(1).getName());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -498,51 +498,52 @@ public final class TestXSSFTable {
|
|||
*/
|
||||
@Test
|
||||
public void testNumericCellsInTable() throws IOException {
|
||||
XSSFWorkbook wb = new XSSFWorkbook();
|
||||
XSSFSheet s = wb.createSheet();
|
||||
|
||||
// Create some cells, some numeric, some not
|
||||
Cell c1 = s.createRow(0).createCell(0);
|
||||
Cell c2 = s.getRow(0).createCell(1);
|
||||
Cell c3 = s.getRow(0).createCell(2);
|
||||
Cell c4 = s.createRow(1).createCell(0);
|
||||
Cell c5 = s.getRow(1).createCell(1);
|
||||
Cell c6 = s.getRow(1).createCell(2);
|
||||
c1.setCellValue(12);
|
||||
c2.setCellValue(34.56);
|
||||
c3.setCellValue("ABCD");
|
||||
c4.setCellValue("AB");
|
||||
c5.setCellValue("CD");
|
||||
c6.setCellValue("EF");
|
||||
try (XSSFWorkbook wb = new XSSFWorkbook()) {
|
||||
XSSFSheet s = wb.createSheet();
|
||||
|
||||
// Setting up the table
|
||||
XSSFTable t = s.createTable(new AreaReference("A1:C3", wb.getSpreadsheetVersion()));
|
||||
t.setName("TableTest");
|
||||
t.setDisplayName("CT_Table_Test");
|
||||
t.createColumn("Column 1");
|
||||
t.createColumn("Column 2");
|
||||
t.createColumn("Column 3");
|
||||
t.setCellReferences(wb.getCreationHelper().createAreaReference(
|
||||
new CellReference(c1), new CellReference(c6)
|
||||
));
|
||||
// Create some cells, some numeric, some not
|
||||
Cell c1 = s.createRow(0).createCell(0);
|
||||
Cell c2 = s.getRow(0).createCell(1);
|
||||
Cell c3 = s.getRow(0).createCell(2);
|
||||
Cell c4 = s.createRow(1).createCell(0);
|
||||
Cell c5 = s.getRow(1).createCell(1);
|
||||
Cell c6 = s.getRow(1).createCell(2);
|
||||
c1.setCellValue(12);
|
||||
c2.setCellValue(34.56);
|
||||
c3.setCellValue("ABCD");
|
||||
c4.setCellValue("AB");
|
||||
c5.setCellValue("CD");
|
||||
c6.setCellValue("EF");
|
||||
|
||||
// Save and re-load
|
||||
XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb);
|
||||
IOUtils.closeQuietly(wb);
|
||||
s = wb2.getSheetAt(0);
|
||||
|
||||
// Check
|
||||
assertEquals(1, s.getTables().size());
|
||||
t = s.getTables().get(0);
|
||||
assertEquals("A1", t.getStartCellReference().formatAsString());
|
||||
assertEquals("C2", t.getEndCellReference().formatAsString());
|
||||
|
||||
// TODO Nicer column fetching
|
||||
assertEquals("12", t.getCTTable().getTableColumns().getTableColumnArray(0).getName());
|
||||
assertEquals("34.56", t.getCTTable().getTableColumns().getTableColumnArray(1).getName());
|
||||
assertEquals("ABCD", t.getCTTable().getTableColumns().getTableColumnArray(2).getName());
|
||||
|
||||
// Done
|
||||
IOUtils.closeQuietly(wb2);
|
||||
// Setting up the table
|
||||
XSSFTable t = s.createTable(new AreaReference("A1:C3", wb.getSpreadsheetVersion()));
|
||||
t.setName("TableTest");
|
||||
t.setDisplayName("CT_Table_Test");
|
||||
t.createColumn("Column 1");
|
||||
t.createColumn("Column 2");
|
||||
t.createColumn("Column 3");
|
||||
t.setCellReferences(wb.getCreationHelper().createAreaReference(
|
||||
new CellReference(c1), new CellReference(c6)
|
||||
));
|
||||
|
||||
// Save and re-load
|
||||
XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb);
|
||||
IOUtils.closeQuietly(wb);
|
||||
s = wb2.getSheetAt(0);
|
||||
|
||||
// Check
|
||||
assertEquals(1, s.getTables().size());
|
||||
t = s.getTables().get(0);
|
||||
assertEquals("A1", t.getStartCellReference().formatAsString());
|
||||
assertEquals("C2", t.getEndCellReference().formatAsString());
|
||||
|
||||
// TODO Nicer column fetching
|
||||
assertEquals("12", t.getCTTable().getTableColumns().getTableColumnArray(0).getName());
|
||||
assertEquals("34.56", t.getCTTable().getTableColumns().getTableColumnArray(1).getName());
|
||||
assertEquals("ABCD", t.getCTTable().getTableColumns().getTableColumnArray(2).getName());
|
||||
|
||||
// Done
|
||||
IOUtils.closeQuietly(wb2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
package org.apache.poi.xssf.usermodel.charts;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.poi.xddf.usermodel.chart.AxisPosition;
|
||||
|
@ -46,7 +47,7 @@ public final class TestXSSFChartAxis extends TestCase {
|
|||
axis = chart.createValueAxis(AxisPosition.BOTTOM);
|
||||
}
|
||||
|
||||
public void testLogBaseIllegalArgument() throws Exception {
|
||||
public void testLogBaseIllegalArgument() {
|
||||
IllegalArgumentException iae = null;
|
||||
try {
|
||||
axis.setLogBase(0.0);
|
||||
|
@ -64,12 +65,12 @@ public final class TestXSSFChartAxis extends TestCase {
|
|||
assertNotNull(iae);
|
||||
}
|
||||
|
||||
public void testLogBaseLegalArgument() throws Exception {
|
||||
public void testLogBaseLegalArgument() {
|
||||
axis.setLogBase(Math.E);
|
||||
assertTrue(Math.abs(axis.getLogBase() - Math.E) < EPSILON);
|
||||
}
|
||||
|
||||
public void testNumberFormat() throws Exception {
|
||||
public void testNumberFormat() {
|
||||
final String numberFormat = "General";
|
||||
axis.setNumberFormat(numberFormat);
|
||||
assertEquals(numberFormat, axis.getNumberFormat());
|
||||
|
@ -121,19 +122,20 @@ public final class TestXSSFChartAxis extends TestCase {
|
|||
assertEquals(AxisTickMark.CROSS, axis.getMinorTickMark());
|
||||
}
|
||||
|
||||
public void testGetChartAxisBug57362() {
|
||||
public void testGetChartAxisBug57362() throws IOException {
|
||||
//Load existing excel with some chart on it having primary and secondary axis.
|
||||
final XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("57362.xlsx");
|
||||
final XSSFSheet sh = workbook.getSheetAt(0);
|
||||
final XSSFDrawing drawing = sh.createDrawingPatriarch();
|
||||
final XSSFChart chart = drawing.getCharts().get(0);
|
||||
try (final XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("57362.xlsx")) {
|
||||
final XSSFSheet sh = workbook.getSheetAt(0);
|
||||
final XSSFDrawing drawing = sh.createDrawingPatriarch();
|
||||
final XSSFChart chart = drawing.getCharts().get(0);
|
||||
|
||||
final List<? extends XDDFChartAxis> axisList = chart.getAxes();
|
||||
final List<? extends XDDFChartAxis> axisList = chart.getAxes();
|
||||
|
||||
assertEquals(4, axisList.size());
|
||||
assertNotNull(axisList.get(0));
|
||||
assertNotNull(axisList.get(1));
|
||||
assertNotNull(axisList.get(2));
|
||||
assertNotNull(axisList.get(3));
|
||||
assertEquals(4, axisList.size());
|
||||
assertNotNull(axisList.get(0));
|
||||
assertNotNull(axisList.get(1));
|
||||
assertNotNull(axisList.get(2));
|
||||
assertNotNull(axisList.get(3));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -67,7 +67,9 @@ public class TestXSSFCellFill {
|
|||
XSSFCellFill cellFill = new XSSFCellFill(ctFill, null);
|
||||
CTPatternFill ctPatternFill = ctFill.addNewPatternFill();
|
||||
ctPatternFill.setPatternType(STPatternType.SOLID);
|
||||
assertEquals(FillPatternType.SOLID_FOREGROUND.ordinal(), cellFill.getPatternType().intValue()-1);
|
||||
STPatternType.Enum patternType = cellFill.getPatternType();
|
||||
assertNotNull(patternType);
|
||||
assertEquals(FillPatternType.SOLID_FOREGROUND.ordinal(), patternType.intValue()-1);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -76,38 +78,41 @@ public class TestXSSFCellFill {
|
|||
XSSFCellFill cellFill = new XSSFCellFill(ctFill, null);
|
||||
CTPatternFill ctPatternFill = ctFill.addNewPatternFill();
|
||||
ctPatternFill.setPatternType(STPatternType.DARK_DOWN);
|
||||
assertEquals(8, cellFill.getPatternType().intValue());
|
||||
STPatternType.Enum patternType = cellFill.getPatternType();
|
||||
assertNotNull(patternType);
|
||||
assertEquals(8, patternType.intValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testColorFromTheme() throws IOException {
|
||||
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("styles.xlsx");
|
||||
XSSFCell cellWithThemeColor = wb.getSheetAt(0).getRow(10).getCell(0);
|
||||
//color RGB will be extracted from theme
|
||||
XSSFColor foregroundColor = cellWithThemeColor.getCellStyle().getFillForegroundXSSFColor();
|
||||
byte[] rgb = foregroundColor.getRGB();
|
||||
byte[] rgbWithTint = foregroundColor.getRGBWithTint();
|
||||
// Dk2
|
||||
assertEquals(rgb[0],31);
|
||||
assertEquals(rgb[1],73);
|
||||
assertEquals(rgb[2],125);
|
||||
// Dk2, lighter 40% (tint is about 0.39998)
|
||||
// 31 * (1.0 - 0.39998) + (255 - 255 * (1.0 - 0.39998)) = 120.59552 => 120 (byte)
|
||||
// 73 * (1.0 - 0.39998) + (255 - 255 * (1.0 - 0.39998)) = 145.79636 => -111 (byte)
|
||||
// 125 * (1.0 - 0.39998) + (255 - 255 * (1.0 - 0.39998)) = 176.99740 => -80 (byte)
|
||||
assertEquals(rgbWithTint[0],120);
|
||||
assertEquals(rgbWithTint[1],-111);
|
||||
assertEquals(rgbWithTint[2],-80);
|
||||
wb.close();
|
||||
try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("styles.xlsx")) {
|
||||
XSSFCell cellWithThemeColor = wb.getSheetAt(0).getRow(10).getCell(0);
|
||||
//color RGB will be extracted from theme
|
||||
XSSFColor foregroundColor = cellWithThemeColor.getCellStyle().getFillForegroundXSSFColor();
|
||||
byte[] rgb = foregroundColor.getRGB();
|
||||
byte[] rgbWithTint = foregroundColor.getRGBWithTint();
|
||||
// Dk2
|
||||
assertEquals(rgb[0], 31);
|
||||
assertEquals(rgb[1], 73);
|
||||
assertEquals(rgb[2], 125);
|
||||
// Dk2, lighter 40% (tint is about 0.39998)
|
||||
// 31 * (1.0 - 0.39998) + (255 - 255 * (1.0 - 0.39998)) = 120.59552 => 120 (byte)
|
||||
// 73 * (1.0 - 0.39998) + (255 - 255 * (1.0 - 0.39998)) = 145.79636 => -111 (byte)
|
||||
// 125 * (1.0 - 0.39998) + (255 - 255 * (1.0 - 0.39998)) = 176.99740 => -80 (byte)
|
||||
assertEquals(rgbWithTint[0], 120);
|
||||
assertEquals(rgbWithTint[1], -111);
|
||||
assertEquals(rgbWithTint[2], -80);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFillWithoutColors() {
|
||||
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("FillWithoutColor.xlsx");
|
||||
XSSFCell cellWithFill = wb.getSheetAt(0).getRow(5).getCell(1);
|
||||
XSSFCellStyle style = cellWithFill.getCellStyle();
|
||||
assertNotNull(style);
|
||||
assertNull("had an empty background color", style.getFillBackgroundColorColor());
|
||||
assertNull("had an empty background color", style.getFillBackgroundXSSFColor());
|
||||
public void testFillWithoutColors() throws IOException {
|
||||
try (XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("FillWithoutColor.xlsx")) {
|
||||
XSSFCell cellWithFill = wb.getSheetAt(0).getRow(5).getCell(1);
|
||||
XSSFCellStyle style = cellWithFill.getCellStyle();
|
||||
assertNotNull(style);
|
||||
assertNull("had an empty background color", style.getFillBackgroundColorColor());
|
||||
assertNull("had an empty background color", style.getFillBackgroundXSSFColor());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,17 +17,23 @@
|
|||
|
||||
package org.apache.poi.xwpf;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
import org.apache.poi.ooxml.POIXMLProperties.CoreProperties;
|
||||
import org.apache.poi.openxml4j.opc.PackageProperties;
|
||||
import org.apache.poi.xwpf.usermodel.XWPFDocument;
|
||||
import org.junit.Test;
|
||||
import org.openxmlformats.schemas.officeDocument.x2006.extendedProperties.CTDigSigBlob;
|
||||
import org.openxmlformats.schemas.officeDocument.x2006.extendedProperties.CTProperties;
|
||||
import org.openxmlformats.schemas.officeDocument.x2006.extendedProperties.CTVectorLpstr;
|
||||
import org.openxmlformats.schemas.officeDocument.x2006.extendedProperties.CTVectorVariant;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
/**
|
||||
* Tests if the {@link CoreProperties#getKeywords()} method. This test has been
|
||||
* submitted because even though the
|
||||
|
@ -40,66 +46,68 @@ import org.openxmlformats.schemas.officeDocument.x2006.extendedProperties.CTVect
|
|||
*
|
||||
* @author Antoni Mylka
|
||||
*/
|
||||
public final class TestAllExtendedProperties extends TestCase {
|
||||
public final class TestAllExtendedProperties {
|
||||
@Test
|
||||
public void testGetAllExtendedProperties() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestPoiXMLDocumentCorePropertiesGetKeywords.docx");
|
||||
CTProperties ctProps = doc.getProperties().getExtendedProperties().getUnderlyingProperties();
|
||||
assertEquals("Microsoft Office Word", ctProps.getApplication());
|
||||
assertEquals("14.0000", ctProps.getAppVersion());
|
||||
assertEquals(57, ctProps.getCharacters());
|
||||
assertEquals(66, ctProps.getCharactersWithSpaces());
|
||||
assertEquals("", ctProps.getCompany());
|
||||
assertNull(ctProps.getDigSig());
|
||||
assertEquals(0, ctProps.getDocSecurity());
|
||||
assertNotNull(ctProps.getDomNode());
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestPoiXMLDocumentCorePropertiesGetKeywords.docx")) {
|
||||
CTProperties ctProps = doc.getProperties().getExtendedProperties().getUnderlyingProperties();
|
||||
assertEquals("Microsoft Office Word", ctProps.getApplication());
|
||||
assertEquals("14.0000", ctProps.getAppVersion());
|
||||
assertEquals(57, ctProps.getCharacters());
|
||||
assertEquals(66, ctProps.getCharactersWithSpaces());
|
||||
assertEquals("", ctProps.getCompany());
|
||||
assertNull(ctProps.getDigSig());
|
||||
assertEquals(0, ctProps.getDocSecurity());
|
||||
assertNotNull(ctProps.getDomNode());
|
||||
|
||||
CTVectorVariant vec = ctProps.getHeadingPairs();
|
||||
assertEquals(2, vec.getVector().sizeOfVariantArray());
|
||||
assertEquals("Title", vec.getVector().getVariantArray(0).getLpstr());
|
||||
assertEquals(1, vec.getVector().getVariantArray(1).getI4());
|
||||
CTVectorVariant vec = ctProps.getHeadingPairs();
|
||||
assertEquals(2, vec.getVector().sizeOfVariantArray());
|
||||
assertEquals("Title", vec.getVector().getVariantArray(0).getLpstr());
|
||||
assertEquals(1, vec.getVector().getVariantArray(1).getI4());
|
||||
|
||||
assertFalse(ctProps.isSetHiddenSlides());
|
||||
assertEquals(0, ctProps.getHiddenSlides());
|
||||
assertFalse(ctProps.isSetHLinks());
|
||||
assertNull(ctProps.getHLinks());
|
||||
assertNull(ctProps.getHyperlinkBase());
|
||||
assertTrue(ctProps.isSetHyperlinksChanged());
|
||||
assertFalse(ctProps.getHyperlinksChanged());
|
||||
assertEquals(1, ctProps.getLines());
|
||||
assertTrue(ctProps.isSetLinksUpToDate());
|
||||
assertFalse(ctProps.getLinksUpToDate());
|
||||
assertNull(ctProps.getManager());
|
||||
assertFalse(ctProps.isSetMMClips());
|
||||
assertEquals(0, ctProps.getMMClips());
|
||||
assertFalse(ctProps.isSetNotes());
|
||||
assertEquals(0, ctProps.getNotes());
|
||||
assertEquals(1, ctProps.getPages());
|
||||
assertEquals(1, ctProps.getParagraphs());
|
||||
assertNull(ctProps.getPresentationFormat());
|
||||
assertTrue(ctProps.isSetScaleCrop());
|
||||
assertFalse(ctProps.getScaleCrop());
|
||||
assertTrue(ctProps.isSetSharedDoc());
|
||||
assertFalse(ctProps.getSharedDoc());
|
||||
assertFalse(ctProps.isSetSlides());
|
||||
assertEquals(0, ctProps.getSlides());
|
||||
assertEquals("Normal.dotm", ctProps.getTemplate());
|
||||
assertFalse(ctProps.isSetHiddenSlides());
|
||||
assertEquals(0, ctProps.getHiddenSlides());
|
||||
assertFalse(ctProps.isSetHLinks());
|
||||
assertNull(ctProps.getHLinks());
|
||||
assertNull(ctProps.getHyperlinkBase());
|
||||
assertTrue(ctProps.isSetHyperlinksChanged());
|
||||
assertFalse(ctProps.getHyperlinksChanged());
|
||||
assertEquals(1, ctProps.getLines());
|
||||
assertTrue(ctProps.isSetLinksUpToDate());
|
||||
assertFalse(ctProps.getLinksUpToDate());
|
||||
assertNull(ctProps.getManager());
|
||||
assertFalse(ctProps.isSetMMClips());
|
||||
assertEquals(0, ctProps.getMMClips());
|
||||
assertFalse(ctProps.isSetNotes());
|
||||
assertEquals(0, ctProps.getNotes());
|
||||
assertEquals(1, ctProps.getPages());
|
||||
assertEquals(1, ctProps.getParagraphs());
|
||||
assertNull(ctProps.getPresentationFormat());
|
||||
assertTrue(ctProps.isSetScaleCrop());
|
||||
assertFalse(ctProps.getScaleCrop());
|
||||
assertTrue(ctProps.isSetSharedDoc());
|
||||
assertFalse(ctProps.getSharedDoc());
|
||||
assertFalse(ctProps.isSetSlides());
|
||||
assertEquals(0, ctProps.getSlides());
|
||||
assertEquals("Normal.dotm", ctProps.getTemplate());
|
||||
|
||||
CTVectorLpstr vec2 = ctProps.getTitlesOfParts();
|
||||
assertEquals(1, vec2.getVector().sizeOfLpstrArray());
|
||||
assertEquals("Example Word 2010 Document", vec2.getVector().getLpstrArray(0));
|
||||
CTVectorLpstr vec2 = ctProps.getTitlesOfParts();
|
||||
assertEquals(1, vec2.getVector().sizeOfLpstrArray());
|
||||
assertEquals("Example Word 2010 Document", vec2.getVector().getLpstrArray(0));
|
||||
|
||||
assertEquals(3, ctProps.getTotalTime());
|
||||
assertEquals(10, ctProps.getWords());
|
||||
assertEquals(3, ctProps.getTotalTime());
|
||||
assertEquals(10, ctProps.getWords());
|
||||
|
||||
// Check the digital signature part
|
||||
// Won't be there in this file, but we
|
||||
// need to do this check so that the
|
||||
// appropriate parts end up in the
|
||||
// smaller ooxml schemas file
|
||||
CTDigSigBlob blob = ctProps.getDigSig();
|
||||
assertNull(blob);
|
||||
// Check the digital signature part
|
||||
// Won't be there in this file, but we
|
||||
// need to do this check so that the
|
||||
// appropriate parts end up in the
|
||||
// smaller ooxml schemas file
|
||||
CTDigSigBlob blob = ctProps.getDigSig();
|
||||
assertNull(blob);
|
||||
|
||||
blob = CTDigSigBlob.Factory.newInstance();
|
||||
blob.setBlob(new byte[]{2, 6, 7, 2, 3, 4, 5, 1, 2, 3});
|
||||
blob = CTDigSigBlob.Factory.newInstance();
|
||||
blob.setBlob(new byte[]{2, 6, 7, 2, 3, 4, 5, 1, 2, 3});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,13 +38,14 @@ import org.apache.poi.xwpf.usermodel.XWPFDocument;
|
|||
*/
|
||||
public final class TestPackageCorePropertiesGetKeywords extends TestCase {
|
||||
public void testGetSetKeywords() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestPoiXMLDocumentCorePropertiesGetKeywords.docx");
|
||||
String keywords = doc.getProperties().getCoreProperties().getKeywords();
|
||||
assertEquals("extractor, test, rdf", keywords);
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestPoiXMLDocumentCorePropertiesGetKeywords.docx")) {
|
||||
String keywords = doc.getProperties().getCoreProperties().getKeywords();
|
||||
assertEquals("extractor, test, rdf", keywords);
|
||||
|
||||
doc.getProperties().getCoreProperties().setKeywords("test, keywords");
|
||||
doc = XWPFTestDataSamples.writeOutAndReadBack(doc);
|
||||
keywords = doc.getProperties().getCoreProperties().getKeywords();
|
||||
assertEquals("test, keywords", keywords);
|
||||
doc.getProperties().getCoreProperties().setKeywords("test, keywords");
|
||||
XWPFDocument docBack = XWPFTestDataSamples.writeOutAndReadBack(doc);
|
||||
keywords = docBack.getProperties().getCoreProperties().getKeywords();
|
||||
assertEquals("test, keywords", keywords);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,272 +39,274 @@ public class TestXWPFWordExtractor extends TestCase {
|
|||
|
||||
/**
|
||||
* Get text out of the simple file
|
||||
*
|
||||
* @throws IOException
|
||||
*/
|
||||
public void testGetSimpleText() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx");
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx")) {
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
|
||||
String text = extractor.getText();
|
||||
assertTrue(text.length() > 0);
|
||||
String text = extractor.getText();
|
||||
assertTrue(text.length() > 0);
|
||||
|
||||
// Check contents
|
||||
assertStartsWith(text,
|
||||
"Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc at risus vel erat tempus posuere. Aenean non ante. Suspendisse vehicula dolor sit amet odio."
|
||||
);
|
||||
assertEndsWith(text,
|
||||
"Phasellus ultricies mi nec leo. Sed tempus. In sit amet lorem at velit faucibus vestibulum.\n"
|
||||
);
|
||||
// Check contents
|
||||
assertStartsWith(text,
|
||||
"Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc at risus vel erat tempus posuere. Aenean non ante. Suspendisse vehicula dolor sit amet odio."
|
||||
);
|
||||
assertEndsWith(text,
|
||||
"Phasellus ultricies mi nec leo. Sed tempus. In sit amet lorem at velit faucibus vestibulum.\n"
|
||||
);
|
||||
|
||||
// Check number of paragraphs by counting number of newlines
|
||||
int numberOfParagraphs = StringUtil.countMatches(text, '\n');
|
||||
assertEquals(3, numberOfParagraphs);
|
||||
// Check number of paragraphs by counting number of newlines
|
||||
int numberOfParagraphs = StringUtil.countMatches(text, '\n');
|
||||
assertEquals(3, numberOfParagraphs);
|
||||
|
||||
extractor.close();
|
||||
extractor.close();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests getting the text out of a complex file
|
||||
*
|
||||
* @throws IOException
|
||||
*/
|
||||
public void testGetComplexText() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("IllustrativeCases.docx");
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("IllustrativeCases.docx")) {
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
|
||||
String text = extractor.getText();
|
||||
assertTrue(text.length() > 0);
|
||||
String text = extractor.getText();
|
||||
assertTrue(text.length() > 0);
|
||||
|
||||
char euro = '\u20ac';
|
||||
char euro = '\u20ac';
|
||||
// System.err.println("'"+text.substring(text.length() - 40) + "'");
|
||||
|
||||
// Check contents
|
||||
assertStartsWith(text,
|
||||
" \n(V) ILLUSTRATIVE CASES\n\n"
|
||||
);
|
||||
assertContains(text,
|
||||
"As well as gaining " + euro + "90 from child benefit increases, he will also receive the early childhood supplement of " + euro + "250 per quarter for Vincent for the full four quarters of the year.\n\n\n\n"// \n\n\n"
|
||||
);
|
||||
assertEndsWith(text,
|
||||
"11.4%\t\t90\t\t\t\t\t250\t\t1,310\t\n\n \n\n\n"
|
||||
);
|
||||
// Check contents
|
||||
assertStartsWith(text,
|
||||
" \n(V) ILLUSTRATIVE CASES\n\n"
|
||||
);
|
||||
assertContains(text,
|
||||
"As well as gaining " + euro + "90 from child benefit increases, he will also receive the early childhood supplement of " + euro + "250 per quarter for Vincent for the full four quarters of the year.\n\n\n\n"// \n\n\n"
|
||||
);
|
||||
assertEndsWith(text,
|
||||
"11.4%\t\t90\t\t\t\t\t250\t\t1,310\t\n\n \n\n\n"
|
||||
);
|
||||
|
||||
// Check number of paragraphs by counting number of newlines
|
||||
int numberOfParagraphs = StringUtil.countMatches(text, '\n');
|
||||
assertEquals(134, numberOfParagraphs);
|
||||
// Check number of paragraphs by counting number of newlines
|
||||
int numberOfParagraphs = StringUtil.countMatches(text, '\n');
|
||||
assertEquals(134, numberOfParagraphs);
|
||||
|
||||
extractor.close();
|
||||
extractor.close();
|
||||
}
|
||||
}
|
||||
|
||||
public void testGetWithHyperlinks() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestDocument.docx");
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestDocument.docx")) {
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
|
||||
// Now check contents
|
||||
extractor.setFetchHyperlinks(false);
|
||||
assertEquals(
|
||||
"This is a test document.\nThis bit is in bold and italic\n" +
|
||||
"Back to normal\n" +
|
||||
"This contains BOLD, ITALIC and BOTH, as well as RED and YELLOW text.\n" +
|
||||
"We have a hyperlink here, and another.\n",
|
||||
extractor.getText()
|
||||
);
|
||||
// Now check contents
|
||||
extractor.setFetchHyperlinks(false);
|
||||
assertEquals(
|
||||
"This is a test document.\nThis bit is in bold and italic\n" +
|
||||
"Back to normal\n" +
|
||||
"This contains BOLD, ITALIC and BOTH, as well as RED and YELLOW text.\n" +
|
||||
"We have a hyperlink here, and another.\n",
|
||||
extractor.getText()
|
||||
);
|
||||
|
||||
// One hyperlink is a real one, one is just to the top of page
|
||||
extractor.setFetchHyperlinks(true);
|
||||
assertEquals(
|
||||
"This is a test document.\nThis bit is in bold and italic\n" +
|
||||
"Back to normal\n" +
|
||||
"This contains BOLD, ITALIC and BOTH, as well as RED and YELLOW text.\n" +
|
||||
"We have a hyperlink <http://poi.apache.org/> here, and another.\n",
|
||||
extractor.getText()
|
||||
);
|
||||
// One hyperlink is a real one, one is just to the top of page
|
||||
extractor.setFetchHyperlinks(true);
|
||||
assertEquals(
|
||||
"This is a test document.\nThis bit is in bold and italic\n" +
|
||||
"Back to normal\n" +
|
||||
"This contains BOLD, ITALIC and BOTH, as well as RED and YELLOW text.\n" +
|
||||
"We have a hyperlink <http://poi.apache.org/> here, and another.\n",
|
||||
extractor.getText()
|
||||
);
|
||||
|
||||
extractor.close();
|
||||
extractor.close();
|
||||
}
|
||||
}
|
||||
|
||||
public void testHeadersFooters() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("ThreeColHeadFoot.docx");
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("ThreeColHeadFoot.docx")) {
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
|
||||
assertEquals(
|
||||
"First header column!\tMid header\tRight header!\n" +
|
||||
"This is a sample word document. It has two pages. It has a three column heading, and a three column footer\n" +
|
||||
"\n" +
|
||||
"HEADING TEXT\n" +
|
||||
"\n" +
|
||||
"More on page one\n" +
|
||||
"\n\n" +
|
||||
"End of page 1\n\n\n" +
|
||||
"This is page two. It also has a three column heading, and a three column footer.\n" +
|
||||
"Footer Left\tFooter Middle\tFooter Right\n",
|
||||
extractor.getText()
|
||||
);
|
||||
assertEquals(
|
||||
"First header column!\tMid header\tRight header!\n" +
|
||||
"This is a sample word document. It has two pages. It has a three column heading, and a three column footer\n" +
|
||||
"\n" +
|
||||
"HEADING TEXT\n" +
|
||||
"\n" +
|
||||
"More on page one\n" +
|
||||
"\n\n" +
|
||||
"End of page 1\n\n\n" +
|
||||
"This is page two. It also has a three column heading, and a three column footer.\n" +
|
||||
"Footer Left\tFooter Middle\tFooter Right\n",
|
||||
extractor.getText()
|
||||
);
|
||||
|
||||
// Now another file, expect multiple headers
|
||||
// and multiple footers
|
||||
doc = XWPFTestDataSamples.openSampleDocument("DiffFirstPageHeadFoot.docx");
|
||||
extractor.close();
|
||||
// Now another file, expect multiple headers
|
||||
// and multiple footers
|
||||
XWPFDocument doc2 = XWPFTestDataSamples.openSampleDocument("DiffFirstPageHeadFoot.docx");
|
||||
extractor.close();
|
||||
|
||||
extractor = new XWPFWordExtractor(doc);
|
||||
extractor.close();
|
||||
extractor = new XWPFWordExtractor(doc2);
|
||||
extractor.close();
|
||||
|
||||
extractor =
|
||||
new XWPFWordExtractor(doc);
|
||||
extractor.getText();
|
||||
extractor =
|
||||
new XWPFWordExtractor(doc2);
|
||||
extractor.getText();
|
||||
|
||||
assertEquals(
|
||||
"I am the header on the first page, and I" + '\u2019' + "m nice and simple\n" +
|
||||
"First header column!\tMid header\tRight header!\n" +
|
||||
"This is a sample word document. It has two pages. It has a simple header and footer, which is different to all the other pages.\n" +
|
||||
"\n" +
|
||||
"HEADING TEXT\n" +
|
||||
"\n" +
|
||||
"More on page one\n" +
|
||||
"\n\n" +
|
||||
"End of page 1\n\n\n" +
|
||||
"This is page two. It also has a three column heading, and a three column footer.\n" +
|
||||
"The footer of the first page\n" +
|
||||
"Footer Left\tFooter Middle\tFooter Right\n",
|
||||
extractor.getText()
|
||||
);
|
||||
assertEquals(
|
||||
"I am the header on the first page, and I" + '\u2019' + "m nice and simple\n" +
|
||||
"First header column!\tMid header\tRight header!\n" +
|
||||
"This is a sample word document. It has two pages. It has a simple header and footer, which is different to all the other pages.\n" +
|
||||
"\n" +
|
||||
"HEADING TEXT\n" +
|
||||
"\n" +
|
||||
"More on page one\n" +
|
||||
"\n\n" +
|
||||
"End of page 1\n\n\n" +
|
||||
"This is page two. It also has a three column heading, and a three column footer.\n" +
|
||||
"The footer of the first page\n" +
|
||||
"Footer Left\tFooter Middle\tFooter Right\n",
|
||||
extractor.getText()
|
||||
);
|
||||
|
||||
extractor.close();
|
||||
extractor.close();
|
||||
}
|
||||
}
|
||||
|
||||
public void testFootnotes() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("footnotes.docx");
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
String text = extractor.getText();
|
||||
assertContains(text,"snoska");
|
||||
assertContains(text,"Eto ochen prostoy[footnoteRef:1] text so snoskoy");
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("footnotes.docx")) {
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
String text = extractor.getText();
|
||||
assertContains(text, "snoska");
|
||||
assertContains(text, "Eto ochen prostoy[footnoteRef:1] text so snoskoy");
|
||||
|
||||
extractor.close();
|
||||
extractor.close();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void testTableFootnotes() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("table_footnotes.docx");
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("table_footnotes.docx")) {
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
|
||||
assertContains(extractor.getText(),"snoska");
|
||||
assertContains(extractor.getText(), "snoska");
|
||||
|
||||
extractor.close();
|
||||
extractor.close();
|
||||
}
|
||||
}
|
||||
|
||||
public void testFormFootnotes() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("form_footnotes.docx");
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("form_footnotes.docx")) {
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
|
||||
String text = extractor.getText();
|
||||
assertContains(text,"testdoc");
|
||||
assertContains(text,"test phrase");
|
||||
String text = extractor.getText();
|
||||
assertContains(text, "testdoc");
|
||||
assertContains(text, "test phrase");
|
||||
|
||||
extractor.close();
|
||||
extractor.close();
|
||||
}
|
||||
}
|
||||
|
||||
public void testEndnotes() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("endnotes.docx");
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
String text = extractor.getText();
|
||||
assertContains(text,"XXX");
|
||||
assertContains(text,"tilaka [endnoteRef:2]or 'tika'");
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("endnotes.docx")) {
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
String text = extractor.getText();
|
||||
assertContains(text, "XXX");
|
||||
assertContains(text, "tilaka [endnoteRef:2]or 'tika'");
|
||||
|
||||
extractor.close();
|
||||
extractor.close();
|
||||
}
|
||||
}
|
||||
|
||||
public void testInsertedDeletedText() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("delins.docx");
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("delins.docx")) {
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
|
||||
assertContains(extractor.getText(),"pendant worn");
|
||||
assertContains(extractor.getText(),"extremely well");
|
||||
assertContains(extractor.getText(), "pendant worn");
|
||||
assertContains(extractor.getText(), "extremely well");
|
||||
|
||||
extractor.close();
|
||||
extractor.close();
|
||||
}
|
||||
}
|
||||
|
||||
public void testParagraphHeader() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Headers.docx");
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Headers.docx")) {
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
|
||||
assertContains(extractor.getText(),"Section 1");
|
||||
assertContains(extractor.getText(),"Section 2");
|
||||
assertContains(extractor.getText(),"Section 3");
|
||||
assertContains(extractor.getText(), "Section 1");
|
||||
assertContains(extractor.getText(), "Section 2");
|
||||
assertContains(extractor.getText(), "Section 3");
|
||||
|
||||
extractor.close();
|
||||
extractor.close();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that we can open and process .docm
|
||||
* (macro enabled) docx files (bug #45690)
|
||||
*
|
||||
* @throws IOException
|
||||
*/
|
||||
public void testDOCMFiles() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("45690.docm");
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("45690.docm")) {
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
|
||||
assertContains(extractor.getText(),"2004");
|
||||
assertContains(extractor.getText(),"2008");
|
||||
assertContains(extractor.getText(),"(120 ");
|
||||
assertContains(extractor.getText(), "2004");
|
||||
assertContains(extractor.getText(), "2008");
|
||||
assertContains(extractor.getText(), "(120 ");
|
||||
|
||||
extractor.close();
|
||||
extractor.close();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that we handle things like tabs and
|
||||
* carriage returns properly in the text that
|
||||
* we're extracting (bug #49189)
|
||||
*
|
||||
* @throws IOException
|
||||
*/
|
||||
public void testDocTabs() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("WithTabs.docx");
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("WithTabs.docx")) {
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
|
||||
// Check bits
|
||||
assertContains(extractor.getText(),"a");
|
||||
assertContains(extractor.getText(),"\t");
|
||||
assertContains(extractor.getText(),"b");
|
||||
// Check bits
|
||||
assertContains(extractor.getText(), "a");
|
||||
assertContains(extractor.getText(), "\t");
|
||||
assertContains(extractor.getText(), "b");
|
||||
|
||||
// Now check the first paragraph in total
|
||||
assertContains(extractor.getText(),"a\tb\n");
|
||||
// Now check the first paragraph in total
|
||||
assertContains(extractor.getText(), "a\tb\n");
|
||||
|
||||
extractor.close();
|
||||
extractor.close();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The output should not contain field codes, e.g. those specified in the
|
||||
* w:instrText tag (spec sec. 17.16.23)
|
||||
*
|
||||
* @throws IOException
|
||||
*/
|
||||
public void testNoFieldCodes() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("FieldCodes.docx");
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
String text = extractor.getText();
|
||||
assertTrue(text.length() > 0);
|
||||
assertFalse(text.contains("AUTHOR"));
|
||||
assertFalse(text.contains("CREATEDATE"));
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("FieldCodes.docx")) {
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
String text = extractor.getText();
|
||||
assertTrue(text.length() > 0);
|
||||
assertFalse(text.contains("AUTHOR"));
|
||||
assertFalse(text.contains("CREATEDATE"));
|
||||
|
||||
extractor.close();
|
||||
extractor.close();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The output should contain the values of simple fields, those specified
|
||||
* with the fldSimple element (spec sec. 17.16.19)
|
||||
*
|
||||
* @throws IOException
|
||||
*/
|
||||
public void testFldSimpleContent() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("FldSimple.docx");
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
String text = extractor.getText();
|
||||
assertTrue(text.length() > 0);
|
||||
assertContains(text,"FldSimple.docx");
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("FldSimple.docx")) {
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
String text = extractor.getText();
|
||||
assertTrue(text.length() > 0);
|
||||
assertContains(text, "FldSimple.docx");
|
||||
|
||||
extractor.close();
|
||||
extractor.close();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -312,152 +314,159 @@ public class TestXWPFWordExtractor extends TestCase {
|
|||
* NoClassDefFoundError for CTAnchor in XWPFRun
|
||||
*/
|
||||
public void testDrawings() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("drawing.docx");
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
String text = extractor.getText();
|
||||
assertTrue(text.length() > 0);
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("drawing.docx")) {
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
String text = extractor.getText();
|
||||
assertTrue(text.length() > 0);
|
||||
|
||||
extractor.close();
|
||||
extractor.close();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test for basic extraction of SDT content
|
||||
*
|
||||
* @throws IOException
|
||||
*/
|
||||
public void testSimpleControlContent() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Bug54849.docx");
|
||||
String[] targs = new String[]{
|
||||
"header_rich_text",
|
||||
"rich_text",
|
||||
"rich_text_pre_table\nrich_text_cell1\t\t\t\n\t\t\t\n\t\t\t\n\nrich_text_post_table",
|
||||
"plain_text_no_newlines",
|
||||
"plain_text_with_newlines1\nplain_text_with_newlines2\n",
|
||||
"watermelon\n",
|
||||
"dirt\n",
|
||||
"4/16/2013\n",
|
||||
"rich_text_in_cell",
|
||||
"abc",
|
||||
"rich_text_in_paragraph_in_cell",
|
||||
"footer_rich_text",
|
||||
"footnote_sdt",
|
||||
"endnote_sdt"
|
||||
};
|
||||
XWPFWordExtractor ex = new XWPFWordExtractor(doc);
|
||||
String s = ex.getText().toLowerCase(Locale.ROOT);
|
||||
int hits = 0;
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Bug54849.docx")) {
|
||||
String[] targs = new String[]{
|
||||
"header_rich_text",
|
||||
"rich_text",
|
||||
"rich_text_pre_table\nrich_text_cell1\t\t\t\n\t\t\t\n\t\t\t\n\nrich_text_post_table",
|
||||
"plain_text_no_newlines",
|
||||
"plain_text_with_newlines1\nplain_text_with_newlines2\n",
|
||||
"watermelon\n",
|
||||
"dirt\n",
|
||||
"4/16/2013\n",
|
||||
"rich_text_in_cell",
|
||||
"abc",
|
||||
"rich_text_in_paragraph_in_cell",
|
||||
"footer_rich_text",
|
||||
"footnote_sdt",
|
||||
"endnote_sdt"
|
||||
};
|
||||
XWPFWordExtractor ex = new XWPFWordExtractor(doc);
|
||||
String s = ex.getText().toLowerCase(Locale.ROOT);
|
||||
int hits = 0;
|
||||
|
||||
for (String targ : targs) {
|
||||
boolean hit = false;
|
||||
if (s.contains(targ)) {
|
||||
hit = true;
|
||||
hits++;
|
||||
for (String targ : targs) {
|
||||
boolean hit = false;
|
||||
if (s.contains(targ)) {
|
||||
hit = true;
|
||||
hits++;
|
||||
}
|
||||
assertTrue("controlled content loading-" + targ, hit);
|
||||
}
|
||||
assertEquals("controlled content loading-" + targ, true, hit);
|
||||
}
|
||||
assertEquals("controlled content loading hit count", targs.length, hits);
|
||||
ex.close();
|
||||
assertEquals("controlled content loading hit count", targs.length, hits);
|
||||
ex.close();
|
||||
|
||||
|
||||
doc = XWPFTestDataSamples.openSampleDocument("Bug54771a.docx");
|
||||
targs = new String[]{
|
||||
"bb",
|
||||
"test subtitle\n",
|
||||
"test user\n",
|
||||
};
|
||||
ex = new XWPFWordExtractor(doc);
|
||||
s = ex.getText().toLowerCase(Locale.ROOT);
|
||||
XWPFDocument doc2 = XWPFTestDataSamples.openSampleDocument("Bug54771a.docx");
|
||||
targs = new String[]{
|
||||
"bb",
|
||||
"test subtitle\n",
|
||||
"test user\n",
|
||||
};
|
||||
ex = new XWPFWordExtractor(doc2);
|
||||
s = ex.getText().toLowerCase(Locale.ROOT);
|
||||
|
||||
//At one point in development there were three copies of the text.
|
||||
//This ensures that there is only one copy.
|
||||
for (String targ : targs) {
|
||||
Matcher m = Pattern.compile(targ).matcher(s);
|
||||
//At one point in development there were three copies of the text.
|
||||
//This ensures that there is only one copy.
|
||||
for (String targ : targs) {
|
||||
Matcher m = Pattern.compile(targ).matcher(s);
|
||||
int hit = 0;
|
||||
while (m.find()) {
|
||||
hit++;
|
||||
}
|
||||
assertEquals("controlled content loading-" + targ, 1, hit);
|
||||
}
|
||||
//"test\n" appears twice: once as the "title" and once in the text.
|
||||
//This also happens when you save this document as text from MSWord.
|
||||
Matcher m = Pattern.compile("test\n").matcher(s);
|
||||
int hit = 0;
|
||||
while (m.find()) {
|
||||
hit++;
|
||||
}
|
||||
assertEquals("controlled content loading-" + targ, 1, hit);
|
||||
assertEquals("test<N>", 2, hit);
|
||||
ex.close();
|
||||
}
|
||||
//"test\n" appears twice: once as the "title" and once in the text.
|
||||
//This also happens when you save this document as text from MSWord.
|
||||
Matcher m = Pattern.compile("test\n").matcher(s);
|
||||
int hit = 0;
|
||||
while (m.find()) {
|
||||
hit++;
|
||||
}
|
||||
assertEquals("test<N>", 2, hit);
|
||||
ex.close();
|
||||
}
|
||||
|
||||
/**
|
||||
* No Header or Footer in document
|
||||
*/
|
||||
public void testBug55733() throws Exception {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("55733.docx");
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("55733.docx")) {
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
|
||||
// Check it gives text without error
|
||||
extractor.getText();
|
||||
extractor.close();
|
||||
// Check it gives text without error
|
||||
extractor.getText();
|
||||
extractor.close();
|
||||
}
|
||||
}
|
||||
|
||||
public void testCheckboxes() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("checkboxes.docx");
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("checkboxes.docx")) {
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
|
||||
assertEquals("This is a small test for checkboxes \nunchecked: |_| \n" +
|
||||
"Or checked: |X|\n\n\n\n\n" +
|
||||
"Test a checkbox within a textbox: |_| -> |X|\n\n\n" +
|
||||
"In Table:\n|_|\t|X|\n\n\n" +
|
||||
"In Sequence:\n|X||_||X|\n", extractor.getText());
|
||||
extractor.close();
|
||||
assertEquals("This is a small test for checkboxes \nunchecked: |_| \n" +
|
||||
"Or checked: |X|\n\n\n\n\n" +
|
||||
"Test a checkbox within a textbox: |_| -> |X|\n\n\n" +
|
||||
"In Table:\n|_|\t|X|\n\n\n" +
|
||||
"In Sequence:\n|X||_||X|\n", extractor.getText());
|
||||
extractor.close();
|
||||
}
|
||||
}
|
||||
|
||||
public void testMultipleBodyBug() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("MultipleBodyBug.docx");
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
assertEquals("START BODY 1 The quick, brown fox jumps over a lazy dog. END BODY 1.\n"
|
||||
+ "START BODY 2 The quick, brown fox jumps over a lazy dog. END BODY 2.\n"
|
||||
+ "START BODY 3 The quick, brown fox jumps over a lazy dog. END BODY 3.\n",
|
||||
extractor.getText());
|
||||
extractor.close();
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("MultipleBodyBug.docx")) {
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
assertEquals("START BODY 1 The quick, brown fox jumps over a lazy dog. END BODY 1.\n"
|
||||
+ "START BODY 2 The quick, brown fox jumps over a lazy dog. END BODY 2.\n"
|
||||
+ "START BODY 3 The quick, brown fox jumps over a lazy dog. END BODY 3.\n",
|
||||
extractor.getText());
|
||||
extractor.close();
|
||||
}
|
||||
}
|
||||
|
||||
public void testPhonetic() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("61470.docx");
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
//expect: baseText (phoneticText)
|
||||
assertEquals("\u6771\u4EAC (\u3068\u3046\u304D\u3087\u3046)", extractor.getText().trim());
|
||||
extractor.close();
|
||||
extractor = new XWPFWordExtractor(doc);
|
||||
extractor.setConcatenatePhoneticRuns(false);
|
||||
assertEquals("\u6771\u4EAC", extractor.getText().trim());
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("61470.docx")) {
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
//expect: baseText (phoneticText)
|
||||
assertEquals("\u6771\u4EAC (\u3068\u3046\u304D\u3087\u3046)", extractor.getText().trim());
|
||||
extractor.close();
|
||||
extractor = new XWPFWordExtractor(doc);
|
||||
extractor.setConcatenatePhoneticRuns(false);
|
||||
assertEquals("\u6771\u4EAC", extractor.getText().trim());
|
||||
}
|
||||
}
|
||||
|
||||
public void testCTPictureBase() throws IOException {
|
||||
//This forces ctpicturebase to be included in the poi-ooxml-schemas jar
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("61991.docx");
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
String txt = extractor.getText();
|
||||
assertContains(txt, "Sequencing data");
|
||||
extractor.close();
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("61991.docx")) {
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
String txt = extractor.getText();
|
||||
assertContains(txt, "Sequencing data");
|
||||
extractor.close();
|
||||
}
|
||||
}
|
||||
|
||||
public void testGlossary() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("60316.dotx");
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
String txt = extractor.getText();
|
||||
assertContains(txt, "Getting the perfect");
|
||||
//this content appears only in the glossary document
|
||||
//once we add processing for this, we can change this to contains
|
||||
assertNotContained(txt, "table rows");
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("60316.dotx")) {
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
String txt = extractor.getText();
|
||||
assertContains(txt, "Getting the perfect");
|
||||
//this content appears only in the glossary document
|
||||
//once we add processing for this, we can change this to contains
|
||||
assertNotContained(txt, "table rows");
|
||||
}
|
||||
}
|
||||
|
||||
public void testPartsInTemplate() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("60316b.dotx");
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
String txt = extractor.getText();
|
||||
assertContains(txt, "header 2");
|
||||
assertContains(txt, "footer 1");
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("60316b.dotx")) {
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
|
||||
String txt = extractor.getText();
|
||||
assertContains(txt, "header 2");
|
||||
assertContains(txt, "footer 1");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,27 +19,41 @@ package org.apache.poi.xwpf.model;
|
|||
|
||||
import java.io.IOException;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
import org.apache.poi.xwpf.XWPFTestDataSamples;
|
||||
import org.apache.poi.xwpf.usermodel.XWPFDocument;
|
||||
import org.apache.poi.xwpf.usermodel.XWPFHyperlinkRun;
|
||||
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
/**
|
||||
* Tests for the various XWPF decorators
|
||||
*/
|
||||
public class TestXWPFDecorators extends TestCase {
|
||||
public class TestXWPFDecorators {
|
||||
private XWPFDocument simple;
|
||||
private XWPFDocument hyperlink;
|
||||
private XWPFDocument comments;
|
||||
|
||||
@Override
|
||||
protected void setUp() throws IOException {
|
||||
@Before
|
||||
public void setUp() throws IOException {
|
||||
simple = XWPFTestDataSamples.openSampleDocument("SampleDoc.docx");
|
||||
hyperlink = XWPFTestDataSamples.openSampleDocument("TestDocument.docx");
|
||||
comments = XWPFTestDataSamples.openSampleDocument("WordWithAttachments.docx");
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() throws IOException {
|
||||
simple.close();
|
||||
hyperlink.close();
|
||||
comments.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHyperlink() {
|
||||
XWPFParagraph ps;
|
||||
XWPFParagraph ph;
|
||||
|
@ -66,6 +80,7 @@ public class TestXWPFDecorators extends TestCase {
|
|||
assertEquals("http://poi.apache.org/", link.getHyperlink(hyperlink).getURL());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testComments() {
|
||||
int numComments = 0;
|
||||
for (XWPFParagraph p : comments.getParagraphs()) {
|
||||
|
|
|
@ -37,80 +37,79 @@ public class TestXWPFBugs {
|
|||
"\nK\u0131rm\u0131z\u0131 don,\n" +
|
||||
"\ngel bizim bah\u00e7eye kon,\n" +
|
||||
"\nsar\u0131 limon";
|
||||
XWPFDocument doc = new XWPFDocument();
|
||||
XWPFRun run = doc.createParagraph().createRun();
|
||||
try (XWPFDocument doc = new XWPFDocument()) {
|
||||
XWPFRun run = doc.createParagraph().createRun();
|
||||
|
||||
for (String str : blabla.split("\n")) {
|
||||
run.setText(str);
|
||||
run.addBreak();
|
||||
for (String str : blabla.split("\n")) {
|
||||
run.setText(str);
|
||||
run.addBreak();
|
||||
}
|
||||
|
||||
run.setFontFamily("Times New Roman");
|
||||
run.setFontSize(20);
|
||||
assertEquals(run.getFontFamily(), "Times New Roman");
|
||||
assertEquals(run.getFontFamily(FontCharRange.cs), "Times New Roman");
|
||||
assertEquals(run.getFontFamily(FontCharRange.eastAsia), "Times New Roman");
|
||||
assertEquals(run.getFontFamily(FontCharRange.hAnsi), "Times New Roman");
|
||||
run.setFontFamily("Arial", FontCharRange.hAnsi);
|
||||
assertEquals(run.getFontFamily(FontCharRange.hAnsi), "Arial");
|
||||
}
|
||||
|
||||
run.setFontFamily("Times New Roman");
|
||||
run.setFontSize(20);
|
||||
assertEquals(run.getFontFamily(), "Times New Roman");
|
||||
assertEquals(run.getFontFamily(FontCharRange.cs), "Times New Roman");
|
||||
assertEquals(run.getFontFamily(FontCharRange.eastAsia), "Times New Roman");
|
||||
assertEquals(run.getFontFamily(FontCharRange.hAnsi), "Times New Roman");
|
||||
run.setFontFamily("Arial", FontCharRange.hAnsi);
|
||||
assertEquals(run.getFontFamily(FontCharRange.hAnsi), "Arial");
|
||||
|
||||
doc.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void bug57312_NullPointException() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("57312.docx");
|
||||
assertNotNull(doc);
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("57312.docx")) {
|
||||
assertNotNull(doc);
|
||||
|
||||
for (IBodyElement bodyElement : doc.getBodyElements()) {
|
||||
BodyElementType elementType = bodyElement.getElementType();
|
||||
for (IBodyElement bodyElement : doc.getBodyElements()) {
|
||||
BodyElementType elementType = bodyElement.getElementType();
|
||||
|
||||
if (elementType == BodyElementType.PARAGRAPH) {
|
||||
XWPFParagraph paragraph = (XWPFParagraph) bodyElement;
|
||||
if (elementType == BodyElementType.PARAGRAPH) {
|
||||
XWPFParagraph paragraph = (XWPFParagraph) bodyElement;
|
||||
|
||||
for (IRunElement iRunElem : paragraph.getIRuns()) {
|
||||
for (IRunElement iRunElem : paragraph.getIRuns()) {
|
||||
|
||||
if (iRunElem instanceof XWPFRun) {
|
||||
XWPFRun runElement = (XWPFRun) iRunElem;
|
||||
if (iRunElem instanceof XWPFRun) {
|
||||
XWPFRun runElement = (XWPFRun) iRunElem;
|
||||
|
||||
UnderlinePatterns underline = runElement.getUnderline();
|
||||
assertNotNull(underline);
|
||||
UnderlinePatterns underline = runElement.getUnderline();
|
||||
assertNotNull(underline);
|
||||
|
||||
//System.out.println("Found: " + underline + ": " + runElement.getText(0));
|
||||
//System.out.println("Found: " + underline + ": " + runElement.getText(0));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
doc.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void bug57495_getTableArrayInDoc() throws IOException {
|
||||
XWPFDocument doc =new XWPFDocument();
|
||||
//let's create a few tables for the test
|
||||
for(int i=0;i<3;i++) {
|
||||
doc.createTable(2, 2);
|
||||
try (XWPFDocument doc = new XWPFDocument()) {
|
||||
//let's create a few tables for the test
|
||||
for (int i = 0; i < 3; i++) {
|
||||
doc.createTable(2, 2);
|
||||
}
|
||||
XWPFTable table = doc.getTableArray(0);
|
||||
assertNotNull(table);
|
||||
//let's check also that returns the correct table
|
||||
XWPFTable same = doc.getTables().get(0);
|
||||
assertEquals(table, same);
|
||||
}
|
||||
XWPFTable table = doc.getTableArray(0);
|
||||
assertNotNull(table);
|
||||
//let's check also that returns the correct table
|
||||
XWPFTable same = doc.getTables().get(0);
|
||||
assertEquals(table, same);
|
||||
doc.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void bug57495_getParagraphArrayInTableCell() throws IOException {
|
||||
XWPFDocument doc =new XWPFDocument();
|
||||
//let's create a table for the test
|
||||
XWPFTable table = doc.createTable(2, 2);
|
||||
assertNotNull(table);
|
||||
XWPFParagraph p = table.getRow(0).getCell(0).getParagraphArray(0);
|
||||
assertNotNull(p);
|
||||
//let's check also that returns the correct paragraph
|
||||
XWPFParagraph same = table.getRow(0).getCell(0).getParagraphs().get(0);
|
||||
assertEquals(p, same);
|
||||
doc.close();
|
||||
try (XWPFDocument doc = new XWPFDocument()) {
|
||||
//let's create a table for the test
|
||||
XWPFTable table = doc.createTable(2, 2);
|
||||
assertNotNull(table);
|
||||
XWPFParagraph p = table.getRow(0).getCell(0).getParagraphArray(0);
|
||||
assertNotNull(p);
|
||||
//let's check also that returns the correct paragraph
|
||||
XWPFParagraph same = table.getRow(0).getCell(0).getParagraphs().get(0);
|
||||
assertEquals(p, same);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -123,9 +122,9 @@ public class TestXWPFBugs {
|
|||
|
||||
@Test
|
||||
public void test56392() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("56392.docx");
|
||||
assertNotNull(doc);
|
||||
doc.close();
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("56392.docx")) {
|
||||
assertNotNull(doc);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -133,15 +132,15 @@ public class TestXWPFBugs {
|
|||
*/
|
||||
@Test
|
||||
public void test57829() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx");
|
||||
assertNotNull(doc);
|
||||
assertEquals(3, doc.getParagraphs().size());
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx")) {
|
||||
assertNotNull(doc);
|
||||
assertEquals(3, doc.getParagraphs().size());
|
||||
|
||||
for (XWPFParagraph paragraph : doc.getParagraphs()) {
|
||||
paragraph.removeRun(0);
|
||||
assertNotNull(paragraph.getText());
|
||||
for (XWPFParagraph paragraph : doc.getParagraphs()) {
|
||||
paragraph.removeRun(0);
|
||||
assertNotNull(paragraph.getText());
|
||||
}
|
||||
}
|
||||
doc.close();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -149,29 +148,30 @@ public class TestXWPFBugs {
|
|||
*/
|
||||
@Test
|
||||
public void test58618() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("58618.docx");
|
||||
XWPFParagraph para = (XWPFParagraph)doc.getBodyElements().get(0);
|
||||
assertNotNull(para);
|
||||
assertEquals("Some text some hyper links link link and some text.....", para.getText());
|
||||
XWPFRun run = para.insertNewRun(para.getRuns().size());
|
||||
run.setText("New Text");
|
||||
assertEquals("Some text some hyper links link link and some text.....New Text", para.getText());
|
||||
para.removeRun(para.getRuns().size() -2);
|
||||
assertEquals("Some text some hyper links link linkNew Text", para.getText());
|
||||
doc.close();
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("58618.docx")) {
|
||||
XWPFParagraph para = (XWPFParagraph) doc.getBodyElements().get(0);
|
||||
assertNotNull(para);
|
||||
assertEquals("Some text some hyper links link link and some text.....", para.getText());
|
||||
XWPFRun run = para.insertNewRun(para.getRuns().size());
|
||||
run.setText("New Text");
|
||||
assertEquals("Some text some hyper links link link and some text.....New Text", para.getText());
|
||||
para.removeRun(para.getRuns().size() - 2);
|
||||
assertEquals("Some text some hyper links link linkNew Text", para.getText());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test59378() throws IOException {
|
||||
XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("59378.docx");
|
||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||
doc.write(out);
|
||||
out.close();
|
||||
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("59378.docx")) {
|
||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||
doc.write(out);
|
||||
out.close();
|
||||
|
||||
XWPFDocument doc2 = new XWPFDocument(new ByteArrayInputStream(out.toByteArray()));
|
||||
doc2.close();
|
||||
XWPFDocument doc2 = new XWPFDocument(new ByteArrayInputStream(out.toByteArray()));
|
||||
doc2.close();
|
||||
|
||||
XWPFDocument docBack = XWPFTestDataSamples.writeOutAndReadBack(doc);
|
||||
docBack.close();
|
||||
XWPFDocument docBack = XWPFTestDataSamples.writeOutAndReadBack(doc);
|
||||
docBack.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue