From eb6cc7eca19f55e07e4cac9bf8ebdea30573440e Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 20 Sep 2015 20:16:17 +0000 Subject: [PATCH] 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 --- .../poi/xssf/streaming/TestSXSSFSheet.java | 5 ++++ .../poi/xssf/usermodel/TestXSSFSheet.java | 6 +++++ .../poi/hssf/usermodel/TestHSSFSheet.java | 7 +++++- .../poi/ss/usermodel/BaseTestSheet.java | 25 +++++++++++++++++++ 4 files changed, 42 insertions(+), 1 deletion(-) diff --git a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFSheet.java b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFSheet.java index ad3c443830..53c9cff792 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFSheet.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFSheet.java @@ -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); } } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java index 785af694d1..8e77b2c499 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java @@ -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() { diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java index f47a11efdc..4b7d8491be 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java @@ -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. diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheet.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheet.java index 55f9795e31..1608006852 100644 --- a/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheet.java +++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheet.java @@ -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 -- 2.39.5