From 1d9f92b8ddb4358982aa23036239fcd7036927f8 Mon Sep 17 00:00:00 2001 From: Javen O'Neal Date: Thu, 22 Sep 2016 07:36:52 +0000 Subject: [PATCH] bug 59687: add failing unit test showing that comments when the row that contains the comment is deleted; patch and file contributed by Greg Woolsey git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1761860 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xssf/usermodel/TestXSSFSheet.java | 18 ++++++++++++++++++ test-data/spreadsheet/59687.xlsx | Bin 0 -> 9580 bytes 2 files changed, 18 insertions(+) create mode 100644 test-data/spreadsheet/59687.xlsx 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 2c561b222d..34ae2cfc40 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java @@ -2020,4 +2020,22 @@ public final class TestXSSFSheet extends BaseTestXSheet { } } + + // bug 59687: XSSFSheet.RemoveRow doesn't handle row gaps properly when removing row comments + // This test is currently failing (thus expected AssertionError). When this bug is fixed, no error should be thrown. + @Test(expected=AssertionError.class) + public void testRemoveRowWithCommentAndGapAbove() throws IOException { + final Workbook wb = _testDataProvider.openSampleWorkbook("59687.xlsx"); + final Sheet sheet = wb.getSheetAt(0); + + // comment exists + CellAddress commentCellAddress = new CellAddress("A4"); + assertNotNull(sheet.getCellComment(commentCellAddress)); + + assertEquals("Wrong starting # of comments", 1, sheet.getCellComments().size()); + + sheet.removeRow(sheet.getRow(commentCellAddress.getRow())); + + assertEquals("There should not be any comments left!", 0, sheet.getCellComments().size()); + } } diff --git a/test-data/spreadsheet/59687.xlsx b/test-data/spreadsheet/59687.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..8ce567fab3179817d000e3d815f0aa7485c39e4d GIT binary patch literal 9580 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 literal 0 HcmV?d00001