From 596b813d4c935a8899a0c329baa0f3769017be1d Mon Sep 17 00:00:00 2001 From: Javen O'Neal Date: Sun, 6 Dec 2015 20:51:54 +0000 Subject: [PATCH] =?utf8?q?bug=2056454:=20shiftRows=20incorrectly=20handle?= =?utf8?q?=20merged=20regions=20that=20do=20not=20contain=20column=200.=20?= =?utf8?q?Add=20failing=20unit=20test=20from=20J=C3=B6rg=20Selbach.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1718217 13f79535-47bb-0310-9956-ffa450edef68 --- .../ss/usermodel/BaseTestSheetShiftRows.java | 44 ++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetShiftRows.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetShiftRows.java index aee8ed2654..77806e1af9 100644 --- a/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetShiftRows.java +++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetShiftRows.java @@ -22,14 +22,18 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import static org.junit.Assume.assumeTrue; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.ITestDataProvider; import org.apache.poi.ss.util.CellAddress; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellReference; +import org.junit.Ignore; import org.junit.Test; /** @@ -302,7 +306,45 @@ public abstract class BaseTestSheetShiftRows { region = sheet.getMergedRegion(0); assertEquals("A3:C3", region.formatAsString()); wb.close(); - } + } + + @Ignore + @Test + public final void shiftWithMergedRegions_bug56454() throws IOException { + Workbook wb = _testDataProvider.createWorkbook(); + Sheet sheet = wb.createSheet(); + // populate sheet cells + for (int i = 0; i < 10; i++) { + Row row = sheet.createRow(i); + + for (int j = 0; j < 10; j++) { + Cell cell = row.createCell(j, Cell.CELL_TYPE_STRING); + cell.setCellValue(i + "x" + j); + } + } + + CellRangeAddress A4_B7 = CellRangeAddress.valueOf("A4:B7"); + CellRangeAddress C4_D7 = CellRangeAddress.valueOf("C4:D7"); + + sheet.addMergedRegion(A4_B7); + sheet.addMergedRegion(C4_D7); + + assumeTrue(sheet.getLastRowNum() > 8); + + // Insert a row in the middle of both merged regions. + sheet.shiftRows(4, sheet.getLastRowNum(), 1); + + // all regions should still start at row 3, and elongate by 1 row + List expectedMergedRegions = new ArrayList(); + CellRangeAddress A4_B8 = CellRangeAddress.valueOf("A4:B8"); //A4:B7 should be elongated by 1 row + CellRangeAddress C4_D8 = CellRangeAddress.valueOf("C4:D8"); //C4:B7 should be elongated by 1 row + expectedMergedRegions.add(A4_B8); + expectedMergedRegions.add(C4_D8); + + assertEquals(expectedMergedRegions, sheet.getMergedRegions()); + } + + /** * See bug #34023 -- 2.39.5