126 lines
3.7 KiB
Java
126 lines
3.7 KiB
Java
package org.apache.poi.hssf.model;
|
|
|
|
import java.lang.reflect.Field;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
import junit.framework.TestCase;
|
|
|
|
import org.apache.poi.hssf.record.ColumnInfoRecord;
|
|
|
|
/**
|
|
* @author Tony Poppleton
|
|
*/
|
|
public class SheetTest extends TestCase
|
|
{
|
|
/**
|
|
* Constructor for SheetTest.
|
|
* @param arg0
|
|
*/
|
|
public SheetTest(String arg0)
|
|
{
|
|
super(arg0);
|
|
}
|
|
|
|
public void testAddMergedRegion()
|
|
{
|
|
Sheet sheet = Sheet.createSheet();
|
|
int regionsToAdd = 4096;
|
|
int startRecords = sheet.getRecords().size();
|
|
|
|
//simple test that adds a load of regions
|
|
for (int n = 0; n < regionsToAdd; n++)
|
|
{
|
|
int index = sheet.addMergedRegion(0, (short) 0, 1, (short) 1);
|
|
assertTrue("Merged region index expected to be " + n + " got " + index, index == n);
|
|
}
|
|
|
|
//test all the regions were indeed added
|
|
assertTrue(sheet.getNumMergedRegions() == regionsToAdd);
|
|
|
|
//test that the regions were spread out over the appropriate number of records
|
|
int recordsAdded = sheet.getRecords().size() - startRecords;
|
|
int recordsExpected = regionsToAdd/1027;
|
|
if ((regionsToAdd % 1027) != 0)
|
|
recordsExpected++;
|
|
assertTrue("The " + regionsToAdd + " merged regions should have been spread out over " + recordsExpected + " records, not " + recordsAdded, recordsAdded == recordsExpected);
|
|
}
|
|
|
|
public void testRemoveMergedRegion()
|
|
{
|
|
Sheet sheet = Sheet.createSheet();
|
|
int regionsToAdd = 4096;
|
|
|
|
for (int n = 0; n < regionsToAdd; n++)
|
|
sheet.addMergedRegion(0, (short) 0, 1, (short) 1);
|
|
|
|
int records = sheet.getRecords().size();
|
|
|
|
//remove a third from the beginning
|
|
for (int n = 0; n < regionsToAdd/3; n++)
|
|
{
|
|
sheet.removeMergedRegion(0);
|
|
//assert they have been deleted
|
|
assertTrue("Num of regions should be " + (regionsToAdd - n - 1) + " not " + sheet.getNumMergedRegions(), sheet.getNumMergedRegions() == regionsToAdd - n - 1);
|
|
}
|
|
|
|
//assert any record removing was done
|
|
int recordsRemoved = (regionsToAdd/3)/1027; //doesn't work for particular values of regionsToAdd
|
|
assertTrue("Expected " + recordsRemoved + " record to be removed from the starting " + records + ". Currently there are " + sheet.getRecords().size() + " records", records - sheet.getRecords().size() == recordsRemoved);
|
|
}
|
|
|
|
public void testGetMergedRegionAt()
|
|
{
|
|
//TODO
|
|
}
|
|
|
|
public void testGetNumMergedRegions()
|
|
{
|
|
//TODO
|
|
}
|
|
|
|
public void testGetCellWidth()
|
|
{
|
|
try{
|
|
Sheet sheet = Sheet.createSheet();
|
|
ColumnInfoRecord nci = ( ColumnInfoRecord ) sheet.createColInfo();
|
|
|
|
//prepare test model
|
|
nci.setFirstColumn((short)5);
|
|
nci.setLastColumn((short)10);
|
|
nci.setColumnWidth((short)100);
|
|
Field f = Sheet.class.getDeclaredField("columnSizes");
|
|
f.setAccessible(true);
|
|
List columnSizes = new ArrayList();
|
|
f.set(sheet,columnSizes);
|
|
columnSizes.add(nci);
|
|
sheet.records.add(1 + sheet.dimsloc, nci);
|
|
sheet.dimsloc++;
|
|
|
|
assertEquals((short)100,sheet.getColumnWidth((short)5));
|
|
assertEquals((short)100,sheet.getColumnWidth((short)6));
|
|
assertEquals((short)100,sheet.getColumnWidth((short)7));
|
|
assertEquals((short)100,sheet.getColumnWidth((short)8));
|
|
assertEquals((short)100,sheet.getColumnWidth((short)9));
|
|
assertEquals((short)100,sheet.getColumnWidth((short)10));
|
|
|
|
sheet.setColumnWidth((short)6,(short)200);
|
|
|
|
assertEquals((short)100,sheet.getColumnWidth((short)5));
|
|
assertEquals((short)200,sheet.getColumnWidth((short)6));
|
|
assertEquals((short)100,sheet.getColumnWidth((short)7));
|
|
assertEquals((short)100,sheet.getColumnWidth((short)8));
|
|
assertEquals((short)100,sheet.getColumnWidth((short)9));
|
|
assertEquals((short)100,sheet.getColumnWidth((short)10));
|
|
|
|
|
|
}
|
|
catch(Exception e){e.printStackTrace();fail(e.getMessage());}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|