Author: nick
Date: Mon Jan 18 12:18:00 2010
New Revision: 900362

URL: http://svn.apache.org/viewvc?rev=900362&view=rev
Log:
records.UnicodeString isn't actually a Record, just a common part that exists 
in many other records. As such, move it to records.common, which is where all 
the other record components live

Added:
    poi/trunk/src/java/org/apache/poi/hssf/record/common/UnicodeString.java
      - copied, changed from r900347, 
poi/trunk/src/java/org/apache/poi/hssf/record/UnicodeString.java
    
poi/trunk/src/testcases/org/apache/poi/hssf/record/common/TestUnicodeString.java
Removed:
    poi/trunk/src/java/org/apache/poi/hssf/record/UnicodeString.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestUnicodeString.java
Modified:
    poi/trunk/src/java/org/apache/poi/hssf/model/InternalWorkbook.java
    poi/trunk/src/java/org/apache/poi/hssf/record/DVRecord.java
    poi/trunk/src/java/org/apache/poi/hssf/record/SSTDeserializer.java
    poi/trunk/src/java/org/apache/poi/hssf/record/SSTRecord.java
    poi/trunk/src/java/org/apache/poi/hssf/record/SSTSerializer.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFOptimiser.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFRichTextString.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java
    poi/trunk/src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/AllRecordTests.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSSTRecord.java
    
poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSSTRecordSizeCalculator.java
    poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java

Modified: poi/trunk/src/java/org/apache/poi/hssf/model/InternalWorkbook.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/model/InternalWorkbook.java?rev=900362&r1=900361&r2=900362&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/model/InternalWorkbook.java 
(original)
+++ poi/trunk/src/java/org/apache/poi/hssf/model/InternalWorkbook.java Mon Jan 
18 12:18:00 2010
@@ -71,12 +71,12 @@
 import org.apache.poi.hssf.record.StyleRecord;
 import org.apache.poi.hssf.record.SupBookRecord;
 import org.apache.poi.hssf.record.TabIdRecord;
-import org.apache.poi.hssf.record.UnicodeString;
 import org.apache.poi.hssf.record.UseSelFSRecord;
 import org.apache.poi.hssf.record.WindowOneRecord;
 import org.apache.poi.hssf.record.WindowProtectRecord;
 import org.apache.poi.hssf.record.WriteAccessRecord;
 import org.apache.poi.hssf.record.WriteProtectRecord;
+import org.apache.poi.hssf.record.common.UnicodeString;
 import org.apache.poi.hssf.record.formula.NameXPtg;
 import org.apache.poi.hssf.record.formula.FormulaShifter;
 import org.apache.poi.hssf.record.formula.Ptg;

Modified: poi/trunk/src/java/org/apache/poi/hssf/record/DVRecord.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/DVRecord.java?rev=900362&r1=900361&r2=900362&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/record/DVRecord.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/record/DVRecord.java Mon Jan 18 
12:18:00 2010
@@ -17,6 +17,7 @@
 
 package org.apache.poi.hssf.record;
 
+import org.apache.poi.hssf.record.common.UnicodeString;
 import org.apache.poi.hssf.record.formula.Ptg;
 import org.apache.poi.hssf.usermodel.HSSFDataValidation;
 import org.apache.poi.ss.formula.Formula;

Modified: poi/trunk/src/java/org/apache/poi/hssf/record/SSTDeserializer.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/SSTDeserializer.java?rev=900362&r1=900361&r2=900362&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/record/SSTDeserializer.java 
(original)
+++ poi/trunk/src/java/org/apache/poi/hssf/record/SSTDeserializer.java Mon Jan 
18 12:18:00 2010
@@ -19,6 +19,7 @@
 
 package org.apache.poi.hssf.record;
 
+import org.apache.poi.hssf.record.common.UnicodeString;
 import org.apache.poi.util.IntMapper;
 
 /**

Modified: poi/trunk/src/java/org/apache/poi/hssf/record/SSTRecord.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/SSTRecord.java?rev=900362&r1=900361&r2=900362&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/record/SSTRecord.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/record/SSTRecord.java Mon Jan 18 
12:18:00 2010
@@ -19,6 +19,7 @@
 
 import java.util.Iterator;
 
+import org.apache.poi.hssf.record.common.UnicodeString;
 import org.apache.poi.hssf.record.cont.ContinuableRecord;
 import org.apache.poi.hssf.record.cont.ContinuableRecordOutput;
 import org.apache.poi.util.IntMapper;

Modified: poi/trunk/src/java/org/apache/poi/hssf/record/SSTSerializer.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/SSTSerializer.java?rev=900362&r1=900361&r2=900362&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/record/SSTSerializer.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/record/SSTSerializer.java Mon Jan 18 
12:18:00 2010
@@ -17,6 +17,7 @@
 
 package org.apache.poi.hssf.record;
 
+import org.apache.poi.hssf.record.common.UnicodeString;
 import org.apache.poi.hssf.record.cont.ContinuableRecordOutput;
 import org.apache.poi.util.IntMapper;
 

Copied: poi/trunk/src/java/org/apache/poi/hssf/record/common/UnicodeString.java 
(from r900347, poi/trunk/src/java/org/apache/poi/hssf/record/UnicodeString.java)
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/common/UnicodeString.java?p2=poi/trunk/src/java/org/apache/poi/hssf/record/common/UnicodeString.java&p1=poi/trunk/src/java/org/apache/poi/hssf/record/UnicodeString.java&r1=900347&r2=900362&rev=900362&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/record/UnicodeString.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/record/common/UnicodeString.java Mon 
Jan 18 12:18:00 2010
@@ -15,13 +15,14 @@
    limitations under the License.
 ==================================================================== */
 
-package org.apache.poi.hssf.record;
+package org.apache.poi.hssf.record.common;
 
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
+import org.apache.poi.hssf.record.RecordInputStream;
 import org.apache.poi.hssf.record.cont.ContinuableRecordOutput;
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;

Modified: poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java?rev=900362&r1=900361&r2=900362&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java Mon Jan 18 
12:18:00 2010
@@ -41,8 +41,8 @@
 import org.apache.poi.hssf.record.RecordBase;
 import org.apache.poi.hssf.record.SubRecord;
 import org.apache.poi.hssf.record.TextObjectRecord;
-import org.apache.poi.hssf.record.UnicodeString;
 import org.apache.poi.hssf.record.aggregates.FormulaRecordAggregate;
+import org.apache.poi.hssf.record.common.UnicodeString;
 import org.apache.poi.hssf.record.formula.ExpPtg;
 import org.apache.poi.hssf.record.formula.Ptg;
 import org.apache.poi.hssf.record.formula.eval.ErrorEval;

Modified: poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFOptimiser.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFOptimiser.java?rev=900362&r1=900361&r2=900362&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFOptimiser.java 
(original)
+++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFOptimiser.java Mon Jan 
18 12:18:00 2010
@@ -21,7 +21,7 @@
 
 import org.apache.poi.hssf.record.ExtendedFormatRecord;
 import org.apache.poi.hssf.record.FontRecord;
-import org.apache.poi.hssf.record.UnicodeString;
+import org.apache.poi.hssf.record.common.UnicodeString;
 
 /**
  * Excel can get cranky if you give it files containing too

Modified: 
poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFRichTextString.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFRichTextString.java?rev=900362&r1=900361&r2=900362&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFRichTextString.java 
(original)
+++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFRichTextString.java 
Mon Jan 18 12:18:00 2010
@@ -21,7 +21,7 @@
 
 import org.apache.poi.hssf.model.InternalWorkbook;
 import org.apache.poi.hssf.record.LabelSSTRecord;
-import org.apache.poi.hssf.record.UnicodeString;
+import org.apache.poi.hssf.record.common.UnicodeString;
 import org.apache.poi.ss.usermodel.Font;
 import org.apache.poi.ss.usermodel.RichTextString;
 /**

Modified: poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java?rev=900362&r1=900361&r2=900362&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java 
(original)
+++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java Mon Jan 
18 12:18:00 2010
@@ -52,9 +52,9 @@
 import org.apache.poi.hssf.record.Record;
 import org.apache.poi.hssf.record.RecordFactory;
 import org.apache.poi.hssf.record.SSTRecord;
-import org.apache.poi.hssf.record.UnicodeString;
 import org.apache.poi.hssf.record.UnknownRecord;
 import org.apache.poi.hssf.record.aggregates.RecordAggregate.RecordVisitor;
+import org.apache.poi.hssf.record.common.UnicodeString;
 import org.apache.poi.hssf.record.formula.Area3DPtg;
 import org.apache.poi.hssf.record.formula.MemFuncPtg;
 import org.apache.poi.hssf.record.formula.NameXPtg;

Modified: 
poi/trunk/src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java?rev=900362&r1=900361&r2=900362&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java 
(original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java 
Mon Jan 18 12:18:00 2010
@@ -24,7 +24,7 @@
 
 import org.apache.poi.hssf.HSSFTestDataSamples;
 import org.apache.poi.hssf.record.NameRecord;
-import org.apache.poi.hssf.record.UnicodeString;
+import org.apache.poi.hssf.record.common.UnicodeString;
 import org.apache.poi.hssf.record.constant.ErrorConstant;
 import org.apache.poi.hssf.record.formula.AbstractFunctionPtg;
 import org.apache.poi.hssf.record.formula.AddPtg;

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/AllRecordTests.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/AllRecordTests.java?rev=900362&r1=900361&r2=900362&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/AllRecordTests.java 
(original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/AllRecordTests.java Mon 
Jan 18 12:18:00 2010
@@ -23,6 +23,7 @@
 import org.apache.poi.hssf.record.aggregates.AllRecordAggregateTests;
 import org.apache.poi.hssf.record.cf.TestCellRange;
 import org.apache.poi.hssf.record.chart.AllChartRecordTests;
+import org.apache.poi.hssf.record.common.TestUnicodeString;
 import org.apache.poi.hssf.record.constant.TestConstantValueParser;
 import org.apache.poi.hssf.record.crypto.AllHSSFEncryptionTests;
 import org.apache.poi.hssf.record.formula.AllFormulaTests;

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSSTRecord.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSSTRecord.java?rev=900362&r1=900361&r2=900362&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSSTRecord.java 
(original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSSTRecord.java Mon 
Jan 18 12:18:00 2010
@@ -30,6 +30,7 @@
 import junit.framework.TestCase;
 
 import org.apache.poi.hssf.HSSFTestDataSamples;
+import org.apache.poi.hssf.record.common.UnicodeString;
 import org.apache.poi.hssf.usermodel.HSSFSheet;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.util.HexRead;

Modified: 
poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSSTRecordSizeCalculator.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSSTRecordSizeCalculator.java?rev=900362&r1=900361&r2=900362&view=diff
==============================================================================
--- 
poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSSTRecordSizeCalculator.java
 (original)
+++ 
poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSSTRecordSizeCalculator.java
 Mon Jan 18 12:18:00 2010
@@ -19,6 +19,7 @@
 
 import junit.framework.TestCase;
 
+import org.apache.poi.hssf.record.common.UnicodeString;
 import org.apache.poi.hssf.record.cont.ContinuableRecordOutput;
 import org.apache.poi.util.IntMapper;
 

Added: 
poi/trunk/src/testcases/org/apache/poi/hssf/record/common/TestUnicodeString.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/common/TestUnicodeString.java?rev=900362&view=auto
==============================================================================
--- 
poi/trunk/src/testcases/org/apache/poi/hssf/record/common/TestUnicodeString.java
 (added)
+++ 
poi/trunk/src/testcases/org/apache/poi/hssf/record/common/TestUnicodeString.java
 Mon Jan 18 12:18:00 2010
@@ -0,0 +1,171 @@
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+==================================================================== */
+
+package org.apache.poi.hssf.record.common;
+
+import junit.framework.TestCase;
+
+import org.apache.poi.hssf.record.ContinueRecord;
+import org.apache.poi.hssf.record.RecordInputStream;
+import org.apache.poi.hssf.record.SSTRecord;
+import org.apache.poi.hssf.record.cont.ContinuableRecordOutput;
+
+/**
+ * Tests that {...@link UnicodeString} record size calculates correctly.  The 
record size
+ * is used when serializing {...@link SSTRecord}s.
+ *
+ * @author Jason Height (jheight at apache.org)
+ */
+public final class TestUnicodeString extends TestCase {
+    private static final int MAX_DATA_SIZE = 
RecordInputStream.MAX_RECORD_DATA_SIZE;
+
+    /** a 4 character string requiring 16 bit encoding */
+    private static final String STR_16_BIT = "A\u591A\u8A00\u8A9E";
+
+    private static void confirmSize(int expectedSize, UnicodeString s) {
+        confirmSize(expectedSize, s, 0);
+    }
+    /**
+     * Note - a value of zero for <tt>amountUsedInCurrentRecord</tt> would 
only ever occur just
+     * after a {...@link ContinueRecord} had been started.  In the initial 
{...@link SSTRecord} this 
+     * value starts at 8 (for the first {...@link UnicodeString} written).  In 
general, it can be
+     * any value between 0 and {...@link #MAX_DATA_SIZE}
+     */
+    private static void confirmSize(int expectedSize, UnicodeString s, int 
amountUsedInCurrentRecord) {
+        ContinuableRecordOutput out = 
ContinuableRecordOutput.createForCountingOnly();
+        out.writeContinue();
+        for(int i=amountUsedInCurrentRecord; i>0; i--) {
+            out.writeByte(0);
+        }
+        int size0 = out.getTotalSize();
+        s.serialize(out);
+        int size1 = out.getTotalSize();
+        int actualSize = size1-size0;
+        assertEquals(expectedSize, actualSize);
+    }
+
+    public void testSmallStringSize() {
+        //Test a basic string
+        UnicodeString s = makeUnicodeString("Test");
+        confirmSize(7, s);
+
+        //Test a small string that is uncompressed
+        s = makeUnicodeString(STR_16_BIT);
+        s.setOptionFlags((byte)0x01);
+        confirmSize(11, s);
+
+        //Test a compressed small string that has rich text formatting
+        s.setString("Test");
+        s.setOptionFlags((byte)0x8);
+        UnicodeString.FormatRun r = new 
UnicodeString.FormatRun((short)0,(short)1);
+        s.addFormatRun(r);
+        UnicodeString.FormatRun r2 = new 
UnicodeString.FormatRun((short)2,(short)2);
+        s.addFormatRun(r2);
+        confirmSize(17, s);
+
+        //Test a uncompressed small string that has rich text formatting
+        s.setString(STR_16_BIT);
+        s.setOptionFlags((byte)0x9);
+        confirmSize(21, s);
+
+        //Test a compressed small string that has rich text and extended text
+        s.setString("Test");
+        s.setOptionFlags((byte)0xC);
+        s.setExtendedRst(new 
byte[]{(byte)0x1,(byte)0x2,(byte)0x3,(byte)0x4,(byte)0x5});
+        confirmSize(26, s);
+
+        //Test a uncompressed small string that has rich text and extended text
+        s.setString(STR_16_BIT);
+        s.setOptionFlags((byte)0xD);
+        confirmSize(30, s);
+    }
+
+    public void testPerfectStringSize() {
+      //Test a basic string
+      UnicodeString s = makeUnicodeString(MAX_DATA_SIZE-2-1);
+      confirmSize(MAX_DATA_SIZE, s);
+
+      //Test an uncompressed string
+      //Note that we can only ever get to a maximim size of 8227 since an 
uncompressed
+      //string is writing double bytes.
+      s = makeUnicodeString((MAX_DATA_SIZE-2-1)/2, true);
+      s.setOptionFlags((byte)0x1);
+      confirmSize(MAX_DATA_SIZE-1, s);
+    }
+
+    public void testPerfectRichStringSize() {
+      //Test a rich text string
+      UnicodeString s = makeUnicodeString(MAX_DATA_SIZE-2-1-8-2);
+      s.addFormatRun(new UnicodeString.FormatRun((short)1,(short)0));
+      s.addFormatRun(new UnicodeString.FormatRun((short)2,(short)1));
+      s.setOptionFlags((byte)0x8);
+      confirmSize(MAX_DATA_SIZE, s);
+
+      //Test an uncompressed rich text string
+      //Note that we can only ever get to a maximum size of 8227 since an 
uncompressed
+      //string is writing double bytes.
+      s = makeUnicodeString((MAX_DATA_SIZE-2-1-8-2)/2, true);
+      s.addFormatRun(new UnicodeString.FormatRun((short)1,(short)0));
+      s.addFormatRun(new UnicodeString.FormatRun((short)2,(short)1));
+      s.setOptionFlags((byte)0x9);
+      confirmSize(MAX_DATA_SIZE-1, s);
+    }
+
+    public void testContinuedStringSize() {
+      //Test a basic string
+      UnicodeString s = makeUnicodeString(MAX_DATA_SIZE-2-1+20);
+      confirmSize(MAX_DATA_SIZE+4+1+20, s);
+    }
+
+    /** Tests that a string size calculation that fits neatly in two records, 
the second being a continue*/
+    public void testPerfectContinuedStringSize() {
+      //Test a basic string
+      int strSize = MAX_DATA_SIZE*2;
+      //String overhead
+      strSize -= 3;
+      //Continue Record overhead
+      strSize -= 4;
+      //Continue Record additional byte overhead
+      strSize -= 1;
+      UnicodeString s = makeUnicodeString(strSize);
+      confirmSize(MAX_DATA_SIZE*2, s);
+    }
+
+
+    private static UnicodeString makeUnicodeString(String s) {
+      UnicodeString st = new UnicodeString(s);
+      st.setOptionFlags((byte)0);
+      return st;
+    }
+
+    private static UnicodeString makeUnicodeString(int numChars) {
+        return makeUnicodeString(numChars, false);
+    }
+    /**
+     * @param is16Bit if <code>true</code> the created string will have 
characters > 0x00FF
+     * @return a string of the specified number of characters
+     */
+    private static UnicodeString makeUnicodeString(int numChars, boolean 
is16Bit) {
+      StringBuffer b = new StringBuffer(numChars);
+      int charBase = is16Bit ? 0x8A00 : 'A';
+      for (int i=0;i<numChars;i++) {
+        char ch = (char) ((i%16)+charBase);
+        b.append(ch);
+      }
+      return makeUnicodeString(b.toString());
+    }
+}

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java?rev=900362&r1=900361&r2=900362&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java 
(original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java Mon Jan 
18 12:18:00 2010
@@ -1536,4 +1536,14 @@
     public void test47251() {
         openSample("47251.xls");
     }
+    
+    /**
+     * Round trip a file with an unusual ExtRst record
+     */
+    public void test47847() {
+       HSSFWorkbook wb = openSample("47251.xls");
+       assertEquals(1, wb.getNumberOfSheets());
+       wb = writeOutAndReadBack(wb);
+       assertEquals(1, wb.getNumberOfSheets());
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to