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:
parent
7fe7a28ff3
commit
36c4c0bacf
@ -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 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 IntMapper strings;
|
|
||||||
private static final int OPTION_FIELD_SIZE = 1;
|
|
||||||
|
|
||||||
public TestSSTRecordSizeCalculator( String s )
|
private final IntMapper strings = new IntMapper();
|
||||||
{
|
|
||||||
super( s );
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testBasic()
|
|
||||||
throws Exception
|
|
||||||
{
|
|
||||||
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 void testBigStringAcrossUnicode()
|
|
||||||
throws Exception
|
|
||||||
{
|
|
||||||
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 void testPerfectFit()
|
|
||||||
throws Exception
|
|
||||||
{
|
|
||||||
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 void testJustOversized()
|
|
||||||
throws Exception
|
|
||||||
{
|
|
||||||
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 void testSecondStringStartsOnNewContinuation()
|
|
||||||
throws Exception
|
|
||||||
{
|
|
||||||
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());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testHeaderCrossesNormalContinuePoint()
|
|
||||||
throws Exception
|
|
||||||
{
|
|
||||||
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 void setUp()
|
private void confirmSize(int expectedSize) {
|
||||||
{
|
SSTRecordSizeCalculator calculator = new SSTRecordSizeCalculator(strings);
|
||||||
strings = new IntMapper();
|
assertEquals(expectedSize, calculator.getRecordSize());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testBasic() {
|
||||||
|
strings.add(makeUnicodeString(SMALL_STRING));
|
||||||
|
confirmSize(SSTRecord.SST_RECORD_OVERHEAD
|
||||||
|
+ COMPRESSED_PLAIN_STRING_OVERHEAD
|
||||||
|
+ SMALL_STRING.length());
|
||||||
|
}
|
||||||
|
|
||||||
private UnicodeString makeUnicodeString( String s )
|
public void testBigStringAcrossUnicode() {
|
||||||
{
|
int bigString = SSTRecord.MAX_DATA_SPACE + 100;
|
||||||
UnicodeString st = new UnicodeString(s);
|
strings.add(makeUnicodeString(bigString));
|
||||||
st.setOptionFlags((byte)0);
|
confirmSize(SSTRecord.SST_RECORD_OVERHEAD
|
||||||
return st;
|
+ COMPRESSED_PLAIN_STRING_OVERHEAD
|
||||||
}
|
+ SSTRecord.MAX_DATA_SPACE
|
||||||
|
+ SSTRecord.STD_RECORD_OVERHEAD
|
||||||
|
+ OPTION_FIELD_SIZE
|
||||||
|
+ 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testPerfectFit() {
|
||||||
|
int perfectFit = SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD;
|
||||||
|
strings.add(makeUnicodeString(perfectFit));
|
||||||
|
confirmSize(SSTRecord.SST_RECORD_OVERHEAD
|
||||||
|
+ COMPRESSED_PLAIN_STRING_OVERHEAD
|
||||||
|
+ perfectFit);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testJustOversized() {
|
||||||
|
int tooBig = SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD + 1;
|
||||||
|
strings.add(makeUnicodeString(tooBig));
|
||||||
|
confirmSize(SSTRecord.SST_RECORD_OVERHEAD
|
||||||
|
+ COMPRESSED_PLAIN_STRING_OVERHEAD
|
||||||
|
+ tooBig - 1
|
||||||
|
// continue record
|
||||||
|
+ SSTRecord.STD_RECORD_OVERHEAD
|
||||||
|
+ OPTION_FIELD_SIZE + 1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testSecondStringStartsOnNewContinuation() {
|
||||||
|
int perfectFit = SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD;
|
||||||
|
strings.add(makeUnicodeString(perfectFit));
|
||||||
|
strings.add(makeUnicodeString(SMALL_STRING));
|
||||||
|
confirmSize(SSTRecord.SST_RECORD_OVERHEAD
|
||||||
|
+ SSTRecord.MAX_DATA_SPACE
|
||||||
|
// second string
|
||||||
|
+ SSTRecord.STD_RECORD_OVERHEAD
|
||||||
|
+ COMPRESSED_PLAIN_STRING_OVERHEAD
|
||||||
|
+ SMALL_STRING.length());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testHeaderCrossesNormalContinuePoint() {
|
||||||
|
int almostPerfectFit = SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD - 2;
|
||||||
|
strings.add(makeUnicodeString(almostPerfectFit));
|
||||||
|
String oneCharString = new String(new char[1]);
|
||||||
|
strings.add(makeUnicodeString(oneCharString));
|
||||||
|
confirmSize(SSTRecord.SST_RECORD_OVERHEAD
|
||||||
|
+ COMPRESSED_PLAIN_STRING_OVERHEAD
|
||||||
|
+ almostPerfectFit
|
||||||
|
// second string
|
||||||
|
+ SSTRecord.STD_RECORD_OVERHEAD
|
||||||
|
+ COMPRESSED_PLAIN_STRING_OVERHEAD
|
||||||
|
+ oneCharString.length());
|
||||||
|
|
||||||
|
}
|
||||||
|
private static UnicodeString makeUnicodeString(int size) {
|
||||||
|
String s = new String(new char[size]);
|
||||||
|
return makeUnicodeString(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static UnicodeString makeUnicodeString(String s) {
|
||||||
|
UnicodeString st = new UnicodeString(s);
|
||||||
|
st.setOptionFlags((byte) 0);
|
||||||
|
return st;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user