You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by jo...@apache.org on 2008/10/27 20:24:42 UTC
svn commit: r708286 - in /poi/trunk/src:
java/org/apache/poi/hssf/record/aggregates/MergedCellsTable.java
testcases/org/apache/poi/hssf/record/TestMergeCellsRecord.java
Author: josh
Date: Mon Oct 27 12:24:42 2008
New Revision: 708286
URL: http://svn.apache.org/viewvc?rev=708286&view=rev
Log:
Preparation for fix for bug 46009. (Bug visible on ooxml branch, but this change will expose the problem)
Modified:
poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/MergedCellsTable.java
poi/trunk/src/testcases/org/apache/poi/hssf/record/TestMergeCellsRecord.java
Modified: poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/MergedCellsTable.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/MergedCellsTable.java?rev=708286&r1=708285&r2=708286&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/MergedCellsTable.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/MergedCellsTable.java Mon Oct 27 12:24:42 2008
@@ -51,7 +51,8 @@
MergeCellsRecord mcr = (MergeCellsRecord) rs.getNext();
int nRegions = mcr.getNumAreas();
for (int i = 0; i < nRegions; i++) {
- temp.add(mcr.getAreaAt(i));
+ CellRangeAddress cra = mcr.getAreaAt(i);
+ temp.add(cra);
}
}
}
@@ -102,7 +103,8 @@
private void addMergeCellsRecord(MergeCellsRecord mcr) {
int nRegions = mcr.getNumAreas();
for (int i = 0; i < nRegions; i++) {
- _mergedRegions.add(mcr.getAreaAt(i));
+ CellRangeAddress cra = mcr.getAreaAt(i);
+ _mergedRegions.add(cra);
}
}
@@ -130,5 +132,4 @@
public int getNumberOfMergedRegions() {
return _mergedRegions.size();
}
-
}
Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestMergeCellsRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestMergeCellsRecord.java?rev=708286&r1=708285&r2=708286&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestMergeCellsRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestMergeCellsRecord.java Mon Oct 27 12:24:42 2008
@@ -17,8 +17,15 @@
package org.apache.poi.hssf.record;
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.AssertionFailedError;
import junit.framework.TestCase;
+import org.apache.poi.hssf.model.RecordStream;
+import org.apache.poi.hssf.record.aggregates.MergedCellsTable;
+import org.apache.poi.hssf.record.aggregates.RecordAggregate.RecordVisitor;
import org.apache.poi.hssf.util.CellRangeAddress;
/**
@@ -28,25 +35,45 @@
*/
public final class TestMergeCellsRecord extends TestCase {
- /**
- * Make sure when a clone is called, we actually clone it.
- * @throws Exception
- */
- public void testCloneReferences() throws Exception {
- CellRangeAddress[] cras = { new CellRangeAddress(0, 1, 0, 2), };
- MergeCellsRecord merge = new MergeCellsRecord(cras, 0, cras.length);
- MergeCellsRecord clone = (MergeCellsRecord)merge.clone();
-
- assertNotSame("Merged and cloned objects are the same", merge, clone);
-
- CellRangeAddress mergeRegion = merge.getAreaAt(0);
- CellRangeAddress cloneRegion = clone.getAreaAt(0);
- assertNotSame("Should not point to same objects when cloning", mergeRegion, cloneRegion);
- assertEquals("New Clone Row From doesnt match", mergeRegion.getFirstRow(), cloneRegion.getFirstRow());
- assertEquals("New Clone Row To doesnt match", mergeRegion.getLastRow(), cloneRegion.getLastRow());
- assertEquals("New Clone Col From doesnt match", mergeRegion.getFirstColumn(), cloneRegion.getFirstColumn());
- assertEquals("New Clone Col To doesnt match", mergeRegion.getLastColumn(), cloneRegion.getLastColumn());
+ /**
+ * Make sure when a clone is called, we actually clone it.
+ */
+ public void testCloneReferences() {
+ CellRangeAddress[] cras = { new CellRangeAddress(0, 1, 0, 2), };
+ MergeCellsRecord merge = new MergeCellsRecord(cras, 0, cras.length);
+ MergeCellsRecord clone = (MergeCellsRecord)merge.clone();
+
+ assertNotSame("Merged and cloned objects are the same", merge, clone);
+
+ CellRangeAddress mergeRegion = merge.getAreaAt(0);
+ CellRangeAddress cloneRegion = clone.getAreaAt(0);
+ assertNotSame("Should not point to same objects when cloning", mergeRegion, cloneRegion);
+ assertEquals("New Clone Row From doesnt match", mergeRegion.getFirstRow(), cloneRegion.getFirstRow());
+ assertEquals("New Clone Row To doesnt match", mergeRegion.getLastRow(), cloneRegion.getLastRow());
+ assertEquals("New Clone Col From doesnt match", mergeRegion.getFirstColumn(), cloneRegion.getFirstColumn());
+ assertEquals("New Clone Col To doesnt match", mergeRegion.getLastColumn(), cloneRegion.getLastColumn());
- assertFalse(merge.getAreaAt(0) == clone.getAreaAt(0));
- }
+ assertFalse(merge.getAreaAt(0) == clone.getAreaAt(0));
+ }
+
+ private static final RecordVisitor dummyRecordVisitor = new RecordVisitor() {
+ public void visitRecord(Record r) {
+ // do nothing
+ }
+ };
+ public void testMCTable_bug46009() {
+ MergedCellsTable mct = new MergedCellsTable();
+ List recList = new ArrayList();
+ CellRangeAddress[] cras = new CellRangeAddress[] {
+ new CellRangeAddress(0, 0, 0, 3),
+ };
+ recList.add(new MergeCellsRecord(cras, 0, 1));
+ RecordStream rs = new RecordStream(recList, 0);
+ mct.read(rs);
+ try {
+ mct.visitContainedRecords(dummyRecordVisitor);
+ } catch (ArrayStoreException e) {
+ throw new AssertionFailedError("Identified bug 46009");
+ }
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org