aboutsummaryrefslogtreecommitdiffstats
path: root/src/testcases/org
diff options
context:
space:
mode:
authorJosh Micich <josh@apache.org>2009-05-10 21:34:28 +0000
committerJosh Micich <josh@apache.org>2009-05-10 21:34:28 +0000
commitc028c0d1f163c6101ee746b60395ec9a72879c51 (patch)
treed85f66e263d6fb45dcc1f15f89f6c7f8e9dbb2f5 /src/testcases/org
parentec103cd342f6fc9589e43bd81812eef44a8b0bf6 (diff)
downloadpoi-c028c0d1f163c6101ee746b60395ec9a72879c51.tar.gz
poi-c028c0d1f163c6101ee746b60395ec9a72879c51.zip
Bug 46953 - fixed PageSettingsBlock parsing logic in Sheet. Bug caused sheet EOFs to get misplaced.
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@773412 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/testcases/org')
-rw-r--r--src/testcases/org/apache/poi/hssf/record/aggregates/AllRecordAggregateTests.java2
-rw-r--r--src/testcases/org/apache/poi/hssf/record/aggregates/TestPageSettingsBlock.java (renamed from src/testcases/org/apache/poi/hssf/record/aggregates/TestPageSettingBlock.java)45
2 files changed, 45 insertions, 2 deletions
diff --git a/src/testcases/org/apache/poi/hssf/record/aggregates/AllRecordAggregateTests.java b/src/testcases/org/apache/poi/hssf/record/aggregates/AllRecordAggregateTests.java
index e19f182f77..57fe336b60 100644
--- a/src/testcases/org/apache/poi/hssf/record/aggregates/AllRecordAggregateTests.java
+++ b/src/testcases/org/apache/poi/hssf/record/aggregates/AllRecordAggregateTests.java
@@ -36,7 +36,7 @@ public final class AllRecordAggregateTests {
result.addTestSuite(TestRowRecordsAggregate.class);
result.addTestSuite(TestSharedValueManager.class);
result.addTestSuite(TestValueRecordsAggregate.class);
- result.addTestSuite(TestPageSettingBlock.class);
+ result.addTestSuite(TestPageSettingsBlock.class);
return result;
}
}
diff --git a/src/testcases/org/apache/poi/hssf/record/aggregates/TestPageSettingBlock.java b/src/testcases/org/apache/poi/hssf/record/aggregates/TestPageSettingsBlock.java
index 07a49fd1e6..076bbfeb37 100644
--- a/src/testcases/org/apache/poi/hssf/record/aggregates/TestPageSettingBlock.java
+++ b/src/testcases/org/apache/poi/hssf/record/aggregates/TestPageSettingsBlock.java
@@ -30,6 +30,7 @@ import org.apache.poi.hssf.record.DimensionsRecord;
import org.apache.poi.hssf.record.EOFRecord;
import org.apache.poi.hssf.record.FooterRecord;
import org.apache.poi.hssf.record.HeaderRecord;
+import org.apache.poi.hssf.record.IndexRecord;
import org.apache.poi.hssf.record.NumberRecord;
import org.apache.poi.hssf.record.Record;
import org.apache.poi.hssf.record.UnknownRecord;
@@ -45,7 +46,7 @@ import org.apache.poi.util.HexRead;
*
* @author Dmitriy Kumshayev
*/
-public final class TestPageSettingBlock extends TestCase {
+public final class TestPageSettingsBlock extends TestCase {
public void testPrintSetup_bug46548() {
@@ -109,6 +110,48 @@ public final class TestPageSettingBlock extends TestCase {
assertEquals(13, outRecs.length);
}
+ /**
+ * Bug 46953 occurred because POI didn't handle late PSB records properly.
+ */
+ public void testLateHeaderFooter_bug46953() {
+
+ int rowIx = 5;
+ int colIx = 6;
+ NumberRecord nr = new NumberRecord();
+ nr.setRow(rowIx);
+ nr.setColumn((short) colIx);
+ nr.setValue(3.0);
+
+ Record[] recs = {
+ BOFRecord.createSheetBOF(),
+ new HeaderRecord("&LSales Figures"),
+ new FooterRecord("&LJanuary"),
+ new DimensionsRecord(),
+ new WindowTwoRecord(),
+ ur(UnknownRecord.HEADER_FOOTER_089C, "9C 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 C4 60 00 00 00 00 00 00 00 00"),
+ EOFRecord.instance,
+ };
+ RecordStream rs = new RecordStream(Arrays.asList(recs), 0);
+ Sheet sheet = Sheet.createSheet(rs);
+
+ RecordCollector rv = new RecordCollector();
+ sheet.visitContainedRecords(rv, rowIx);
+ Record[] outRecs = rv.getRecords();
+ if (outRecs[4] == EOFRecord.instance) {
+ throw new AssertionFailedError("Identified bug 46953 - EOF incorrectly appended to PSB");
+ }
+ assertEquals(recs.length+1, outRecs.length); // +1 for index record
+
+ assertEquals(BOFRecord.class, outRecs[0].getClass());
+ assertEquals(IndexRecord.class, outRecs[1].getClass());
+ assertEquals(HeaderRecord.class, outRecs[2].getClass());
+ assertEquals(FooterRecord.class, outRecs[3].getClass());
+ assertEquals(UnknownRecord.HEADER_FOOTER_089C, outRecs[4].getSid());
+ assertEquals(DimensionsRecord.class, outRecs[5].getClass());
+ assertEquals(WindowTwoRecord.class, outRecs[6].getClass());
+ assertEquals(EOFRecord.instance, outRecs[7]);
+ }
+
private static UnknownRecord ur(int sid, String hexData) {
return new UnknownRecord(sid, HexRead.readFromString(hexData));
}