Round 2 with removing merged regions. The MergedRecords array would be emptied

when removing all the regions but the merged pointer was still being preserved.
Kill the pointer if the record is removed from the list so things are golden again.


git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353166 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Danny Mui 2003-06-27 23:04:28 +00:00
parent 992f457092
commit 72e18903be
2 changed files with 23 additions and 0 deletions

View File

@ -476,6 +476,10 @@ public class Sheet implements Model
records.remove(removePos); records.remove(removePos);
mergedRecords.remove(pos); mergedRecords.remove(pos);
mergedLocs.remove(pos); mergedLocs.remove(pos);
//if we're not tracking merged records, kill the pointer to reset the state
if (mergedRecords.size() == 0) merged = null;
} }
} }

View File

@ -276,6 +276,25 @@ public class TestHSSFSheet
assertEquals("Left over region should be starting at row 1", 1, region.getRowFrom()); assertEquals("Left over region should be starting at row 1", 1, region.getRowFrom());
sheet.removeMergedRegion(0); sheet.removeMergedRegion(0);
assertEquals("there should be no merged regions left!", 0, sheet.getNumMergedRegions());
//an, add, remove, get(0) would null pointer
sheet.addMergedRegion(region);
assertEquals("there should now be one merged region!", 1, sheet.getNumMergedRegions());
sheet.removeMergedRegion(0);
assertEquals("there should now be zero merged regions!", 0, sheet.getNumMergedRegions());
//add it again!
region.setRowTo(4);
sheet.addMergedRegion(region);
assertEquals("there should now be one merged region!", 1, sheet.getNumMergedRegions());
//should exist now!
assertTrue("there isn't more than one merged region in there", 1 <= sheet.getNumMergedRegions());
region = sheet.getMergedRegionAt(0);
assertEquals("the merged row to doesnt match the one we put in ", 4, region.getRowTo());
} }
public static void main(java.lang.String[] args) { public static void main(java.lang.String[] args) {