You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by jo...@apache.org on 2008/10/11 00:59:16 UTC

svn commit: r703596 [1/2] - in /poi/trunk/src: java/org/apache/poi/hssf/dev/ java/org/apache/poi/hssf/record/ testcases/org/apache/poi/hssf/eventmodel/ testcases/org/apache/poi/hssf/record/ testcases/org/apache/poi/hssf/record/constant/ testcases/org/a...

Author: josh
Date: Fri Oct 10 15:59:14 2008
New Revision: 703596

URL: http://svn.apache.org/viewvc?rev=703596&view=rev
Log:
Made RecordInputStream final (major clean-up in test cases and BiffViewer)

Modified:
    poi/trunk/src/java/org/apache/poi/hssf/dev/BiffViewer.java
    poi/trunk/src/java/org/apache/poi/hssf/record/RecordInputStream.java
    poi/trunk/src/testcases/org/apache/poi/hssf/eventmodel/TestEventRecordFactory.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAreaFormatRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAreaRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAxisLineFormatRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAxisOptionsRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAxisParentRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAxisRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAxisUsedRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestBarRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestBoundSheetRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestCFHeaderRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestCFRuleRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestCategorySeriesAxisRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestChartRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestCommonObjectDataSubRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestDatRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestDataFormatRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestDefaultDataLabelTextPropertiesRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestEmbeddedObjectRefSubRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestEndSubRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestExtendedFormatRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestExternalNameRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFontBasisRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFontIndexRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFontRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFormulaRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFrameRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestHyperlinkRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestLegendRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestLineFormatRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestLinkedDataRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNameRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNoteRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNoteStructureSubRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNumberFormatIndexRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestObjRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestObjectLinkRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestPaneRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestPlotAreaRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestPlotGrowthRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestRecordFactory.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSCLRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSSTDeserializer.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSeriesChartGroupIndexRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSeriesIndexRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSeriesLabelsRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSeriesListRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSeriesRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSeriesTextRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSeriesToChartGroupRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSharedFormulaRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSheetPropertiesRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestStringRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSupBookRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestTableRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestTextRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestTickRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestUnitsRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestValueRangeRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestcaseRecordInputStream.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/constant/TestConstantValueParser.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/formula/TestArrayPtg.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/formula/TestFuncPtg.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/formula/TestReferencePtg.java

Modified: poi/trunk/src/java/org/apache/poi/hssf/dev/BiffViewer.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/dev/BiffViewer.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/dev/BiffViewer.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/dev/BiffViewer.java Fri Oct 10 15:59:14 2008
@@ -17,17 +17,23 @@
 
 package org.apache.poi.hssf.dev;
 
+import java.io.DataInputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
+import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.io.OutputStreamWriter;
 import java.io.PrintStream;
+import java.io.Writer;
 import java.util.ArrayList;
+import java.util.List;
 
 import org.apache.poi.hssf.record.*;
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 import org.apache.poi.util.HexDump;
+import org.apache.poi.util.LittleEndian;
 
 /**
  *  Utillity for reading in BIFF8 records and displaying data from them.
@@ -37,333 +43,488 @@
  *@see        #main
  */
 public final class BiffViewer {
-    private final File _inputFile;
-    private boolean dump;
-    private final PrintStream _ps;
-
-
-    public BiffViewer(File inFile, PrintStream ps) {
-        _inputFile = inFile;
-        _ps = ps;
-    }
-
-
-    /**
-     *  Method run starts up BiffViewer...
-     */
-    public void run() {
-        try {
-            POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(_inputFile));
-            InputStream stream = fs.createDocumentInputStream("Workbook");
-            createRecords(stream, dump, _ps);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-
-    /**
-     *  Create an array of records from an input stream
-     *
-     *@param  in                         the InputStream from which the records
-     *      will be obtained
-     *@param  dump
-     *@return                            an array of Records created from the
-     *      InputStream
-     *@exception  RecordFormatException  on error processing the InputStream
-     */
-    public static Record[] createRecords(InputStream in, boolean dump, PrintStream ps)
-             throws RecordFormatException {
-        ArrayList records = new ArrayList();
-        RecordDetails activeRecord = null;
-
-        BiffviewRecordInputStream recStream = new BiffviewRecordInputStream(in);
-        while (recStream.hasNextRecord()) {
-            recStream.nextRecord();
-            if (recStream.getSid() != 0) {
-                Record record = createRecord (recStream);
-                    if (record.getSid() != ContinueRecord.sid)
-                    {
-                        records.add(record);
-                        if (activeRecord != null)
-                            activeRecord.dump(ps);
-                        int startPos = (int)(recStream.getPos()-recStream.getLength() - 4);
-                        activeRecord = new RecordDetails(recStream.getSid(), recStream.getLength(), startPos, record);
-                    }
-                    if (dump) {
-                        recStream.dumpBytes(ps);
-                    }
-              }
-        }
-        if (activeRecord != null) {
-            activeRecord.dump(ps);
-        }
-        Record[] retval = new Record[records.size()];
-        records.toArray(retval);
-        return retval;
-    }
-
-
-    /**
-     *  Essentially a duplicate of RecordFactory. Kept separate as not to screw
-     *  up non-debug operations.
-     *
-     */
-    private static Record createRecord( RecordInputStream in )
-    {
-        switch ( in.getSid() )
-        {
-            case AreaFormatRecord.sid:     return new AreaFormatRecord(in);
-            case AreaRecord.sid:           return new AreaRecord(in);
-            case AxisLineFormatRecord.sid: return new AxisLineFormatRecord(in);
-            case AxisOptionsRecord.sid:    return new AxisOptionsRecord(in);
-            case AxisParentRecord.sid:     return new AxisParentRecord(in);
-            case AxisRecord.sid:           return new AxisRecord(in);
-            case AxisUsedRecord.sid:       return new AxisUsedRecord(in);
-            case BOFRecord.sid:            return new BOFRecord(in);
-            case BackupRecord.sid:         return new BackupRecord(in);
-            case BarRecord.sid:            return new BarRecord(in);
-            case BeginRecord.sid:          return new BeginRecord(in);
-            case BlankRecord.sid:          return new BlankRecord(in);
-            case BookBoolRecord.sid:       return new BookBoolRecord(in);
-            case BoolErrRecord.sid:        return new BoolErrRecord(in);
-            case BottomMarginRecord.sid:   return new BottomMarginRecord(in);
-            case BoundSheetRecord.sid:     return new BoundSheetRecord(in);
-            case CFHeaderRecord.sid:       return new CFHeaderRecord(in);
-            case CFRuleRecord.sid:         return new CFRuleRecord(in);
-            case CalcCountRecord.sid:      return new CalcCountRecord(in);
-            case CalcModeRecord.sid:       return new CalcModeRecord(in);
-            case CategorySeriesAxisRecord.sid: return new CategorySeriesAxisRecord(in);
-            case ChartFormatRecord.sid:    return new ChartFormatRecord(in);
-            case ChartRecord.sid:          return new ChartRecord(in);
-            case CodepageRecord.sid:       return new CodepageRecord(in);
-            case ColumnInfoRecord.sid:     return new ColumnInfoRecord(in);
-            case ContinueRecord.sid:       return new ContinueRecord(in);
-            case CountryRecord.sid:        return new CountryRecord(in);
-            case DBCellRecord.sid:         return new DBCellRecord(in);
-            case DSFRecord.sid:            return new DSFRecord(in);
-            case DatRecord.sid:            return new DatRecord(in);
-            case DataFormatRecord.sid:     return new DataFormatRecord(in);
-            case DateWindow1904Record.sid: return new DateWindow1904Record(in);
-            case DefaultColWidthRecord.sid:return new DefaultColWidthRecord(in);
-            case DefaultDataLabelTextPropertiesRecord.sid: return new DefaultDataLabelTextPropertiesRecord(in);
-            case DefaultRowHeightRecord.sid: return new DefaultRowHeightRecord(in);
-            case DeltaRecord.sid:          return new DeltaRecord(in);
-            case DimensionsRecord.sid:     return new DimensionsRecord(in);
-            case DrawingGroupRecord.sid:   return new DrawingGroupRecord(in);
-            case DrawingRecordForBiffViewer.sid: return new DrawingRecordForBiffViewer(in);
-            case DrawingSelectionRecord.sid: return new DrawingSelectionRecord(in);
-            case DVRecord.sid:             return new DVRecord(in);
-            case DVALRecord.sid:           return new DVALRecord(in);
-            case EOFRecord.sid:            return new EOFRecord(in);
-            case EndRecord.sid:            return new EndRecord(in);
-            case ExtSSTRecord.sid:         return new ExtSSTRecord(in);
-            case ExtendedFormatRecord.sid: return new ExtendedFormatRecord(in);
-            case ExternSheetRecord.sid:    return new ExternSheetRecord(in);
-            case FilePassRecord.sid:       return new FilePassRecord(in);
-            case FileSharingRecord.sid:    return new FileSharingRecord(in);
-            case FnGroupCountRecord.sid:   return new FnGroupCountRecord(in);
-            case FontBasisRecord.sid:      return new FontBasisRecord(in);
-            case FontIndexRecord.sid:      return new FontIndexRecord(in);
-            case FontRecord.sid:           return new FontRecord(in);
-            case FooterRecord.sid:         return new FooterRecord(in);
-            case FormatRecord.sid:         return new FormatRecord(in);
-            case FormulaRecord.sid:        return new FormulaRecord(in);
-            case FrameRecord.sid:          return new FrameRecord(in);
-            case GridsetRecord.sid:        return new GridsetRecord(in);
-            case GutsRecord.sid:           return new GutsRecord(in);
-            case HCenterRecord.sid:        return new HCenterRecord(in);
-            case HeaderRecord.sid:         return new HeaderRecord(in);
-            case HideObjRecord.sid:        return new HideObjRecord(in);
-            case HorizontalPageBreakRecord.sid: return new HorizontalPageBreakRecord(in);
-            case HyperlinkRecord.sid:      return new HyperlinkRecord(in);
-            case IndexRecord.sid:          return new IndexRecord(in);
-            case InterfaceEndRecord.sid:   return new InterfaceEndRecord(in);
-            case InterfaceHdrRecord.sid:   return new InterfaceHdrRecord(in);
-            case IterationRecord.sid:      return new IterationRecord(in);
-            case LabelRecord.sid:          return new LabelRecord(in);
-            case LabelSSTRecord.sid:       return new LabelSSTRecord(in);
-            case LeftMarginRecord.sid:     return new LeftMarginRecord(in);
-            case LegendRecord.sid:         return new LegendRecord(in);
-            case LineFormatRecord.sid:     return new LineFormatRecord(in);
-            case LinkedDataRecord.sid:     return new LinkedDataRecord(in);
-            case MMSRecord.sid:            return new MMSRecord(in);
-            case MergeCellsRecord.sid:     return new MergeCellsRecord(in);
-            case MulBlankRecord.sid:       return new MulBlankRecord(in);
-            case MulRKRecord.sid:          return new MulRKRecord(in);
-            case NameRecord.sid:           return new NameRecord(in);
-            case NoteRecord.sid:           return new NoteRecord(in);
-            case NumberRecord.sid:         return new NumberRecord(in);
-            case ObjRecord.sid:            return new ObjRecord(in);
-            case ObjectLinkRecord.sid:     return new ObjectLinkRecord(in);
-            case PaletteRecord.sid:        return new PaletteRecord(in);
-            case PaneRecord.sid:           return new PaneRecord(in);
-            case PasswordRecord.sid:       return new PasswordRecord(in);
-            case PasswordRev4Record.sid:   return new PasswordRev4Record(in);
-            case PlotAreaRecord.sid:       return new PlotAreaRecord(in);
-            case PlotGrowthRecord.sid:     return new PlotGrowthRecord(in);
-            case PrecisionRecord.sid:      return new PrecisionRecord(in);
-            case PrintGridlinesRecord.sid: return new PrintGridlinesRecord(in);
-            case PrintHeadersRecord.sid:   return new PrintHeadersRecord(in);
-            case PrintSetupRecord.sid:     return new PrintSetupRecord(in);
-            case ProtectRecord.sid:        return new ProtectRecord(in);
-            case ProtectionRev4Record.sid: return new ProtectionRev4Record(in);
-            case RKRecord.sid:             return new RKRecord(in);
-            case RefModeRecord.sid:        return new RefModeRecord(in);
-            case RefreshAllRecord.sid:     return new RefreshAllRecord(in);
-            case RightMarginRecord.sid:    return new RightMarginRecord(in);
-            case RowRecord.sid:            return new RowRecord(in);
-            case SCLRecord.sid:            return new SCLRecord(in);
-            case SSTRecord.sid:            return new SSTRecord(in);
-            case SaveRecalcRecord.sid:     return new SaveRecalcRecord(in);
-            case SelectionRecord.sid:      return new SelectionRecord(in);
-            case SeriesIndexRecord.sid:    return new SeriesIndexRecord(in);
-            case SeriesListRecord.sid:     return new SeriesListRecord(in);
-            case SeriesRecord.sid:         return new SeriesRecord(in);
-            case SeriesTextRecord.sid:     return new SeriesTextRecord(in);
-            case SeriesToChartGroupRecord.sid: return new SeriesToChartGroupRecord(in);
-            case SharedFormulaRecord.sid:  return new SharedFormulaRecord(in);
-            case SheetPropertiesRecord.sid:return new SheetPropertiesRecord(in);
-            case StringRecord.sid:         return new StringRecord(in);
-            case StyleRecord.sid:          return new StyleRecord(in);
-            case SupBookRecord.sid:        return new SupBookRecord(in);
-            case TabIdRecord.sid:          return new TabIdRecord(in);
-            case TableRecord.sid:          return new TableRecord(in);
-            case TextObjectRecord.sid:     return new TextObjectRecord(in);
-            case TextRecord.sid:           return new TextRecord(in);
-            case TickRecord.sid:           return new TickRecord(in);
-            case TopMarginRecord.sid:      return new TopMarginRecord(in);
-            case UnitsRecord.sid:          return new UnitsRecord(in);
-            case UseSelFSRecord.sid:       return new UseSelFSRecord(in);
-            case VCenterRecord.sid:        return new VCenterRecord(in);
-            case ValueRangeRecord.sid:     return new ValueRangeRecord(in);
-            case VerticalPageBreakRecord.sid: return new VerticalPageBreakRecord(in);
-            case WSBoolRecord.sid:         return new WSBoolRecord(in);
-            case WindowOneRecord.sid:      return new WindowOneRecord(in);
-            case WindowProtectRecord.sid:  return new WindowProtectRecord(in);
-            case WindowTwoRecord.sid:      return new WindowTwoRecord(in);
-            case WriteAccessRecord.sid:    return new WriteAccessRecord(in);
-            case WriteProtectRecord.sid:   return new WriteProtectRecord(in);        
-        
-        }
-        return new UnknownRecord(in);
-    }
-
-
-    /**
-     *  Method setDump - hex dump out data or not.
-     */
-    public void setDump(boolean dump) {
-        this.dump = dump;
-    }
-
-
-    /**
-     * Method main with 1 argument just run straight biffview against given
-     * file<P>
-     *
-     * with 2 arguments where the second argument is "on" - run biffviewer<P>
-     *
-     * with hex dumps of records <P>
-     *
-     * with 2 arguments where the second argument is "bfd" just run a big fat
-     * hex dump of the file...don't worry about biffviewing it at all
-     * <p>
-     * Define the system property <code>poi.deserialize.escher</code> to turn on
-     * deserialization of escher records.
-     *
-     */
-    public static void main(String[] args) {
-
-        System.setProperty("poi.deserialize.escher", "true");
-
-        if (args.length == 0) {
-            System.out.println( "Biff viewer needs a filename" );
-            return;
-        }
-
-        try {
-            String inFileName = args[0];
-            File inputFile = new File(inFileName);
-            if(!inputFile.exists()) {
-                throw new RuntimeException("specified inputFile '" + inFileName + "' does not exist");
-            }
-            PrintStream ps;
-            if (false) { // set to true to output to file
-                OutputStream os = new FileOutputStream(inFileName + ".out");
-                ps = new PrintStream(os);
-            } else {
-                ps = System.out;
-            }
-            BiffViewer viewer = new BiffViewer(inputFile, ps);
-
-            if (args.length > 1 && args[1].equals("on")) {
-                viewer.setDump(true);
-            }
-            if (args.length > 1 && args[1].equals("bfd")) {
-                POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(inputFile));
-                InputStream stream = fs.createDocumentInputStream("Workbook");
-                int size = stream.available();
-                byte[] data = new byte[size];
-
-                stream.read(data);
-                HexDump.dump(data, 0, System.out, 0);
-            } else {
-                viewer.run();
-            }
-            ps.close();
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * This record supports dumping of completed continue records.
-     */
-    private static final class RecordDetails
-    {
-        short rectype, recsize;
-        int startloc;
-        Record record;
-
-        public RecordDetails( short rectype, short recsize, int startloc, Record record )
-        {
-            this.rectype = rectype;
-            this.recsize = recsize;
-            this.startloc = startloc;
-            this.record = record;
-        }
-
-        public short getRectype()
-        {
-            return rectype;
-        }
-
-        public short getRecsize()
-        {
-            return recsize;
-        }
-
-        public Record getRecord()
-        {
-            return record;
-        }
-
-        public void dump(PrintStream ps) {
-            ps.println("Offset 0x" + Integer.toHexString(startloc) + " (" + startloc + ")");
-            ps.println( "recordid = 0x" + Integer.toHexString( rectype ) + ", size = " + recsize );
-            ps.println( record.toString() );
-        }
-    }
-
-    private static final class BiffviewRecordInputStream extends RecordInputStream {
-      public BiffviewRecordInputStream(InputStream in) {
-        super(in);
-      }
-      public void dumpBytes(PrintStream ps) {
-        ps.println(HexDump.dump(this.data, 0, this.currentLength));
-      }
-    }
+	static final char[] NEW_LINE_CHARS = System.getProperty("line.separator").toCharArray();
 
+	private BiffViewer() {
+		// no instances of this class
+	}
+
+	/**
+	 *  Create an array of records from an input stream
+	 *
+	 *@param  in the InputStream from which the records will be obtained
+	 *@return an array of Records created from the InputStream
+	 *@exception  RecordFormatException  on error processing the InputStream
+	 */
+	public static Record[] createRecords(InputStream is, PrintStream ps, BiffRecordListener recListener, boolean dumpInterpretedRecords)
+			throws RecordFormatException {
+		ArrayList temp = new ArrayList();
+
+		RecordInputStream recStream = new RecordInputStream(is);
+		while (recStream.hasNextRecord()) {
+			recStream.nextRecord();
+			if (recStream.getSid() == 0) {
+				continue;
+			}
+			Record record = createRecord (recStream);
+			if (record.getSid() == ContinueRecord.sid) {
+				continue;
+			}
+			temp.add(record);
+			if (dumpInterpretedRecords) {
+				String[] headers = recListener.getRecentHeaders();
+				for (int i = 0; i < headers.length; i++) {
+					ps.println(headers[i]);
+				}
+				ps.print(record.toString());
+			}
+			ps.println();
+		}
+		Record[] result = new Record[temp.size()];
+		temp.toArray(result);
+		return result;
+	}
+
+
+	/**
+	 *  Essentially a duplicate of RecordFactory. Kept separate as not to screw
+	 *  up non-debug operations.
+	 *
+	 */
+	private static Record createRecord(RecordInputStream in) {
+		switch (in.getSid()) {
+			case AreaFormatRecord.sid:     return new AreaFormatRecord(in);
+			case AreaRecord.sid:           return new AreaRecord(in);
+			case ArrayRecord.sid:          return new ArrayRecord(in);
+			case AxisLineFormatRecord.sid: return new AxisLineFormatRecord(in);
+			case AxisOptionsRecord.sid:    return new AxisOptionsRecord(in);
+			case AxisParentRecord.sid:     return new AxisParentRecord(in);
+			case AxisRecord.sid:           return new AxisRecord(in);
+			case AxisUsedRecord.sid:       return new AxisUsedRecord(in);
+			case BOFRecord.sid:            return new BOFRecord(in);
+			case BackupRecord.sid:         return new BackupRecord(in);
+			case BarRecord.sid:            return new BarRecord(in);
+			case BeginRecord.sid:          return new BeginRecord(in);
+			case BlankRecord.sid:          return new BlankRecord(in);
+			case BookBoolRecord.sid:       return new BookBoolRecord(in);
+			case BoolErrRecord.sid:        return new BoolErrRecord(in);
+			case BottomMarginRecord.sid:   return new BottomMarginRecord(in);
+			case BoundSheetRecord.sid:     return new BoundSheetRecord(in);
+			case CFHeaderRecord.sid:       return new CFHeaderRecord(in);
+			case CFRuleRecord.sid:         return new CFRuleRecord(in);
+			case CalcCountRecord.sid:      return new CalcCountRecord(in);
+			case CalcModeRecord.sid:       return new CalcModeRecord(in);
+			case CategorySeriesAxisRecord.sid: return new CategorySeriesAxisRecord(in);
+			case ChartFormatRecord.sid:    return new ChartFormatRecord(in);
+			case ChartRecord.sid:          return new ChartRecord(in);
+			case CodepageRecord.sid:       return new CodepageRecord(in);
+			case ColumnInfoRecord.sid:     return new ColumnInfoRecord(in);
+			case ContinueRecord.sid:       return new ContinueRecord(in);
+			case CountryRecord.sid:        return new CountryRecord(in);
+			case DBCellRecord.sid:         return new DBCellRecord(in);
+			case DSFRecord.sid:            return new DSFRecord(in);
+			case DatRecord.sid:            return new DatRecord(in);
+			case DataFormatRecord.sid:     return new DataFormatRecord(in);
+			case DateWindow1904Record.sid: return new DateWindow1904Record(in);
+			case DefaultColWidthRecord.sid:return new DefaultColWidthRecord(in);
+			case DefaultDataLabelTextPropertiesRecord.sid: return new DefaultDataLabelTextPropertiesRecord(in);
+			case DefaultRowHeightRecord.sid: return new DefaultRowHeightRecord(in);
+			case DeltaRecord.sid:          return new DeltaRecord(in);
+			case DimensionsRecord.sid:     return new DimensionsRecord(in);
+			case DrawingGroupRecord.sid:   return new DrawingGroupRecord(in);
+			case DrawingRecordForBiffViewer.sid: return new DrawingRecordForBiffViewer(in);
+			case DrawingSelectionRecord.sid: return new DrawingSelectionRecord(in);
+			case DVRecord.sid:             return new DVRecord(in);
+			case DVALRecord.sid:           return new DVALRecord(in);
+			case EOFRecord.sid:            return new EOFRecord(in);
+			case EndRecord.sid:            return new EndRecord(in);
+			case ExtSSTRecord.sid:         return new ExtSSTRecord(in);
+			case ExtendedFormatRecord.sid: return new ExtendedFormatRecord(in);
+			case ExternSheetRecord.sid:    return new ExternSheetRecord(in);
+			case FilePassRecord.sid:       return new FilePassRecord(in);
+			case FileSharingRecord.sid:    return new FileSharingRecord(in);
+			case FnGroupCountRecord.sid:   return new FnGroupCountRecord(in);
+			case FontBasisRecord.sid:      return new FontBasisRecord(in);
+			case FontIndexRecord.sid:      return new FontIndexRecord(in);
+			case FontRecord.sid:           return new FontRecord(in);
+			case FooterRecord.sid:         return new FooterRecord(in);
+			case FormatRecord.sid:         return new FormatRecord(in);
+			case FormulaRecord.sid:        return new FormulaRecord(in);
+			case FrameRecord.sid:          return new FrameRecord(in);
+			case GridsetRecord.sid:        return new GridsetRecord(in);
+			case GutsRecord.sid:           return new GutsRecord(in);
+			case HCenterRecord.sid:        return new HCenterRecord(in);
+			case HeaderRecord.sid:         return new HeaderRecord(in);
+			case HideObjRecord.sid:        return new HideObjRecord(in);
+			case HorizontalPageBreakRecord.sid: return new HorizontalPageBreakRecord(in);
+			case HyperlinkRecord.sid:      return new HyperlinkRecord(in);
+			case IndexRecord.sid:          return new IndexRecord(in);
+			case InterfaceEndRecord.sid:   return new InterfaceEndRecord(in);
+			case InterfaceHdrRecord.sid:   return new InterfaceHdrRecord(in);
+			case IterationRecord.sid:      return new IterationRecord(in);
+			case LabelRecord.sid:          return new LabelRecord(in);
+			case LabelSSTRecord.sid:       return new LabelSSTRecord(in);
+			case LeftMarginRecord.sid:     return new LeftMarginRecord(in);
+			case LegendRecord.sid:         return new LegendRecord(in);
+			case LineFormatRecord.sid:     return new LineFormatRecord(in);
+			case LinkedDataRecord.sid:     return new LinkedDataRecord(in);
+			case MMSRecord.sid:            return new MMSRecord(in);
+			case MergeCellsRecord.sid:     return new MergeCellsRecord(in);
+			case MulBlankRecord.sid:       return new MulBlankRecord(in);
+			case MulRKRecord.sid:          return new MulRKRecord(in);
+			case NameRecord.sid:           return new NameRecord(in);
+			case NoteRecord.sid:           return new NoteRecord(in);
+			case NumberRecord.sid:         return new NumberRecord(in);
+			case ObjRecord.sid:            return new ObjRecord(in);
+			case ObjectLinkRecord.sid:     return new ObjectLinkRecord(in);
+			case PaletteRecord.sid:        return new PaletteRecord(in);
+			case PaneRecord.sid:           return new PaneRecord(in);
+			case PasswordRecord.sid:       return new PasswordRecord(in);
+			case PasswordRev4Record.sid:   return new PasswordRev4Record(in);
+			case PlotAreaRecord.sid:       return new PlotAreaRecord(in);
+			case PlotGrowthRecord.sid:     return new PlotGrowthRecord(in);
+			case PrecisionRecord.sid:      return new PrecisionRecord(in);
+			case PrintGridlinesRecord.sid: return new PrintGridlinesRecord(in);
+			case PrintHeadersRecord.sid:   return new PrintHeadersRecord(in);
+			case PrintSetupRecord.sid:     return new PrintSetupRecord(in);
+			case ProtectRecord.sid:        return new ProtectRecord(in);
+			case ProtectionRev4Record.sid: return new ProtectionRev4Record(in);
+			case RKRecord.sid:             return new RKRecord(in);
+			case RefModeRecord.sid:        return new RefModeRecord(in);
+			case RefreshAllRecord.sid:     return new RefreshAllRecord(in);
+			case RightMarginRecord.sid:    return new RightMarginRecord(in);
+			case RowRecord.sid:            return new RowRecord(in);
+			case SCLRecord.sid:            return new SCLRecord(in);
+			case SSTRecord.sid:            return new SSTRecord(in);
+			case SaveRecalcRecord.sid:     return new SaveRecalcRecord(in);
+			case SelectionRecord.sid:      return new SelectionRecord(in);
+			case SeriesIndexRecord.sid:    return new SeriesIndexRecord(in);
+			case SeriesListRecord.sid:     return new SeriesListRecord(in);
+			case SeriesRecord.sid:         return new SeriesRecord(in);
+			case SeriesTextRecord.sid:     return new SeriesTextRecord(in);
+			case SeriesToChartGroupRecord.sid: return new SeriesToChartGroupRecord(in);
+			case SharedFormulaRecord.sid:  return new SharedFormulaRecord(in);
+			case SheetPropertiesRecord.sid:return new SheetPropertiesRecord(in);
+			case StringRecord.sid:         return new StringRecord(in);
+			case StyleRecord.sid:          return new StyleRecord(in);
+			case SupBookRecord.sid:        return new SupBookRecord(in);
+			case TabIdRecord.sid:          return new TabIdRecord(in);
+			case TableRecord.sid:          return new TableRecord(in);
+			case TextObjectRecord.sid:     return new TextObjectRecord(in);
+			case TextRecord.sid:           return new TextRecord(in);
+			case TickRecord.sid:           return new TickRecord(in);
+			case TopMarginRecord.sid:      return new TopMarginRecord(in);
+			case UnitsRecord.sid:          return new UnitsRecord(in);
+			case UseSelFSRecord.sid:       return new UseSelFSRecord(in);
+			case VCenterRecord.sid:        return new VCenterRecord(in);
+			case ValueRangeRecord.sid:     return new ValueRangeRecord(in);
+			case VerticalPageBreakRecord.sid: return new VerticalPageBreakRecord(in);
+			case WSBoolRecord.sid:         return new WSBoolRecord(in);
+			case WindowOneRecord.sid:      return new WindowOneRecord(in);
+			case WindowProtectRecord.sid:  return new WindowProtectRecord(in);
+			case WindowTwoRecord.sid:      return new WindowTwoRecord(in);
+			case WriteAccessRecord.sid:    return new WriteAccessRecord(in);
+			case WriteProtectRecord.sid:   return new WriteProtectRecord(in);        
+		
+		}
+		return new UnknownRecord(in);
+	}
+
+	/**
+	 * Method main with 1 argument just run straight biffview against given
+	 * file<P>
+	 *
+	 * with 2 arguments where the second argument is "on" - run biffviewer<P>
+	 *
+	 * with hex dumps of records <P>
+	 *
+	 * with 2 arguments where the second argument is "bfd" just run a big fat
+	 * hex dump of the file...don't worry about biffviewing it at all
+	 * <p>
+	 * Define the system property <code>poi.deserialize.escher</code> to turn on
+	 * deserialization of escher records.
+	 *
+	 */
+	public static void main(String[] args) {
+
+		System.setProperty("poi.deserialize.escher", "true");
+
+		if (args.length == 0) {
+			System.out.println( "Biff viewer needs a filename" );
+			return;
+		}
+
+		try {
+			String inFileName = args[0];
+			File inputFile = new File(inFileName);
+			if(!inputFile.exists()) {
+				throw new RuntimeException("specified inputFile '" + inFileName + "' does not exist");
+			}
+			PrintStream ps;
+			if (false) { // set to true to output to file
+				OutputStream os = new FileOutputStream(inFileName + ".out");
+				ps = new PrintStream(os);
+			} else {
+				ps = System.out;
+			}
+ 
+			if (args.length > 1 && args[1].equals("bfd")) {
+				POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(inputFile));
+				InputStream stream = fs.createDocumentInputStream("Workbook");
+				int size = stream.available();
+				byte[] data = new byte[size];
+
+				stream.read(data);
+				HexDump.dump(data, 0, System.out, 0);
+			} else {
+				boolean dumpInterpretedRecords = true;
+				boolean dumpHex = args.length > 1 && args[1].equals("on");
+
+				POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(inputFile));
+				InputStream is = fs.createDocumentInputStream("Workbook");
+				BiffRecordListener recListener = new BiffRecordListener(dumpHex ? new OutputStreamWriter(ps) : null);
+				is = new BiffDumpingStream(is, recListener);
+				createRecords(is, ps, recListener, dumpInterpretedRecords);
+			}
+			ps.close();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	private static final class BiffRecordListener implements IBiffRecordListener {
+		private final Writer _hexDumpWriter;
+		private final List _headers;
+		public BiffRecordListener(Writer hexDumpWriter) {
+			_hexDumpWriter = hexDumpWriter;
+			_headers = new ArrayList();
+		}
+
+		public void processRecord(int globalOffset, int recordCounter, int sid, int dataSize,
+				byte[] data) {
+			String header = formatRecordDetails(globalOffset, sid, dataSize, recordCounter);
+			_headers.add(header);
+			Writer w = _hexDumpWriter;
+			if (w != null) {
+				try {
+					w.write(header);
+					w.write(NEW_LINE_CHARS);
+					hexDumpAligned(w, data, 0, dataSize+4, globalOffset);
+					w.flush();
+				} catch (IOException e) {
+					throw new RuntimeException(e);
+				}
+			}
+		}
+		public String[] getRecentHeaders() {
+			String[] result = new String[_headers.size()];
+			_headers.toArray(result);
+			_headers.clear();
+			return result;
+		}
+		private static String formatRecordDetails(int globalOffset, int sid, int size, int recordCounter) {
+			StringBuffer sb = new StringBuffer(64);
+			sb.append("Offset=").append(HexDump.intToHex(globalOffset)).append("(").append(globalOffset).append(")");
+			sb.append(" recno=").append(recordCounter);
+			sb.append(  " sid=").append(HexDump.shortToHex(sid));
+			sb.append( " size=").append(HexDump.shortToHex(size)).append("(").append(size).append(")");
+			return sb.toString();
+		}
+	}
+	
+	private static interface IBiffRecordListener {
+
+		void processRecord(int globalOffset, int recordCounter, int sid, int dataSize, byte[] data);
+		
+	}
+
+	/**
+	 * Wraps a plain {@link InputStream} and allows BIFF record information to be tapped off
+	 *
+	 */
+	private static final class BiffDumpingStream extends InputStream {
+		private final DataInputStream _is;
+		private final IBiffRecordListener _listener;
+		private final byte[] _data;
+		private int _recordCounter;
+		private int _overallStreamPos;
+		private int _currentPos;
+		private int _currentSize;
+		private boolean _innerHasReachedEOF;
+		
+		public BiffDumpingStream(InputStream is, IBiffRecordListener listener) {
+			_is = new DataInputStream(is);
+			_listener = listener;
+			_data = new byte[RecordInputStream.MAX_RECORD_DATA_SIZE + 4];
+			_recordCounter = 0;
+			_overallStreamPos = 0;
+			_currentSize = 0;
+			_currentPos = 0;
+		}
+
+		public int read() throws IOException {
+			if (_currentPos >= _currentSize) {
+				fillNextBuffer();
+			}
+			if (_currentPos >= _currentSize) {
+				return -1;
+			}
+			int result = _data[_currentPos] & 0x00FF;
+			_currentPos ++;
+			_overallStreamPos ++;
+			formatBufferIfAtEndOfRec();
+			return result;
+		}
+		public int read(byte[] b, int off, int len) throws IOException {
+			if (_currentPos >= _currentSize) {
+				fillNextBuffer();
+			}
+			if (_currentPos >= _currentSize) {
+				return -1;
+			}
+			int availSize = _currentSize - _currentPos;
+			int result;
+			if (len > availSize) {
+				System.err.println("Unexpected request to read past end of current biff record");
+				result = availSize;
+			} else {
+				result = len;
+			}
+			System.arraycopy(_data, _currentPos, b, off, result);
+			_currentPos += result;
+			_overallStreamPos += result;
+			formatBufferIfAtEndOfRec();
+			return result;
+		}
+
+		public int available() throws IOException {
+			return _currentSize - _currentPos + _is.available();
+		}
+		private void fillNextBuffer() throws IOException {
+			if (_innerHasReachedEOF) {
+				return;
+			}
+			int b0 = _is.read();
+			if (b0 == -1) {
+				_innerHasReachedEOF = true;
+				return;
+			}
+			_data[0] = (byte) b0;
+			_is.readFully(_data, 1, 3);
+			int len = LittleEndian.getShort(_data, 2);
+			_is.readFully(_data, 4, len);
+			_currentPos = 0;
+			_currentSize = len + 4;
+			_recordCounter++;
+		}
+		private void formatBufferIfAtEndOfRec() {
+			if (_currentPos != _currentSize) {
+				return;
+			}
+			int dataSize = _currentSize-4;
+			int sid = LittleEndian.getShort(_data, 0);
+			int globalOffset = _overallStreamPos-_currentSize;
+			_listener.processRecord(globalOffset, _recordCounter, sid, dataSize, _data);
+		}
+		public void close() throws IOException {
+			_is.close();
+		}
+	}
+	
+	private static final int DUMP_LINE_LEN = 16;
+	private static final char[] COLUMN_SEPARATOR = " | ".toCharArray();
+	/**
+	 * Hex-dumps a portion of a byte array in typical format, also preserving dump-line alignment  
+	 * @param globalOffset (somewhat arbitrary) used to calculate the addresses printed at the 
+	 * start of each line 
+	 */
+	static void hexDumpAligned(Writer w, byte[] data, int baseDataOffset, int dumpLen, int globalOffset) {
+		// perhaps this code should be moved to HexDump
+		int globalStart = globalOffset + baseDataOffset;
+		int globalEnd = globalOffset + baseDataOffset + dumpLen;
+		int startDelta = globalStart % DUMP_LINE_LEN;
+		int endDelta = globalEnd % DUMP_LINE_LEN;
+		int startLineAddr = globalStart - startDelta;
+		int endLineAddr = globalEnd - endDelta;
+		
+		int lineDataOffset = baseDataOffset - startDelta;
+		int lineAddr = startLineAddr;
+		
+		// output (possibly incomplete) first line
+		if (startLineAddr == endLineAddr) {
+			hexDumpLine(w, data, lineAddr, lineDataOffset, startDelta, endDelta);
+			return;
+		}
+		hexDumpLine(w, data, lineAddr, lineDataOffset, startDelta, DUMP_LINE_LEN);
+		
+		// output all full lines in the middle
+		while (true) {
+			lineAddr += DUMP_LINE_LEN;
+			lineDataOffset += DUMP_LINE_LEN;
+			if (lineAddr >= endLineAddr) {
+				break;
+			}
+			hexDumpLine(w, data, lineAddr, lineDataOffset, 0, DUMP_LINE_LEN);
+		}
+		
+		
+		// output (possibly incomplete) last line
+		if (endDelta != 0) {
+			hexDumpLine(w, data, lineAddr, lineDataOffset, 0, endDelta);
+		}
+	}
+
+	private static void hexDumpLine(Writer w, byte[] data, int lineStartAddress, int lineDataOffset, int startDelta, int endDelta) {
+		if (startDelta >= endDelta) {
+			throw new IllegalArgumentException("Bad start/end delta");
+		}
+		try {
+			writeHex(w, lineStartAddress, 8);
+			w.write(COLUMN_SEPARATOR);
+			// raw hex data
+			for (int i=0; i< DUMP_LINE_LEN; i++) {
+				if (i>0) {
+					w.write(" ");
+				}
+				if (i >= startDelta && i < endDelta) {
+					writeHex(w, data[lineDataOffset+i], 2);
+				} else {
+					w.write("  ");
+				}
+			}
+			w.write(COLUMN_SEPARATOR);
+
+			// interpreted ascii
+			for (int i=0; i< DUMP_LINE_LEN; i++) {
+				if (i >= startDelta && i < endDelta) {
+					w.write(getPrintableChar(data[lineDataOffset+i]));
+				} else {
+					w.write(" ");
+				}
+			}
+			w.write(NEW_LINE_CHARS);
+		} catch (IOException e) {
+			throw new RuntimeException(e);
+		}
+	}
+
+	private static char getPrintableChar(byte b) {
+		char ib = (char) (b & 0x00FF);
+		if (ib < 32 || ib > 126) {
+			return '.';
+		}
+		return ib;
+	}
+
+	private static void writeHex(Writer w, int value, int nDigits) throws IOException {
+		char[] buf = new char[nDigits];
+		int acc = value;
+		for(int i=nDigits-1; i>=0; i--) {
+			int digit = acc & 0x0F;
+			buf[i] = (char) (digit < 10 ? ('0' + digit) : ('A' + digit - 10));
+			acc >>= 4;
+		}
+		w.write(buf);
+	}
 }
 

Modified: poi/trunk/src/java/org/apache/poi/hssf/record/RecordInputStream.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/RecordInputStream.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/record/RecordInputStream.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/record/RecordInputStream.java Fri Oct 10 15:59:14 2008
@@ -29,19 +29,19 @@
  *
  * @author Jason Height (jheight @ apache dot org)
  */
-public class RecordInputStream extends InputStream {
-  /** Maximum size of a single record (minus the 4 byte header) without a continue*/
-  public final static short MAX_RECORD_DATA_SIZE = 8224;
-  private static final int INVALID_SID_VALUE = -1;
-
-  private InputStream in;
-  protected short currentSid;
-  protected short currentLength = -1;
-  protected short nextSid;
-
-  protected byte[] data = new byte[MAX_RECORD_DATA_SIZE];
-  protected short recordOffset;
-  protected long pos;
+public final class RecordInputStream extends InputStream {
+	/** Maximum size of a single record (minus the 4 byte header) without a continue*/
+	public final static short MAX_RECORD_DATA_SIZE = 8224;
+	private static final int INVALID_SID_VALUE = -1;
+
+	private InputStream in;
+	private short currentSid;
+	private short currentLength = -1;
+	private short nextSid;
+
+	private final byte[] data = new byte[MAX_RECORD_DATA_SIZE];
+	private short recordOffset;
+	private long pos;
 
   private boolean autoContinue = true;
 

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/eventmodel/TestEventRecordFactory.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/eventmodel/TestEventRecordFactory.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/eventmodel/TestEventRecordFactory.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/eventmodel/TestEventRecordFactory.java Fri Oct 10 15:59:14 2008
@@ -87,10 +87,8 @@
         bof.setHistoryBitMask(BOFRecord.HISTORY_MASK);
         
         byte[] bytes = bof.serialize();
-        byte[] nbytes = new byte[bytes.length - 4];
-        System.arraycopy(bytes,4,nbytes,0,nbytes.length);
             
-        Record[] records = RecordFactory.createRecord(new TestcaseRecordInputStream(bof.getSid(),(short)nbytes.length,nbytes));
+        Record[] records = RecordFactory.createRecord(TestcaseRecordInputStream.create(bytes));
         
         assertTrue("record.length must be 1, was ="+records.length,records.length == 1);
         assertTrue("record is the same", compareRec(bof,records[0]));

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAreaFormatRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAreaFormatRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAreaFormatRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAreaFormatRecord.java Fri Oct 10 15:59:14 2008
@@ -41,7 +41,7 @@
 
     public void testLoad() {
 
-        AreaFormatRecord record = new AreaFormatRecord(new TestcaseRecordInputStream((short)0x100a, (short)data.length, data));
+        AreaFormatRecord record = new AreaFormatRecord(TestcaseRecordInputStream.create(0x100a, data));
         assertEquals( 0xFFFFFF, record.getForegroundColor());
         assertEquals( 0x000000, record.getBackgroundColor());
         assertEquals( 1, record.getPattern());

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAreaRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAreaRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAreaRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAreaRecord.java Fri Oct 10 15:59:14 2008
@@ -35,7 +35,7 @@
 
     public void testLoad() {
 
-        AreaRecord record = new AreaRecord(new TestcaseRecordInputStream((short)0x101A, (short)data.length, data));
+        AreaRecord record = new AreaRecord(TestcaseRecordInputStream.create(0x101A, data));
         assertEquals( 2, record.getFormatFlags());
         assertEquals( false, record.isStacked() );
         assertEquals( true, record.isDisplayAsPercentage() );

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAxisLineFormatRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAxisLineFormatRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAxisLineFormatRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAxisLineFormatRecord.java Fri Oct 10 15:59:14 2008
@@ -34,7 +34,7 @@
     };
 
     public void testLoad() {
-        AxisLineFormatRecord record = new AxisLineFormatRecord(new TestcaseRecordInputStream((short)0x1021, (short)data.length, data));
+        AxisLineFormatRecord record = new AxisLineFormatRecord(TestcaseRecordInputStream.create(0x1021, data));
         assertEquals( AxisLineFormatRecord.AXIS_TYPE_MAJOR_GRID_LINE, record.getAxisType());
 
         assertEquals( 6, record.getRecordSize() );

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAxisOptionsRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAxisOptionsRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAxisOptionsRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAxisOptionsRecord.java Fri Oct 10 15:59:14 2008
@@ -37,7 +37,7 @@
     };
 
     public void testLoad() {
-        AxisOptionsRecord record = new AxisOptionsRecord(new TestcaseRecordInputStream((short)0x1062, (short)data.length, data));
+        AxisOptionsRecord record = new AxisOptionsRecord(TestcaseRecordInputStream.create(0x1062, data));
         assertEquals( 0, record.getMinimumCategory());
         assertEquals( 0, record.getMaximumCategory());
         assertEquals( 1, record.getMajorUnitValue());

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAxisParentRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAxisParentRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAxisParentRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAxisParentRecord.java Fri Oct 10 15:59:14 2008
@@ -37,7 +37,7 @@
     };
 
     public void testLoad() {
-        AxisParentRecord record = new AxisParentRecord(new TestcaseRecordInputStream((short)0x1041, (short)data.length, data));
+        AxisParentRecord record = new AxisParentRecord(TestcaseRecordInputStream.create(0x1041, data));
         assertEquals( AxisParentRecord.AXIS_TYPE_MAIN, record.getAxisType());
         assertEquals( 0x021d, record.getX());
         assertEquals( 0xdd, record.getY());

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAxisRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAxisRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAxisRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAxisRecord.java Fri Oct 10 15:59:14 2008
@@ -39,7 +39,7 @@
 
     public void testLoad() {
 
-        AxisRecord record = new AxisRecord(new TestcaseRecordInputStream((short)0x101d, (short)data.length, data));
+        AxisRecord record = new AxisRecord(TestcaseRecordInputStream.create(0x101d, data));
         assertEquals( AxisRecord.AXIS_TYPE_CATEGORY_OR_X_AXIS, record.getAxisType());
         assertEquals( 0, record.getReserved1());
         assertEquals( 0, record.getReserved2());

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAxisUsedRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAxisUsedRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAxisUsedRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAxisUsedRecord.java Fri Oct 10 15:59:14 2008
@@ -34,7 +34,7 @@
     };
 
     public void testLoad() {
-        AxisUsedRecord record = new AxisUsedRecord(new TestcaseRecordInputStream((short)0x1046, (short)data.length, data));
+        AxisUsedRecord record = new AxisUsedRecord(TestcaseRecordInputStream.create(0x1046, data));
         assertEquals( 1, record.getNumAxis());
 
         assertEquals( 6, record.getRecordSize() );

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestBarRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestBarRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestBarRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestBarRecord.java Fri Oct 10 15:59:14 2008
@@ -37,7 +37,7 @@
 
     public void testLoad() {
 
-        BarRecord record = new BarRecord(new TestcaseRecordInputStream((short)0x1017, (short)data.length, data));
+        BarRecord record = new BarRecord(TestcaseRecordInputStream.create(0x1017, data));
         assertEquals( 0, record.getBarSpace());
         assertEquals( 0x96, record.getCategorySpace());
         assertEquals( 0, record.getFormatFlags());

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestBoundSheetRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestBoundSheetRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestBoundSheetRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestBoundSheetRecord.java Fri Oct 10 15:59:14 2008
@@ -69,7 +69,7 @@
 			// </str>
 		};
 	
-		RecordInputStream in = new TestcaseRecordInputStream(BoundSheetRecord.sid, data);
+		RecordInputStream in = TestcaseRecordInputStream.create(BoundSheetRecord.sid, data);
 		BoundSheetRecord bsr = new BoundSheetRecord(in);
 		// sheet name is unicode Russian for 'minor page'
 		assertEquals("\u0421\u0442\u0440\u0430\u043D\u0438\u0447\u043A\u0430", bsr.getSheetname());

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestCFHeaderRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestCFHeaderRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestCFHeaderRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestCFHeaderRecord.java Fri Oct 10 15:59:14 2008
@@ -90,7 +90,7 @@
 			(byte)0x03,	(byte)0x00,
 		};
 
-		CFHeaderRecord record = new CFHeaderRecord(new TestcaseRecordInputStream(CFHeaderRecord.sid, (short)recordData.length, recordData));
+		CFHeaderRecord record = new CFHeaderRecord(TestcaseRecordInputStream.create(CFHeaderRecord.sid, recordData));
 
 		assertEquals("#CFRULES", 3, record.getNumberOfConditionalFormats());
 		assertTrue(record.getNeedRecalculation());
@@ -143,7 +143,7 @@
 
 		CFHeaderRecord record;
 		try {
-			record = new CFHeaderRecord(new TestcaseRecordInputStream(CFHeaderRecord.sid, (short)recordData.length, recordData));
+			record = new CFHeaderRecord(TestcaseRecordInputStream.create(CFHeaderRecord.sid, recordData));
 		} catch (IllegalArgumentException e) {
 			if(e.getMessage().equals("invalid cell range (-25536, 2, -15536, 2)")) {
 				throw new AssertionFailedError("Identified bug 44739b");

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestCFRuleRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestCFRuleRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestCFRuleRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestCFRuleRecord.java Fri Oct 10 15:59:14 2008
@@ -54,7 +54,7 @@
 		System.arraycopy(serializedRecord, 4, recordData, 0, recordData.length);
 
 		// Deserialize
-		record = new CFRuleRecord(new TestcaseRecordInputStream(CFRuleRecord.sid, (short)recordData.length, recordData));
+		record = new CFRuleRecord(TestcaseRecordInputStream.create(CFRuleRecord.sid, recordData));
 
 		// Serialize again
 		byte[] output = record.serialize();
@@ -317,7 +317,7 @@
 	 */
 	public void testReserializeRefNTokens() {
 		
-		RecordInputStream is = new TestcaseRecordInputStream(CFRuleRecord.sid, DATA_REFN);
+		RecordInputStream is = TestcaseRecordInputStream.create(CFRuleRecord.sid, DATA_REFN);
 		CFRuleRecord rr = new CFRuleRecord(is);
 		Ptg[] ptgs = rr.getParsedExpression1();
 		assertEquals(3, ptgs.length);

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestCategorySeriesAxisRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestCategorySeriesAxisRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestCategorySeriesAxisRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestCategorySeriesAxisRecord.java Fri Oct 10 15:59:14 2008
@@ -38,7 +38,7 @@
 
     public void testLoad() {
 
-        CategorySeriesAxisRecord record = new CategorySeriesAxisRecord(new TestcaseRecordInputStream((short)0x1020, (short)data.length, data));
+        CategorySeriesAxisRecord record = new CategorySeriesAxisRecord(TestcaseRecordInputStream.create(0x1020, data));
         assertEquals( 1, record.getCrossingPoint());
         assertEquals( 1, record.getLabelFrequency());
         assertEquals( 1, record.getTickMarkFrequency());

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestChartRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestChartRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestChartRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestChartRecord.java Fri Oct 10 15:59:14 2008
@@ -38,7 +38,7 @@
 
     public void testLoad() {
 
-        ChartRecord record = new ChartRecord(new TestcaseRecordInputStream((short)0x1002, (short)data.length, data));
+        ChartRecord record = new ChartRecord(TestcaseRecordInputStream.create(0x1002, data));
         assertEquals( 0, record.getX());
         assertEquals( 0, record.getY());
         assertEquals( 30474216, record.getWidth());

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestCommonObjectDataSubRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestCommonObjectDataSubRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestCommonObjectDataSubRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestCommonObjectDataSubRecord.java Fri Oct 10 15:59:14 2008
@@ -38,7 +38,7 @@
     };
 
     public void testLoad() {
-        CommonObjectDataSubRecord record = new CommonObjectDataSubRecord(new TestcaseRecordInputStream((short)0x15, (short)data.length, data));
+        CommonObjectDataSubRecord record = new CommonObjectDataSubRecord(TestcaseRecordInputStream.create(0x15, data));
 
         assertEquals( CommonObjectDataSubRecord.OBJECT_TYPE_LIST_BOX, record.getObjectType());
         assertEquals( (short)1, record.getObjectId());

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestDatRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestDatRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestDatRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestDatRecord.java Fri Oct 10 15:59:14 2008
@@ -35,7 +35,7 @@
 
     public void testLoad() {
 
-        DatRecord record = new DatRecord(new TestcaseRecordInputStream((short)0x1063, (short)data.length, data));
+        DatRecord record = new DatRecord(TestcaseRecordInputStream.create(0x1063, data));
         assertEquals( 0xD, record.getOptions());
         assertEquals( true, record.isHorizontalBorder() );
         assertEquals( false, record.isVerticalBorder() );

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestDataFormatRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestDataFormatRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestDataFormatRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestDataFormatRecord.java Fri Oct 10 15:59:14 2008
@@ -38,7 +38,7 @@
 
     public void testLoad() {
 
-        DataFormatRecord record = new DataFormatRecord(new TestcaseRecordInputStream((short)0x1006, (short)data.length, data));
+        DataFormatRecord record = new DataFormatRecord(TestcaseRecordInputStream.create(0x1006, data));
         assertEquals( (short)0xFFFF, record.getPointNumber());
         assertEquals( 0, record.getSeriesIndex());
         assertEquals( 0, record.getSeriesNumber());

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestDefaultDataLabelTextPropertiesRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestDefaultDataLabelTextPropertiesRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestDefaultDataLabelTextPropertiesRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestDefaultDataLabelTextPropertiesRecord.java Fri Oct 10 15:59:14 2008
@@ -35,7 +35,7 @@
 
     public void testLoad() {
 
-        DefaultDataLabelTextPropertiesRecord record = new DefaultDataLabelTextPropertiesRecord(new TestcaseRecordInputStream((short)0x1024, (short)data.length, data));
+        DefaultDataLabelTextPropertiesRecord record = new DefaultDataLabelTextPropertiesRecord(TestcaseRecordInputStream.create(0x1024, data));
         assertEquals( 2, record.getCategoryDataType());
 
         assertEquals( 6, record.getRecordSize() );

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestEmbeddedObjectRefSubRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestEmbeddedObjectRefSubRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestEmbeddedObjectRefSubRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestEmbeddedObjectRefSubRecord.java Fri Oct 10 15:59:14 2008
@@ -127,7 +127,7 @@
 	}
 
 	private static void confirmRead(byte[] data, int i) {
-		RecordInputStream in = new TestcaseRecordInputStream(EmbeddedObjectRefSubRecord.sid, (short)data.length, data);
+		RecordInputStream in = TestcaseRecordInputStream.create(EmbeddedObjectRefSubRecord.sid, data);
 
 		EmbeddedObjectRefSubRecord rec = new EmbeddedObjectRefSubRecord(in);
 		byte[] ser2 = rec.serialize();

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestEndSubRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestEndSubRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestEndSubRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestEndSubRecord.java Fri Oct 10 15:59:14 2008
@@ -33,7 +33,7 @@
     };
 
     public void testLoad() {
-        EndSubRecord record = new EndSubRecord(new TestcaseRecordInputStream((short)0x00, (short)data.length, data));
+        EndSubRecord record = new EndSubRecord(TestcaseRecordInputStream.create(0x00, data));
 
         assertEquals( 4, record.getRecordSize() );
     }

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestExtendedFormatRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestExtendedFormatRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestExtendedFormatRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestExtendedFormatRecord.java Fri Oct 10 15:59:14 2008
@@ -37,7 +37,7 @@
     };
 
     public void testLoad() {
-        ExtendedFormatRecord record = new ExtendedFormatRecord(new TestcaseRecordInputStream((short)0xe0, (short)data.length, data));
+        ExtendedFormatRecord record = new ExtendedFormatRecord(TestcaseRecordInputStream.create(0xe0, data));
         assertEquals(0, record.getFontIndex());
         assertEquals(0, record.getFormatIndex());
         assertEquals(0xF5-256, record.getCellOptions());
@@ -117,7 +117,7 @@
     }
     
     public void testCloneOnto() throws Exception {
-        ExtendedFormatRecord base = new ExtendedFormatRecord(new TestcaseRecordInputStream((short)0xe0, (short)data.length, data));
+        ExtendedFormatRecord base = new ExtendedFormatRecord(TestcaseRecordInputStream.create(0xe0, data));
     	
     	ExtendedFormatRecord other = new ExtendedFormatRecord();
         other.cloneStyleFrom(base);

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestExternalNameRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestExternalNameRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestExternalNameRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestExternalNameRecord.java Fri Oct 10 15:59:14 2008
@@ -43,7 +43,7 @@
 	};
 	
 	private static ExternalNameRecord createSimpleENR(byte[] data) {
-		return new ExternalNameRecord(new TestcaseRecordInputStream((short)0x0023, data));
+		return new ExternalNameRecord(TestcaseRecordInputStream.create(0x0023, data));
 	}
 	public void testBasicDeserializeReserialize() {
 		

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFontBasisRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFontBasisRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFontBasisRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFontBasisRecord.java Fri Oct 10 15:59:14 2008
@@ -39,7 +39,7 @@
 
     public void testLoad() {
 
-        FontBasisRecord record = new FontBasisRecord(new TestcaseRecordInputStream((short)0x1060, (short)data.length, data));
+        FontBasisRecord record = new FontBasisRecord(TestcaseRecordInputStream.create(0x1060, data));
         assertEquals( 0x1a28, record.getXBasis());
         assertEquals( 0x0f9c, record.getYBasis());
         assertEquals( 0xc8, record.getHeightBasis());

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFontIndexRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFontIndexRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFontIndexRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFontIndexRecord.java Fri Oct 10 15:59:14 2008
@@ -35,7 +35,7 @@
 
     public void testLoad() {
 
-        FontIndexRecord record = new FontIndexRecord(new TestcaseRecordInputStream((short)0x1026, (short)data.length, data));
+        FontIndexRecord record = new FontIndexRecord(TestcaseRecordInputStream.create(0x1026, data));
         assertEquals( 5, record.getFontIndex());
 
         assertEquals( 6, record.getRecordSize() );

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFontRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFontRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFontRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFontRecord.java Fri Oct 10 15:59:14 2008
@@ -44,7 +44,7 @@
 
     public void testLoad() {
 
-        FontRecord record = new FontRecord(new TestcaseRecordInputStream((short)0x31, (short)data.length, data));
+        FontRecord record = new FontRecord(TestcaseRecordInputStream.create(0x31, data));
         assertEquals( 0xc8, record.getFontHeight());
         assertEquals( 0x00, record.getAttributes());
         assertFalse( record.isItalic());
@@ -100,7 +100,7 @@
     }
     
     public void testCloneOnto() throws Exception {
-        FontRecord base = new FontRecord(new TestcaseRecordInputStream((short)0x31, (short)data.length, data));
+        FontRecord base = new FontRecord(TestcaseRecordInputStream.create(0x31, data));
     	
         FontRecord other = new FontRecord();
         other.cloneStyleFrom(base);
@@ -112,8 +112,8 @@
     }
     
     public void testSameProperties() throws Exception {
-        FontRecord f1 = new FontRecord(new TestcaseRecordInputStream((short)0x31, (short)data.length, data));
-        FontRecord f2 = new FontRecord(new TestcaseRecordInputStream((short)0x31, (short)data.length, data));
+        FontRecord f1 = new FontRecord(TestcaseRecordInputStream.create(0x31, data));
+        FontRecord f2 = new FontRecord(TestcaseRecordInputStream.create(0x31, data));
     	
         assertTrue(f1.sameProperties(f2));
         

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFormulaRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFormulaRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFormulaRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFormulaRecord.java Fri Oct 10 15:59:14 2008
@@ -82,7 +82,7 @@
 
 		};
 
-		FormulaRecord record = new FormulaRecord(new TestcaseRecordInputStream(FormulaRecord.sid, (short)29, formulaByte));
+		FormulaRecord record = new FormulaRecord(TestcaseRecordInputStream.create(FormulaRecord.sid, formulaByte));
 		assertEquals("Row", 0, record.getRow());
 		assertEquals("Column", 0, record.getColumn());
 		assertEquals(HSSFCell.CELL_TYPE_ERROR, record.getCachedResultType());
@@ -108,7 +108,7 @@
 		formulaByte[19]=(byte)0xFD;
 		formulaByte[20]=(byte)0x05;
 		formulaByte[22]=(byte)0x01;
-		FormulaRecord record = new FormulaRecord(new TestcaseRecordInputStream(FormulaRecord.sid, (short)27, formulaByte));
+		FormulaRecord record = new FormulaRecord(TestcaseRecordInputStream.create(FormulaRecord.sid, formulaByte));
 		assertEquals("Row", 0, record.getRow());
 		assertEquals("Column", 0, record.getColumn());
 		byte[] output = record.serialize();

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFrameRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFrameRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFrameRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFrameRecord.java Fri Oct 10 15:59:14 2008
@@ -36,7 +36,7 @@
 
     public void testLoad() {
 
-        FrameRecord record = new FrameRecord(new TestcaseRecordInputStream((short)0x1032, (short)data.length, data));
+        FrameRecord record = new FrameRecord(TestcaseRecordInputStream.create(0x1032, data));
         assertEquals( FrameRecord.BORDER_TYPE_REGULAR, record.getBorderType());
         assertEquals( 2, record.getOptions());
         assertEquals( false, record.isAutoSize() );

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestHyperlinkRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestHyperlinkRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestHyperlinkRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestHyperlinkRecord.java Fri Oct 10 15:59:14 2008
@@ -17,7 +17,6 @@
 package org.apache.poi.hssf.record;
 
 import java.io.ByteArrayInputStream;
-import java.net.URL;
 import java.util.Arrays;
 
 import junit.framework.TestCase;
@@ -28,7 +27,7 @@
  * @author Nick Burch
  * @author Yegor Kozlov
  */
-public class TestHyperlinkRecord extends TestCase {
+public final class TestHyperlinkRecord extends TestCase {
 
     //link to http://www.lakings.com/
     byte[] data1 = { 0x02, 0x00,    //First row of the hyperlink
@@ -165,7 +164,7 @@
                     0x00, 0x41, 0x00, 0x31, 0x00, 0x00, 0x00};
 
     public void testReadURLLink(){
-        RecordInputStream is = new TestcaseRecordInputStream((short)HyperlinkRecord.sid, (short)data1.length, data1);
+        RecordInputStream is = TestcaseRecordInputStream.create(HyperlinkRecord.sid, data1);
         HyperlinkRecord link = new HyperlinkRecord(is);
         assertEquals(2, link.getFirstRow());
         assertEquals(2, link.getLastRow());
@@ -184,7 +183,7 @@
     }
 
     public void testReadFileLink(){
-        RecordInputStream is = new TestcaseRecordInputStream((short)HyperlinkRecord.sid, (short)data2.length, data2);
+        RecordInputStream is = TestcaseRecordInputStream.create(HyperlinkRecord.sid, data2);
         HyperlinkRecord link = new HyperlinkRecord(is);
         assertEquals(0, link.getFirstRow());
         assertEquals(0, link.getLastRow());
@@ -202,7 +201,7 @@
     }
 
     public void testReadEmailLink(){
-        RecordInputStream is = new TestcaseRecordInputStream((short)HyperlinkRecord.sid, (short)data3.length, data3);
+        RecordInputStream is = TestcaseRecordInputStream.create(HyperlinkRecord.sid, data3);
         HyperlinkRecord link = new HyperlinkRecord(is);
         assertEquals(1, link.getFirstRow());
         assertEquals(1, link.getLastRow());
@@ -220,7 +219,7 @@
     }
 
     public void testReadDocumentLink(){
-        RecordInputStream is = new TestcaseRecordInputStream((short)HyperlinkRecord.sid, (short)data4.length, data4);
+        RecordInputStream is = TestcaseRecordInputStream.create(HyperlinkRecord.sid, data4);
         HyperlinkRecord link = new HyperlinkRecord(is);
         assertEquals(3, link.getFirstRow());
         assertEquals(3, link.getLastRow());
@@ -237,7 +236,7 @@
     }
 
     private void serialize(byte[] data){
-        RecordInputStream is = new TestcaseRecordInputStream((short)HyperlinkRecord.sid, (short)data.length, data);
+        RecordInputStream is = TestcaseRecordInputStream.create(HyperlinkRecord.sid, data);
         HyperlinkRecord link = new HyperlinkRecord(is);
         byte[] bytes1 = link.serialize();
         is = new RecordInputStream(new ByteArrayInputStream(bytes1));
@@ -318,7 +317,7 @@
     public void testClone() throws Exception {
         byte[][] data = {data1, data2, data3, data4};
         for (int i = 0; i < data.length; i++) {
-            RecordInputStream is = new TestcaseRecordInputStream((short)HyperlinkRecord.sid, (short)data[i].length, data[i]);
+            RecordInputStream is = TestcaseRecordInputStream.create(HyperlinkRecord.sid, data[i]);
             HyperlinkRecord link = new HyperlinkRecord(is);
             HyperlinkRecord clone = (HyperlinkRecord)link.clone();
             assertTrue(Arrays.equals(link.serialize(), clone.serialize()));

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestLegendRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestLegendRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestLegendRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestLegendRecord.java Fri Oct 10 15:59:14 2008
@@ -17,80 +17,73 @@
 
 package org.apache.poi.hssf.record;
 
-
 import junit.framework.TestCase;
 
 /**
- * Tests the serialization and deserialization of the LegendRecord
- * class works correctly.  Test data taken directly from a real
- * Excel file.
- *
-
+ * Tests the serialization and deserialization of the LegendRecord class works
+ * correctly. Test data taken directly from a real Excel file.
+ * 
+ * 
  * @author Andrew C. Oliver (acoliver at apache.org)
  */
-public class TestLegendRecord extends TestCase {
-    byte[] data = new byte[] {
-	(byte)0x76,(byte)0x0E,(byte)0x00,(byte)0x00,(byte)0x86,(byte)0x07,(byte)0x00,(byte)0x00,(byte)0x19,(byte)0x01,(byte)0x00,(byte)0x00,(byte)0x8B,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x03,(byte)0x01,(byte)0x1F,(byte)0x00
-    };
-
-    public void testLoad() {
-        LegendRecord record = new LegendRecord(new TestcaseRecordInputStream((short)0x1015, (short)data.length, data));
-        
-
-        assertEquals( (int)0xe76, record.getXAxisUpperLeft());
-
-        assertEquals( (int)0x786, record.getYAxisUpperLeft());
-
-        assertEquals( (int)0x119, record.getXSize());
+public final class TestLegendRecord extends TestCase {
+	byte[] data = new byte[] { (byte) 0x76, (byte) 0x0E, (byte) 0x00, (byte) 0x00, (byte) 0x86,
+			(byte) 0x07, (byte) 0x00, (byte) 0x00, (byte) 0x19, (byte) 0x01, (byte) 0x00,
+			(byte) 0x00, (byte) 0x8B, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x03,
+			(byte) 0x01, (byte) 0x1F, (byte) 0x00 };
 
-        assertEquals( (int)0x8b, record.getYSize());
+	public void testLoad() {
+		LegendRecord record = new LegendRecord(TestcaseRecordInputStream.create(0x1015, data));
 
-        assertEquals( (byte)0x3, record.getType());
+		assertEquals(0xe76, record.getXAxisUpperLeft());
 
-        assertEquals( (byte)0x1, record.getSpacing());
+		assertEquals(0x786, record.getYAxisUpperLeft());
 
-        assertEquals( (short)0x1f, record.getOptions());
-        assertEquals( true, record.isAutoPosition() );
-        assertEquals( true, record.isAutoSeries() );
-        assertEquals( true, record.isAutoXPositioning() );
-        assertEquals( true, record.isAutoYPositioning() );
-        assertEquals( true, record.isVertical() );
-        assertEquals( false, record.isDataTable() );
+		assertEquals(0x119, record.getXSize());
 
+		assertEquals(0x8b, record.getYSize());
 
-        assertEquals( 24, record.getRecordSize() );
-    }
+		assertEquals((byte) 0x3, record.getType());
 
-    public void testStore()
-    {
-        LegendRecord record = new LegendRecord();
+		assertEquals((byte) 0x1, record.getSpacing());
 
+		assertEquals((short) 0x1f, record.getOptions());
+		assertEquals(true, record.isAutoPosition());
+		assertEquals(true, record.isAutoSeries());
+		assertEquals(true, record.isAutoXPositioning());
+		assertEquals(true, record.isAutoYPositioning());
+		assertEquals(true, record.isVertical());
+		assertEquals(false, record.isDataTable());
 
+		assertEquals(24, record.getRecordSize());
+	}
 
-        record.setXAxisUpperLeft( (int)0xe76 );
+	public void testStore() {
+		LegendRecord record = new LegendRecord();
 
-        record.setYAxisUpperLeft( (int)0x786 );
+		record.setXAxisUpperLeft(0xe76);
 
-        record.setXSize( (int)0x119 );
+		record.setYAxisUpperLeft(0x786);
 
-        record.setYSize( (int)0x8b );
+		record.setXSize(0x119);
 
-        record.setType( (byte)0x3 );
+		record.setYSize(0x8b);
 
-        record.setSpacing( (byte)0x1 );
+		record.setType((byte) 0x3);
 
-        record.setOptions( (short)0x1f );
-        record.setAutoPosition( true );
-        record.setAutoSeries( true );
-        record.setAutoXPositioning( true );
-        record.setAutoYPositioning( true );
-        record.setVertical( true );
-        record.setDataTable( false );
+		record.setSpacing((byte) 0x1);
 
+		record.setOptions((short) 0x1f);
+		record.setAutoPosition(true);
+		record.setAutoSeries(true);
+		record.setAutoXPositioning(true);
+		record.setAutoYPositioning(true);
+		record.setVertical(true);
+		record.setDataTable(false);
 
-        byte [] recordBytes = record.serialize();
-        assertEquals(recordBytes.length - 4, data.length);
-        for (int i = 0; i < data.length; i++)
-            assertEquals("At offset " + i, data[i], recordBytes[i+4]);
-    }
+		byte[] recordBytes = record.serialize();
+		assertEquals(recordBytes.length - 4, data.length);
+		for (int i = 0; i < data.length; i++)
+			assertEquals("At offset " + i, data[i], recordBytes[i + 4]);
+	}
 }

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestLineFormatRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestLineFormatRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestLineFormatRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestLineFormatRecord.java Fri Oct 10 15:59:14 2008
@@ -28,7 +28,7 @@
 
  * @author Glen Stampoultzis (glens at apache.org)
  */
-public class TestLineFormatRecord extends TestCase {
+public final class TestLineFormatRecord extends TestCase {
     byte[] data = new byte[] {
         (byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,    // colour
         (byte)0x00,(byte)0x00,                          // pattern
@@ -38,7 +38,7 @@
     };
 
     public void testLoad() {
-        LineFormatRecord record = new LineFormatRecord(new TestcaseRecordInputStream((short)0x1007, (short)data.length, data));
+        LineFormatRecord record = new LineFormatRecord(TestcaseRecordInputStream.create(0x1007, data));
         assertEquals( 0, record.getLineColor());
         assertEquals( 0, record.getLinePattern());
         assertEquals( 0, record.getWeight());

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestLinkedDataRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestLinkedDataRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestLinkedDataRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestLinkedDataRecord.java Fri Oct 10 15:59:14 2008
@@ -157,7 +157,7 @@
 
     public void testLoad() {
 
-        LinkedDataRecord record = new LinkedDataRecord(new TestcaseRecordInputStream((short)0x1051, (short)data.length, data));
+        LinkedDataRecord record = new LinkedDataRecord(TestcaseRecordInputStream.create(0x1051, data));
         assertEquals( LinkedDataRecord.LINK_TYPE_VALUES, record.getLinkType());
         assertEquals( LinkedDataRecord.REFERENCE_TYPE_WORKSHEET, record.getReferenceType());
         assertEquals( 0, record.getOptions());

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNameRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNameRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNameRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNameRecord.java Fri Oct 10 15:59:14 2008
@@ -1,4 +1,3 @@
-        
 /* ====================================================================
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
@@ -25,9 +24,7 @@
  *
  * @author Danny Mui (dmui at apache dot org)
  */
-public class TestNameRecord
-        extends TestCase
-{
+public final class TestNameRecord extends TestCase {
 
     /**
      * Makes sure that additional name information is parsed properly such as menu/description
@@ -55,13 +52,11 @@
         };
 
 
-        NameRecord name = new NameRecord(new TestcaseRecordInputStream(NameRecord.sid, (short) examples.length, examples));
+        NameRecord name = new NameRecord(TestcaseRecordInputStream.create(NameRecord.sid, examples));
         String description = name.getDescriptionText();
         assertNotNull( description );
         assertTrue( "text contains ALLWOR", description.indexOf( "ALLWOR" ) > 0 );
-
     }
-
 }
 
 

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNoteRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNoteRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNoteRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNoteRecord.java Fri Oct 10 15:59:14 2008
@@ -29,9 +29,7 @@
  *
  * @author Yegor Kozlov
  */
-public class TestNoteRecord
-        extends TestCase
-{
+public final class TestNoteRecord extends TestCase {
     private byte[] data = new byte[] {
         0x06, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x04, 0x1A, 0x00,
         0x00, 0x41, 0x70, 0x61, 0x63, 0x68, 0x65, 0x20, 0x53, 0x6F,
@@ -41,7 +39,7 @@
 
     public void testRead() {
 
-        NoteRecord record = new NoteRecord(new TestcaseRecordInputStream(NoteRecord.sid, (short)data.length, data));
+        NoteRecord record = new NoteRecord(TestcaseRecordInputStream.create(NoteRecord.sid, data));
 
         assertEquals(NoteRecord.sid, record.getSid());
         assertEquals(6, record.getRow());

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNoteStructureSubRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNoteStructureSubRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNoteStructureSubRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNoteStructureSubRecord.java Fri Oct 10 15:59:14 2008
@@ -38,7 +38,7 @@
 
     public void testRead() {
 
-        NoteStructureSubRecord record = new NoteStructureSubRecord(new TestcaseRecordInputStream(NoteStructureSubRecord.sid, (short)data.length, data));
+        NoteStructureSubRecord record = new NoteStructureSubRecord(TestcaseRecordInputStream.create(NoteStructureSubRecord.sid, data));
 
         assertEquals(NoteStructureSubRecord.sid, record.getSid());
         assertEquals(data.length + 4, record.getRecordSize());

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNumberFormatIndexRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNumberFormatIndexRecord.java?rev=703596&r1=703595&r2=703596&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNumberFormatIndexRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNumberFormatIndexRecord.java Fri Oct 10 15:59:14 2008
@@ -35,7 +35,7 @@
 
     public void testLoad() {
 
-        NumberFormatIndexRecord record = new NumberFormatIndexRecord(new TestcaseRecordInputStream((short)0x104e, (short)data.length, data));
+        NumberFormatIndexRecord record = new NumberFormatIndexRecord(TestcaseRecordInputStream.create(0x104e, data));
         assertEquals( 5, record.getFormatIndex());
 
         assertEquals( 6, record.getRecordSize() );



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org