Improved test case for ValueRecordsAggregate.
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/branches/REL_2_BRANCH@353547 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
4718592e15
commit
b147d06b0d
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
/* ====================================================================
|
/* ====================================================================
|
||||||
Copyright 2002-2004 Apache Software Foundation
|
Copyright 2002-2004 Apache Software Foundation
|
||||||
|
|
||||||
@ -21,39 +20,186 @@ import java.util.ArrayList;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.poi.hssf.record.FormulaRecord;
|
import org.apache.poi.hssf.record.*;
|
||||||
import org.apache.poi.hssf.record.Record;
|
import org.apache.poi.util.HexDump;
|
||||||
import org.apache.poi.hssf.record.SharedFormulaRecord;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
public class TestValueRecordsAggregate extends junit.framework.TestCase {
|
public class TestValueRecordsAggregate extends TestCase
|
||||||
public TestValueRecordsAggregate(String name) {
|
{
|
||||||
super (name);
|
ValueRecordsAggregate valueRecord = new ValueRecordsAggregate();
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Make sure the shared formula makes it to the FormulaRecordAggregate when being parsed
|
* Make sure the shared formula makes it to the FormulaRecordAggregate when being parsed
|
||||||
* as part of the value records
|
* as part of the value records
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public void testSharedFormula() {
|
public void testSharedFormula()
|
||||||
List records = new ArrayList();
|
{
|
||||||
records.add(new FormulaRecord());
|
List records = new ArrayList();
|
||||||
records.add(new SharedFormulaRecord());
|
records.add( new FormulaRecord() );
|
||||||
|
records.add( new SharedFormulaRecord() );
|
||||||
|
|
||||||
ValueRecordsAggregate valueRecord = new ValueRecordsAggregate();
|
valueRecord.construct( 0, records );
|
||||||
valueRecord.construct(0, records);
|
Iterator iterator = valueRecord.getIterator();
|
||||||
Iterator iterator = valueRecord.getIterator();
|
Record record = (Record) iterator.next();
|
||||||
Record record = (Record)iterator.next();
|
assertNotNull( "Row contains a value", record );
|
||||||
assertNotNull("Row contains a value", record);
|
assertTrue( "First record is a FormulaRecordsAggregate", ( record instanceof FormulaRecordAggregate ) );
|
||||||
assertTrue("First record is a FormulaRecordsAggregate", (record instanceof FormulaRecordAggregate));
|
FormulaRecordAggregate aggregate = (FormulaRecordAggregate) record;
|
||||||
FormulaRecordAggregate aggregate = (FormulaRecordAggregate)record;
|
assertNotNull( "SharedFormulaRecord is null", aggregate.getSharedFormulaRecord() );
|
||||||
assertNotNull("SharedFormulaRecord is null", aggregate.getSharedFormulaRecord());
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String [] args) {
|
public void testUnknownRecordsIgnored()
|
||||||
System.out
|
{
|
||||||
.println("Testing org.apache.poi.hssf.record.aggregates.TestValueRecordAggregate");
|
List records = testData();
|
||||||
junit.textui.TestRunner.run(TestValueRecordsAggregate.class);
|
valueRecord.construct( 0, records );
|
||||||
|
Iterator iterator = valueRecord.getIterator();
|
||||||
|
Record record1 = (Record) iterator.next();
|
||||||
|
Record record2 = (Record) iterator.next();
|
||||||
|
assertNotNull( "No record found", record1 );
|
||||||
|
assertNotNull( "No record found", record2 );
|
||||||
|
assertFalse( iterator.hasNext() );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List testData(){
|
||||||
|
List records = new ArrayList();
|
||||||
|
FormulaRecord formulaRecord = new FormulaRecord();
|
||||||
|
UnknownRecord unknownRecord = new UnknownRecord();
|
||||||
|
BlankRecord blankRecord = new BlankRecord();
|
||||||
|
WindowOneRecord windowOneRecord = new WindowOneRecord();
|
||||||
|
formulaRecord.setRow( 1 );
|
||||||
|
formulaRecord.setColumn( (short) 1 );
|
||||||
|
blankRecord.setRow( 2 );
|
||||||
|
blankRecord.setColumn( (short) 2 );
|
||||||
|
records.add( formulaRecord );
|
||||||
|
records.add( unknownRecord );
|
||||||
|
records.add( blankRecord );
|
||||||
|
records.add( windowOneRecord );
|
||||||
|
return records;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testInsertCell()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
Iterator iterator = valueRecord.getIterator();
|
||||||
|
assertFalse( iterator.hasNext() );
|
||||||
|
|
||||||
|
BlankRecord blankRecord = newBlankRecord();
|
||||||
|
valueRecord.insertCell( blankRecord );
|
||||||
|
iterator = valueRecord.getIterator();
|
||||||
|
assertTrue( iterator.hasNext() );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testRemoveCell()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
BlankRecord blankRecord1 = newBlankRecord();
|
||||||
|
valueRecord.insertCell( blankRecord1 );
|
||||||
|
BlankRecord blankRecord2 = newBlankRecord();
|
||||||
|
valueRecord.removeCell( blankRecord2 );
|
||||||
|
Iterator iterator = valueRecord.getIterator();
|
||||||
|
assertFalse( iterator.hasNext() );
|
||||||
|
|
||||||
|
// removing an already empty cell just falls through
|
||||||
|
valueRecord.removeCell( blankRecord2 );
|
||||||
|
|
||||||
|
// even trying to remove null just falls through silently.
|
||||||
|
valueRecord.removeCell( null );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetPhysicalNumberOfCells() throws Exception
|
||||||
|
{
|
||||||
|
assertEquals(0, valueRecord.getPhysicalNumberOfCells());
|
||||||
|
BlankRecord blankRecord1 = newBlankRecord();
|
||||||
|
valueRecord.insertCell( blankRecord1 );
|
||||||
|
assertEquals(1, valueRecord.getPhysicalNumberOfCells());
|
||||||
|
valueRecord.removeCell( blankRecord1 );
|
||||||
|
assertEquals(0, valueRecord.getPhysicalNumberOfCells());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetFirstCellNum() throws Exception
|
||||||
|
{
|
||||||
|
assertEquals( -1, valueRecord.getFirstCellNum() );
|
||||||
|
valueRecord.insertCell( newBlankRecord( 2, 2 ) );
|
||||||
|
assertEquals( 2, valueRecord.getFirstCellNum() );
|
||||||
|
valueRecord.insertCell( newBlankRecord( 3, 3 ) );
|
||||||
|
assertEquals( 2, valueRecord.getFirstCellNum() );
|
||||||
|
|
||||||
|
// Note: Removal doesn't currently reset the first column. It probably should but it doesn't.
|
||||||
|
valueRecord.removeCell( newBlankRecord( 2, 2 ) );
|
||||||
|
assertEquals( 2, valueRecord.getFirstCellNum() );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetLastCellNum() throws Exception
|
||||||
|
{
|
||||||
|
assertEquals( -1, valueRecord.getLastCellNum() );
|
||||||
|
valueRecord.insertCell( newBlankRecord( 2, 2 ) );
|
||||||
|
assertEquals( 2, valueRecord.getLastCellNum() );
|
||||||
|
valueRecord.insertCell( newBlankRecord( 3, 3 ) );
|
||||||
|
assertEquals( 3, valueRecord.getLastCellNum() );
|
||||||
|
|
||||||
|
// Note: Removal doesn't currently reset the last column. It probably should but it doesn't.
|
||||||
|
valueRecord.removeCell( newBlankRecord( 3, 3 ) );
|
||||||
|
assertEquals( 3, valueRecord.getLastCellNum() );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testSerialize() throws Exception
|
||||||
|
{
|
||||||
|
byte[] actualArray = new byte[36];
|
||||||
|
byte[] expectedArray = new byte[]
|
||||||
|
{
|
||||||
|
(byte)0x06, (byte)0x00, (byte)0x16, (byte)0x00,
|
||||||
|
(byte)0x01, (byte)0x00, (byte)0x01, (byte)0x00,
|
||||||
|
(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
|
||||||
|
(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
|
||||||
|
(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
|
||||||
|
(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
|
||||||
|
(byte)0x00, (byte)0x00, (byte)0x01, (byte)0x02,
|
||||||
|
(byte)0x06, (byte)0x00, (byte)0x02, (byte)0x00,
|
||||||
|
(byte)0x02, (byte)0x00, (byte)0x00, (byte)0x00,
|
||||||
|
};
|
||||||
|
List records = testData();
|
||||||
|
valueRecord.construct( 0, records );
|
||||||
|
int bytesWritten = valueRecord.serialize( 0, actualArray );
|
||||||
|
assertEquals( 36, bytesWritten );
|
||||||
|
for (int i = 0; i < 36; i++)
|
||||||
|
assertEquals( expectedArray[i], actualArray[i] );
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main( String[] args )
|
||||||
|
{
|
||||||
|
System.out.println( "Testing org.apache.poi.hssf.record.aggregates.TestValueRecordAggregate" );
|
||||||
|
junit.textui.TestRunner.run( TestValueRecordsAggregate.class );
|
||||||
|
}
|
||||||
|
|
||||||
|
private BlankRecord newBlankRecord()
|
||||||
|
{
|
||||||
|
return newBlankRecord( 2, 2 );
|
||||||
|
}
|
||||||
|
|
||||||
|
private BlankRecord newBlankRecord( int col, int row)
|
||||||
|
{
|
||||||
|
BlankRecord blankRecord = new BlankRecord();
|
||||||
|
blankRecord.setRow( row );
|
||||||
|
blankRecord.setColumn( (short) col );
|
||||||
|
return blankRecord;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetRecordSize() throws Exception
|
||||||
|
{
|
||||||
|
List records = testData();
|
||||||
|
valueRecord.construct( 0, records );
|
||||||
|
assertEquals( 36, valueRecord.getRecordSize() );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testClone() throws Exception
|
||||||
|
{
|
||||||
|
List records = testData();
|
||||||
|
valueRecord.construct( 0, records );
|
||||||
|
valueRecord = (ValueRecordsAggregate) valueRecord.clone();
|
||||||
|
assertEquals( 36, valueRecord.getRecordSize() );
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user