]> source.dussan.org Git - poi.git/commitdiff
Improved test case for ValueRecordsAggregate.
authorGlen Stampoultzis <glens@apache.org>
Mon, 12 Apr 2004 13:40:42 +0000 (13:40 +0000)
committerGlen Stampoultzis <glens@apache.org>
Mon, 12 Apr 2004 13:40:42 +0000 (13:40 +0000)
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/branches/REL_2_BRANCH@353547 13f79535-47bb-0310-9956-ffa450edef68

src/testcases/org/apache/poi/hssf/record/aggregates/TestValueRecordsAggregate.java

index c0a6855ad23486c84416d0e968e9712b2f94c867..d3b7e2daf086e43232135f7aa56749886a9c65e6 100755 (executable)
@@ -1,4 +1,3 @@
-
 /* ====================================================================
    Copyright 2002-2004   Apache Software Foundation
 
    See the License for the specific language governing permissions and
    limitations under the License.
 ==================================================================== */
-        
+
 package org.apache.poi.hssf.record.aggregates;
 
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
-import org.apache.poi.hssf.record.FormulaRecord;
-import org.apache.poi.hssf.record.Record;
-import org.apache.poi.hssf.record.SharedFormulaRecord;
+import org.apache.poi.hssf.record.*;
+import org.apache.poi.util.HexDump;
+import junit.framework.TestCase;
+
+public class TestValueRecordsAggregate extends TestCase
+{
+    ValueRecordsAggregate valueRecord = new ValueRecordsAggregate();
 
-public class TestValueRecordsAggregate extends junit.framework.TestCase {
-    public TestValueRecordsAggregate(String name) {
-        super (name);
-    }
-    
     /**
      * Make sure the shared formula makes it to the FormulaRecordAggregate when being parsed
      * as part of the value records
-     *
      */
-    public void testSharedFormula() {
-                       List records = new ArrayList();
-                       records.add(new FormulaRecord());
-                       records.add(new SharedFormulaRecord());
-                       
-                       ValueRecordsAggregate valueRecord = new ValueRecordsAggregate();
-                       valueRecord.construct(0, records); 
-                       Iterator iterator = valueRecord.getIterator();                  
-                       Record record = (Record)iterator.next();
-                       assertNotNull("Row contains a value", record);
-                       assertTrue("First record is a FormulaRecordsAggregate", (record instanceof FormulaRecordAggregate));
-                       FormulaRecordAggregate aggregate = (FormulaRecordAggregate)record;
-                       assertNotNull("SharedFormulaRecord is null", aggregate.getSharedFormulaRecord());
-                               
-    }
-    
-     public static void main(String [] args) {
-        System.out
-        .println("Testing org.apache.poi.hssf.record.aggregates.TestValueRecordAggregate");
-        junit.textui.TestRunner.run(TestValueRecordsAggregate.class);
+    public void testSharedFormula()
+    {
+        List records = new ArrayList();
+        records.add( new FormulaRecord() );
+        records.add( new SharedFormulaRecord() );
+
+        valueRecord.construct( 0, records );
+        Iterator iterator = valueRecord.getIterator();
+        Record record = (Record) iterator.next();
+        assertNotNull( "Row contains a value", record );
+        assertTrue( "First record is a FormulaRecordsAggregate", ( record instanceof FormulaRecordAggregate ) );
+        FormulaRecordAggregate aggregate = (FormulaRecordAggregate) record;
+        assertNotNull( "SharedFormulaRecord is null", aggregate.getSharedFormulaRecord() );
+
+    }
+
+    public void testUnknownRecordsIgnored()
+    {
+        List records = testData();
+        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() );
+    }
+
 }