Refactored test case

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@711505 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Josh Micich 2008-11-05 03:50:31 +00:00
parent 7fe7a28ff3
commit 36c4c0bacf

View File

@ -1,4 +1,3 @@
/* ==================================================================== /* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with contributor license agreements. See the NOTICE file distributed with
@ -16,7 +15,6 @@
limitations under the License. limitations under the License.
==================================================================== */ ==================================================================== */
package org.apache.poi.hssf.record; package org.apache.poi.hssf.record;
import junit.framework.TestCase; import junit.framework.TestCase;
@ -28,120 +26,91 @@ import org.apache.poi.util.IntMapper;
* *
* @author Glen Stampoultzis (glens at apache.org) * @author Glen Stampoultzis (glens at apache.org)
*/ */
public class TestSSTRecordSizeCalculator public final class TestSSTRecordSizeCalculator extends TestCase {
extends TestCase
{
private static final String SMALL_STRING = "Small string"; private static final String SMALL_STRING = "Small string";
private static final int COMPRESSED_PLAIN_STRING_OVERHEAD = 3; private static final int COMPRESSED_PLAIN_STRING_OVERHEAD = 3;
// private List recordLengths;
private IntMapper strings;
private static final int OPTION_FIELD_SIZE = 1; private static final int OPTION_FIELD_SIZE = 1;
public TestSSTRecordSizeCalculator( String s ) private final IntMapper strings = new IntMapper();
{
super( s );
private void confirmSize(int expectedSize) {
SSTRecordSizeCalculator calculator = new SSTRecordSizeCalculator(strings);
assertEquals(expectedSize, calculator.getRecordSize());
} }
public void testBasic() public void testBasic() {
throws Exception
{
strings.add(makeUnicodeString(SMALL_STRING)); strings.add(makeUnicodeString(SMALL_STRING));
SSTRecordSizeCalculator calculator = new SSTRecordSizeCalculator(strings); confirmSize(SSTRecord.SST_RECORD_OVERHEAD
assertEquals(SSTRecord.SST_RECORD_OVERHEAD + COMPRESSED_PLAIN_STRING_OVERHEAD + SMALL_STRING.length(), + COMPRESSED_PLAIN_STRING_OVERHEAD
calculator.getRecordSize()); + SMALL_STRING.length());
} }
public void testBigStringAcrossUnicode() public void testBigStringAcrossUnicode() {
throws Exception int bigString = SSTRecord.MAX_DATA_SPACE + 100;
{
String bigString = new String(new char[SSTRecord.MAX_DATA_SPACE + 100]);
strings.add(makeUnicodeString(bigString)); strings.add(makeUnicodeString(bigString));
SSTRecordSizeCalculator calculator = new SSTRecordSizeCalculator(strings); confirmSize(SSTRecord.SST_RECORD_OVERHEAD
assertEquals(SSTRecord.SST_RECORD_OVERHEAD
+ COMPRESSED_PLAIN_STRING_OVERHEAD + COMPRESSED_PLAIN_STRING_OVERHEAD
+ SSTRecord.MAX_DATA_SPACE + SSTRecord.MAX_DATA_SPACE
+ SSTRecord.STD_RECORD_OVERHEAD + SSTRecord.STD_RECORD_OVERHEAD
+ OPTION_FIELD_SIZE + OPTION_FIELD_SIZE
+ 100, + 100);
calculator.getRecordSize());
} }
public void testPerfectFit() public void testPerfectFit() {
throws Exception int perfectFit = SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD;
{
String perfectFit = new String(new char[SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD]);
strings.add(makeUnicodeString(perfectFit)); strings.add(makeUnicodeString(perfectFit));
SSTRecordSizeCalculator calculator = new SSTRecordSizeCalculator(strings); confirmSize(SSTRecord.SST_RECORD_OVERHEAD
assertEquals(SSTRecord.SST_RECORD_OVERHEAD
+ COMPRESSED_PLAIN_STRING_OVERHEAD + COMPRESSED_PLAIN_STRING_OVERHEAD
+ perfectFit.length(), + perfectFit);
calculator.getRecordSize());
} }
public void testJustOversized() public void testJustOversized() {
throws Exception int tooBig = SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD + 1;
{
String tooBig = new String(new char[SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD + 1]);
strings.add(makeUnicodeString(tooBig)); strings.add(makeUnicodeString(tooBig));
SSTRecordSizeCalculator calculator = new SSTRecordSizeCalculator(strings); confirmSize(SSTRecord.SST_RECORD_OVERHEAD
assertEquals(SSTRecord.SST_RECORD_OVERHEAD
+ COMPRESSED_PLAIN_STRING_OVERHEAD + COMPRESSED_PLAIN_STRING_OVERHEAD
+ tooBig.length() - 1 + tooBig - 1
// continue record // continue record
+ SSTRecord.STD_RECORD_OVERHEAD + SSTRecord.STD_RECORD_OVERHEAD
+ OPTION_FIELD_SIZE + OPTION_FIELD_SIZE + 1);
+ 1,
calculator.getRecordSize());
} }
public void testSecondStringStartsOnNewContinuation() public void testSecondStringStartsOnNewContinuation() {
throws Exception int perfectFit = SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD;
{
String perfectFit = new String(new char[SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD]);
strings.add(makeUnicodeString(perfectFit)); strings.add(makeUnicodeString(perfectFit));
strings.add(makeUnicodeString(SMALL_STRING)); strings.add(makeUnicodeString(SMALL_STRING));
SSTRecordSizeCalculator calculator = new SSTRecordSizeCalculator(strings); confirmSize(SSTRecord.SST_RECORD_OVERHEAD
assertEquals(SSTRecord.SST_RECORD_OVERHEAD
+ SSTRecord.MAX_DATA_SPACE + SSTRecord.MAX_DATA_SPACE
// second string // second string
+ SSTRecord.STD_RECORD_OVERHEAD + SSTRecord.STD_RECORD_OVERHEAD
+ COMPRESSED_PLAIN_STRING_OVERHEAD + COMPRESSED_PLAIN_STRING_OVERHEAD
+ SMALL_STRING.length(), + SMALL_STRING.length());
calculator.getRecordSize());
} }
public void testHeaderCrossesNormalContinuePoint() public void testHeaderCrossesNormalContinuePoint() {
throws Exception int almostPerfectFit = SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD - 2;
{
String almostPerfectFit = new String(new char[SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD - 2]);
strings.add(makeUnicodeString(almostPerfectFit)); strings.add(makeUnicodeString(almostPerfectFit));
String oneCharString = new String(new char[1]); String oneCharString = new String(new char[1]);
strings.add(makeUnicodeString(oneCharString)); strings.add(makeUnicodeString(oneCharString));
SSTRecordSizeCalculator calculator = new SSTRecordSizeCalculator(strings); confirmSize(SSTRecord.SST_RECORD_OVERHEAD
assertEquals(SSTRecord.SST_RECORD_OVERHEAD
+ COMPRESSED_PLAIN_STRING_OVERHEAD + COMPRESSED_PLAIN_STRING_OVERHEAD
+ almostPerfectFit.length() + almostPerfectFit
// second string // second string
+ SSTRecord.STD_RECORD_OVERHEAD + SSTRecord.STD_RECORD_OVERHEAD
+ COMPRESSED_PLAIN_STRING_OVERHEAD + COMPRESSED_PLAIN_STRING_OVERHEAD
+ oneCharString.length(), + oneCharString.length());
calculator.getRecordSize());
} }
private static UnicodeString makeUnicodeString(int size) {
String s = new String(new char[size]);
public void setUp() return makeUnicodeString(s);
{
strings = new IntMapper();
} }
private static UnicodeString makeUnicodeString(String s) {
private UnicodeString makeUnicodeString( String s )
{
UnicodeString st = new UnicodeString(s); UnicodeString st = new UnicodeString(s);
st.setOptionFlags((byte) 0); st.setOptionFlags((byte) 0);
return st; return st;
} }
} }