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
@ -15,7 +14,6 @@
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
==================================================================== */ ==================================================================== */
package org.apache.poi.hssf.record; package org.apache.poi.hssf.record;
@ -25,123 +23,94 @@ import org.apache.poi.util.IntMapper;
/** /**
* Tests that records size calculates correctly. * Tests that records size calculates correctly.
* *
* @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 int COMPRESSED_PLAIN_STRING_OVERHEAD = 3;
private static final String SMALL_STRING = "Small string"; private static final int OPTION_FIELD_SIZE = 1;
private static final int COMPRESSED_PLAIN_STRING_OVERHEAD = 3;
// private List recordLengths; private final IntMapper strings = new IntMapper();
private IntMapper strings;
private static final int OPTION_FIELD_SIZE = 1;
public TestSSTRecordSizeCalculator( String s )
{ private void confirmSize(int expectedSize) {
super( s ); SSTRecordSizeCalculator calculator = new SSTRecordSizeCalculator(strings);
} assertEquals(expectedSize, calculator.getRecordSize());
}
public void testBasic() public void testBasic() {
throws Exception strings.add(makeUnicodeString(SMALL_STRING));
{ confirmSize(SSTRecord.SST_RECORD_OVERHEAD
strings.add(makeUnicodeString(SMALL_STRING)); + COMPRESSED_PLAIN_STRING_OVERHEAD
SSTRecordSizeCalculator calculator = new SSTRecordSizeCalculator(strings); + SMALL_STRING.length());
assertEquals(SSTRecord.SST_RECORD_OVERHEAD + COMPRESSED_PLAIN_STRING_OVERHEAD + SMALL_STRING.length(), }
calculator.getRecordSize());
}
public void testBigStringAcrossUnicode() public void testBigStringAcrossUnicode() {
throws Exception int bigString = SSTRecord.MAX_DATA_SPACE + 100;
{ strings.add(makeUnicodeString(bigString));
String bigString = new String(new char[SSTRecord.MAX_DATA_SPACE + 100]); confirmSize(SSTRecord.SST_RECORD_OVERHEAD
strings.add(makeUnicodeString(bigString)); + COMPRESSED_PLAIN_STRING_OVERHEAD
SSTRecordSizeCalculator calculator = new SSTRecordSizeCalculator(strings); + SSTRecord.MAX_DATA_SPACE
assertEquals(SSTRecord.SST_RECORD_OVERHEAD + SSTRecord.STD_RECORD_OVERHEAD
+ COMPRESSED_PLAIN_STRING_OVERHEAD + OPTION_FIELD_SIZE
+ SSTRecord.MAX_DATA_SPACE + 100);
+ SSTRecord.STD_RECORD_OVERHEAD }
+ OPTION_FIELD_SIZE
+ 100,
calculator.getRecordSize());
}
public void testPerfectFit() public void testPerfectFit() {
throws Exception int perfectFit = SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD;
{ strings.add(makeUnicodeString(perfectFit));
String perfectFit = new String(new char[SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD]); confirmSize(SSTRecord.SST_RECORD_OVERHEAD
strings.add(makeUnicodeString(perfectFit)); + COMPRESSED_PLAIN_STRING_OVERHEAD
SSTRecordSizeCalculator calculator = new SSTRecordSizeCalculator(strings); + perfectFit);
assertEquals(SSTRecord.SST_RECORD_OVERHEAD }
+ COMPRESSED_PLAIN_STRING_OVERHEAD
+ perfectFit.length(),
calculator.getRecordSize());
}
public void testJustOversized() public void testJustOversized() {
throws Exception int tooBig = SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD + 1;
{ strings.add(makeUnicodeString(tooBig));
String tooBig = new String(new char[SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD + 1]); confirmSize(SSTRecord.SST_RECORD_OVERHEAD
strings.add(makeUnicodeString(tooBig)); + COMPRESSED_PLAIN_STRING_OVERHEAD
SSTRecordSizeCalculator calculator = new SSTRecordSizeCalculator(strings); + tooBig - 1
assertEquals(SSTRecord.SST_RECORD_OVERHEAD // continue record
+ COMPRESSED_PLAIN_STRING_OVERHEAD + SSTRecord.STD_RECORD_OVERHEAD
+ tooBig.length() - 1 + OPTION_FIELD_SIZE + 1);
// continue record
+ SSTRecord.STD_RECORD_OVERHEAD
+ OPTION_FIELD_SIZE
+ 1,
calculator.getRecordSize());
} }
public void testSecondStringStartsOnNewContinuation() public void testSecondStringStartsOnNewContinuation() {
throws Exception int perfectFit = SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD;
{ strings.add(makeUnicodeString(perfectFit));
String perfectFit = new String(new char[SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD]); strings.add(makeUnicodeString(SMALL_STRING));
strings.add(makeUnicodeString(perfectFit)); confirmSize(SSTRecord.SST_RECORD_OVERHEAD
strings.add(makeUnicodeString(SMALL_STRING)); + SSTRecord.MAX_DATA_SPACE
SSTRecordSizeCalculator calculator = new SSTRecordSizeCalculator(strings); // second string
assertEquals(SSTRecord.SST_RECORD_OVERHEAD + SSTRecord.STD_RECORD_OVERHEAD
+ SSTRecord.MAX_DATA_SPACE + COMPRESSED_PLAIN_STRING_OVERHEAD
// second string + SMALL_STRING.length());
+ SSTRecord.STD_RECORD_OVERHEAD }
+ COMPRESSED_PLAIN_STRING_OVERHEAD
+ SMALL_STRING.length(),
calculator.getRecordSize());
}
public void testHeaderCrossesNormalContinuePoint() public void testHeaderCrossesNormalContinuePoint() {
throws Exception int almostPerfectFit = SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD - 2;
{ strings.add(makeUnicodeString(almostPerfectFit));
String almostPerfectFit = new String(new char[SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD - 2]); String oneCharString = new String(new char[1]);
strings.add(makeUnicodeString(almostPerfectFit)); strings.add(makeUnicodeString(oneCharString));
String oneCharString = new String(new char[1]); confirmSize(SSTRecord.SST_RECORD_OVERHEAD
strings.add(makeUnicodeString(oneCharString)); + COMPRESSED_PLAIN_STRING_OVERHEAD
SSTRecordSizeCalculator calculator = new SSTRecordSizeCalculator(strings); + almostPerfectFit
assertEquals(SSTRecord.SST_RECORD_OVERHEAD // second string
+ COMPRESSED_PLAIN_STRING_OVERHEAD + SSTRecord.STD_RECORD_OVERHEAD
+ almostPerfectFit.length() + COMPRESSED_PLAIN_STRING_OVERHEAD
// second string + oneCharString.length());
+ SSTRecord.STD_RECORD_OVERHEAD
+ COMPRESSED_PLAIN_STRING_OVERHEAD
+ 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 UnicodeString makeUnicodeString( String s )
{
UnicodeString st = new UnicodeString(s);
st.setOptionFlags((byte)0);
return st;
}
private static UnicodeString makeUnicodeString(String s) {
UnicodeString st = new UnicodeString(s);
st.setOptionFlags((byte) 0);
return st;
}
} }