Eclipse warnings, comment out dead code, close resources, enhance unit tests, javadoc, ...

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1702802 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Dominik Stadler 2015-09-13 19:05:55 +00:00
parent a4901ca30d
commit c6f875fbb9
4 changed files with 166 additions and 104 deletions

View File

@ -413,7 +413,7 @@ public class HSSFCell implements Cell {
errRec.setColumn(col); errRec.setColumn(col);
if (setValue) if (setValue)
{ {
errRec.setValue((byte)HSSFErrorConstants.ERROR_VALUE); errRec.setValue(FormulaError.VALUE.getCode());
} }
errRec.setXFIndex(styleIndex); errRec.setXFIndex(styleIndex);
errRec.setRow(row); errRec.setRow(row);
@ -821,7 +821,7 @@ public class HSSFCell implements Cell {
case CELL_TYPE_NUMERIC: case CELL_TYPE_NUMERIC:
return NumberToTextConverter.toText(((NumberRecord)_record).getValue()); return NumberToTextConverter.toText(((NumberRecord)_record).getValue());
case CELL_TYPE_ERROR: case CELL_TYPE_ERROR:
return HSSFErrorConstants.getText(((BoolErrRecord) _record).getErrorValue()); return FormulaError.forInt(((BoolErrRecord)_record).getErrorValue()).getString();
case CELL_TYPE_FORMULA: case CELL_TYPE_FORMULA:
// should really evaluate, but HSSFCell can't call HSSFFormulaEvaluator // should really evaluate, but HSSFCell can't call HSSFFormulaEvaluator
// just use cached formula result instead // just use cached formula result instead
@ -839,7 +839,7 @@ public class HSSFCell implements Cell {
case CELL_TYPE_NUMERIC: case CELL_TYPE_NUMERIC:
return NumberToTextConverter.toText(fr.getValue()); return NumberToTextConverter.toText(fr.getValue());
case CELL_TYPE_ERROR: case CELL_TYPE_ERROR:
return HSSFErrorConstants.getText(fr.getCachedErrorValue()); return FormulaError.forInt(fr.getCachedErrorValue()).getString();
} }
throw new IllegalStateException("Unexpected formula result type (" + _cellType + ")"); throw new IllegalStateException("Unexpected formula result type (" + _cellType + ")");
} }
@ -964,7 +964,7 @@ public class HSSFCell implements Cell {
* Returns a string representation of the cell * Returns a string representation of the cell
* *
* This method returns a simple representation, * This method returns a simple representation,
* anthing more complex should be in user code, with * anything more complex should be in user code, with
* knowledge of the semantics of the sheet being processed. * knowledge of the semantics of the sheet being processed.
* *
* Formula cells return the formula string, * Formula cells return the formula string,

View File

@ -593,6 +593,9 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
/** /**
* Create a new row within the sheet and return the high level representation * Create a new row within the sheet and return the high level representation
* *
* Note: If a row already exists at this position, it is removed/overwritten and
* any existing cell is removed!
*
* @param rownum row number * @param rownum row number
* @return High level {@link XSSFRow} object representing a row in the sheet * @return High level {@link XSSFRow} object representing a row in the sheet
* @see #removeRow(org.apache.poi.ss.usermodel.Row) * @see #removeRow(org.apache.poi.ss.usermodel.Row)

View File

@ -17,26 +17,23 @@
package org.apache.poi.hssf.usermodel; package org.apache.poi.hssf.usermodel;
import static org.apache.poi.POITestCase.assertContains;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull; import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail; import static org.junit.Assert.fail;
import static org.apache.poi.POITestCase.assertContains;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.File; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.List; import java.util.List;
import junit.framework.AssertionFailedError;
import org.apache.poi.POIDataSamples; import org.apache.poi.POIDataSamples;
import org.apache.poi.ddf.EscherBSERecord; import org.apache.poi.ddf.EscherBSERecord;
import org.apache.poi.hpsf.ClassID; import org.apache.poi.hpsf.ClassID;
@ -64,6 +61,8 @@ import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.TempFile; import org.apache.poi.util.TempFile;
import org.junit.Test; import org.junit.Test;
import junit.framework.AssertionFailedError;
/** /**
* Tests for {@link HSSFWorkbook} * Tests for {@link HSSFWorkbook}
*/ */
@ -80,7 +79,7 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
} }
@Test @Test
public void windowOneDefaults() { public void windowOneDefaults() throws IOException {
HSSFWorkbook b = new HSSFWorkbook( ); HSSFWorkbook b = new HSSFWorkbook( );
try { try {
assertEquals(b.getActiveSheetIndex(), 0); assertEquals(b.getActiveSheetIndex(), 0);
@ -88,13 +87,16 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
} catch (NullPointerException npe) { } catch (NullPointerException npe) {
fail("WindowOneRecord in Workbook is probably not initialized"); fail("WindowOneRecord in Workbook is probably not initialized");
} }
b.close();
} }
/** /**
* Tests for {@link HSSFWorkbook#isHidden()} etc * Tests for {@link HSSFWorkbook#isHidden()} etc
* @throws IOException
*/ */
@Test @Test
public void hidden() { public void hidden() throws IOException {
HSSFWorkbook wb = new HSSFWorkbook(); HSSFWorkbook wb = new HSSFWorkbook();
WindowOneRecord w1 = wb.getWorkbook().getWindowOne(); WindowOneRecord w1 = wb.getWorkbook().getWindowOne();
@ -106,20 +108,23 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
assertEquals(true, wb.isHidden()); assertEquals(true, wb.isHidden());
assertEquals(true, w1.getHidden()); assertEquals(true, w1.getHidden());
wb = HSSFTestDataSamples.writeOutAndReadBack(wb); HSSFWorkbook wbBack = HSSFTestDataSamples.writeOutAndReadBack(wb);
w1 = wb.getWorkbook().getWindowOne(); w1 = wbBack.getWorkbook().getWindowOne();
wb.setHidden(true); wbBack.setHidden(true);
assertEquals(true, wb.isHidden()); assertEquals(true, wbBack.isHidden());
assertEquals(true, w1.getHidden()); assertEquals(true, w1.getHidden());
wb.setHidden(false); wbBack.setHidden(false);
assertEquals(false, wb.isHidden()); assertEquals(false, wbBack.isHidden());
assertEquals(false, w1.getHidden()); assertEquals(false, w1.getHidden());
wbBack.close();
wb.close();
} }
@Test @Test
public void sheetClone() { public void sheetClone() throws IOException {
// First up, try a simple file // First up, try a simple file
HSSFWorkbook b = new HSSFWorkbook(); HSSFWorkbook b = new HSSFWorkbook();
assertEquals(0, b.getNumberOfSheets()); assertEquals(0, b.getNumberOfSheets());
@ -131,10 +136,13 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
assertEquals(3, b.getNumberOfSheets()); assertEquals(3, b.getNumberOfSheets());
// Now try a problem one with drawing records in it // Now try a problem one with drawing records in it
b = HSSFTestDataSamples.openSampleWorkbook("SheetWithDrawing.xls"); HSSFWorkbook bBack = HSSFTestDataSamples.openSampleWorkbook("SheetWithDrawing.xls");
assertEquals(1, b.getNumberOfSheets()); assertEquals(1, bBack.getNumberOfSheets());
b.cloneSheet(0); bBack.cloneSheet(0);
assertEquals(2, b.getNumberOfSheets()); assertEquals(2, bBack.getNumberOfSheets());
bBack.close();
b.close();
} }
@Test @Test
@ -204,7 +212,7 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
@Test @Test
public void selectedSheet_bug44523() { public void selectedSheet_bug44523() throws IOException {
HSSFWorkbook wb=new HSSFWorkbook(); HSSFWorkbook wb=new HSSFWorkbook();
HSSFSheet sheet1 = wb.createSheet("Sheet1"); HSSFSheet sheet1 = wb.createSheet("Sheet1");
HSSFSheet sheet2 = wb.createSheet("Sheet2"); HSSFSheet sheet2 = wb.createSheet("Sheet2");
@ -223,23 +231,21 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
// Demonstrate bug 44525: // Demonstrate bug 44525:
// Well... not quite, since isActive + isSelected were also added in the same bug fix // Well... not quite, since isActive + isSelected were also added in the same bug fix
if (sheet1.isSelected()) { assertFalse("Identified bug 44523 a", sheet1.isSelected());
throw new AssertionFailedError("Identified bug 44523 a");
}
wb.setActiveSheet(1); wb.setActiveSheet(1);
if (sheet1.isActive()) { assertFalse("Identified bug 44523 b", sheet1.isActive());
throw new AssertionFailedError("Identified bug 44523 b");
}
confirmActiveSelected(sheet1, false); confirmActiveSelected(sheet1, false);
confirmActiveSelected(sheet2, true); confirmActiveSelected(sheet2, true);
confirmActiveSelected(sheet3, false); confirmActiveSelected(sheet3, false);
confirmActiveSelected(sheet4, false); confirmActiveSelected(sheet4, false);
wb.close();
} }
@SuppressWarnings("unused") @SuppressWarnings("unused")
@Test @Test
public void selectMultiple() { public void selectMultiple() throws IOException {
HSSFWorkbook wb=new HSSFWorkbook(); HSSFWorkbook wb=new HSSFWorkbook();
HSSFSheet sheet1 = wb.createSheet("Sheet1"); HSSFSheet sheet1 = wb.createSheet("Sheet1");
HSSFSheet sheet2 = wb.createSheet("Sheet2"); HSSFSheet sheet2 = wb.createSheet("Sheet2");
@ -291,11 +297,13 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }
wb.close();
} }
@Test @Test
public void activeSheetAfterDelete_bug40414() { public void activeSheetAfterDelete_bug40414() throws IOException {
HSSFWorkbook wb=new HSSFWorkbook(); HSSFWorkbook wb=new HSSFWorkbook();
HSSFSheet sheet0 = wb.createSheet("Sheet0"); HSSFSheet sheet0 = wb.createSheet("Sheet0");
HSSFSheet sheet1 = wb.createSheet("Sheet1"); HSSFSheet sheet1 = wb.createSheet("Sheet1");
@ -321,12 +329,8 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
wb.removeSheetAt(3); wb.removeSheetAt(3);
// after removing the only active/selected sheet, another should be active/selected in its place // after removing the only active/selected sheet, another should be active/selected in its place
if (!sheet4.isSelected()) { assertTrue("identified bug 40414 a", sheet4.isSelected());
throw new AssertionFailedError("identified bug 40414 a"); assertTrue("identified bug 40414 b", sheet4.isActive());
}
if (!sheet4.isActive()) {
throw new AssertionFailedError("identified bug 40414 b");
}
confirmActiveSelected(sheet0, false); confirmActiveSelected(sheet0, false);
confirmActiveSelected(sheet1, false); confirmActiveSelected(sheet1, false);
@ -359,6 +363,8 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
// The last remaining sheet should always be active+selected // The last remaining sheet should always be active+selected
wb.removeSheetAt(1); wb.removeSheetAt(1);
confirmActiveSelected(sheet0, true, true); confirmActiveSelected(sheet0, true, true);
wb.close();
} }
private static void confirmActiveSelected(HSSFSheet sheet, boolean expected) { private static void confirmActiveSelected(HSSFSheet sheet, boolean expected) {
@ -377,9 +383,10 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
* 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 * 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 * a specific exception as soon as the situation is detected. See bugzilla 45066
* @throws IOException
*/ */
@Test @Test
public void sheetSerializeSizeMismatch_bug45066() { public void sheetSerializeSizeMismatch_bug45066() throws IOException {
HSSFWorkbook wb = new HSSFWorkbook(); HSSFWorkbook wb = new HSSFWorkbook();
InternalSheet sheet = wb.createSheet("Sheet1").getSheet(); InternalSheet sheet = wb.createSheet("Sheet1").getSheet();
List<RecordBase> sheetRecords = sheet.getRecords(); List<RecordBase> sheetRecords = sheet.getRecords();
@ -388,11 +395,13 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
// There is also much logic inside Sheet that (if buggy) might also cause the discrepancy // There is also much logic inside Sheet that (if buggy) might also cause the discrepancy
try { try {
wb.getBytes(); wb.getBytes();
throw new AssertionFailedError("Identified bug 45066 a"); fail("Identified bug 45066 a");
} catch (IllegalStateException e) { } catch (IllegalStateException e) {
// Expected badly behaved sheet record to cause exception // Expected badly behaved sheet record to cause exception
assertTrue(e.getMessage().startsWith("Actual serialized sheet size")); assertTrue(e.getMessage().startsWith("Actual serialized sheet size"));
} }
wb.close();
} }
/** /**
@ -563,6 +572,9 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
ClassID clsid2 = fs2.getRoot().getStorageClsid(); ClassID clsid2 = fs2.getRoot().getStorageClsid();
assertTrue(clsid1.equals(clsid2)); assertTrue(clsid1.equals(clsid2));
fs2.close();
wb.close();
} }
/** /**
@ -573,7 +585,7 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
public void helpfulExceptionOnOldFiles() throws Exception { public void helpfulExceptionOnOldFiles() throws Exception {
InputStream excel4 = POIDataSamples.getSpreadSheetInstance().openResourceAsStream("testEXCEL_4.xls"); InputStream excel4 = POIDataSamples.getSpreadSheetInstance().openResourceAsStream("testEXCEL_4.xls");
try { try {
new HSSFWorkbook(excel4); new HSSFWorkbook(excel4).close();
fail("Shouldn't be able to load an Excel 4 file"); fail("Shouldn't be able to load an Excel 4 file");
} catch (OldExcelFormatException e) { } catch (OldExcelFormatException e) {
assertContains(e.getMessage(), "BIFF4"); assertContains(e.getMessage(), "BIFF4");
@ -582,7 +594,7 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
InputStream excel5 = POIDataSamples.getSpreadSheetInstance().openResourceAsStream("testEXCEL_5.xls"); InputStream excel5 = POIDataSamples.getSpreadSheetInstance().openResourceAsStream("testEXCEL_5.xls");
try { try {
new HSSFWorkbook(excel5); new HSSFWorkbook(excel5).close();
fail("Shouldn't be able to load an Excel 5 file"); fail("Shouldn't be able to load an Excel 5 file");
} catch (OldExcelFormatException e) { } catch (OldExcelFormatException e) {
assertContains(e.getMessage(), "BIFF5"); assertContains(e.getMessage(), "BIFF5");
@ -591,7 +603,7 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
InputStream excel95 = POIDataSamples.getSpreadSheetInstance().openResourceAsStream("testEXCEL_95.xls"); InputStream excel95 = POIDataSamples.getSpreadSheetInstance().openResourceAsStream("testEXCEL_95.xls");
try { try {
new HSSFWorkbook(excel95); new HSSFWorkbook(excel95).close();
fail("Shouldn't be able to load an Excel 95 file"); fail("Shouldn't be able to load an Excel 95 file");
} catch (OldExcelFormatException e) { } catch (OldExcelFormatException e) {
assertContains(e.getMessage(), "BIFF5"); assertContains(e.getMessage(), "BIFF5");
@ -607,28 +619,37 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
public void differentPOIFS() throws Exception { public void differentPOIFS() throws Exception {
// Open the two filesystems // Open the two filesystems
DirectoryNode[] files = new DirectoryNode[2]; DirectoryNode[] files = new DirectoryNode[2];
files[0] = (new POIFSFileSystem(HSSFTestDataSamples.openSampleFileStream("Simple.xls"))).getRoot(); POIFSFileSystem poifsFileSystem = new POIFSFileSystem(HSSFTestDataSamples.openSampleFileStream("Simple.xls"));
NPOIFSFileSystem npoifsFileSystem = new NPOIFSFileSystem(HSSFTestDataSamples.getSampleFile("Simple.xls"));
try { try {
files[1] = npoifsFileSystem.getRoot(); files[0] = poifsFileSystem.getRoot();
NPOIFSFileSystem npoifsFileSystem = new NPOIFSFileSystem(HSSFTestDataSamples.getSampleFile("Simple.xls"));
// Open without preserving nodes try {
for(DirectoryNode dir : files) { files[1] = npoifsFileSystem.getRoot();
HSSFWorkbook workbook = new HSSFWorkbook(dir, false);
HSSFSheet sheet = workbook.getSheetAt(0); // Open without preserving nodes
HSSFCell cell = sheet.getRow(0).getCell(0); for(DirectoryNode dir : files) {
assertEquals("replaceMe", cell .getRichStringCellValue().getString()); HSSFWorkbook workbook = new HSSFWorkbook(dir, false);
} HSSFSheet sheet = workbook.getSheetAt(0);
HSSFCell cell = sheet.getRow(0).getCell(0);
// Now re-check with preserving assertEquals("replaceMe", cell .getRichStringCellValue().getString());
for(DirectoryNode dir : files) {
HSSFWorkbook workbook = new HSSFWorkbook(dir, true); workbook.close();
HSSFSheet sheet = workbook.getSheetAt(0); }
HSSFCell cell = sheet.getRow(0).getCell(0);
assertEquals("replaceMe", cell .getRichStringCellValue().getString()); // Now re-check with preserving
for(DirectoryNode dir : files) {
HSSFWorkbook workbook = new HSSFWorkbook(dir, true);
HSSFSheet sheet = workbook.getSheetAt(0);
HSSFCell cell = sheet.getRow(0).getCell(0);
assertEquals("replaceMe", cell .getRichStringCellValue().getString());
workbook.close();
}
} finally {
npoifsFileSystem.close();
} }
} finally { } finally {
npoifsFileSystem.close(); poifsFileSystem.close();
} }
} }
@ -636,32 +657,39 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
public void wordDocEmbeddedInXls() throws IOException { public void wordDocEmbeddedInXls() throws IOException {
// Open the two filesystems // Open the two filesystems
DirectoryNode[] files = new DirectoryNode[2]; DirectoryNode[] files = new DirectoryNode[2];
files[0] = (new POIFSFileSystem(HSSFTestDataSamples.openSampleFileStream("WithEmbeddedObjects.xls"))).getRoot(); POIFSFileSystem poifsFileSystem = new POIFSFileSystem(HSSFTestDataSamples.openSampleFileStream("WithEmbeddedObjects.xls"));
NPOIFSFileSystem npoifsFileSystem = new NPOIFSFileSystem(HSSFTestDataSamples.getSampleFile("WithEmbeddedObjects.xls"));
try { try {
files[1] = npoifsFileSystem.getRoot(); files[0] = poifsFileSystem.getRoot();
NPOIFSFileSystem npoifsFileSystem = new NPOIFSFileSystem(HSSFTestDataSamples.getSampleFile("WithEmbeddedObjects.xls"));
// Check the embedded parts try {
for(DirectoryNode root : files) { files[1] = npoifsFileSystem.getRoot();
HSSFWorkbook hw = new HSSFWorkbook(root, true);
List<HSSFObjectData> objects = hw.getAllEmbeddedObjects(); // Check the embedded parts
boolean found = false; for(DirectoryNode root : files) {
for (int i = 0; i < objects.size(); i++) { HSSFWorkbook hw = new HSSFWorkbook(root, true);
HSSFObjectData embeddedObject = objects.get(i); List<HSSFObjectData> objects = hw.getAllEmbeddedObjects();
if (embeddedObject.hasDirectoryEntry()) { boolean found = false;
DirectoryEntry dir = embeddedObject.getDirectory(); for (int i = 0; i < objects.size(); i++) {
if (dir instanceof DirectoryNode) { HSSFObjectData embeddedObject = objects.get(i);
DirectoryNode dNode = (DirectoryNode)dir; if (embeddedObject.hasDirectoryEntry()) {
if (hasEntry(dNode,"WordDocument")) { DirectoryEntry dir = embeddedObject.getDirectory();
found = true; if (dir instanceof DirectoryNode) {
} DirectoryNode dNode = (DirectoryNode)dir;
} if (hasEntry(dNode,"WordDocument")) {
} found = true;
} }
assertTrue(found); }
}
}
assertTrue(found);
hw.close();
}
} finally {
npoifsFileSystem.close();
} }
} finally { } finally {
npoifsFileSystem.close(); poifsFileSystem.close();
} }
} }
@ -682,9 +710,12 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
assertEquals("Root xls", wb.getSheetAt(0).getRow(0).getCell(0).getStringCellValue()); assertEquals("Root xls", wb.getSheetAt(0).getRow(0).getCell(0).getStringCellValue());
// Will switch to POIFS // Will switch to POIFS
wb = HSSFTestDataSamples.writeOutAndReadBack(wb); HSSFWorkbook wbBack = HSSFTestDataSamples.writeOutAndReadBack(wb);
assertEquals(3, wb.getNumberOfSheets()); assertEquals(3, wbBack.getNumberOfSheets());
assertEquals("Root xls", wb.getSheetAt(0).getRow(0).getCell(0).getStringCellValue()); assertEquals("Root xls", wbBack.getSheetAt(0).getRow(0).getCell(0).getStringCellValue());
wbBack.close();
wb.close();
} finally { } finally {
fs.close(); fs.close();
} }
@ -694,7 +725,7 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
} }
@Test @Test
public void cellStylesLimit() { public void cellStylesLimit() throws IOException {
HSSFWorkbook wb = new HSSFWorkbook(); HSSFWorkbook wb = new HSSFWorkbook();
int numBuiltInStyles = wb.getNumCellStyles(); int numBuiltInStyles = wb.getNumCellStyles();
int MAX_STYLES = 4030; int MAX_STYLES = 4030;
@ -712,10 +743,12 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
"You can define up to 4000 styles in a .xls workbook", e.getMessage()); "You can define up to 4000 styles in a .xls workbook", e.getMessage());
} }
assertEquals(MAX_STYLES, wb.getNumCellStyles()); assertEquals(MAX_STYLES, wb.getNumCellStyles());
wb.close();
} }
@Test @Test
public void setSheetOrderHSSF(){ public void setSheetOrderHSSF() throws IOException{
HSSFWorkbook wb = new HSSFWorkbook(); HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet s1 = wb.createSheet("first sheet"); HSSFSheet s1 = wb.createSheet("first sheet");
HSSFSheet s2 = wb.createSheet("other sheet"); HSSFSheet s2 = wb.createSheet("other sheet");
@ -769,6 +802,8 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
HSSFConditionalFormatting cf = sheetCF.getConditionalFormattingAt(0); HSSFConditionalFormatting cf = sheetCF.getConditionalFormattingAt(0);
assertEquals("'first sheet'!D1", cf.getRule(0).getFormula1()); assertEquals("'first sheet'!D1", cf.getRule(0).getFormula1());
assertEquals("'other sheet'!D1", cf.getRule(0).getFormula2()); assertEquals("'other sheet'!D1", cf.getRule(0).getFormula2());
wb.close();
} }
private boolean hasEntry(DirectoryNode dirNode, String entryName) { private boolean hasEntry(DirectoryNode dirNode, String entryName) {
@ -821,8 +856,9 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
@Test @Test
public void selectedSheetShort() { public void selectedSheetShort() throws IOException {
HSSFWorkbook wb=new HSSFWorkbook(); HSSFWorkbook wb=new HSSFWorkbook();
HSSFSheet sheet1 = wb.createSheet("Sheet1"); HSSFSheet sheet1 = wb.createSheet("Sheet1");
HSSFSheet sheet2 = wb.createSheet("Sheet2"); HSSFSheet sheet2 = wb.createSheet("Sheet2");
HSSFSheet sheet3 = wb.createSheet("Sheet3"); HSSFSheet sheet3 = wb.createSheet("Sheet3");
@ -840,13 +876,9 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
// Demonstrate bug 44525: // Demonstrate bug 44525:
// Well... not quite, since isActive + isSelected were also added in the same bug fix // Well... not quite, since isActive + isSelected were also added in the same bug fix
if (sheet1.isSelected()) { assertFalse("Identified bug 44523 a", sheet1.isSelected());
throw new AssertionFailedError("Identified bug 44523 a");
}
wb.setActiveSheet(1); wb.setActiveSheet(1);
if (sheet1.isActive()) { assertFalse("Identified bug 44523 b", sheet1.isActive());
throw new AssertionFailedError("Identified bug 44523 b");
}
confirmActiveSelected(sheet1, false); confirmActiveSelected(sheet1, false);
confirmActiveSelected(sheet2, true); confirmActiveSelected(sheet2, true);
@ -857,10 +889,12 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
wb.setDisplayedTab((short)2); wb.setDisplayedTab((short)2);
assertEquals(2, wb.getFirstVisibleTab()); assertEquals(2, wb.getFirstVisibleTab());
assertEquals(2, wb.getDisplayedTab()); assertEquals(2, wb.getDisplayedTab());
wb.close();
} }
@Test @Test
public void addSheetTwice() { public void addSheetTwice() throws IOException {
HSSFWorkbook wb=new HSSFWorkbook(); HSSFWorkbook wb=new HSSFWorkbook();
HSSFSheet sheet1 = wb.createSheet("Sheet1"); HSSFSheet sheet1 = wb.createSheet("Sheet1");
assertNotNull(sheet1); assertNotNull(sheet1);
@ -870,10 +904,12 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
assertTrue(e.getMessage(), e.getMessage().contains("already contains a sheet of this name")); assertTrue(e.getMessage(), e.getMessage().contains("already contains a sheet of this name"));
} }
wb.close();
} }
@Test @Test
public void getSheetIndex() { public void getSheetIndex() throws IOException {
HSSFWorkbook wb=new HSSFWorkbook(); HSSFWorkbook wb=new HSSFWorkbook();
HSSFSheet sheet1 = wb.createSheet("Sheet1"); HSSFSheet sheet1 = wb.createSheet("Sheet1");
HSSFSheet sheet2 = wb.createSheet("Sheet2"); HSSFSheet sheet2 = wb.createSheet("Sheet2");
@ -894,11 +930,13 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
assertEquals(0, wb.getSheetIndex(sheet2)); assertEquals(0, wb.getSheetIndex(sheet2));
assertEquals(1, wb.getSheetIndex(sheet3)); assertEquals(1, wb.getSheetIndex(sheet3));
assertEquals(-1, wb.getSheetIndex(sheet4)); assertEquals(-1, wb.getSheetIndex(sheet4));
wb.close();
} }
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
@Test @Test
public void getExternSheetIndex() { public void getExternSheetIndex() throws IOException {
HSSFWorkbook wb=new HSSFWorkbook(); HSSFWorkbook wb=new HSSFWorkbook();
wb.createSheet("Sheet1"); wb.createSheet("Sheet1");
wb.createSheet("Sheet2"); wb.createSheet("Sheet2");
@ -914,20 +952,24 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
assertEquals(1, wb.getSheetIndexFromExternSheetIndex(1)); assertEquals(1, wb.getSheetIndexFromExternSheetIndex(1));
assertEquals(-1, wb.getSheetIndexFromExternSheetIndex(2)); assertEquals(-1, wb.getSheetIndexFromExternSheetIndex(2));
assertEquals(-1, wb.getSheetIndexFromExternSheetIndex(100)); assertEquals(-1, wb.getSheetIndexFromExternSheetIndex(100));
wb.close();
} }
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
@Test @Test
public void sstString() { public void sstString() throws IOException {
HSSFWorkbook wb=new HSSFWorkbook(); HSSFWorkbook wb=new HSSFWorkbook();
int sst = wb.addSSTString("somestring"); int sst = wb.addSSTString("somestring");
assertEquals("somestring", wb.getSSTString(sst)); assertEquals("somestring", wb.getSSTString(sst));
//assertNull(wb.getSSTString(sst+1)); //assertNull(wb.getSSTString(sst+1));
wb.close();
} }
@Test @Test
public void names() { public void names() throws IOException {
HSSFWorkbook wb=new HSSFWorkbook(); HSSFWorkbook wb=new HSSFWorkbook();
try { try {
@ -961,27 +1003,40 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
assertTrue(e.getMessage(), e.getMessage().contains("outside the allowable range")); assertTrue(e.getMessage(), e.getMessage().contains("outside the allowable range"));
} }
wb.close();
} }
@Test @Test
public void testMethods() { public void testMethods() throws IOException {
HSSFWorkbook wb=new HSSFWorkbook(); HSSFWorkbook wb=new HSSFWorkbook();
wb.insertChartRecord(); wb.insertChartRecord();
//wb.dumpDrawingGroupRecords(true); //wb.dumpDrawingGroupRecords(true);
//wb.dumpDrawingGroupRecords(false); //wb.dumpDrawingGroupRecords(false);
wb.close();
} }
@Test @Test
public void writeProtection() { public void writeProtection() throws IOException {
HSSFWorkbook wb=new HSSFWorkbook(); HSSFWorkbook wb=new HSSFWorkbook();
assertFalse(wb.isWriteProtected()); assertFalse(wb.isWriteProtected());
wb.writeProtectWorkbook("mypassword", "myuser"); wb.writeProtectWorkbook("mypassword", "myuser");
assertTrue(wb.isWriteProtected()); assertTrue(wb.isWriteProtected());
// OutputStream os = new FileOutputStream("/tmp/protected.xls");
// try {
// wb.write(os);
// } finally {
// os.close();
// }
wb.unwriteProtectWorkbook(); wb.unwriteProtectWorkbook();
assertFalse(wb.isWriteProtected()); assertFalse(wb.isWriteProtected());
wb.close();
} }
@Test @Test

View File

@ -62,14 +62,18 @@ public class TestDateParser {
public void testShouldParseValidDate() throws EvaluationException { public void testShouldParseValidDate() throws EvaluationException {
Calendar expDate = LocaleUtil.getLocaleCalendar(1984, Calendar.OCTOBER, 20); Calendar expDate = LocaleUtil.getLocaleCalendar(1984, Calendar.OCTOBER, 20);
Calendar actDate = DateParser.parseDate("1984/10/20"); Calendar actDate = DateParser.parseDate("1984/10/20");
assertEquals(expDate, actDate); assertEquals("Had: " + expDate.getTime() + " and " + actDate.getTime() + "/" +
expDate.getTimeInMillis() + "ms and " + actDate.getTimeInMillis() + "ms",
expDate, actDate);
} }
@Test @Test
public void testShouldIgnoreTimestamp() throws EvaluationException { public void testShouldIgnoreTimestamp() throws EvaluationException {
Calendar expDate = LocaleUtil.getLocaleCalendar(1984, Calendar.OCTOBER, 20); Calendar expDate = LocaleUtil.getLocaleCalendar(1984, Calendar.OCTOBER, 20);
Calendar actDate = DateParser.parseDate("1984/10/20 12:34:56"); Calendar actDate = DateParser.parseDate("1984/10/20 12:34:56");
assertEquals(expDate, actDate); assertEquals("Had: " + expDate.getTime() + " and " + actDate.getTime() + "/" +
expDate.getTimeInMillis() + "ms and " + actDate.getTimeInMillis() + "ms",
expDate, actDate);
} }
} }