FileDocCategorySizeDatePackage
TestSSTRecordSizeCalculator.javaAPI DocApache Poi 3.0.15473Mon Jan 01 12:39:46 GMT 2007org.apache.poi.hssf.record

TestSSTRecordSizeCalculator

public class TestSSTRecordSizeCalculator extends TestCase
Tests that records size calculates correctly.
author
Glen Stampoultzis (glens at apache.org)

Fields Summary
private static final String
SMALL_STRING
private static final int
COMPRESSED_PLAIN_STRING_OVERHEAD
private IntMapper
strings
private static final int
OPTION_FIELD_SIZE
Constructors Summary
public TestSSTRecordSizeCalculator(String s)


        
    
        super( s );
    
Methods Summary
private org.apache.poi.hssf.record.UnicodeStringmakeUnicodeString(java.lang.String s)

      UnicodeString st = new UnicodeString(s);
      st.setOptionFlags((byte)0);
      return st;
    
public voidsetUp()

        strings = new IntMapper();
    
public voidtestBasic()

        strings.add(makeUnicodeString(SMALL_STRING));
        SSTRecordSizeCalculator calculator = new SSTRecordSizeCalculator(strings);
        assertEquals(SSTRecord.SST_RECORD_OVERHEAD + COMPRESSED_PLAIN_STRING_OVERHEAD + SMALL_STRING.length(),
                calculator.getRecordSize());
    
public voidtestBigStringAcrossUnicode()

        String bigString = new String(new char[SSTRecord.MAX_DATA_SPACE + 100]);
        strings.add(makeUnicodeString(bigString));
        SSTRecordSizeCalculator calculator = new SSTRecordSizeCalculator(strings);
        assertEquals(SSTRecord.SST_RECORD_OVERHEAD
                + COMPRESSED_PLAIN_STRING_OVERHEAD
                + SSTRecord.MAX_DATA_SPACE
                + SSTRecord.STD_RECORD_OVERHEAD
                + OPTION_FIELD_SIZE
                + 100,
                calculator.getRecordSize());
    
public voidtestHeaderCrossesNormalContinuePoint()

        String almostPerfectFit = new String(new char[SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD - 2]);
        strings.add(makeUnicodeString(almostPerfectFit));
        String oneCharString = new String(new char[1]);
        strings.add(makeUnicodeString(oneCharString));
        SSTRecordSizeCalculator calculator = new SSTRecordSizeCalculator(strings);
        assertEquals(SSTRecord.SST_RECORD_OVERHEAD
                + COMPRESSED_PLAIN_STRING_OVERHEAD
                + almostPerfectFit.length()
                // second string
                + SSTRecord.STD_RECORD_OVERHEAD
                + COMPRESSED_PLAIN_STRING_OVERHEAD
                + oneCharString.length(),
                calculator.getRecordSize());

    
public voidtestJustOversized()

        String tooBig = new String(new char[SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD + 1]);
        strings.add(makeUnicodeString(tooBig));
        SSTRecordSizeCalculator calculator = new SSTRecordSizeCalculator(strings);
        assertEquals(SSTRecord.SST_RECORD_OVERHEAD
                + COMPRESSED_PLAIN_STRING_OVERHEAD
                + tooBig.length() - 1
                // continue record
                + SSTRecord.STD_RECORD_OVERHEAD
                + OPTION_FIELD_SIZE
                + 1,
                calculator.getRecordSize());

    
public voidtestPerfectFit()

        String perfectFit = new String(new char[SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD]);
        strings.add(makeUnicodeString(perfectFit));
        SSTRecordSizeCalculator calculator = new SSTRecordSizeCalculator(strings);
        assertEquals(SSTRecord.SST_RECORD_OVERHEAD
                + COMPRESSED_PLAIN_STRING_OVERHEAD
                + perfectFit.length(),
                calculator.getRecordSize());
    
public voidtestSecondStringStartsOnNewContinuation()

        String perfectFit = new String(new char[SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD]);
        strings.add(makeUnicodeString(perfectFit));
        strings.add(makeUnicodeString(SMALL_STRING));
        SSTRecordSizeCalculator calculator = new SSTRecordSizeCalculator(strings);
        assertEquals(SSTRecord.SST_RECORD_OVERHEAD
                + SSTRecord.MAX_DATA_SPACE
                // second string
                + SSTRecord.STD_RECORD_OVERHEAD
                + COMPRESSED_PLAIN_STRING_OVERHEAD
                + SMALL_STRING.length(),
                calculator.getRecordSize());