Package org.apache.poi.hssf.model

Source Code of org.apache.poi.hssf.model.SheetTest

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;
import org.apache.poi.hssf.record.RowRecord;
import org.apache.poi.hssf.record.StringRecord;

/**
* @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());}

  }

  /**
   * Makes sure all rows registered for this sheet are aggregated, they were being skipped
   *
   */
  public void testRowAggregation() {
    List records = new ArrayList();
    RowRecord row = new RowRecord();
    row.setRowNumber(0);   
    records.add(row);
   
    row = new RowRecord();
    row.setRowNumber(1);
    records.add(row);

    records.add(new StringRecord());
   
    row = new RowRecord();
    row.setRowNumber(2);
    records.add(row);
   
   
    Sheet sheet = Sheet.createSheet(records, 0);
    assertNotNull("Row [2] was skipped", sheet.getRow(2));
   
  }


  public static void main(String [] args) {
    System.out
    .println("Testing : "+SheetTest.class.getName());
    junit.textui.TestRunner.run(SheetTest.class);
  }

}



TOP

Related Classes of org.apache.poi.hssf.model.SheetTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.