summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJaven O'Neal <onealj@apache.org>2015-12-06 20:51:54 +0000
committerJaven O'Neal <onealj@apache.org>2015-12-06 20:51:54 +0000
commit596b813d4c935a8899a0c329baa0f3769017be1d (patch)
tree152d9acff336e537b3e95c242cf5db35c59dd92a
parent125dad12474213901e5ccde0305e092f6199f454 (diff)
downloadpoi-596b813d4c935a8899a0c329baa0f3769017be1d.tar.gz
poi-596b813d4c935a8899a0c329baa0f3769017be1d.zip
bug 56454: shiftRows incorrectly handle merged regions that do not contain column 0. Add failing unit test from Jörg Selbach.
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1718217 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetShiftRows.java44
1 files changed, 43 insertions, 1 deletions
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<CellRangeAddress> expectedMergedRegions = new ArrayList<CellRangeAddress>();
+ 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