You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by dm...@apache.org on 2003/06/27 23:59:46 UTC
cvs commit: jakarta-poi/src/testcases/org/apache/poi/hssf/usermodel TestHSSFSheet.java
dmui 2003/06/27 14:59:46
Modified: src/java/org/apache/poi/hssf/model Sheet.java
src/testcases/org/apache/poi/hssf/usermodel
TestHSSFSheet.java
Log:
When removing one MergedRegion, the record was removed before it was ready,
causing a IndexOutOfBoundsException. Shifted the remove after the get to fix
this. TestCase should verify old functionality hasn't been broken.
Revision Changes Path
1.32 +2 -1 jakarta-poi/src/java/org/apache/poi/hssf/model/Sheet.java
Index: Sheet.java
===================================================================
RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/model/Sheet.java,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- Sheet.java 9 May 2003 12:39:08 -0000 1.31
+++ Sheet.java 27 Jun 2003 21:59:46 -0000 1.32
@@ -469,11 +469,12 @@
numMergedRegions--;
if (rec.getNumAreas() == 0)
{
- mergedRecords.remove(pos);
+
if (merged == rec)
merged = (MergeCellsRecord) mergedRecords.get(mergedRecords.size() - 1);
int removePos = ((Integer) mergedLocs.get(pos)).intValue();
records.remove(removePos);
+ mergedRecords.remove(pos);
mergedLocs.remove(pos);
}
}
1.13 +33 -5 jakarta-poi/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java
Index: TestHSSFSheet.java
===================================================================
RCS file: /home/cvs/jakarta-poi/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- TestHSSFSheet.java 30 Apr 2003 04:38:58 -0000 1.12
+++ TestHSSFSheet.java 27 Jun 2003 21:59:46 -0000 1.13
@@ -54,17 +54,19 @@
package org.apache.poi.hssf.usermodel;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+
import junit.framework.TestCase;
+
import org.apache.poi.hssf.model.Sheet;
import org.apache.poi.hssf.record.HCenterRecord;
+import org.apache.poi.hssf.record.SCLRecord;
import org.apache.poi.hssf.record.VCenterRecord;
import org.apache.poi.hssf.record.WSBoolRecord;
-import org.apache.poi.hssf.record.SCLRecord;
import org.apache.poi.hssf.record.WindowTwoRecord;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
+import org.apache.poi.hssf.util.Region;
/**
* Tests HSSFSheet. This test case is very incomplete at the moment.
@@ -254,4 +256,30 @@
assertTrue(sclLoc == window2Loc + 1);
}
+
+
+ /**
+ * When removing one merged region, it would break
+ *
+ */
+ public void testRemoveMerged() {
+ HSSFWorkbook wb = new HSSFWorkbook();
+ HSSFSheet sheet = wb.createSheet();
+ Region region = new Region(0, (short)0, 1, (short)1);
+ sheet.addMergedRegion(region);
+ region = new Region(1, (short)0, 2, (short)1);
+ sheet.addMergedRegion(region);
+
+ sheet.removeMergedRegion(0);
+
+ region = sheet.getMergedRegionAt(0);
+ assertEquals("Left over region should be starting at row 1", 1, region.getRowFrom());
+
+ sheet.removeMergedRegion(0);
+ }
+
+ public static void main(java.lang.String[] args) {
+ junit.textui.TestRunner.run(TestHSSFSheet.class);
+ }
+
}