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);
  +	}
  +    
   }