Bug 58333: Apply patch to verify behavior on row-index before and after the limits set by the specification

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1704186 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Dominik Stadler 2015-09-20 20:16:17 +00:00
parent f2cd7ed8f5
commit d61ea07e26
4 changed files with 42 additions and 1 deletions

View File

@ -24,6 +24,7 @@ import static org.junit.Assert.fail;
import java.io.IOException;
import org.apache.poi.ss.SpreadsheetVersion;
import org.apache.poi.ss.usermodel.BaseTestSheet;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
@ -146,6 +147,10 @@ public class TestSXSSFSheet extends BaseTestSheet {
} finally {
wb.close();
}
}
@Test
public void createRowAfterLastRow() {
createRowAfterLastRow(SpreadsheetVersion.EXCEL2007);
}
}

View File

@ -33,6 +33,7 @@ import org.apache.poi.POIXMLException;
import org.apache.poi.hssf.HSSFTestDataSamples;
import org.apache.poi.poifs.crypt.CryptoFunctions;
import org.apache.poi.poifs.crypt.HashAlgorithm;
import org.apache.poi.ss.SpreadsheetVersion;
import org.apache.poi.ss.usermodel.AutoFilter;
import org.apache.poi.ss.usermodel.BaseTestSheet;
import org.apache.poi.ss.usermodel.Cell;
@ -994,6 +995,11 @@ public final class TestXSSFSheet extends BaseTestSheet {
assertEquals(3, xrow[2].getR());
}
@Test
public void createRowAfterLastRow() {
createRowAfterLastRow(SpreadsheetVersion.EXCEL2007);
}
@Test
public void setAutoFilter() {

View File

@ -57,6 +57,7 @@ import org.apache.poi.hssf.record.WSBoolRecord;
import org.apache.poi.hssf.record.WindowTwoRecord;
import org.apache.poi.hssf.record.aggregates.WorksheetProtectionBlock;
import org.apache.poi.hssf.usermodel.RecordInspector.RecordCollector;
import org.apache.poi.ss.SpreadsheetVersion;
import org.apache.poi.ss.formula.ptg.Area3DPtg;
import org.apache.poi.ss.formula.ptg.Ptg;
import org.apache.poi.ss.usermodel.AutoFilter;
@ -84,7 +85,11 @@ public final class TestHSSFSheet extends BaseTestSheet {
public TestHSSFSheet() {
super(HSSFITestDataProvider.instance);
}
@Test
public void createRowAfterLastRow() {
createRowAfterLastRow(SpreadsheetVersion.EXCEL97);
}
/**
* Test for Bugzilla #29747.

View File

@ -87,6 +87,31 @@ public abstract class BaseTestSheet {
assertSame(row2_ovrewritten, row2_ovrewritten_ref);
assertEquals(100.0, row2_ovrewritten_ref.getCell(0).getNumericCellValue(), 0.0);
}
@Test
public void createRowBeforeFirstRow() {
final Workbook workbook = _testDataProvider.createWorkbook();
final Sheet sh = workbook.createSheet();
sh.createRow(0);
try {
sh.createRow(-1);
fail("Negative rows not allowed");
} catch (final IllegalArgumentException e) {
// expected
}
}
protected void createRowAfterLastRow(SpreadsheetVersion version) {
final Workbook workbook = _testDataProvider.createWorkbook();
final Sheet sh = workbook.createSheet();
sh.createRow(version.getLastRowIndex());
try {
sh.createRow(version.getLastRowIndex() + 1);
fail("Row number must be between 0 and " + version.getLastColumnIndex());
} catch (final IllegalArgumentException e) {
// expected
}
}
@Test