mirror of
https://github.com/apache/poi.git
synced 2026-02-27 20:40:08 +08:00
Sonar fixes
add asserts to tests git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1885343 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
9daa77751a
commit
22e67b0dc7
@ -318,7 +318,6 @@ public final class TestXSSFReader {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@Disabled("until we fix issue https://bz.apache.org/bugzilla/show_bug.cgi?id=61701")
|
||||
void test61701() throws Exception {
|
||||
try(Workbook workbook = XSSFTestDataSamples.openSampleWorkbook("simple-table-named-range.xlsx")) {
|
||||
|
||||
@ -22,7 +22,6 @@ import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.junit.jupiter.api.Assertions.fail;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
@ -53,15 +52,15 @@ public final class TestSXSSFBugs extends BaseTestBugzillaIssues {
|
||||
}
|
||||
|
||||
// override some tests which do not work for SXSSF
|
||||
@Override @Disabled("cloneSheet() not implemented") @Test
|
||||
@Override @Disabled("cloneSheet() not implemented")
|
||||
protected void bug18800() { /* cloneSheet() not implemented */ }
|
||||
@Override @Disabled("cloneSheet() not implemented") @Test
|
||||
@Override @Disabled("cloneSheet() not implemented")
|
||||
protected void bug22720() { /* cloneSheet() not implemented */ }
|
||||
@Override @Disabled("Evaluation is not fully supported") @Test
|
||||
@Override @Disabled("Evaluation is not fully supported")
|
||||
protected void bug47815() { /* Evaluation is not supported */ }
|
||||
@Override @Disabled("Evaluation is not fully supported") @Test
|
||||
@Override @Disabled("Evaluation is not fully supported")
|
||||
protected void bug46729_testMaxFunctionArguments() { /* Evaluation is not supported */ }
|
||||
@Override @Disabled("Reading data is not supported") @Test
|
||||
@Override @Disabled("Reading data is not supported")
|
||||
protected void bug57798() { /* Reading data is not supported */ }
|
||||
|
||||
/**
|
||||
@ -106,19 +105,14 @@ public final class TestSXSSFBugs extends BaseTestBugzillaIssues {
|
||||
@Test
|
||||
@Override
|
||||
protected void bug60197_NamedRangesReferToCorrectSheetWhenSheetOrderIsChanged() throws Exception {
|
||||
try {
|
||||
super.bug60197_NamedRangesReferToCorrectSheetWhenSheetOrderIsChanged();
|
||||
} catch (final RuntimeException e) {
|
||||
final Throwable cause = e.getCause();
|
||||
//noinspection StatementWithEmptyBody
|
||||
if (cause instanceof IOException && cause.getMessage().equals("Stream closed")) {
|
||||
// expected on the second time that _testDataProvider.writeOutAndReadBack(SXSSFWorkbook) is called
|
||||
// if the test makes it this far, then we know that XSSFName sheet indices are updated when sheet
|
||||
// order is changed, which is the purpose of this test. Therefore, consider this a passing test.
|
||||
} else {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
// expected on the second time that _testDataProvider.writeOutAndReadBack(SXSSFWorkbook) is called
|
||||
// if the test makes it this far, then we know that XSSFName sheet indices are updated when sheet
|
||||
// order is changed, which is the purpose of this test. Therefore, consider this a passing test.
|
||||
RuntimeException e =
|
||||
assertThrows(RuntimeException.class, () -> super.bug60197_NamedRangesReferToCorrectSheetWhenSheetOrderIsChanged());
|
||||
Throwable cause = e.getCause();
|
||||
assertTrue(cause instanceof IOException);
|
||||
assertEquals("Stream closed", cause.getMessage());
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -176,7 +170,6 @@ public final class TestSXSSFBugs extends BaseTestBugzillaIssues {
|
||||
sheet.setArrayFormula(col1Value, range);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Disabled("takes too long for the normal test run")
|
||||
void test62872() throws Exception {
|
||||
final int COLUMN_COUNT = 300;
|
||||
@ -204,8 +197,6 @@ public final class TestSXSSFBugs extends BaseTestBugzillaIssues {
|
||||
cell.setCellValue(new Date(i*TEN_MINUTES+(j*TEN_MINUTES)/COLUMN_COUNT));
|
||||
}
|
||||
i++;
|
||||
// if (i % 1000 == 0)
|
||||
// logger.info("Created Row " + i);
|
||||
}
|
||||
|
||||
try (FileOutputStream out = new FileOutputStream(File.createTempFile("test62872", ".xlsx"))) {
|
||||
|
||||
@ -57,7 +57,11 @@ import org.apache.poi.xssf.SXSSFITestDataProvider;
|
||||
import org.apache.poi.xssf.XSSFITestDataProvider;
|
||||
import org.apache.poi.xssf.XSSFTestDataSamples;
|
||||
import org.apache.poi.xssf.model.SharedStringsTable;
|
||||
import org.junit.jupiter.api.Tag;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.CsvSource;
|
||||
import org.junit.jupiter.params.provider.EnumSource;
|
||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell;
|
||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCellFormula;
|
||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STCellFormulaType;
|
||||
@ -75,23 +79,29 @@ public final class TestXSSFCell extends BaseTestXCell {
|
||||
*/
|
||||
@Test
|
||||
void test47026_1() throws IOException {
|
||||
Workbook wb = _testDataProvider.openSampleWorkbook("47026.xlsm");
|
||||
Sheet sheet = wb.getSheetAt(0);
|
||||
Row row = sheet.getRow(0);
|
||||
Cell cell = row.getCell(0);
|
||||
cell.setCellValue("456");
|
||||
wb.close();
|
||||
try (Workbook wb = _testDataProvider.openSampleWorkbook("47026.xlsm")) {
|
||||
Sheet sheet = wb.getSheetAt(0);
|
||||
Row row = sheet.getRow(0);
|
||||
Cell cell = row.getCell(0);
|
||||
assertEquals(CellType.NUMERIC, cell.getCachedFormulaResultType());
|
||||
cell.setCellValue("456");
|
||||
assertEquals(CellType.STRING, cell.getCachedFormulaResultType());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void test47026_2() throws IOException {
|
||||
Workbook wb = _testDataProvider.openSampleWorkbook("47026.xlsm");
|
||||
Sheet sheet = wb.getSheetAt(0);
|
||||
Row row = sheet.getRow(0);
|
||||
Cell cell = row.getCell(0);
|
||||
cell.setCellFormula(null);
|
||||
cell.setCellValue("456");
|
||||
wb.close();
|
||||
try (Workbook wb = _testDataProvider.openSampleWorkbook("47026.xlsm")) {
|
||||
Sheet sheet = wb.getSheetAt(0);
|
||||
Row row = sheet.getRow(0);
|
||||
Cell cell = row.getCell(0);
|
||||
assertEquals(CellType.NUMERIC, cell.getCachedFormulaResultType());
|
||||
cell.setCellFormula(null);
|
||||
IllegalStateException e = assertThrows(IllegalStateException.class, cell::getCachedFormulaResultType);
|
||||
assertEquals("Only formula cells have cached results", e.getMessage());
|
||||
cell.setCellValue("456");
|
||||
assertEquals(CellType.STRING, cell.getCellType());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -441,33 +451,35 @@ public final class TestXSSFCell extends BaseTestXCell {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testBug56644ReturnNull() throws IOException {
|
||||
@ParameterizedTest
|
||||
@EnumSource(value = MissingCellPolicy.class)
|
||||
void testBug56644ReturnNull(MissingCellPolicy policy) throws IOException {
|
||||
try (Workbook wb = XSSFTestDataSamples.openSampleWorkbook("56644.xlsx")) {
|
||||
wb.setMissingCellPolicy(MissingCellPolicy.RETURN_BLANK_AS_NULL);
|
||||
wb.setMissingCellPolicy(policy);
|
||||
Sheet sheet = wb.getSheet("samplelist");
|
||||
Row row = sheet.getRow(20);
|
||||
row.createCell(2);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testBug56644ReturnBlank() throws IOException {
|
||||
try (Workbook wb = XSSFTestDataSamples.openSampleWorkbook("56644.xlsx")) {
|
||||
wb.setMissingCellPolicy(MissingCellPolicy.RETURN_NULL_AND_BLANK);
|
||||
Sheet sheet = wb.getSheet("samplelist");
|
||||
Row row = sheet.getRow(20);
|
||||
row.createCell(2);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testBug56644CreateBlank() throws IOException {
|
||||
try (Workbook wb = XSSFTestDataSamples.openSampleWorkbook("56644.xlsx")) {
|
||||
wb.setMissingCellPolicy(MissingCellPolicy.CREATE_NULL_AS_BLANK);
|
||||
Sheet sheet = wb.getSheet("samplelist");
|
||||
Row row = sheet.getRow(20);
|
||||
row.createCell(2);
|
||||
switch (policy) {
|
||||
case CREATE_NULL_AS_BLANK: {
|
||||
Cell cell = row.getCell(2);
|
||||
assertNotNull(cell);
|
||||
assertEquals(CellType.STRING, cell.getCellType());
|
||||
break;
|
||||
}
|
||||
case RETURN_BLANK_AS_NULL: {
|
||||
Cell cell = row.getCell(2);
|
||||
assertNotNull(cell);
|
||||
assertEquals(CellType.STRING, cell.getCellType());
|
||||
cell.setBlank();
|
||||
cell = row.getCell(2);
|
||||
assertNull(cell);
|
||||
break;
|
||||
}
|
||||
case RETURN_NULL_AND_BLANK: {
|
||||
Cell cell = row.getCell(2);
|
||||
assertNotNull(cell);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -17,17 +17,22 @@
|
||||
|
||||
package org.apache.poi.xssf.util;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||
import org.apache.poi.ss.usermodel.Cell;
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.poi.ss.usermodel.WorkbookFactory;
|
||||
import org.apache.poi.ss.util.CellReference;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.ValueSource;
|
||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell;
|
||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRow;
|
||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetData;
|
||||
@ -37,6 +42,7 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.STCellType;
|
||||
/**
|
||||
* Mixed utilities for testing memory usage in XSSF
|
||||
*/
|
||||
@Disabled("only for manual tests")
|
||||
@SuppressWarnings("InfiniteLoopStatement")
|
||||
public class MemoryUsage {
|
||||
private static final int NUM_COLUMNS = 255;
|
||||
@ -45,78 +51,6 @@ public class MemoryUsage {
|
||||
System.out.println(" Memory (" + msg + "): " + Runtime.getRuntime().totalMemory()/(1024*1024) + "MB");
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate a spreadsheet until OutOfMemoryError
|
||||
* <p>
|
||||
* cells in even columns are numbers, cells in odd columns are strings
|
||||
* </p>
|
||||
*
|
||||
* @param wb the workbook to write to
|
||||
* @param numCols the number of columns in a row
|
||||
*/
|
||||
public static void mixedSpreadsheet(Workbook wb, int numCols) {
|
||||
System.out.println();
|
||||
System.out.println("Testing " + wb.getClass().getName() + " mixed");
|
||||
printMemoryUsage("before");
|
||||
int i=0, cnt=0;
|
||||
try {
|
||||
Sheet sh = wb.createSheet();
|
||||
for(i=0; ; i++) {
|
||||
Row row = sh.createRow(i);
|
||||
for(int j=0; j < numCols; j++) {
|
||||
Cell cell = row.createCell(j);
|
||||
if(j % 2 == 0) {
|
||||
cell.setCellValue(j);
|
||||
} else {
|
||||
cell.setCellValue(new CellReference(j, i).formatAsString());
|
||||
}
|
||||
cnt++;
|
||||
}
|
||||
}
|
||||
} catch (OutOfMemoryError er) {
|
||||
System.out.println("Failed at row=" + i + ", objects : " + cnt);
|
||||
} catch (final Exception e) {
|
||||
System.out.println("Unable to reach an OutOfMemoryError");
|
||||
System.out.println(e.getClass().getName() + ": " + e.getMessage());
|
||||
}
|
||||
printMemoryUsage("after");
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate a spreadsheet who's all cell values are numbers.
|
||||
* The data is generated until OutOfMemoryError.
|
||||
* <p>
|
||||
* as compared to {@link #mixedSpreadsheet(org.apache.poi.ss.usermodel.Workbook, int)},
|
||||
* this method does not set string values and, hence, does not involve the Shared Strings Table.
|
||||
* </p>
|
||||
*
|
||||
* @param wb the workbook to write to
|
||||
* @param numCols the number of columns in a row
|
||||
*/
|
||||
public static void numberSpreadsheet(Workbook wb, int numCols) {
|
||||
System.out.println();
|
||||
System.out.println("Testing " + wb.getClass().getName() + " numbers");
|
||||
printMemoryUsage("before");
|
||||
int i=0, cnt=0;
|
||||
try {
|
||||
Sheet sh = wb.createSheet();
|
||||
for(i=0; ; i++) {
|
||||
Row row = sh.createRow(i);
|
||||
for(int j=0; j < numCols; j++) {
|
||||
Cell cell = row.createCell(j);
|
||||
cell.setCellValue(j);
|
||||
cnt++;
|
||||
}
|
||||
}
|
||||
} catch (OutOfMemoryError er) {
|
||||
System.out.println("Failed at row=" + i + ", objects : " + cnt);
|
||||
} catch (final Exception e) {
|
||||
System.out.println("Unable to reach an OutOfMemoryError");
|
||||
System.out.println(e.getClass().getName() + ": " + e.getMessage());
|
||||
}
|
||||
printMemoryUsage("after");
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate a spreadsheet until OutOfMemoryError using low-level OOXML XmlBeans.
|
||||
* Similar to {@link #numberSpreadsheet(org.apache.poi.ss.usermodel.Workbook, int)}
|
||||
@ -144,11 +78,9 @@ public class MemoryUsage {
|
||||
}
|
||||
} catch (OutOfMemoryError er) {
|
||||
System.out.println("Failed at row=" + i + ", objects: " + cnt);
|
||||
} catch (final Exception e) {
|
||||
System.out.println("Unable to reach an OutOfMemoryError");
|
||||
System.out.println(e.getClass().getName() + ": " + e.getMessage());
|
||||
} finally {
|
||||
printMemoryUsage("after");
|
||||
}
|
||||
printMemoryUsage("after");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -158,25 +90,21 @@ public class MemoryUsage {
|
||||
*/
|
||||
@Test
|
||||
void testXmlDetached() {
|
||||
System.out.println();
|
||||
System.out.println("Testing detached");
|
||||
|
||||
List<CTRow> rows = new ArrayList<>();
|
||||
int i = 0;
|
||||
try {
|
||||
for(;;) {
|
||||
//create a standalone CTRow bean
|
||||
CTRow r = CTRow.Factory.newInstance();
|
||||
assertNotNull(r);
|
||||
r.setR(++i);
|
||||
rows.add(r);
|
||||
}
|
||||
} catch (OutOfMemoryError er) {
|
||||
System.out.println("Failed at row=" + i + " from " + rows.size() + " kept.");
|
||||
} catch (final Exception e) {
|
||||
System.out.println("Unable to reach an OutOfMemoryError");
|
||||
System.out.println(e.getClass().getName() + ": " + e.getMessage());
|
||||
} finally {
|
||||
printMemoryUsage("after");
|
||||
}
|
||||
printMemoryUsage("after");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -187,8 +115,6 @@ public class MemoryUsage {
|
||||
*/
|
||||
@Test
|
||||
void testXmlAttached() {
|
||||
System.out.println();
|
||||
System.out.println("Testing attached");
|
||||
printMemoryUsage("before");
|
||||
List<CTRow> rows = new ArrayList<>();
|
||||
int i = 0;
|
||||
@ -199,35 +125,79 @@ public class MemoryUsage {
|
||||
for(;;) {
|
||||
//create CTRow attached to the parent object
|
||||
CTRow r = data.addNewRow();
|
||||
assertNotNull(r);
|
||||
r.setR(++i);
|
||||
rows.add(r);
|
||||
}
|
||||
} catch (OutOfMemoryError er) {
|
||||
System.out.println("Failed at row=" + i + " from " + rows.size() + " kept.");
|
||||
} catch (final Exception e) {
|
||||
System.out.println("Unable to reach an OutOfMemoryError");
|
||||
System.out.println(e.getClass().getName() + ": " + e.getMessage());
|
||||
} finally {
|
||||
printMemoryUsage("after");
|
||||
}
|
||||
printMemoryUsage("after");
|
||||
}
|
||||
|
||||
@Test
|
||||
void testMixedHSSF() {
|
||||
mixedSpreadsheet(new HSSFWorkbook(), NUM_COLUMNS);
|
||||
/**
|
||||
* Generate a spreadsheet until OutOfMemoryError
|
||||
* cells in even columns are numbers, cells in odd columns are strings
|
||||
*/
|
||||
@ParameterizedTest
|
||||
@ValueSource(booleans = {false, true})
|
||||
void testMixed(boolean useXSSF) throws IOException {
|
||||
int i=0, cnt=0;
|
||||
try (Workbook wb = WorkbookFactory.create(useXSSF)) {
|
||||
printMemoryUsage("before");
|
||||
Sheet sh = wb.createSheet();
|
||||
for(i=0; ; i++) {
|
||||
Row row = sh.createRow(i);
|
||||
for(int j=0; j < NUM_COLUMNS; j++) {
|
||||
Cell cell = row.createCell(j);
|
||||
assertNotNull(cell);
|
||||
if(j % 2 == 0) {
|
||||
cell.setCellValue(j);
|
||||
} else {
|
||||
cell.setCellValue(new CellReference(j, i).formatAsString());
|
||||
}
|
||||
cnt++;
|
||||
}
|
||||
}
|
||||
} catch (OutOfMemoryError er) {
|
||||
System.out.println("Failed at row=" + i + ", objects : " + cnt);
|
||||
} finally {
|
||||
printMemoryUsage("after");
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testMixedXSSF() {
|
||||
mixedSpreadsheet(new XSSFWorkbook(), NUM_COLUMNS);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testNumberHSSF() {
|
||||
numberSpreadsheet(new HSSFWorkbook(), NUM_COLUMNS);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testNumberXSSF() {
|
||||
numberSpreadsheet(new XSSFWorkbook(), NUM_COLUMNS);
|
||||
/**
|
||||
* Generate a spreadsheet who's all cell values are numbers.
|
||||
* The data is generated until OutOfMemoryError.
|
||||
* <p>
|
||||
* as compared to {@link #mixedSpreadsheet(org.apache.poi.ss.usermodel.Workbook, int)},
|
||||
* this method does not set string values and, hence, does not involve the Shared Strings Table.
|
||||
* </p>
|
||||
*
|
||||
* @param wb the workbook to write to
|
||||
* @param numCols the number of columns in a row
|
||||
*/
|
||||
@ParameterizedTest
|
||||
@ValueSource(booleans = {false, true})
|
||||
void testNumberHSSF(boolean useXSSF) throws IOException {
|
||||
int i=0, cnt=0;
|
||||
try (Workbook wb = WorkbookFactory.create(useXSSF)) {
|
||||
printMemoryUsage("before");
|
||||
Sheet sh = wb.createSheet();
|
||||
for(i=0; ; i++) {
|
||||
Row row = sh.createRow(i);
|
||||
assertNotNull(row);
|
||||
for(int j=0; j < NUM_COLUMNS; j++) {
|
||||
Cell cell = row.createCell(j);
|
||||
cell.setCellValue(j);
|
||||
cnt++;
|
||||
}
|
||||
}
|
||||
} catch (OutOfMemoryError er) {
|
||||
System.out.println("Failed at row=" + i + ", objects : " + cnt);
|
||||
} finally {
|
||||
printMemoryUsage("after");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -172,11 +172,13 @@ class TestXWPFBugs {
|
||||
doc.write(out);
|
||||
out.close();
|
||||
|
||||
XWPFDocument doc2 = new XWPFDocument(new ByteArrayInputStream(out.toByteArray()));
|
||||
doc2.close();
|
||||
try (XWPFDocument doc2 = new XWPFDocument(new ByteArrayInputStream(out.toByteArray()))) {
|
||||
assertNotNull(doc2);
|
||||
}
|
||||
|
||||
XWPFDocument docBack = XWPFTestDataSamples.writeOutAndReadBack(doc);
|
||||
docBack.close();
|
||||
try (XWPFDocument docBack = XWPFTestDataSamples.writeOutAndReadBack(doc)) {
|
||||
assertNotNull(docBack);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -31,7 +31,7 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;
|
||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR;
|
||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTText;
|
||||
|
||||
public final class TestXWPFHeader {
|
||||
final class TestXWPFHeader {
|
||||
|
||||
@Test
|
||||
void testSimpleHeader() throws IOException {
|
||||
@ -143,7 +143,7 @@ public final class TestXWPFHeader {
|
||||
String fText2 = "More Text!";
|
||||
headerF.createParagraph().insertNewRun(0).setText(fText1);
|
||||
headerF.createParagraph().insertNewRun(0).setText(fText2);
|
||||
// headerF.getParagraphs().get(0).insertNewRun(0).setText(fText1);
|
||||
// headerF.getParagraphs().get(0).insertNewRun(0).setText(fText1);
|
||||
|
||||
// Check it
|
||||
assertEquals(tText, headerD.getParagraphs().get(0).getText());
|
||||
@ -206,15 +206,15 @@ public final class TestXWPFHeader {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testSetWatermarkOnEmptyDoc() throws IOException {
|
||||
try (XWPFDocument sampleDoc = new XWPFDocument()) {
|
||||
|
||||
// No header is set (yet)
|
||||
XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy();
|
||||
assertNull(policy.getDefaultHeader());
|
||||
assertNull(policy.getFirstPageHeader());
|
||||
assertNull(policy.getDefaultFooter());
|
||||
assertNull(policy);
|
||||
|
||||
policy = sampleDoc.createHeaderFooterPolicy();
|
||||
policy.createWatermark("DRAFT");
|
||||
|
||||
assertNotNull(policy.getDefaultHeader());
|
||||
@ -232,25 +232,21 @@ public final class TestXWPFHeader {
|
||||
}
|
||||
|
||||
@Disabled
|
||||
@Test
|
||||
void testAddPictureData() {
|
||||
// TODO
|
||||
}
|
||||
|
||||
@Disabled
|
||||
@Test
|
||||
void testGetAllPictures() {
|
||||
// TODO
|
||||
}
|
||||
|
||||
@Disabled
|
||||
@Test
|
||||
void testGetAllPackagePictures() {
|
||||
// TODO
|
||||
}
|
||||
|
||||
@Disabled
|
||||
@Test
|
||||
void testGetPictureDataById() {
|
||||
// TODO
|
||||
}
|
||||
|
||||
@ -18,61 +18,58 @@
|
||||
package org.apache.poi.poifs.filesystem;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.apache.poi.util.IOUtils;
|
||||
import org.apache.poi.util.POILogFactory;
|
||||
import org.apache.poi.util.POILogger;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.Arguments;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
|
||||
final class TestEmptyDocument {
|
||||
private static final POILogger LOG = POILogFactory.getLogger(TestEmptyDocument.class);
|
||||
|
||||
@Test
|
||||
void testSingleEmptyDocument() throws IOException {
|
||||
POIFSFileSystem fs = new POIFSFileSystem();
|
||||
DirectoryEntry dir = fs.getRoot();
|
||||
dir.createDocument("Foo", new ByteArrayInputStream(new byte[] {}));
|
||||
|
||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||
fs.writeFilesystem(out);
|
||||
new POIFSFileSystem(new ByteArrayInputStream(out.toByteArray())).close();
|
||||
fs.close();
|
||||
private interface EmptyDoc {
|
||||
void handle(DirectoryEntry dir) throws IOException;
|
||||
}
|
||||
|
||||
@Test
|
||||
void testSingleEmptyDocumentEvent() throws IOException {
|
||||
POIFSFileSystem fs = new POIFSFileSystem();
|
||||
DirectoryEntry dir = fs.getRoot();
|
||||
public static Stream<Arguments> emptySupplier() {
|
||||
return Stream.of(
|
||||
Arguments.of("SingleEmptyDocument", (EmptyDoc)TestEmptyDocument::SingleEmptyDocument),
|
||||
Arguments.of("SingleEmptyDocumentEvent", (EmptyDoc)TestEmptyDocument::SingleEmptyDocumentEvent),
|
||||
Arguments.of("EmptyDocumentWithFriend", (EmptyDoc)TestEmptyDocument::EmptyDocumentWithFriend),
|
||||
Arguments.of("EmptyDocumentEventWithFriend", (EmptyDoc)TestEmptyDocument::EmptyDocumentEventWithFriend)
|
||||
);
|
||||
}
|
||||
|
||||
private static void SingleEmptyDocument(DirectoryEntry dir) throws IOException {
|
||||
dir.createDocument("Foo", new ByteArrayInputStream(new byte[]{}));
|
||||
}
|
||||
|
||||
private static void SingleEmptyDocumentEvent(DirectoryEntry dir) throws IOException {
|
||||
dir.createDocument("Foo", 0, event -> LOG.log(POILogger.WARN, "written"));
|
||||
|
||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||
fs.writeFilesystem(out);
|
||||
new POIFSFileSystem(new ByteArrayInputStream(out.toByteArray())).close();
|
||||
fs.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testEmptyDocumentWithFriend() throws IOException {
|
||||
POIFSFileSystem fs = new POIFSFileSystem();
|
||||
DirectoryEntry dir = fs.getRoot();
|
||||
dir.createDocument("Bar", new ByteArrayInputStream(new byte[] { 0 }));
|
||||
dir.createDocument("Foo", new ByteArrayInputStream(new byte[] {}));
|
||||
|
||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||
fs.writeFilesystem(out);
|
||||
new POIFSFileSystem(new ByteArrayInputStream(out.toByteArray())).close();
|
||||
fs.close();
|
||||
private static void EmptyDocumentWithFriend(DirectoryEntry dir) throws IOException {
|
||||
dir.createDocument("Bar", new ByteArrayInputStream(new byte[]{0}));
|
||||
dir.createDocument("Foo", new ByteArrayInputStream(new byte[]{}));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testEmptyDocumentEventWithFriend() throws IOException {
|
||||
POIFSFileSystem fs = new POIFSFileSystem();
|
||||
DirectoryEntry dir = fs.getRoot();
|
||||
private static void EmptyDocumentEventWithFriend(DirectoryEntry dir) throws IOException {
|
||||
dir.createDocument("Bar", 1, event -> {
|
||||
try {
|
||||
event.getStream().write(0);
|
||||
@ -81,38 +78,45 @@ final class TestEmptyDocument {
|
||||
}
|
||||
});
|
||||
dir.createDocument("Foo", 0, event -> {});
|
||||
}
|
||||
|
||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||
fs.writeFilesystem(out);
|
||||
new POIFSFileSystem(new ByteArrayInputStream(out.toByteArray())).close();
|
||||
fs.close();
|
||||
|
||||
@ParameterizedTest(name = "{index} {0}")
|
||||
@MethodSource("emptySupplier")
|
||||
void testFoo(String testName, EmptyDoc emptyDoc) throws IOException {
|
||||
try (POIFSFileSystem fs = new POIFSFileSystem()) {
|
||||
DirectoryEntry dir = fs.getRoot();
|
||||
emptyDoc.handle(dir);
|
||||
|
||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||
fs.writeFilesystem(out);
|
||||
assertDoesNotThrow(() -> new POIFSFileSystem(new ByteArrayInputStream(out.toByteArray())));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testEmptyDocumentBug11744() throws Exception {
|
||||
byte[] testData = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
|
||||
|
||||
POIFSFileSystem fs = new POIFSFileSystem();
|
||||
fs.createDocument(new ByteArrayInputStream(new byte[0]), "Empty");
|
||||
fs.createDocument(new ByteArrayInputStream(testData), "NotEmpty");
|
||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||
fs.writeFilesystem(out);
|
||||
out.toByteArray();
|
||||
fs.close();
|
||||
try (POIFSFileSystem fs = new POIFSFileSystem()) {
|
||||
fs.createDocument(new ByteArrayInputStream(new byte[0]), "Empty");
|
||||
fs.createDocument(new ByteArrayInputStream(testData), "NotEmpty");
|
||||
fs.writeFilesystem(out);
|
||||
}
|
||||
|
||||
// This line caused the error.
|
||||
fs = new POIFSFileSystem(new ByteArrayInputStream(out.toByteArray()));
|
||||
try (POIFSFileSystem fs = new POIFSFileSystem(new ByteArrayInputStream(out.toByteArray()))) {
|
||||
DocumentEntry entry = (DocumentEntry) fs.getRoot().getEntry("Empty");
|
||||
assertEquals(0, entry.getSize(), "Expected zero size");
|
||||
byte[] actualReadbackData;
|
||||
actualReadbackData = IOUtils.toByteArray(new DocumentInputStream(entry));
|
||||
assertEquals(0, actualReadbackData.length, "Expected zero read from stream");
|
||||
|
||||
DocumentEntry entry = (DocumentEntry) fs.getRoot().getEntry("Empty");
|
||||
assertEquals(0, entry.getSize(), "Expected zero size");
|
||||
byte[] actualReadbackData;
|
||||
actualReadbackData = IOUtils.toByteArray(new DocumentInputStream(entry));
|
||||
assertEquals(0, actualReadbackData.length, "Expected zero read from stream");
|
||||
|
||||
entry = (DocumentEntry) fs.getRoot().getEntry("NotEmpty");
|
||||
actualReadbackData = IOUtils.toByteArray(new DocumentInputStream(entry));
|
||||
assertEquals(testData.length, entry.getSize(), "Expected size was wrong");
|
||||
assertArrayEquals(testData, actualReadbackData, "Expected same data read from stream");
|
||||
fs.close();
|
||||
entry = (DocumentEntry) fs.getRoot().getEntry("NotEmpty");
|
||||
actualReadbackData = IOUtils.toByteArray(new DocumentInputStream(entry));
|
||||
assertEquals(testData.length, entry.getSize(), "Expected size was wrong");
|
||||
assertArrayEquals(testData, actualReadbackData, "Expected same data read from stream");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -42,6 +42,9 @@ import org.apache.poi.poifs.storage.BATBlock;
|
||||
import org.apache.poi.poifs.storage.HeaderBlock;
|
||||
import org.apache.poi.util.IOUtils;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.CsvSource;
|
||||
import org.junit.jupiter.params.provider.ValueSource;
|
||||
|
||||
/**
|
||||
* Tests for the older OPOIFS-based POIFSFileSystem
|
||||
@ -137,23 +140,18 @@ final class TestPOIFSFileSystem {
|
||||
* The other is to fix the handling of the last block in
|
||||
* POIFS, since it seems to be slight wrong
|
||||
*/
|
||||
@Test
|
||||
void testShortLastBlock() throws Exception {
|
||||
String[] files = new String[] {
|
||||
"ShortLastBlock.qwp", "ShortLastBlock.wps"
|
||||
};
|
||||
|
||||
for (String file : files) {
|
||||
// Open the file up
|
||||
POIFSFileSystem fs = new POIFSFileSystem(
|
||||
_samples.openResourceAsStream(file)
|
||||
);
|
||||
@ParameterizedTest
|
||||
@CsvSource({ "ShortLastBlock.qwp, 1303681", "ShortLastBlock.wps, 140787" })
|
||||
void testShortLastBlock(String file, int size) throws Exception {
|
||||
// Open the file up
|
||||
try (POIFSFileSystem fs = new POIFSFileSystem(_samples.openResourceAsStream(file))) {
|
||||
|
||||
// Write it into a temp output array
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
fs.writeFilesystem(baos);
|
||||
|
||||
// Check sizes
|
||||
assertEquals(size, baos.size());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -51,7 +51,6 @@ class TestPresetGeometries {
|
||||
}
|
||||
|
||||
@Disabled("problem solved? Turn back on if this debugging is still in process.")
|
||||
@Test
|
||||
void testCheckXMLParser() throws Exception{
|
||||
// Gump reports a strange error because of an unavailable XML Parser, let's try to find out where
|
||||
// this comes from
|
||||
|
||||
@ -50,8 +50,8 @@ class TestLeftRight {
|
||||
|
||||
@Test
|
||||
void testLeftRight_bug49841() {
|
||||
invokeLeft(ANY_STRING_VALUE, NEGATIVE_OPERAND);
|
||||
invokeRight(ANY_STRING_VALUE, NEGATIVE_OPERAND);
|
||||
assertEquals(ErrorEval.VALUE_INVALID, invokeLeft(ANY_STRING_VALUE, NEGATIVE_OPERAND));
|
||||
assertEquals(ErrorEval.VALUE_INVALID, invokeRight(ANY_STRING_VALUE, NEGATIVE_OPERAND));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@ -104,7 +104,6 @@ class TestStatsLib extends BaseTestNumeric {
|
||||
assertDouble("kthLargest ", x, d);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Disabled("... implement ...")
|
||||
void testKthSmallest() {
|
||||
}
|
||||
|
||||
@ -18,6 +18,7 @@
|
||||
package org.apache.poi.ss.formula.ptg;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotEquals;
|
||||
|
||||
@ -71,7 +72,7 @@ final class TestReferencePtg {
|
||||
@Test
|
||||
void testBug44921() throws IOException {
|
||||
try (HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("ex44921-21902.xls")) {
|
||||
HSSFTestDataSamples.writeOutAndReadBack(wb).close();
|
||||
assertDoesNotThrow(() -> HSSFTestDataSamples.writeOutAndReadBack(wb));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user