diff options
author | Josh Micich <josh@apache.org> | 2008-12-04 00:08:45 +0000 |
---|---|---|
committer | Josh Micich <josh@apache.org> | 2008-12-04 00:08:45 +0000 |
commit | dc9a89407219929e7cbba5c11d9d0c24526ed989 (patch) | |
tree | 0ea26fabe4b3b5c7042c0388e221e002b1675fed /src/testcases/org | |
parent | db07c3ed7eff2e638a5cbb0ab4a79ff4e2be889e (diff) | |
download | poi-dc9a89407219929e7cbba5c11d9d0c24526ed989.tar.gz poi-dc9a89407219929e7cbba5c11d9d0c24526ed989.zip |
re-arranging methods getRecordSize and getDataSize in Record / StandardRecord / ContinuableRecord hierarchy
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@723161 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/testcases/org')
-rw-r--r-- | src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java | 95 |
1 files changed, 45 insertions, 50 deletions
diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java index 805e5a4b29..4dcf3c6f59 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java @@ -30,12 +30,13 @@ import org.apache.poi.hssf.model.HSSFFormulaParser; import org.apache.poi.hssf.model.Sheet; import org.apache.poi.hssf.record.NameRecord; import org.apache.poi.hssf.record.Record; +import org.apache.poi.hssf.record.RecordBase; import org.apache.poi.hssf.record.RecordFormatException; import org.apache.poi.hssf.record.formula.Area3DPtg; import org.apache.poi.util.LittleEndian; import org.apache.poi.util.TempFile; /** - * + * Tests for {@link HSSFWorkbook} */ public final class TestHSSFWorkbook extends TestCase { private static HSSFWorkbook openSample(String sampleFileName) { @@ -75,31 +76,25 @@ public final class TestHSSFWorkbook extends TestCase { b.createSheet("Sheet1"); b.createSheet(); b.createSheet("name1"); - try - { + try { b.createSheet("name1"); fail(); - } - catch ( IllegalArgumentException pass ) - { + } catch (IllegalArgumentException pass) { + // expected during successful test } b.createSheet(); - try - { - b.setSheetName( 3, "name1" ); + try { + b.setSheetName(3, "name1"); fail(); - } - catch ( IllegalArgumentException pass ) - { + } catch (IllegalArgumentException pass) { + // expected during successful test } - try - { - b.setSheetName( 3, "name1" ); + try { + b.setSheetName(3, "name1"); fail(); - } - catch ( IllegalArgumentException pass ) - { + } catch (IllegalArgumentException pass) { + // expected during successful test } b.setSheetName( 3, "name2" ); @@ -383,17 +378,17 @@ public final class TestHSSFWorkbook extends TestCase { assertEquals("active", expectedActive, sheet.isActive()); assertEquals("selected", expectedSelected, sheet.isSelected()); } - + /** * If Sheet.getSize() returns a different result to Sheet.serialize(), this will cause the BOF - * records to be written with invalid offset indexes. Excel does not like this, and such + * records to be written with invalid offset indexes. Excel does not like this, and such * errors are particularly hard to track down. This test ensures that HSSFWorkbook throws * a specific exception as soon as the situation is detected. See bugzilla 45066 */ public void testSheetSerializeSizeMismatch_bug45066() { HSSFWorkbook wb = new HSSFWorkbook(); Sheet sheet = wb.createSheet("Sheet1").getSheet(); - List sheetRecords = sheet.getRecords(); + List<RecordBase> sheetRecords = sheet.getRecords(); // one way (of many) to cause the discrepancy is with a badly behaved record: sheetRecords.add(new BadlyBehavedRecord()); // There is also much logic inside Sheet that (if buggy) might also cause the discrepancy @@ -405,98 +400,98 @@ public final class TestHSSFWorkbook extends TestCase { assertTrue(e.getMessage().startsWith("Actual serialized sheet size")); } } - + /** * Checks that us and HSSFName play nicely with named ranges * that point to deleted sheets */ - public void testNamesToDeleteSheets() throws Exception { + public void testNamesToDeleteSheets() { HSSFWorkbook b = openSample("30978-deleted.xls"); assertEquals(3, b.getNumberOfNames()); - + // Sheet 2 is deleted assertEquals("Sheet1", b.getSheetName(0)); assertEquals("Sheet3", b.getSheetName(1)); - + Area3DPtg ptg; NameRecord nr; HSSFName n; - + /* ======= Name pointing to deleted sheet ====== */ - + // First at low level nr = b.getWorkbook().getNameRecord(0); assertEquals("On2", nr.getNameText()); assertEquals(0, nr.getSheetNumber()); assertEquals(1, nr.getExternSheetNumber()); assertEquals(1, nr.getNameDefinition().length); - + ptg = (Area3DPtg)nr.getNameDefinition()[0]; assertEquals(1, ptg.getExternSheetIndex()); assertEquals(0, ptg.getFirstColumn()); assertEquals(0, ptg.getFirstRow()); assertEquals(0, ptg.getLastColumn()); assertEquals(2, ptg.getLastRow()); - + // Now at high level n = b.getNameAt(0); assertEquals("On2", n.getNameName()); assertEquals("", n.getSheetName()); - assertEquals("#REF!$A$1:$A$3", n.getReference()); - - + assertEquals("#REF!$A$1:$A$3", n.getRefersToFormula()); + + /* ======= Name pointing to 1st sheet ====== */ - + // First at low level nr = b.getWorkbook().getNameRecord(1); assertEquals("OnOne", nr.getNameText()); assertEquals(0, nr.getSheetNumber()); assertEquals(0, nr.getExternSheetNumber()); assertEquals(1, nr.getNameDefinition().length); - + ptg = (Area3DPtg)nr.getNameDefinition()[0]; assertEquals(0, ptg.getExternSheetIndex()); assertEquals(0, ptg.getFirstColumn()); assertEquals(2, ptg.getFirstRow()); assertEquals(0, ptg.getLastColumn()); assertEquals(3, ptg.getLastRow()); - + // Now at high level n = b.getNameAt(1); assertEquals("OnOne", n.getNameName()); assertEquals("Sheet1", n.getSheetName()); - assertEquals("Sheet1!$A$3:$A$4", n.getReference()); - - + assertEquals("Sheet1!$A$3:$A$4", n.getRefersToFormula()); + + /* ======= Name pointing to 3rd sheet ====== */ - + // First at low level nr = b.getWorkbook().getNameRecord(2); assertEquals("OnSheet3", nr.getNameText()); assertEquals(0, nr.getSheetNumber()); assertEquals(2, nr.getExternSheetNumber()); assertEquals(1, nr.getNameDefinition().length); - + ptg = (Area3DPtg)nr.getNameDefinition()[0]; assertEquals(2, ptg.getExternSheetIndex()); assertEquals(0, ptg.getFirstColumn()); assertEquals(0, ptg.getFirstRow()); assertEquals(0, ptg.getLastColumn()); assertEquals(1, ptg.getLastRow()); - + // Now at high level n = b.getNameAt(2); assertEquals("OnSheet3", n.getNameName()); assertEquals("Sheet3", n.getSheetName()); - assertEquals("Sheet3!$A$1:$A$2", n.getReference()); + assertEquals("Sheet3!$A$1:$A$2", n.getRefersToFormula()); } - + /** * result returned by getRecordSize() differs from result returned by serialize() */ private static final class BadlyBehavedRecord extends Record { public BadlyBehavedRecord() { - // + // } public short getSid() { return 0x777; @@ -504,11 +499,11 @@ public final class TestHSSFWorkbook extends TestCase { public int serialize(int offset, byte[] data) { return 4; } - protected int getDataSize() { - return 4; + public int getRecordSize() { + return 8; } } - + /** * The sample file provided with bug 45582 seems to have one extra byte after the EOFRecord */ @@ -521,7 +516,7 @@ public final class TestHSSFWorkbook extends TestCase { } } } - + /** * Test to make sure that NameRecord.getSheetNumber() is interpreted as a * 1-based sheet tab index (not a 1-based extern sheet index) @@ -535,12 +530,12 @@ public final class TestHSSFWorkbook extends TestCase { nr = wb.getWorkbook().getNameRecord(2); // TODO - render full row and full column refs properly assertEquals("Sheet2!$A$1:$IV$1", HSSFFormulaParser.toFormulaString(wb, nr.getNameDefinition())); // 1:1 - + try { wb.setRepeatingRowsAndColumns(3, 4, 5, 8, 11); } catch (RuntimeException e) { if (e.getMessage().equals("Builtin (7) already exists for sheet (4)")) { - // there was a problem in the code which locates the existing print titles name record + // there was a problem in the code which locates the existing print titles name record throw new RuntimeException("Identified bug 45720b"); } throw e; |