From fbcf869f48e696a28ea364b8ff394476a96cdd21 Mon Sep 17 00:00:00 2001 From: Andreas Beeker Date: Sat, 12 Sep 2015 18:45:07 +0000 Subject: [PATCH] fix eclipse warning - mostly generics cosmetics close resources in tests junit4 conversions convert spreadsheet based formular test to junit parameterized tests git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1702659 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/hssf/view/SVTableModel.java | 5 +- .../ExtendableTreeCellRenderer.java | 18 +- .../poi/poifs/poibrowser/POIBrowser.java | 15 +- .../PropertySetDescriptorRenderer.java | 12 +- .../apache/poi/hssf/model/InternalSheet.java | 10 +- .../org/apache/poi/hssf/record/Record.java | 16 +- .../hssf/usermodel/HSSFFormulaEvaluator.java | 12 +- .../org/apache/poi/hssf/util/HSSFColor.java | 16 +- .../eventfilesystem/POIFSReaderRegistry.java | 43 +- .../poi/sl/draw/geom/ExpressionParser.java | 8 +- .../org/apache/poi/ss/formula/Formula.java | 26 +- .../poi/ss/formula/eval/OperandResolver.java | 44 +-- .../poi/openxml4j/opc/TestFileHelper.java | 18 +- .../streaming/TestSXSSFDataValidation.java | 4 + .../usermodel/TestXSSFDataValidation.java | 18 +- .../poi/xssf/usermodel/TestXSSFName.java | 11 +- .../poi/hslf/dev/SlideShowRecordDumper.java | 2 +- .../AllEventUserModelTests.java | 22 +- .../TestFormatTrackingHSSFListener.java | 30 +- .../poi/hssf/record/TestSSTDeserializer.java | 44 ++- .../TestColumnInfoRecordsAggregate.java | 31 +- .../record/chart/AllChartRecordTests.java | 91 ++--- .../chart/TestChartTitleFormatRecord.java | 35 +- .../poi/hssf/usermodel/SanityChecker.java | 86 +++- .../poi/hssf/usermodel/TestBug42464.java | 42 +- .../hssf/usermodel/TestDataValidation.java | 152 ++++---- .../poi/hssf/usermodel/TestHSSFName.java | 99 +++-- .../poi/hssf/usermodel/TestSanityChecker.java | 16 +- .../poifs/storage/AllPOIFSStorageTests.java | 44 +-- .../poi/poifs/storage/TestBlockListImpl.java | 18 +- .../poi/poifs/storage/TestPropertyBlock.java | 29 +- .../poi/ss/formula/eval/TestFormulaBugs.java | 138 ++++--- .../function/AllFormulaFunctionTests.java | 20 +- .../ExcelFileFormatDocFunctionExtractor.java | 12 +- .../TestParseMissingBuiltInFuncs.java | 51 ++- .../functions/AllSpreadsheetBasedTests.java | 48 +++ .../BaseTestFunctionsFromSpreadsheet.java | 367 ++++++------------ .../TestCodeFunctionsFromSpreadsheet.java | 13 +- .../TestComplexFunctionsFromSpreadsheet.java | 13 +- .../TestDGetFunctionsFromSpreadsheet.java | 10 +- .../TestDStarFunctionsFromSpreadsheet.java | 10 +- .../TestDeltaFunctionsFromSpreadsheet.java | 16 +- ...estFactDoubleFunctionsFromSpreadsheet.java | 12 +- .../TestFixedFunctionsFromSpreadsheet.java | 11 +- .../TestImRealFunctionsFromSpreadsheet.java | 12 +- ...TestImaginaryFunctionsFromSpreadsheet.java | 12 +- .../TestIndexFunctionFromSpreadsheet.java | 11 +- .../TestIndirectFunctionFromSpreadsheet.java | 11 +- .../TestLookupFunctionsFromSpreadsheet.java | 9 +- .../TestMatchFunctionsFromSpreadsheet.java | 9 +- .../TestQuotientFunctionsFromSpreadsheet.java | 13 +- .../TestReptFunctionsFromSpreadsheet.java | 13 +- .../TestRomanFunctionsFromSpreadsheet.java | 12 +- .../TestWeekNumFunctionsFromSpreadsheet.java | 12 +- ...stWeekNumFunctionsFromSpreadsheet2013.java | 12 +- .../ptg/TestExternalFunctionFormulas.java | 49 +-- .../ss/usermodel/BaseTestDataValidation.java | 12 +- .../poi/ss/usermodel/BaseTestNamedRange.java | 234 ++++++----- .../NumberRenderingSpreadsheetGenerator.java | 18 +- 59 files changed, 1160 insertions(+), 1017 deletions(-) create mode 100644 src/testcases/org/apache/poi/ss/formula/functions/AllSpreadsheetBasedTests.java diff --git a/src/examples/src/org/apache/poi/hssf/view/SVTableModel.java b/src/examples/src/org/apache/poi/hssf/view/SVTableModel.java index 170dacb697..5868a175df 100644 --- a/src/examples/src/org/apache/poi/hssf/view/SVTableModel.java +++ b/src/examples/src/org/apache/poi/hssf/view/SVTableModel.java @@ -25,6 +25,7 @@ import javax.swing.table.*; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.ss.usermodel.Row; import org.apache.poi.hssf.usermodel.HSSFCell; /** @@ -43,7 +44,7 @@ public class SVTableModel extends AbstractTableModel { public SVTableModel(HSSFSheet st) { this.st = st; - Iterator i = st.rowIterator(); + Iterator i = st.rowIterator(); while (i.hasNext()) { HSSFRow row = (HSSFRow)i.next(); @@ -69,7 +70,7 @@ public class SVTableModel extends AbstractTableModel { return st.getLastRowNum() + 1; } - public Class getColumnClass(int c) { + public Class getColumnClass(int c) { return HSSFCell.class; } diff --git a/src/examples/src/org/apache/poi/poifs/poibrowser/ExtendableTreeCellRenderer.java b/src/examples/src/org/apache/poi/poifs/poibrowser/ExtendableTreeCellRenderer.java index 7f73ebce46..ee58728640 100644 --- a/src/examples/src/org/apache/poi/poifs/poibrowser/ExtendableTreeCellRenderer.java +++ b/src/examples/src/org/apache/poi/poifs/poibrowser/ExtendableTreeCellRenderer.java @@ -43,18 +43,18 @@ public class ExtendableTreeCellRenderer implements TreeCellRenderer /** *

Maps classes to renderers.

*/ - protected Map renderers; + protected Map,TreeCellRenderer> renderers; public ExtendableTreeCellRenderer() { - renderers = new HashMap(); + renderers = new HashMap,TreeCellRenderer>(); register(Object.class, new DefaultTreeCellRenderer() { public Component getTreeCellRendererComponent - (JTree tree, Object value, boolean selected, - boolean expanded, boolean leaf, int row, boolean hasFocus) + (JTree tree, Object value, boolean selectedCell, + boolean expanded, boolean leaf, int row, boolean hasCellFocus) { final String s = value.toString(); final JLabel l = new JLabel(s + " "); @@ -73,7 +73,7 @@ public class ExtendableTreeCellRenderer implements TreeCellRenderer /** *

Registers a renderer for a class.

**/ - public void register(final Class c, final TreeCellRenderer renderer) + public void register(final Class c, final TreeCellRenderer renderer) { renderers.put(c, renderer); } @@ -84,7 +84,7 @@ public class ExtendableTreeCellRenderer implements TreeCellRenderer *

Unregisters a renderer for a class. The renderer for the * {@link Object} class cannot be unregistered.

*/ - public void unregister(final Class c) + public void unregister(final Class c) { if (c == Object.class) throw new IllegalArgumentException @@ -127,15 +127,15 @@ public class ExtendableTreeCellRenderer implements TreeCellRenderer /** *

Find the renderer for the specified class.

*/ - protected TreeCellRenderer findRenderer(final Class c) + protected TreeCellRenderer findRenderer(final Class c) { - final TreeCellRenderer r = (TreeCellRenderer) renderers.get(c); + final TreeCellRenderer r = renderers.get(c); if (r != null) /* The class has a renderer. */ return r; /* The class has no renderer, try the superclass, if any. */ - final Class superclass = c.getSuperclass(); + final Class superclass = c.getSuperclass(); if (superclass != null) { return findRenderer(superclass); } diff --git a/src/examples/src/org/apache/poi/poifs/poibrowser/POIBrowser.java b/src/examples/src/org/apache/poi/poifs/poibrowser/POIBrowser.java index 7624ed2125..a57c48d678 100644 --- a/src/examples/src/org/apache/poi/poifs/poibrowser/POIBrowser.java +++ b/src/examples/src/org/apache/poi/poifs/poibrowser/POIBrowser.java @@ -89,19 +89,16 @@ public class POIBrowser extends JFrame for (int i = 0; i < args.length; i++) { final String filename = args[i]; - try - { + try { + FileInputStream fis = new FileInputStream(filename); POIFSReader r = new POIFSReader(); r.registerListener(new TreeReaderListener(filename, rootNode)); - r.read(new FileInputStream(filename)); + r.read(fis); + fis.close(); displayedFiles++; - } - catch (IOException ex) - { + } catch (IOException ex) { System.err.println(filename + ": " + ex); - } - catch (Exception t) - { + } catch (Exception t) { System.err.println("Unexpected exception while reading \"" + filename + "\":"); t.printStackTrace(System.err); diff --git a/src/examples/src/org/apache/poi/poifs/poibrowser/PropertySetDescriptorRenderer.java b/src/examples/src/org/apache/poi/poifs/poibrowser/PropertySetDescriptorRenderer.java index 75277d2f34..297fa908c9 100644 --- a/src/examples/src/org/apache/poi/poifs/poibrowser/PropertySetDescriptorRenderer.java +++ b/src/examples/src/org/apache/poi/poifs/poibrowser/PropertySetDescriptorRenderer.java @@ -45,11 +45,11 @@ public class PropertySetDescriptorRenderer extends DocumentDescriptorRenderer public Component getTreeCellRendererComponent(final JTree tree, final Object value, - final boolean selected, + final boolean selectedCell, final boolean expanded, final boolean leaf, final int row, - final boolean hasFocus) + final boolean hasCellFocus) { final PropertySetDescriptor d = (PropertySetDescriptor) ((DefaultMutableTreeNode) value).getUserObject(); @@ -96,7 +96,7 @@ public class PropertySetDescriptorRenderer extends DocumentDescriptorRenderer text.append("\nSecurity: " + si.getSecurity()); } - if (selected) + if (selectedCell) Util.invert(text); return p; } @@ -107,13 +107,13 @@ public class PropertySetDescriptorRenderer extends DocumentDescriptorRenderer *

Returns a string representation of a list of {@link * Section}s.

*/ - protected String sectionsToString(final List sections) + protected String sectionsToString(final List
sections) { final StringBuffer b = new StringBuffer(); int count = 1; - for (Iterator i = sections.iterator(); i.hasNext();) + for (Iterator
i = sections.iterator(); i.hasNext();) { - Section s = (Section) i.next(); + Section s = i.next(); String d = toString(s, "Section " + count++); b.append(d); } diff --git a/src/java/org/apache/poi/hssf/model/InternalSheet.java b/src/java/org/apache/poi/hssf/model/InternalSheet.java index 078cfaa3df..7eb76c43b3 100644 --- a/src/java/org/apache/poi/hssf/model/InternalSheet.java +++ b/src/java/org/apache/poi/hssf/model/InternalSheet.java @@ -254,12 +254,12 @@ public final class InternalSheet { if (recSid == BOFRecord.sid) { ChartSubstreamRecordAggregate chartAgg = new ChartSubstreamRecordAggregate(rs); - if (false) { - // TODO - would like to keep the chart aggregate packed, but one unit test needs attention - records.add(chartAgg); - } else { +// if (false) { +// // TODO - would like to keep the chart aggregate packed, but one unit test needs attention +// records.add(chartAgg); +// } else { spillAggregate(chartAgg, records); - } +// } continue; } diff --git a/src/java/org/apache/poi/hssf/record/Record.java b/src/java/org/apache/poi/hssf/record/Record.java index b81a666f00..e1d54a01cb 100644 --- a/src/java/org/apache/poi/hssf/record/Record.java +++ b/src/java/org/apache/poi/hssf/record/Record.java @@ -62,14 +62,14 @@ public abstract class Record extends RecordBase { @Override public Object clone() { - if (false) { - // TODO - implement clone in a more standardised way - try { - return super.clone(); - } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); - } - } +// if (false) { +// // TODO - implement clone in a more standardised way +// try { +// return super.clone(); +// } catch (CloneNotSupportedException e) { +// throw new RuntimeException(e); +// } +// } throw new RuntimeException("The class "+getClass().getName()+" needs to define a clone method"); } diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java b/src/java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java index 5c3be7a119..502312417d 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java @@ -54,9 +54,9 @@ public class HSSFFormulaEvaluator implements FormulaEvaluator, WorkbookEvaluator @Deprecated public HSSFFormulaEvaluator(HSSFSheet sheet, HSSFWorkbook workbook) { this(workbook); - if (false) { - sheet.toString(); // suppress unused parameter compiler warning - } +// if (false) { +// sheet.toString(); // suppress unused parameter compiler warning +// } this._book = workbook; } public HSSFFormulaEvaluator(HSSFWorkbook workbook) { @@ -122,9 +122,9 @@ public class HSSFFormulaEvaluator implements FormulaEvaluator, WorkbookEvaluator @Deprecated public void setCurrentRow(HSSFRow row) { // do nothing - if (false) { - row.getClass(); // suppress unused parameter compiler warning - } +// if (false) { +// row.getClass(); // suppress unused parameter compiler warning +// } } /** diff --git a/src/java/org/apache/poi/hssf/util/HSSFColor.java b/src/java/org/apache/poi/hssf/util/HSSFColor.java index d7a1cb587e..f6af086580 100644 --- a/src/java/org/apache/poi/hssf/util/HSSFColor.java +++ b/src/java/org/apache/poi/hssf/util/HSSFColor.java @@ -90,14 +90,14 @@ public class HSSFColor implements Color { // most colors don't have a second index continue; } - if (result.containsKey(index2)) { - if (false) { // Many of the second indexes clash - HSSFColor prevColor = (HSSFColor)result.get(index2); - throw new RuntimeException("Dup color index (" + index2 - + ") for colors (" + prevColor.getClass().getName() - + "),(" + color.getClass().getName() + ")"); - } - } +// if (result.containsKey(index2)) { +// if (false) { // Many of the second indexes clash +// HSSFColor prevColor = (HSSFColor)result.get(index2); +// throw new RuntimeException("Dup color index (" + index2 +// + ") for colors (" + prevColor.getClass().getName() +// + "),(" + color.getClass().getName() + ")"); +// } +// } result.put(index2, color); } return result; diff --git a/src/java/org/apache/poi/poifs/eventfilesystem/POIFSReaderRegistry.java b/src/java/org/apache/poi/poifs/eventfilesystem/POIFSReaderRegistry.java index 86a40c131c..1ea85f7c81 100644 --- a/src/java/org/apache/poi/poifs/eventfilesystem/POIFSReaderRegistry.java +++ b/src/java/org/apache/poi/poifs/eventfilesystem/POIFSReaderRegistry.java @@ -36,20 +36,20 @@ class POIFSReaderRegistry { // the POIFSReaderListeners who listen to all POIFSReaderEvents - private Set omnivorousListeners; + private Set omnivorousListeners; // Each mapping in this Map has a key consisting of a // POIFSReaderListener and a value cosisting of a Set of // DocumentDescriptors for the documents that POIFSReaderListener // is interested in; used to efficiently manage the registry - private Map selectiveListeners; + private Map> selectiveListeners; // Each mapping in this Map has a key consisting of a // DocumentDescriptor and a value consisting of a Set of // POIFSReaderListeners for the document matching that // DocumentDescriptor; used when a document is found, to quickly // get the listeners interested in that document - private Map chosenDocumentDescriptors; + private Map> chosenDocumentDescriptors; /** * Construct the registry @@ -57,9 +57,9 @@ class POIFSReaderRegistry POIFSReaderRegistry() { - omnivorousListeners = new HashSet(); - selectiveListeners = new HashMap(); - chosenDocumentDescriptors = new HashMap(); + omnivorousListeners = new HashSet(); + selectiveListeners = new HashMap>(); + chosenDocumentDescriptors = new HashMap>(); } /** @@ -79,13 +79,13 @@ class POIFSReaderRegistry // not an omnivorous listener (if it was, this method is a // no-op) - Set descriptors = ( Set ) selectiveListeners.get(listener); + Set descriptors = selectiveListeners.get(listener); if (descriptors == null) { // this listener has not registered before - descriptors = new HashSet(); + descriptors = new HashSet(); selectiveListeners.put(listener, descriptors); } DocumentDescriptor descriptor = new DocumentDescriptor(path, @@ -97,14 +97,14 @@ class POIFSReaderRegistry // this listener wasn't already listening for this // document -- add the listener to the set of // listeners for this document - Set listeners = - ( Set ) chosenDocumentDescriptors.get(descriptor); + Set listeners = + chosenDocumentDescriptors.get(descriptor); if (listeners == null) { // nobody was listening for this document before - listeners = new HashSet(); + listeners = new HashSet(); chosenDocumentDescriptors.put(descriptor, listeners); } listeners.add(listener); @@ -141,31 +141,30 @@ class POIFSReaderRegistry * @return an Iterator POIFSReaderListeners; may be empty */ - Iterator getListeners(final POIFSDocumentPath path, final String name) + Iterator getListeners(final POIFSDocumentPath path, final String name) { - Set rval = new HashSet(omnivorousListeners); - Set selectiveListeners = - ( Set ) chosenDocumentDescriptors.get(new DocumentDescriptor(path, - name)); + Set rval = new HashSet(omnivorousListeners); + Set selectiveListenersInner = + chosenDocumentDescriptors.get(new DocumentDescriptor(path, name)); - if (selectiveListeners != null) + if (selectiveListenersInner != null) { - rval.addAll(selectiveListeners); + rval.addAll(selectiveListenersInner); } return rval.iterator(); } private void removeSelectiveListener(final POIFSReaderListener listener) { - Set selectedDescriptors = ( Set ) selectiveListeners.remove(listener); + Set selectedDescriptors = selectiveListeners.remove(listener); if (selectedDescriptors != null) { - Iterator iter = selectedDescriptors.iterator(); + Iterator iter = selectedDescriptors.iterator(); while (iter.hasNext()) { - dropDocument(listener, ( DocumentDescriptor ) iter.next()); + dropDocument(listener, iter.next()); } } } @@ -173,7 +172,7 @@ class POIFSReaderRegistry private void dropDocument(final POIFSReaderListener listener, final DocumentDescriptor descriptor) { - Set listeners = ( Set ) chosenDocumentDescriptors.get(descriptor); + Set listeners = chosenDocumentDescriptors.get(descriptor); listeners.remove(listener); if (listeners.size() == 0) diff --git a/src/java/org/apache/poi/sl/draw/geom/ExpressionParser.java b/src/java/org/apache/poi/sl/draw/geom/ExpressionParser.java index f1f0193a89..682869e967 100644 --- a/src/java/org/apache/poi/sl/draw/geom/ExpressionParser.java +++ b/src/java/org/apache/poi/sl/draw/geom/ExpressionParser.java @@ -29,7 +29,9 @@ import java.util.regex.Pattern; * @author Yegor Kozlov */ public class ExpressionParser { - static final HashMap impls = new HashMap(); + static final HashMap> impls = + new HashMap>(); + static { impls.put("\\*/ +([\\-\\w]+) +([\\-\\w]+) +([\\-\\w]+)", MultiplyDivideExpression.class); impls.put("\\+- +([\\-\\w]+) +([\\-\\w]+) +([\\-\\w]+)( 0)?", AddSubtractExpression.class); @@ -56,9 +58,9 @@ public class ExpressionParser { Pattern ptrn = Pattern.compile(regexp); Matcher m = ptrn.matcher(str); if(m.matches()) { - Class c = impls.get(regexp); + Class c = impls.get(regexp); try { - return (Expression)c.getDeclaredConstructor(Matcher.class).newInstance(m); + return c.getDeclaredConstructor(Matcher.class).newInstance(m); } catch (Exception e){ throw new RuntimeException(e); } diff --git a/src/java/org/apache/poi/ss/formula/Formula.java b/src/java/org/apache/poi/ss/formula/Formula.java index 52b92ec4b1..48c7f391be 100644 --- a/src/java/org/apache/poi/ss/formula/Formula.java +++ b/src/java/org/apache/poi/ss/formula/Formula.java @@ -44,19 +44,19 @@ public class Formula { private Formula(byte[] byteEncoding, int encodedTokenLen) { _byteEncoding = byteEncoding; _encodedTokenLen = encodedTokenLen; - if (false) { // set to true to eagerly check Ptg decoding - LittleEndianByteArrayInputStream in = new LittleEndianByteArrayInputStream(byteEncoding); - Ptg.readTokens(encodedTokenLen, in); - int nUnusedBytes = _byteEncoding.length - in.getReadIndex(); - if (nUnusedBytes > 0) { - // TODO - this seems to occur when IntersectionPtg is present - // This example file "IntersectionPtg.xls" - // used by test: TestIntersectionPtg.testReading() - // has 10 bytes unused at the end of the formula - // 10 extra bytes are just 0x01 and 0x00 - System.out.println(nUnusedBytes + " unused bytes at end of formula"); - } - } +// if (false) { // set to true to eagerly check Ptg decoding +// LittleEndianByteArrayInputStream in = new LittleEndianByteArrayInputStream(byteEncoding); +// Ptg.readTokens(encodedTokenLen, in); +// int nUnusedBytes = _byteEncoding.length - in.getReadIndex(); +// if (nUnusedBytes > 0) { +// // TODO - this seems to occur when IntersectionPtg is present +// // This example file "IntersectionPtg.xls" +// // used by test: TestIntersectionPtg.testReading() +// // has 10 bytes unused at the end of the formula +// // 10 extra bytes are just 0x01 and 0x00 +// System.out.println(nUnusedBytes + " unused bytes at end of formula"); +// } +// } } /** * Convenience method for {@link #read(int, LittleEndianInput, int)} diff --git a/src/java/org/apache/poi/ss/formula/eval/OperandResolver.java b/src/java/org/apache/poi/ss/formula/eval/OperandResolver.java index af4cb81b31..c61594f465 100644 --- a/src/java/org/apache/poi/ss/formula/eval/OperandResolver.java +++ b/src/java/org/apache/poi/ss/formula/eval/OperandResolver.java @@ -130,28 +130,28 @@ public final class OperandResolver { private static ValueEval chooseSingleElementFromAreaInternal(AreaEval ae, int srcCellRow, int srcCellCol) throws EvaluationException { - if(false) { - // this is too simplistic - if(ae.containsRow(srcCellRow) && ae.containsColumn(srcCellCol)) { - throw new EvaluationException(ErrorEval.CIRCULAR_REF_ERROR); - } - /* - Circular references are not dealt with directly here, but it is worth noting some issues. - - ANY one of the return statements in this method could return a cell that is identical - to the one immediately being evaluated. The evaluating cell is identified by srcCellRow, - srcCellRow AND sheet. The sheet is not available in any nearby calling method, so that's - one reason why circular references are not easy to detect here. (The sheet of the returned - cell can be obtained from ae if it is an Area3DEval.) - - Another reason there's little value in attempting to detect circular references here is - that only direct circular references could be detected. If the cycle involved two or more - cells this method could not detect it. - - Logic to detect evaluation cycles of all kinds has been coded in EvaluationCycleDetector - (and FormulaEvaluator). - */ - } +// if(false) { +// // this is too simplistic +// if(ae.containsRow(srcCellRow) && ae.containsColumn(srcCellCol)) { +// throw new EvaluationException(ErrorEval.CIRCULAR_REF_ERROR); +// } +// /* +// Circular references are not dealt with directly here, but it is worth noting some issues. +// +// ANY one of the return statements in this method could return a cell that is identical +// to the one immediately being evaluated. The evaluating cell is identified by srcCellRow, +// srcCellRow AND sheet. The sheet is not available in any nearby calling method, so that's +// one reason why circular references are not easy to detect here. (The sheet of the returned +// cell can be obtained from ae if it is an Area3DEval.) +// +// Another reason there's little value in attempting to detect circular references here is +// that only direct circular references could be detected. If the cycle involved two or more +// cells this method could not detect it. +// +// Logic to detect evaluation cycles of all kinds has been coded in EvaluationCycleDetector +// (and FormulaEvaluator). +// */ +// } if (ae.isColumn()) { if(ae.isRow()) { diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestFileHelper.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestFileHelper.java index f15aedac2b..72dc40cee8 100644 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestFileHelper.java +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestFileHelper.java @@ -17,25 +17,27 @@ package org.apache.poi.openxml4j.opc; +import static org.junit.Assert.assertTrue; + import java.io.File; import java.util.TreeMap; import org.apache.poi.openxml4j.opc.internal.FileHelper; - -import junit.framework.TestCase; +import org.junit.Test; /** * Test TestFileHelper class. * * @author Julien Chable */ -public final class TestFileHelper extends TestCase { +public final class TestFileHelper { /** * TODO - use simple JDK methods on {@link File} instead:
* {@link File#getParentFile()} instead of {@link FileHelper#getDirectory(File) * {@link File#getName()} instead of {@link FileHelper#getFilename(File) */ + @Test public void testGetDirectory() { TreeMap expectedValue = new TreeMap(); expectedValue.put("/dir1/test.doc", "/dir1"); @@ -45,11 +47,11 @@ public final class TestFileHelper extends TestCase { File f1 = new File(expectedValue.get(filename)); File f2 = FileHelper.getDirectory(new File(filename)); - if (false) { - // YK: The original version asserted expected values against File#getAbsolutePath(): - assertTrue(expectedValue.get(filename).equalsIgnoreCase(f2.getAbsolutePath())); - // This comparison is platform dependent. A better approach is below - } +// if (false) { +// // YK: The original version asserted expected values against File#getAbsolutePath(): +// assertTrue(expectedValue.get(filename).equalsIgnoreCase(f2.getAbsolutePath())); +// // This comparison is platform dependent. A better approach is below +// } assertTrue(f1.equals(f2)); } } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFDataValidation.java b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFDataValidation.java index e18b3e22bb..2ee465b7cb 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFDataValidation.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFDataValidation.java @@ -16,6 +16,8 @@ ==================================================================== */ package org.apache.poi.xssf.streaming; +import static org.junit.Assert.assertEquals; + import java.util.List; import org.apache.poi.ss.usermodel.BaseTestDataValidation; @@ -25,6 +27,7 @@ import org.apache.poi.ss.usermodel.DataValidationHelper; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.util.CellRangeAddressList; import org.apache.poi.xssf.SXSSFITestDataProvider; +import org.junit.Test; public class TestSXSSFDataValidation extends BaseTestDataValidation { @@ -32,6 +35,7 @@ public class TestSXSSFDataValidation extends BaseTestDataValidation { super(SXSSFITestDataProvider.instance); } + @Test public void test53965() throws Exception { SXSSFWorkbook wb = new SXSSFWorkbook(); try { diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataValidation.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataValidation.java index 25474605a4..8be5121426 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataValidation.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataValidation.java @@ -16,6 +16,8 @@ ==================================================================== */ package org.apache.poi.xssf.usermodel; +import static org.junit.Assert.assertEquals; + import java.io.IOException; import java.math.BigDecimal; import java.util.List; @@ -34,6 +36,7 @@ import org.apache.poi.ss.util.CellRangeAddressList; import org.apache.poi.ss.util.CellReference; import org.apache.poi.xssf.XSSFITestDataProvider; import org.apache.poi.xssf.XSSFTestDataSamples; +import org.junit.Test; public class TestXSSFDataValidation extends BaseTestDataValidation { @@ -41,9 +44,10 @@ public class TestXSSFDataValidation extends BaseTestDataValidation { super(XSSFITestDataProvider.instance); } + @Test public void testAddValidations() throws Exception { - XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("DataValidations-49244.xlsx"); - Sheet sheet = workbook.getSheetAt(0); + XSSFWorkbook wb1 = XSSFTestDataSamples.openSampleWorkbook("DataValidations-49244.xlsx"); + Sheet sheet = wb1.getSheetAt(0); List dataValidations = ((XSSFSheet)sheet).getDataValidations(); /** @@ -232,9 +236,11 @@ public class TestXSSFDataValidation extends BaseTestDataValidation { } } - workbook = XSSFTestDataSamples.writeOutAndReadBack(workbook); - Sheet sheetAt = workbook.getSheetAt(0); + XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(wb1); + wb1.close(); + Sheet sheetAt = wb2.getSheetAt(0); assertEquals(lastKnownNumValidations,((XSSFSheet)sheetAt).getDataValidations().size()); + wb2.close(); } protected void setOtherValidationParameters(DataValidation validation) { @@ -247,6 +253,7 @@ public class TestXSSFDataValidation extends BaseTestDataValidation { validation.setSuppressDropDownArrow(yesNo); } + @Test public void test53965() throws Exception { XSSFWorkbook wb = new XSSFWorkbook(); try { @@ -271,6 +278,7 @@ public class TestXSSFDataValidation extends BaseTestDataValidation { } } + @Test public void testDefaultAllowBlank() throws IOException { XSSFWorkbook wb = new XSSFWorkbook(); try { @@ -286,6 +294,7 @@ public class TestXSSFDataValidation extends BaseTestDataValidation { } } + @Test public void testSetAllowBlankToFalse() throws IOException { XSSFWorkbook wb = new XSSFWorkbook(); try { @@ -303,6 +312,7 @@ public class TestXSSFDataValidation extends BaseTestDataValidation { } } + @Test public void testSetAllowBlankToTrue() throws IOException { XSSFWorkbook wb = new XSSFWorkbook(); try { diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFName.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFName.java index 21b74ae11f..3e0f0b1651 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFName.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFName.java @@ -18,7 +18,11 @@ package org.apache.poi.xssf.usermodel; import org.apache.poi.xssf.XSSFTestDataSamples; +import org.junit.Test; import org.apache.poi.xssf.XSSFITestDataProvider; + +import static org.junit.Assert.*; + import org.apache.poi.ss.usermodel.BaseTestNamedRange; import org.apache.poi.ss.util.CellRangeAddress; @@ -32,7 +36,8 @@ public final class TestXSSFName extends BaseTestNamedRange { } //TODO combine testRepeatingRowsAndColums() for HSSF and XSSF - public void testRepeatingRowsAndColums() { + @Test + public void testRepeatingRowsAndColums() throws Exception { // First test that setting RR&C for same sheet more than once only creates a // single Print_Titles built-in record XSSFWorkbook wb = new XSSFWorkbook(); @@ -69,7 +74,8 @@ public final class TestXSSFName extends BaseTestNamedRange { // Save and re-open XSSFWorkbook nwb = XSSFTestDataSamples.writeOutAndReadBack(wb); - + wb.close(); + assertEquals(1, nwb.getNumberOfNames()); nr1 = nwb.getNameAt(0); @@ -90,5 +96,6 @@ public final class TestXSSFName extends BaseTestNamedRange { sheet2.setRepeatingRows(null); sheet2.setRepeatingColumns(null); + nwb.close(); } } diff --git a/src/scratchpad/src/org/apache/poi/hslf/dev/SlideShowRecordDumper.java b/src/scratchpad/src/org/apache/poi/hslf/dev/SlideShowRecordDumper.java index 952426f53d..65038cce00 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/dev/SlideShowRecordDumper.java +++ b/src/scratchpad/src/org/apache/poi/hslf/dev/SlideShowRecordDumper.java @@ -244,7 +244,7 @@ public final class SlideShowRecordDumper { String rHexType = reverseHex(hexType); // Grab the hslf.record type - Class c = r.getClass(); + Class c = r.getClass(); String cname = c.toString(); if(cname.startsWith("class ")) { cname = cname.substring(6); diff --git a/src/testcases/org/apache/poi/hssf/eventusermodel/AllEventUserModelTests.java b/src/testcases/org/apache/poi/hssf/eventusermodel/AllEventUserModelTests.java index 41e3b86322..a5d9073759 100644 --- a/src/testcases/org/apache/poi/hssf/eventusermodel/AllEventUserModelTests.java +++ b/src/testcases/org/apache/poi/hssf/eventusermodel/AllEventUserModelTests.java @@ -17,22 +17,18 @@ package org.apache.poi.hssf.eventusermodel; -import junit.framework.Test; -import junit.framework.TestSuite; +import org.junit.runner.RunWith; +import org.junit.runners.Suite; /** * Collects all tests for org.apache.poi.hssf.eventusermodel. - * - * @author Josh Micich */ +@RunWith(Suite.class) +@Suite.SuiteClasses({ + TestEventWorkbookBuilder.class, + TestFormatTrackingHSSFListener.class, + TestHSSFEventFactory.class, + TestMissingRecordAwareHSSFListener.class +}) public class AllEventUserModelTests { - - public static Test suite() { - TestSuite result = new TestSuite(AllEventUserModelTests.class.getName()); - result.addTestSuite(TestEventWorkbookBuilder.class); - result.addTestSuite(TestFormatTrackingHSSFListener.class); - result.addTestSuite(TestHSSFEventFactory.class); - result.addTestSuite(TestMissingRecordAwareHSSFListener.class); - return result; - } } diff --git a/src/testcases/org/apache/poi/hssf/eventusermodel/TestFormatTrackingHSSFListener.java b/src/testcases/org/apache/poi/hssf/eventusermodel/TestFormatTrackingHSSFListener.java index ad144a2a37..1eb61509a6 100644 --- a/src/testcases/org/apache/poi/hssf/eventusermodel/TestFormatTrackingHSSFListener.java +++ b/src/testcases/org/apache/poi/hssf/eventusermodel/TestFormatTrackingHSSFListener.java @@ -16,23 +16,25 @@ ==================================================================== */ package org.apache.poi.hssf.eventusermodel; -import java.io.IOException; -import java.io.InputStream; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.io.File; import java.util.ArrayList; import java.util.List; -import junit.framework.TestCase; - import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.record.CellValueRecordInterface; import org.apache.poi.hssf.record.FormulaRecord; import org.apache.poi.hssf.record.NumberRecord; import org.apache.poi.hssf.record.Record; import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.junit.Test; /** * Tests for FormatTrackingHSSFListener */ -public final class TestFormatTrackingHSSFListener extends TestCase { +public final class TestFormatTrackingHSSFListener { private FormatTrackingHSSFListener listener; private MockHSSFListener mockListen; @@ -42,16 +44,14 @@ public final class TestFormatTrackingHSSFListener extends TestCase { listener = new FormatTrackingHSSFListener(mockListen); req.addListenerForAllRecords(listener); + File file = HSSFTestDataSamples.getSampleFile(filename); HSSFEventFactory factory = new HSSFEventFactory(); - try { - InputStream is = HSSFTestDataSamples.openSampleFileStream(filename); - POIFSFileSystem fs = new POIFSFileSystem(is); - factory.processWorkbookEvents(req, fs); - } catch (IOException e) { - throw new RuntimeException(e); - } + POIFSFileSystem fs = new POIFSFileSystem(file); + factory.processWorkbookEvents(req, fs); + fs.close(); } + @Test public void testFormats() throws Exception { processFile("MissingBits.xls"); @@ -68,6 +68,7 @@ public final class TestFormatTrackingHSSFListener extends TestCase { * exceptions thrown, but in future we might also * want to check the exact strings! */ + @Test public void testTurnToString() throws Exception { String[] files = new String[] { "45365.xls", "45365-2.xls", "MissingBits.xls" @@ -81,8 +82,7 @@ public final class TestFormatTrackingHSSFListener extends TestCase { // Now check we can turn all the numeric // cells into strings without error - for(int i=0; i _records = new ArrayList(); public void processRecord(Record record) { _records.add(record); diff --git a/src/testcases/org/apache/poi/hssf/record/TestSSTDeserializer.java b/src/testcases/org/apache/poi/hssf/record/TestSSTDeserializer.java index b16d2f83c7..c7797115a4 100644 --- a/src/testcases/org/apache/poi/hssf/record/TestSSTDeserializer.java +++ b/src/testcases/org/apache/poi/hssf/record/TestSSTDeserializer.java @@ -17,21 +17,23 @@ package org.apache.poi.hssf.record; +import static org.junit.Assert.assertEquals; + import java.io.IOException; import java.io.InputStream; -import junit.framework.TestCase; - import org.apache.poi.hssf.HSSFTestDataSamples; +import org.apache.poi.hssf.record.common.UnicodeString; import org.apache.poi.util.HexRead; import org.apache.poi.util.IntMapper; +import org.junit.Test; /** * Exercise the SSTDeserializer class. * * @author Glen Stampoultzis (glens at apache.org) */ -public final class TestSSTDeserializer extends TestCase { +public final class TestSSTDeserializer { private static final int FAKE_SID = -5555; private static byte[] concat(byte[] a, byte[] b) { @@ -41,36 +43,36 @@ public final class TestSSTDeserializer extends TestCase { return result; } - private static byte[] readSampleHexData(String sampleFileName, String sectionName, int recSid) { + private static byte[] readSampleHexData(String sampleFileName, String sectionName, int recSid) + throws IOException { InputStream is = HSSFTestDataSamples.openSampleFileStream(sampleFileName); - byte[] data; - try { - data = HexRead.readData(is, sectionName); - } catch (IOException e) { - throw new RuntimeException(e); - } - return TestcaseRecordInputStream.mergeDataAndSid(recSid, data.length, data); + byte[] data = HexRead.readData(is, sectionName); + byte[] result = TestcaseRecordInputStream.mergeDataAndSid(recSid, data.length, data); + is.close(); + return result; } - public void testSpanRichTextToPlainText() { + @Test + public void testSpanRichTextToPlainText() throws IOException { byte[] header = readSampleHexData("richtextdata.txt", "header", FAKE_SID); byte[] continueBytes = readSampleHexData("richtextdata.txt", "continue1", ContinueRecord.sid); RecordInputStream in = TestcaseRecordInputStream.create(concat(header, continueBytes)); - IntMapper strings = new IntMapper(); + IntMapper strings = new IntMapper(); SSTDeserializer deserializer = new SSTDeserializer( strings ); deserializer.manufactureStrings(1, in ); assertEquals( "At a dinner party orAt At At ", strings.get( 0 ) + "" ); } - public void testContinuationWithNoOverlap() { + @Test + public void testContinuationWithNoOverlap() throws IOException { byte[] header = readSampleHexData("evencontinuation.txt", "header", FAKE_SID); byte[] continueBytes = readSampleHexData("evencontinuation.txt", "continue1", ContinueRecord.sid); RecordInputStream in = TestcaseRecordInputStream.create(concat(header, continueBytes)); - IntMapper strings = new IntMapper(); + IntMapper strings = new IntMapper(); SSTDeserializer deserializer = new SSTDeserializer( strings ); deserializer.manufactureStrings( 2, in); @@ -81,14 +83,15 @@ public final class TestSSTDeserializer extends TestCase { /** * Strings can actually span across more than one continuation. */ - public void testStringAcross2Continuations() { + @Test + public void testStringAcross2Continuations() throws IOException { byte[] header = readSampleHexData("stringacross2continuations.txt", "header", FAKE_SID); byte[] continue1 = readSampleHexData("stringacross2continuations.txt", "continue1", ContinueRecord.sid); byte[] continue2 = readSampleHexData("stringacross2continuations.txt", "continue2", ContinueRecord.sid); RecordInputStream in = TestcaseRecordInputStream.create(concat(header, concat(continue1, continue2))); - IntMapper strings = new IntMapper(); + IntMapper strings = new IntMapper(); SSTDeserializer deserializer = new SSTDeserializer( strings ); deserializer.manufactureStrings( 2, in); @@ -96,12 +99,13 @@ public final class TestSSTDeserializer extends TestCase { assertEquals( "At a dinner partyAt a dinner party", strings.get( 1 ) + "" ); } - public void testExtendedStrings() { + @Test + public void testExtendedStrings() throws IOException { byte[] header = readSampleHexData("extendedtextstrings.txt", "rich-header", FAKE_SID); byte[] continueBytes = readSampleHexData("extendedtextstrings.txt", "rich-continue1", ContinueRecord.sid); RecordInputStream in = TestcaseRecordInputStream.create(concat(header, continueBytes)); - IntMapper strings = new IntMapper(); + IntMapper strings = new IntMapper(); SSTDeserializer deserializer = new SSTDeserializer( strings ); deserializer.manufactureStrings( 1, in); @@ -112,7 +116,7 @@ public final class TestSSTDeserializer extends TestCase { continueBytes = readSampleHexData("extendedtextstrings.txt", "norich-continue1", ContinueRecord.sid); in = TestcaseRecordInputStream.create(concat(header, continueBytes)); - strings = new IntMapper(); + strings = new IntMapper(); deserializer = new SSTDeserializer( strings ); deserializer.manufactureStrings( 1, in); diff --git a/src/testcases/org/apache/poi/hssf/record/aggregates/TestColumnInfoRecordsAggregate.java b/src/testcases/org/apache/poi/hssf/record/aggregates/TestColumnInfoRecordsAggregate.java index 6c981cab5e..8bf893639b 100644 --- a/src/testcases/org/apache/poi/hssf/record/aggregates/TestColumnInfoRecordsAggregate.java +++ b/src/testcases/org/apache/poi/hssf/record/aggregates/TestColumnInfoRecordsAggregate.java @@ -17,23 +17,23 @@ package org.apache.poi.hssf.record.aggregates; +import static org.junit.Assert.assertEquals; + import java.util.ArrayList; import java.util.List; -import junit.framework.AssertionFailedError; -import junit.framework.TestCase; - import org.apache.poi.hssf.record.ColumnInfoRecord; import org.apache.poi.hssf.record.Record; import org.apache.poi.hssf.record.RecordBase; import org.apache.poi.hssf.record.aggregates.RecordAggregate.RecordVisitor; +import org.junit.Test; + +import junit.framework.AssertionFailedError; -/** - * @author Glen Stampoultzis - */ -public final class TestColumnInfoRecordsAggregate extends TestCase { +public final class TestColumnInfoRecordsAggregate { - public void testGetRecordSize() { + @Test + public void testGetRecordSize() { ColumnInfoRecordsAggregate agg = new ColumnInfoRecordsAggregate(); agg.insertColumn(createColInfo(1, 3)); agg.insertColumn(createColInfo(4, 7)); @@ -64,23 +64,22 @@ public final class TestColumnInfoRecordsAggregate extends TestCase { private static final class CIRCollector implements RecordVisitor { - private List _list; - public CIRCollector() { - _list = new ArrayList(); - } + private List _list = new ArrayList(); + public void visitRecord(Record r) { _list.add(r); } + public static ColumnInfoRecord[] getRecords(ColumnInfoRecordsAggregate agg) { CIRCollector circ = new CIRCollector(); agg.visitContainedRecords(circ); - List list = circ._list; - ColumnInfoRecord[] result = new ColumnInfoRecord[list.size()]; - list.toArray(result); + ColumnInfoRecord[] result = + circ._list.toArray(new ColumnInfoRecord[circ._list.size()]); return result; } } + @Test public void testGroupColumns_bug45639() { ColumnInfoRecordsAggregate agg = new ColumnInfoRecordsAggregate(); agg.groupColumnRange( 7, 9, true); @@ -102,6 +101,7 @@ public final class TestColumnInfoRecordsAggregate extends TestCase { /** * Check that an inner group remains hidden */ + @Test public void testHiddenAfterExpanding() { ColumnInfoRecordsAggregate agg = new ColumnInfoRecordsAggregate(); agg.groupColumnRange(1, 15, true); @@ -134,6 +134,7 @@ public final class TestColumnInfoRecordsAggregate extends TestCase { confirmCIR(cirs, 2, 13, 15, 1, true, false); confirmCIR(cirs, 3, 16, 16, 0, false, true); } + private static void confirmCIR(ColumnInfoRecord[] cirs, int ix, int startColIx, int endColIx, int level, boolean isHidden, boolean isCollapsed) { ColumnInfoRecord cir = cirs[ix]; assertEquals("startColIx", startColIx, cir.getFirstColumn()); diff --git a/src/testcases/org/apache/poi/hssf/record/chart/AllChartRecordTests.java b/src/testcases/org/apache/poi/hssf/record/chart/AllChartRecordTests.java index d2fcf2bd05..84b07e9d76 100644 --- a/src/testcases/org/apache/poi/hssf/record/chart/AllChartRecordTests.java +++ b/src/testcases/org/apache/poi/hssf/record/chart/AllChartRecordTests.java @@ -17,56 +17,51 @@ package org.apache.poi.hssf.record.chart; -import junit.framework.Test; -import junit.framework.TestSuite; +import org.junit.runner.RunWith; +import org.junit.runners.Suite; /** * Collects all tests for package org.apache.poi.hssf.record.class. - * - * @author Josh Micich */ -public final class AllChartRecordTests { - - public static Test suite() { - TestSuite result = new TestSuite(AllChartRecordTests.class.getName()); - - result.addTestSuite(TestAreaFormatRecord.class); - result.addTestSuite(TestAreaRecord.class); - result.addTestSuite(TestAxisLineFormatRecord.class); - result.addTestSuite(TestAxisOptionsRecord.class); - result.addTestSuite(TestAxisParentRecord.class); - result.addTestSuite(TestAxisRecord.class); - result.addTestSuite(TestAxisUsedRecord.class); - result.addTestSuite(TestBarRecord.class); - result.addTestSuite(TestCategorySeriesAxisRecord.class); - result.addTestSuite(TestChartFormatRecord.class); - result.addTestSuite(TestChartRecord.class); - result.addTestSuite(TestChartTitleFormatRecord.class); - result.addTestSuite(TestDatRecord.class); - result.addTestSuite(TestDataFormatRecord.class); - result.addTestSuite(TestDefaultDataLabelTextPropertiesRecord.class); - result.addTestSuite(TestFontBasisRecord.class); - result.addTestSuite(TestFontIndexRecord.class); - result.addTestSuite(TestFrameRecord.class); - result.addTestSuite(TestLegendRecord.class); - result.addTestSuite(TestLineFormatRecord.class); - result.addTestSuite(TestLinkedDataRecord.class); - result.addTestSuite(TestNumberFormatIndexRecord.class); - result.addTestSuite(TestObjectLinkRecord.class); - result.addTestSuite(TestPlotAreaRecord.class); - result.addTestSuite(TestPlotGrowthRecord.class); - result.addTestSuite(TestSeriesChartGroupIndexRecord.class); - result.addTestSuite(TestSeriesIndexRecord.class); - result.addTestSuite(TestSeriesLabelsRecord.class); - result.addTestSuite(TestSeriesListRecord.class); - result.addTestSuite(TestSeriesRecord.class); - result.addTestSuite(TestSeriesTextRecord.class); - result.addTestSuite(TestSeriesToChartGroupRecord.class); - result.addTestSuite(TestSheetPropertiesRecord.class); - result.addTestSuite(TestTextRecord.class); - result.addTestSuite(TestTickRecord.class); - result.addTestSuite(TestUnitsRecord.class); - result.addTestSuite(TestValueRangeRecord.class); - return result; - } +@RunWith(Suite.class) +@Suite.SuiteClasses({ + TestAreaFormatRecord.class, + TestAreaRecord.class, + TestAxisLineFormatRecord.class, + TestAxisOptionsRecord.class, + TestAxisParentRecord.class, + TestAxisRecord.class, + TestAxisUsedRecord.class, + TestBarRecord.class, + TestCategorySeriesAxisRecord.class, + TestChartFormatRecord.class, + TestChartRecord.class, + TestChartTitleFormatRecord.class, + TestDatRecord.class, + TestDataFormatRecord.class, + TestDefaultDataLabelTextPropertiesRecord.class, + TestFontBasisRecord.class, + TestFontIndexRecord.class, + TestFrameRecord.class, + TestLegendRecord.class, + TestLineFormatRecord.class, + TestLinkedDataRecord.class, + TestNumberFormatIndexRecord.class, + TestObjectLinkRecord.class, + TestPlotAreaRecord.class, + TestPlotGrowthRecord.class, + TestSeriesChartGroupIndexRecord.class, + TestSeriesIndexRecord.class, + TestSeriesLabelsRecord.class, + TestSeriesListRecord.class, + TestSeriesRecord.class, + TestSeriesTextRecord.class, + TestSeriesToChartGroupRecord.class, + TestSheetPropertiesRecord.class, + TestTextRecord.class, + TestTickRecord.class, + TestUnitsRecord.class, + TestValueRangeRecord.class +}) +public class AllChartRecordTests { } diff --git a/src/testcases/org/apache/poi/hssf/record/chart/TestChartTitleFormatRecord.java b/src/testcases/org/apache/poi/hssf/record/chart/TestChartTitleFormatRecord.java index c31a3968c3..6c0f05cacb 100644 --- a/src/testcases/org/apache/poi/hssf/record/chart/TestChartTitleFormatRecord.java +++ b/src/testcases/org/apache/poi/hssf/record/chart/TestChartTitleFormatRecord.java @@ -17,27 +17,27 @@ package org.apache.poi.hssf.record.chart; +import static org.junit.Assert.assertEquals; + import java.io.InputStream; import java.util.ArrayList; import java.util.List; -import junit.framework.TestCase; - import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.eventusermodel.HSSFEventFactory; import org.apache.poi.hssf.eventusermodel.HSSFListener; import org.apache.poi.hssf.eventusermodel.HSSFRequest; import org.apache.poi.hssf.record.Record; import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; -/** - * - */ -public final class TestChartTitleFormatRecord extends TestCase { +import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; +import org.junit.Test; + +public final class TestChartTitleFormatRecord { - public void testRecord() throws Exception { - POIFSFileSystem fs = new POIFSFileSystem( - HSSFTestDataSamples.openSampleFileStream("WithFormattedGraphTitle.xls")); + @Test + public void testRecord() throws Exception { + NPOIFSFileSystem fs = new NPOIFSFileSystem( + HSSFTestDataSamples.getSampleFile("WithFormattedGraphTitle.xls")); // Check we can open the file via usermodel HSSFWorkbook hssf = new HSSFWorkbook(fs); @@ -55,23 +55,24 @@ public final class TestChartTitleFormatRecord extends TestCase { // Should've found one assertEquals(1, grabber.chartTitleFormatRecords.size()); // And it should be of something interesting - ChartTitleFormatRecord r = - (ChartTitleFormatRecord)grabber.chartTitleFormatRecords.get(0); + ChartTitleFormatRecord r = grabber.chartTitleFormatRecords.get(0); assertEquals(3, r.getFormatCount()); + + hssf.close(); + fs.close(); + } private static final class ChartTitleFormatRecordGrabber implements HSSFListener { - private final List chartTitleFormatRecords; + private final List chartTitleFormatRecords; public ChartTitleFormatRecordGrabber() { - chartTitleFormatRecords = new ArrayList(); + chartTitleFormatRecords = new ArrayList(); } public void processRecord(Record record) { if(record instanceof ChartTitleFormatRecord) { - chartTitleFormatRecords.add( - record - ); + chartTitleFormatRecords.add((ChartTitleFormatRecord)record); } } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/SanityChecker.java b/src/testcases/org/apache/poi/hssf/usermodel/SanityChecker.java index deb01aa121..c4cffb5fcc 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/SanityChecker.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/SanityChecker.java @@ -19,27 +19,75 @@ package org.apache.poi.hssf.usermodel; -import junit.framework.Assert; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import java.util.List; + import org.apache.poi.hssf.model.InternalSheet; import org.apache.poi.hssf.model.InternalWorkbook; -import org.apache.poi.hssf.record.*; +import org.apache.poi.hssf.record.BOFRecord; +import org.apache.poi.hssf.record.BackupRecord; +import org.apache.poi.hssf.record.BookBoolRecord; +import org.apache.poi.hssf.record.BoundSheetRecord; +import org.apache.poi.hssf.record.CalcModeRecord; +import org.apache.poi.hssf.record.CodepageRecord; +import org.apache.poi.hssf.record.CountryRecord; +import org.apache.poi.hssf.record.DSFRecord; +import org.apache.poi.hssf.record.DateWindow1904Record; +import org.apache.poi.hssf.record.DefaultColWidthRecord; +import org.apache.poi.hssf.record.DefaultRowHeightRecord; +import org.apache.poi.hssf.record.DeltaRecord; +import org.apache.poi.hssf.record.DimensionsRecord; +import org.apache.poi.hssf.record.EOFRecord; +import org.apache.poi.hssf.record.ExtSSTRecord; +import org.apache.poi.hssf.record.ExtendedFormatRecord; +import org.apache.poi.hssf.record.ExternSheetRecord; +import org.apache.poi.hssf.record.FnGroupCountRecord; +import org.apache.poi.hssf.record.FontRecord; +import org.apache.poi.hssf.record.FormatRecord; +import org.apache.poi.hssf.record.GridsetRecord; +import org.apache.poi.hssf.record.GutsRecord; +import org.apache.poi.hssf.record.HideObjRecord; +import org.apache.poi.hssf.record.InterfaceEndRecord; +import org.apache.poi.hssf.record.InterfaceHdrRecord; +import org.apache.poi.hssf.record.IterationRecord; +import org.apache.poi.hssf.record.MMSRecord; +import org.apache.poi.hssf.record.NameRecord; +import org.apache.poi.hssf.record.PasswordRev4Record; +import org.apache.poi.hssf.record.PrecisionRecord; +import org.apache.poi.hssf.record.PrintGridlinesRecord; +import org.apache.poi.hssf.record.PrintHeadersRecord; +import org.apache.poi.hssf.record.ProtectRecord; +import org.apache.poi.hssf.record.Record; +import org.apache.poi.hssf.record.RecordBase; +import org.apache.poi.hssf.record.RefModeRecord; +import org.apache.poi.hssf.record.RefreshAllRecord; +import org.apache.poi.hssf.record.SSTRecord; +import org.apache.poi.hssf.record.SaveRecalcRecord; +import org.apache.poi.hssf.record.SelectionRecord; +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.UseSelFSRecord; +import org.apache.poi.hssf.record.WSBoolRecord; +import org.apache.poi.hssf.record.WindowOneRecord; +import org.apache.poi.hssf.record.WindowProtectRecord; +import org.apache.poi.hssf.record.WindowTwoRecord; +import org.apache.poi.hssf.record.WriteAccessRecord; import org.apache.poi.hssf.record.aggregates.PageSettingsBlock; -import java.util.List; - /** * Designed to check wither the records written actually make sense. */ -public class SanityChecker - extends Assert -{ +public class SanityChecker { static class CheckRecord { - Class record; + Class record; char occurance; // 1 = one time, M = 1..many times, * = 0..many, 0 = optional private boolean together; - public CheckRecord( Class record, char occurance ) + public CheckRecord( Class record, char occurance ) { this(record, occurance, true); } @@ -49,14 +97,14 @@ public class SanityChecker * @param occurance The occurance 1 = occurs once, M = occurs many times * @param together */ - public CheckRecord(Class record, char occurance, boolean together) + public CheckRecord(Class record, char occurance, boolean together) { this.record = record; this.occurance = occurance; this.together = together; } - public Class getRecord() + public Class getRecord() { return record; } @@ -86,7 +134,7 @@ public class SanityChecker return occurance == '*' || occurance == 'M'; } - public int match( List records, int recordIdx ) + public int match( List records, int recordIdx ) { int firstRecord = findFirstRecord(records, getRecord(), recordIdx); if (isRequired()) @@ -96,7 +144,7 @@ public class SanityChecker return matchOptional( firstRecord, records, recordIdx ); } - private int matchOptional( int firstRecord, List records, int recordIdx ) + private int matchOptional( int firstRecord, List records, int recordIdx ) { if (firstRecord == -1) { @@ -106,7 +154,7 @@ public class SanityChecker return matchOneOrMany( records, firstRecord ); } - private int matchRequired( int firstRecord, List records, int recordIdx ) + private int matchRequired( int firstRecord, List records, int recordIdx ) { if (firstRecord == -1) { @@ -116,7 +164,7 @@ public class SanityChecker return matchOneOrMany( records, firstRecord ); } - private int matchOneOrMany( List records, int recordIdx ) + private int matchOneOrMany( List records, int recordIdx ) { if (isZeroOrOne()) { @@ -210,7 +258,7 @@ public class SanityChecker private void checkWorkbookRecords(InternalWorkbook workbook) { - List records = workbook.getRecords(); + List records = workbook.getRecords(); assertTrue(records.get(0) instanceof BOFRecord); assertTrue(records.get(records.size() - 1) instanceof EOFRecord); @@ -219,7 +267,7 @@ public class SanityChecker } private void checkSheetRecords(InternalSheet sheet) { - List records = sheet.getRecords(); + List records = sheet.getRecords(); assertTrue(records.get(0) instanceof BOFRecord); assertTrue(records.get(records.size() - 1) instanceof EOFRecord); @@ -266,7 +314,7 @@ public class SanityChecker } } */ - /* package */ static int findFirstRecord( List records, Class record, int startIndex ) + /* package */ static int findFirstRecord( List records, Class record, int startIndex ) { for (int i = startIndex; i < records.size(); i++) { @@ -276,7 +324,7 @@ public class SanityChecker return -1; } - void checkRecordOrder(List records, CheckRecord[] check) + void checkRecordOrder(List records, CheckRecord[] check) { int recordIdx = 0; for ( int checkIdx = 0; checkIdx < check.length; checkIdx++ ) diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestBug42464.java b/src/testcases/org/apache/poi/hssf/usermodel/TestBug42464.java index aa38126f75..6fdfb0fe33 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestBug42464.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestBug42464.java @@ -17,29 +17,37 @@ package org.apache.poi.hssf.usermodel; -import java.util.Iterator; +import static org.junit.Assert.assertNotNull; -import junit.framework.TestCase; +import java.util.Iterator; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.record.FormulaRecord; import org.apache.poi.hssf.record.aggregates.FormulaRecordAggregate; -import org.apache.poi.ss.formula.ptg.Ptg; import org.apache.poi.hssf.util.CellReference; +import org.apache.poi.ss.formula.ptg.Ptg; +import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellValue; +import org.apache.poi.ss.usermodel.Row; +import org.junit.Test; /** * */ -public final class TestBug42464 extends TestCase { +public final class TestBug42464 { - public void testOKFile() { + @Test + public void testOKFile() throws Exception { HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("42464-ExpPtg-ok.xls"); process(wb); + wb.close(); } - public void testExpSharedBadFile() { + + @Test + public void testExpSharedBadFile() throws Exception { HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("42464-ExpPtg-bad.xls"); process(wb); + wb.close(); } private static void process(HSSFWorkbook wb) { @@ -47,7 +55,7 @@ public final class TestBug42464 extends TestCase { for(int i=0; i it = s.rowIterator(); while(it.hasNext()) { HSSFRow r = (HSSFRow)it.next(); process(r, eval); @@ -56,7 +64,7 @@ public final class TestBug42464 extends TestCase { } private static void process(HSSFRow row, HSSFFormulaEvaluator eval) { - Iterator it = row.cellIterator(); + Iterator it = row.cellIterator(); while(it.hasNext()) { HSSFCell cell = (HSSFCell)it.next(); if(cell.getCellType() != HSSFCell.CELL_TYPE_FORMULA) { @@ -67,15 +75,15 @@ public final class TestBug42464 extends TestCase { Ptg[] ptgs = r.getParsedExpression(); String cellRef = new CellReference(row.getRowNum(), cell.getColumnIndex(), false, false).formatAsString(); - if(false && cellRef.equals("BP24")) { // TODO - replace System.out.println()s with asserts - System.out.print(cellRef); - System.out.println(" - has " + ptgs.length + " ptgs:"); - for(int i=0; i " + cell.getCellFormula()); - } +// if(false && cellRef.equals("BP24")) { // TODO - replace System.out.println()s with asserts +// System.out.print(cellRef); +// System.out.println(" - has " + ptgs.length + " ptgs:"); +// for(int i=0; i " + cell.getCellFormula()); +// } CellValue evalResult = eval.evaluate(cell); assertNotNull(evalResult); diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestDataValidation.java b/src/testcases/org/apache/poi/hssf/usermodel/TestDataValidation.java index b3bfc534ed..a440a39def 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestDataValidation.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestDataValidation.java @@ -17,26 +17,23 @@ package org.apache.poi.hssf.usermodel; -import java.io.ByteArrayInputStream; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; -import java.io.InputStream; import java.io.PrintStream; import java.util.List; -import junit.framework.AssertionFailedError; - import org.apache.poi.hssf.HSSFITestDataProvider; import org.apache.poi.hssf.HSSFTestDataSamples; -import org.apache.poi.hssf.eventmodel.ERFListener; -import org.apache.poi.hssf.eventmodel.EventRecordFactory; import org.apache.poi.hssf.record.DVRecord; -import org.apache.poi.hssf.record.RecordFormatException; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.ss.usermodel.BaseTestDataValidation; import org.apache.poi.ss.usermodel.DataValidation; +import org.apache.poi.ss.usermodel.DataValidation.ErrorStyle; import org.apache.poi.ss.usermodel.DataValidationConstraint; import org.apache.poi.ss.usermodel.DataValidationConstraint.OperatorType; import org.apache.poi.ss.usermodel.DataValidationConstraint.ValidationType; @@ -45,10 +42,8 @@ import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.util.CellRangeAddress; -import org.apache.poi.ss.usermodel.*; -import org.apache.poi.ss.usermodel.DataValidation.ErrorStyle; -import org.apache.poi.ss.usermodel.DataValidationConstraint.OperatorType; import org.apache.poi.ss.util.CellRangeAddressList; +import org.junit.Test; /** * Class for testing Excel's data validation mechanism @@ -73,11 +68,11 @@ public final class TestDataValidation extends BaseTestDataValidation { } byte[] generatedContent = baos.toByteArray(); boolean isSame; - if (false) { - // TODO - add proof spreadsheet and compare - InputStream proofStream = HSSFTestDataSamples.openSampleFileStream("TestDataValidation.xls"); - isSame = compareStreams(proofStream, generatedContent); - } +// if (false) { +// // TODO - add proof spreadsheet and compare +// InputStream proofStream = HSSFTestDataSamples.openSampleFileStream("TestDataValidation.xls"); +// isSame = compareStreams(proofStream, generatedContent); +// } isSame = true; if (isSame) { @@ -112,37 +107,38 @@ public final class TestDataValidation extends BaseTestDataValidation { } - private static boolean compareStreams(InputStream isA, byte[] generatedContent) { - - InputStream isB = new ByteArrayInputStream(generatedContent); - - // The allowable regions where the generated file can differ from the - // proof should be small (i.e. much less than 1K) - int[] allowableDifferenceRegions = { - 0x0228, 16, // a region of the file containing the OS username - 0x506C, 8, // See RootProperty (super fields _seconds_2 and _days_2) - }; - int[] diffs = StreamUtility.diffStreams(isA, isB, allowableDifferenceRegions); - if (diffs == null) { - return true; - } - System.err.println("Diff from proof: "); - for (int i = 0; i < diffs.length; i++) { - System.err.println("diff at offset: 0x" + Integer.toHexString(diffs[i])); - } - return false; - } +// private static boolean compareStreams(InputStream isA, byte[] generatedContent) { +// +// InputStream isB = new ByteArrayInputStream(generatedContent); +// +// // The allowable regions where the generated file can differ from the +// // proof should be small (i.e. much less than 1K) +// int[] allowableDifferenceRegions = { +// 0x0228, 16, // a region of the file containing the OS username +// 0x506C, 8, // See RootProperty (super fields _seconds_2 and _days_2) +// }; +// int[] diffs = StreamUtility.diffStreams(isA, isB, allowableDifferenceRegions); +// if (diffs == null) { +// return true; +// } +// System.err.println("Diff from proof: "); +// for (int i = 0; i < diffs.length; i++) { +// System.err.println("diff at offset: 0x" + Integer.toHexString(diffs[i])); +// } +// return false; +// } - /* package */ static void setCellValue(HSSFCell cell, String text) { + /* package */ static void setCellValue(HSSFCell cell, String text) { cell.setCellValue(new HSSFRichTextString(text)); - } + } - public void testAddToExistingSheet() { + @Test + public void testAddToExistingSheet() throws Exception { // dvEmpty.xls is a simple one sheet workbook. With a DataValidations header record but no // DataValidations. It's important that the example has one SHEETPROTECTION record. @@ -164,27 +160,23 @@ public final class TestDataValidation extends BaseTestDataValidation { sheet.addValidationData(dv); ByteArrayOutputStream baos = new ByteArrayOutputStream(); - try { - wb.write(baos); - } catch (IOException e) { - throw new RuntimeException(e); - } + wb.write(baos); byte[] wbData = baos.toByteArray(); - if (false) { // TODO (Jul 2008) fix EventRecordFactory to process unknown records, (and DV records for that matter) - - ERFListener erfListener = null; // new MyERFListener(); - EventRecordFactory erf = new EventRecordFactory(erfListener, null); - try { - POIFSFileSystem fs = new POIFSFileSystem(new ByteArrayInputStream(baos.toByteArray())); - erf.processRecords(fs.createDocumentInputStream("Workbook")); - } catch (RecordFormatException e) { - throw new RuntimeException(e); - } catch (IOException e) { - throw new RuntimeException(e); - } - } +// if (false) { // TODO (Jul 2008) fix EventRecordFactory to process unknown records, (and DV records for that matter) +// +// ERFListener erfListener = null; // new MyERFListener(); +// EventRecordFactory erf = new EventRecordFactory(erfListener, null); +// try { +// POIFSFileSystem fs = new POIFSFileSystem(new ByteArrayInputStream(baos.toByteArray())); +// erf.processRecords(fs.createDocumentInputStream("Workbook")); +// } catch (RecordFormatException e) { +// throw new RuntimeException(e); +// } catch (IOException e) { +// throw new RuntimeException(e); +// } +// } // else verify record ordering by navigating the raw bytes byte[] dvHeaderRecStart= { (byte)0xB2, 0x01, 0x12, 0x00, }; @@ -199,10 +191,13 @@ public final class TestDataValidation extends BaseTestDataValidation { // and the DV records, Excel will not be able to open the workbook without error. if (nextSid == 0x0867) { - throw new AssertionFailedError("Identified bug 45519"); + fail("Identified bug 45519"); } assertEquals(DVRecord.sid, nextSid); + + wb.close(); } + private int findIndex(byte[] largeData, byte[] searchPattern) { byte firstByte = searchPattern[0]; for (int i = 0; i < largeData.length; i++) { @@ -223,7 +218,8 @@ public final class TestDataValidation extends BaseTestDataValidation { return -1; } - public void testGetDataValidationsAny() { + @Test + public void testGetDataValidationsAny() throws Exception { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); List list = sheet.getDataValidations(); @@ -265,9 +261,12 @@ public final class TestDataValidation extends BaseTestDataValidation { DataValidationConstraint c = dv.getValidationConstraint(); assertEquals(ValidationType.ANY, c.getValidationType()); assertEquals(OperatorType.IGNORED, c.getOperator()); + + wb.close(); } - public void testGetDataValidationsIntegerFormula() { + @Test + public void testGetDataValidationsIntegerFormula() throws Exception { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); List list = sheet.getDataValidations(); @@ -291,9 +290,12 @@ public final class TestDataValidation extends BaseTestDataValidation { assertEquals("A3", c.getFormula2()); assertEquals(null, c.getValue1()); assertEquals(null, c.getValue2()); + + wb.close(); } - public void testGetDataValidationsIntegerValue() { + @Test + public void testGetDataValidationsIntegerValue() throws Exception { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); List list = sheet.getDataValidations(); @@ -317,9 +319,12 @@ public final class TestDataValidation extends BaseTestDataValidation { assertEquals(null, c.getFormula2()); assertEquals(new Double("100"), c.getValue1()); assertEquals(new Double("200"), c.getValue2()); + + wb.close(); } - public void testGetDataValidationsDecimal() { + @Test + public void testGetDataValidationsDecimal() throws Exception { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); List list = sheet.getDataValidations(); @@ -343,9 +348,12 @@ public final class TestDataValidation extends BaseTestDataValidation { assertEquals(null, c.getFormula2()); assertEquals(null, c.getValue1()); assertEquals(new Double("200"), c.getValue2()); + + wb.close(); } - public void testGetDataValidationsDate() { + @Test + public void testGetDataValidationsDate() throws Exception { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); List list = sheet.getDataValidations(); @@ -367,11 +375,14 @@ public final class TestDataValidation extends BaseTestDataValidation { assertEquals(OperatorType.EQUAL, c.getOperator()); assertEquals(null, c.getFormula1()); assertEquals(null, c.getFormula2()); - assertEquals(DateUtil.getExcelDate(DateUtil.parseYYYYMMDDDate("2014/10/25")), c.getValue1()); + assertEquals(DateUtil.getExcelDate(DateUtil.parseYYYYMMDDDate("2014/10/25")), c.getValue1(), 0); assertEquals(null, c.getValue2()); + + wb.close(); } - public void testGetDataValidationsListExplicit() { + @Test + public void testGetDataValidationsListExplicit() throws Exception { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); List list = sheet.getDataValidations(); @@ -402,9 +413,12 @@ public final class TestDataValidation extends BaseTestDataValidation { assertEquals("aaa", values[0]); assertEquals("bbb", values[1]); assertEquals("ccc", values[2]); + + wb.close(); } - public void testGetDataValidationsListFormula() { + @Test + public void testGetDataValidationsListFormula() throws Exception { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); List list = sheet.getDataValidations(); @@ -429,9 +443,12 @@ public final class TestDataValidation extends BaseTestDataValidation { assertEquals(null, c.getFormula2()); assertEquals(null, c.getValue1()); assertEquals(null, c.getValue2()); + + wb.close(); } - public void testGetDataValidationsFormula() { + @Test + public void testGetDataValidationsFormula() throws Exception { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(); List list = sheet.getDataValidations(); @@ -453,5 +470,6 @@ public final class TestDataValidation extends BaseTestDataValidation { assertEquals(null, c.getFormula2()); assertEquals(null, c.getValue1()); assertEquals(null, c.getValue2()); + wb.close(); } } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFName.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFName.java index 2903e9b059..cd8e1e9b92 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFName.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFName.java @@ -17,20 +17,21 @@ package org.apache.poi.hssf.usermodel; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + import java.lang.reflect.Field; import org.apache.poi.hssf.HSSFITestDataProvider; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.model.HSSFFormulaParser; import org.apache.poi.hssf.record.NameRecord; -import org.apache.poi.ss.formula.ptg.Ptg; import org.apache.poi.ss.formula.FormulaType; +import org.apache.poi.ss.formula.ptg.Ptg; import org.apache.poi.ss.usermodel.BaseTestNamedRange; import org.apache.poi.ss.util.AreaReference; -import org.apache.poi.util.TempFile; +import org.junit.Test; /** * Tests various functionality having to do with {@link org.apache.poi.ss.usermodel.Name}. @@ -65,7 +66,8 @@ public final class TestHSSFName extends BaseTestNamedRange { super(HSSFITestDataProvider.instance); } - public void testRepeatingRowsAndColumsNames() { + @Test + public void testRepeatingRowsAndColumsNames() throws Exception { // First test that setting RR&C for same sheet more than once only creates a // single Print_Titles built-in record HSSFWorkbook wb = new HSSFWorkbook(); @@ -80,15 +82,16 @@ public final class TestHSSFName extends BaseTestNamedRange { HSSFName nr1 = wb.getNameAt(0); assertEquals("Print_Titles", nr1.getNameName()); - if (false) { - // TODO - full column references not rendering properly, absolute markers not present either - assertEquals("FirstSheet!$A:$A,FirstSheet!$1:$3", nr1.getRefersToFormula()); - } else { +// if (false) { +// // TODO - full column references not rendering properly, absolute markers not present either +// assertEquals("FirstSheet!$A:$A,FirstSheet!$1:$3", nr1.getRefersToFormula()); +// } else { assertEquals("FirstSheet!A:A,FirstSheet!$A$1:$IV$3", nr1.getRefersToFormula()); - } +// } // Save and re-open HSSFWorkbook nwb = HSSFTestDataSamples.writeOutAndReadBack(wb); + wb.close(); assertEquals(1, nwb.getNumberOfNames()); nr1 = nwb.getNameAt(0); @@ -107,29 +110,31 @@ public final class TestHSSFName extends BaseTestNamedRange { assertEquals("Print_Titles", nr2.getNameName()); assertEquals("SecondSheet!B:C,SecondSheet!$A$1:$IV$1", nr2.getRefersToFormula()); - if (false) { - // In case you fancy checking in excel, to ensure it - // won't complain about the file now - try { - File tempFile = TempFile.createTempFile("POI-45126-", ".xls"); - FileOutputStream fout = new FileOutputStream(tempFile); - nwb.write(fout); - fout.close(); - System.out.println("check out " + tempFile.getAbsolutePath()); - } catch (IOException e) { - throw new RuntimeException(e); - } - } +// if (false) { +// // In case you fancy checking in excel, to ensure it +// // won't complain about the file now +// try { +// File tempFile = TempFile.createTempFile("POI-45126-", ".xls"); +// FileOutputStream fout = new FileOutputStream(tempFile); +// nwb.write(fout); +// fout.close(); +// System.out.println("check out " + tempFile.getAbsolutePath()); +// } catch (IOException e) { +// throw new RuntimeException(e); +// } +// } + nwb.close(); } - public void testNamedRange() { - HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("Simple.xls"); + @Test + public void testNamedRange() throws Exception { + HSSFWorkbook wb1 = HSSFTestDataSamples.openSampleWorkbook("Simple.xls"); //Creating new Named Range - HSSFName newNamedRange = wb.createName(); + HSSFName newNamedRange = wb1.createName(); //Getting Sheet Name for the reference - String sheetName = wb.getSheetName(0); + String sheetName = wb1.getSheetName(0); //Setting its name newNamedRange.setNameName("RangeTest"); @@ -137,18 +142,20 @@ public final class TestHSSFName extends BaseTestNamedRange { newNamedRange.setRefersToFormula(sheetName + "!$D$4:$E$8"); //Getting NAmed Range - HSSFName namedRange1 = wb.getNameAt(0); + HSSFName namedRange1 = wb1.getNameAt(0); //Getting it sheet name sheetName = namedRange1.getSheetName(); // sanity check SanityChecker c = new SanityChecker(); - c.checkHSSFWorkbook(wb); + c.checkHSSFWorkbook(wb1); - wb = HSSFTestDataSamples.writeOutAndReadBack(wb); - HSSFName nm =wb.getNameAt(wb.getNameIndex("RangeTest")); + HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1); + HSSFName nm = wb2.getNameAt(wb2.getNameIndex("RangeTest")); assertTrue("Name is "+nm.getNameName(),"RangeTest".equals(nm.getNameName())); - assertEquals(wb.getSheetName(0)+"!$D$4:$E$8", nm.getRefersToFormula()); + assertEquals(wb2.getSheetName(0)+"!$D$4:$E$8", nm.getRefersToFormula()); + wb2.close(); + wb1.close(); } /** @@ -156,7 +163,8 @@ public final class TestHSSFName extends BaseTestNamedRange { *

* Addresses Bug #9632 */ - public void testNamedRead() { + @Test + public void testNamedRead() throws Exception { HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("namedinput.xls"); //Get index of the named range with the name = "NamedRangeName" , which was defined in input.xls as A1:D10 @@ -175,6 +183,8 @@ public final class TestHSSFName extends BaseTestNamedRange { assertEquals(sheetName+"!$D$17:$G$27", namedRange2.getRefersToFormula()); assertEquals("SecondNamedRange", namedRange2.getNameName()); + + wb.close(); } /** @@ -182,7 +192,8 @@ public final class TestHSSFName extends BaseTestNamedRange { *

* Addresses Bug #16411 */ - public void testNamedReadModify() { + @Test + public void testNamedReadModify() throws Exception { HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("namedinput.xls"); HSSFName name = wb.getNameAt(0); @@ -195,22 +206,26 @@ public final class TestHSSFName extends BaseTestNamedRange { name.setRefersToFormula(newReference); assertEquals(newReference, name.getRefersToFormula()); + + wb.close(); } /** * Test to see if the print area can be retrieved from an excel created file */ - public void testPrintAreaFileRead() { - HSSFWorkbook workbook = HSSFTestDataSamples.openSampleWorkbook("SimpleWithPrintArea.xls"); + @Test + public void testPrintAreaFileRead() throws Exception { + HSSFWorkbook workbook = HSSFTestDataSamples.openSampleWorkbook("SimpleWithPrintArea.xls"); String sheetName = workbook.getSheetName(0); String reference = sheetName+"!$A$1:$C$5"; assertEquals(reference, workbook.getPrintArea(0)); + workbook.close(); } - - public void testDeletedReference() { + @Test + public void testDeletedReference() throws Exception { HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("24207.xls"); assertEquals(2, wb.getNumberOfNames()); @@ -230,6 +245,7 @@ public final class TestHSSFName extends BaseTestNamedRange { } catch (IllegalArgumentException e) { // TODO - use a stronger typed exception for this condition // expected during successful test } + wb.close(); } /** @@ -237,7 +253,8 @@ public final class TestHSSFName extends BaseTestNamedRange { * must set the type of operands to Ptg.CLASS_REF, * otherwise created named don't appear in the drop-down to the left of formula bar in Excel */ - public void testTypeOfRootPtg(){ + @Test + public void testTypeOfRootPtg() throws Exception { HSSFWorkbook wb = new HSSFWorkbook(); wb.createSheet("CSCO"); @@ -245,6 +262,6 @@ public final class TestHSSFName extends BaseTestNamedRange { for (int i = 0; i < ptgs.length; i++) { assertEquals('R', ptgs[i].getRVAType()); } - + wb.close(); } } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestSanityChecker.java b/src/testcases/org/apache/poi/hssf/usermodel/TestSanityChecker.java index f5839fa83b..658e781843 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestSanityChecker.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestSanityChecker.java @@ -17,13 +17,12 @@ package org.apache.poi.hssf.usermodel; +import static org.junit.Assert.fail; + import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import junit.framework.AssertionFailedError; -import junit.framework.TestCase; - import org.apache.poi.hssf.record.BOFRecord; import org.apache.poi.hssf.record.BoundSheetRecord; import org.apache.poi.hssf.record.EOFRecord; @@ -31,6 +30,7 @@ import org.apache.poi.hssf.record.InterfaceHdrRecord; import org.apache.poi.hssf.record.NameRecord; import org.apache.poi.hssf.record.Record; import org.apache.poi.hssf.usermodel.SanityChecker.CheckRecord; +import org.junit.Test; /** * A Test case for a test utility class.
@@ -38,11 +38,13 @@ import org.apache.poi.hssf.usermodel.SanityChecker.CheckRecord; * * @author Glen Stampoultzis (glens at apache.org) */ -public final class TestSanityChecker extends TestCase { +public final class TestSanityChecker { private static final Record INTERFACEHDR = new InterfaceHdrRecord(InterfaceHdrRecord.CODEPAGE); private static BoundSheetRecord createBoundSheetRec() { return new BoundSheetRecord("Sheet1"); } + + @Test public void testCheckRecordOrder() { final SanityChecker c = new SanityChecker(); List records = new ArrayList(); @@ -119,17 +121,17 @@ public final class TestSanityChecker extends TestCase { } private static void confirmBadRecordOrder(final SanityChecker.CheckRecord[] check, Record[] recs) { final SanityChecker c = new SanityChecker(); - final List records = Arrays.asList(recs); + final List records = Arrays.asList(recs); try { new Runnable() { public void run() { c.checkRecordOrder(records, check); } }.run(); - } catch (AssertionFailedError pass) { + } catch (AssertionError pass) { // expected during normal test return; } - throw new AssertionFailedError("Did not get failure exception as expected"); + fail("Did not get failure exception as expected"); } } diff --git a/src/testcases/org/apache/poi/poifs/storage/AllPOIFSStorageTests.java b/src/testcases/org/apache/poi/poifs/storage/AllPOIFSStorageTests.java index 46011916ee..806154599d 100644 --- a/src/testcases/org/apache/poi/poifs/storage/AllPOIFSStorageTests.java +++ b/src/testcases/org/apache/poi/poifs/storage/AllPOIFSStorageTests.java @@ -17,31 +17,27 @@ package org.apache.poi.poifs.storage; -import junit.framework.Test; -import junit.framework.TestSuite; +import org.junit.runner.RunWith; +import org.junit.runners.Suite; /** * Tests for org.apache.poi.poifs.storage
- * - * @author Josh Micich */ -public final class AllPOIFSStorageTests { - - public static Test suite() { - TestSuite result = new TestSuite(AllPOIFSStorageTests.class.getName()); - result.addTestSuite(TestBATBlock.class); - result.addTestSuite(TestBlockAllocationTableReader.class); - result.addTestSuite(TestBlockAllocationTableWriter.class); - result.addTestSuite(TestBlockListImpl.class); - result.addTestSuite(TestDocumentBlock.class); - result.addTestSuite(TestHeaderBlockReading.class); - result.addTestSuite(TestHeaderBlockWriting.class); - result.addTestSuite(TestPropertyBlock.class); - result.addTestSuite(TestRawDataBlock.class); - result.addTestSuite(TestRawDataBlockList.class); - result.addTestSuite(TestSmallBlockTableReader.class); - result.addTestSuite(TestSmallBlockTableWriter.class); - result.addTestSuite(TestSmallDocumentBlock.class); - result.addTestSuite(TestSmallDocumentBlockList.class); - return result; - } +@RunWith(Suite.class) +@Suite.SuiteClasses({ + TestBATBlock.class, + TestBlockAllocationTableReader.class, + TestBlockAllocationTableWriter.class, + TestBlockListImpl.class, + TestDocumentBlock.class, + TestHeaderBlockReading.class, + TestHeaderBlockWriting.class, + TestPropertyBlock.class, + TestRawDataBlock.class, + TestRawDataBlockList.class, + TestSmallBlockTableReader.class, + TestSmallBlockTableWriter.class, + TestSmallDocumentBlock.class, + TestSmallDocumentBlockList.class +}) +public class AllPOIFSStorageTests { } diff --git a/src/testcases/org/apache/poi/poifs/storage/TestBlockListImpl.java b/src/testcases/org/apache/poi/poifs/storage/TestBlockListImpl.java index 2a36dd0a46..344b514853 100644 --- a/src/testcases/org/apache/poi/poifs/storage/TestBlockListImpl.java +++ b/src/testcases/org/apache/poi/poifs/storage/TestBlockListImpl.java @@ -17,24 +17,26 @@ package org.apache.poi.poifs.storage; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + import java.io.ByteArrayInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import junit.framework.TestCase; - import org.apache.poi.poifs.common.POIFSConstants; import org.apache.poi.util.LittleEndian; import org.apache.poi.util.LittleEndianConsts; +import org.junit.Test; /** * Class to test BlockListImpl functionality * * @author Marc Johnson */ -public final class TestBlockListImpl extends TestCase { +public final class TestBlockListImpl { private static final class BlockListTestImpl extends BlockListImpl { public BlockListTestImpl() { // no extra initialisation @@ -44,6 +46,7 @@ public final class TestBlockListImpl extends TestCase { return new BlockListTestImpl(); } + @Test public void testZap() throws IOException { BlockListImpl list = create(); @@ -79,7 +82,7 @@ public final class TestBlockListImpl extends TestCase { } } - + @Test public void testRemove() throws IOException { BlockListImpl list = create(); RawDataBlock[] blocks = new RawDataBlock[ 5 ]; @@ -139,6 +142,7 @@ public final class TestBlockListImpl extends TestCase { } } + @Test public void testSetBAT() throws IOException { BlockListImpl list = create(); @@ -154,6 +158,7 @@ public final class TestBlockListImpl extends TestCase { } } + @Test public void testFetchBlocks() throws IOException { // strategy: @@ -169,7 +174,7 @@ public final class TestBlockListImpl extends TestCase { // that includes a reserved (XBAT) block, and one that // points off into space somewhere BlockListImpl list = create(); - List raw_blocks = new ArrayList(); + List raw_blocks = new ArrayList(); byte[] data = new byte[ 512 ]; int offset = 0; @@ -227,8 +232,7 @@ public final class TestBlockListImpl extends TestCase { raw_blocks.add( new RawDataBlock(new ByteArrayInputStream(new byte[ 0 ]))); } - list.setBlocks(( RawDataBlock [] ) raw_blocks - .toArray(new RawDataBlock[ 0 ])); + list.setBlocks(raw_blocks.toArray(new RawDataBlock[raw_blocks.size()])); int[] blocks = { 0 diff --git a/src/testcases/org/apache/poi/poifs/storage/TestPropertyBlock.java b/src/testcases/org/apache/poi/poifs/storage/TestPropertyBlock.java index 0cf8398ab7..e4af23a99a 100644 --- a/src/testcases/org/apache/poi/poifs/storage/TestPropertyBlock.java +++ b/src/testcases/org/apache/poi/poifs/storage/TestPropertyBlock.java @@ -17,26 +17,27 @@ package org.apache.poi.poifs.storage; +import static org.junit.Assert.assertEquals; + import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.poi.poifs.common.POIFSConstants; - -import junit.framework.TestCase; +import org.apache.poi.poifs.property.Property; +import org.junit.Test; /** * Class to test PropertyBlock functionality - * - * @author Marc Johnson */ -public final class TestPropertyBlock extends TestCase { +public final class TestPropertyBlock { - public void testCreatePropertyBlocks() { + @Test + public void testCreatePropertyBlocks() throws Exception { // test with 0 properties - List properties = new ArrayList(); + List properties = new ArrayList(); BlockWritable[] blocks = PropertyBlock.createPropertyBlockArray(POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS,properties); @@ -181,22 +182,18 @@ public final class TestPropertyBlock extends TestCase { } } - private static void verifyCorrect(BlockWritable[] blocks, byte[] testblock) { + private static void verifyCorrect(BlockWritable[] blocks, byte[] testblock) + throws IOException { ByteArrayOutputStream stream = new ByteArrayOutputStream(512 * blocks.length); - for (int j = 0; j < blocks.length; j++) { - try { - blocks[ j ].writeBlocks(stream); - } catch (IOException e) { - throw new RuntimeException(e); - } + for (BlockWritable b : blocks) { + b.writeBlocks(stream); } byte[] output = stream.toByteArray(); assertEquals(testblock.length, output.length); - for (int j = 0; j < testblock.length; j++) - { + for (int j = 0; j < testblock.length; j++) { assertEquals("mismatch at offset " + j, testblock[ j ], output[ j ]); } diff --git a/src/testcases/org/apache/poi/ss/formula/eval/TestFormulaBugs.java b/src/testcases/org/apache/poi/ss/formula/eval/TestFormulaBugs.java index 31ad51246b..f66cd06595 100644 --- a/src/testcases/org/apache/poi/ss/formula/eval/TestFormulaBugs.java +++ b/src/testcases/org/apache/poi/ss/formula/eval/TestFormulaBugs.java @@ -17,13 +17,12 @@ package org.apache.poi.ss.formula.eval; -import java.io.FileOutputStream; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + import java.io.IOException; import java.io.InputStream; -import junit.framework.AssertionFailedError; -import junit.framework.TestCase; - import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator; @@ -31,31 +30,25 @@ import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.CellValue; +import org.junit.Test; /** * Miscellaneous tests for bugzilla entries.

The test name contains the * bugzilla bug id. - * - * - * @author Josh Micich */ -public final class TestFormulaBugs extends TestCase { +public final class TestFormulaBugs { /** * Bug 27349 - VLOOKUP with reference to another sheet.

This test was * added long after the relevant functionality was fixed. */ - public void test27349() { + @Test + public void test27349() throws Exception { // 27349-vlookupAcrossSheets.xls is bugzilla/attachment.cgi?id=10622 InputStream is = HSSFTestDataSamples.openSampleFileStream("27349-vlookupAcrossSheets.xls"); - HSSFWorkbook wb; - try { - // original bug may have thrown exception here, or output warning to - // stderr - wb = new HSSFWorkbook(is); - } catch (IOException e) { - throw new RuntimeException(e); - } + // original bug may have thrown exception here, + // or output warning to stderr + HSSFWorkbook wb = new HSSFWorkbook(is); HSSFSheet sheet = wb.getSheetAt(0); HSSFRow row = sheet.getRow(1); @@ -71,6 +64,9 @@ public final class TestFormulaBugs extends TestCase { assertEquals(HSSFCell.CELL_TYPE_NUMERIC, cv.getCellType()); assertEquals(3.0, cv.getNumberValue(), 0.0); + + wb.close(); + is.close(); } /** @@ -78,7 +74,8 @@ public final class TestFormulaBugs extends TestCase { * * seems to be a duplicate of 24925 */ - public void test27405() { + @Test + public void test27405() throws Exception { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("input"); @@ -99,16 +96,16 @@ public final class TestFormulaBugs extends TestCase { cell = row.createCell(3); // D5 cell.setCellFormula("IF(ISNUMBER(b1),b1,b2)"); - if (false) { // set true to check excel file manually - // bug report mentions 'Editing the formula in excel "fixes" the problem.' - try { - FileOutputStream fileOut = new FileOutputStream("27405output.xls"); - wb.write(fileOut); - fileOut.close(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } +// if (false) { // set true to check excel file manually +// // bug report mentions 'Editing the formula in excel "fixes" the problem.' +// try { +// FileOutputStream fileOut = new FileOutputStream("27405output.xls"); +// wb.write(fileOut); +// fileOut.close(); +// } catch (IOException e) { +// throw new RuntimeException(e); +// } +// } // use POI's evaluator as an extra sanity check HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb); @@ -120,58 +117,59 @@ public final class TestFormulaBugs extends TestCase { cv = fe.evaluate(row.getCell(1)); assertEquals(HSSFCell.CELL_TYPE_BOOLEAN, cv.getCellType()); assertEquals(true, cv.getBooleanValue()); + + wb.close(); } /** * Bug 42448 - Can't parse SUMPRODUCT(A!C7:A!C67, B8:B68) / B69

* @throws IOException */ + @Test public void test42448() throws IOException { HSSFWorkbook wb = new HSSFWorkbook(); + HSSFSheet sheet1 = wb.createSheet("Sheet1"); + + HSSFRow row = sheet1.createRow(0); + HSSFCell cell = row.createCell(0); + + // it's important to create the referenced sheet first + HSSFSheet sheet2 = wb.createSheet("A"); // note name 'A' + // TODO - POI crashes if the formula is added before this sheet + // RuntimeException("Zero length string is an invalid sheet name") + // Excel doesn't crash but the formula doesn't work until it is + // re-entered + + String inputFormula = "SUMPRODUCT(A!C7:A!C67, B8:B68) / B69"; // as per bug report try { - HSSFSheet sheet1 = wb.createSheet("Sheet1"); - - HSSFRow row = sheet1.createRow(0); - HSSFCell cell = row.createCell(0); - - // it's important to create the referenced sheet first - HSSFSheet sheet2 = wb.createSheet("A"); // note name 'A' - // TODO - POI crashes if the formula is added before this sheet - // RuntimeException("Zero length string is an invalid sheet name") - // Excel doesn't crash but the formula doesn't work until it is - // re-entered - - String inputFormula = "SUMPRODUCT(A!C7:A!C67, B8:B68) / B69"; // as per bug report - try { - cell.setCellFormula(inputFormula); - } catch (StringIndexOutOfBoundsException e) { - throw new AssertionFailedError("Identified bug 42448"); - } - - assertEquals("SUMPRODUCT(A!C7:A!C67,B8:B68)/B69", cell.getCellFormula()); - - // might as well evaluate the sucker... - - addCell(sheet2, 5, 2, 3.0); // A!C6 - addCell(sheet2, 6, 2, 4.0); // A!C7 - addCell(sheet2, 66, 2, 5.0); // A!C67 - addCell(sheet2, 67, 2, 6.0); // A!C68 - - addCell(sheet1, 6, 1, 7.0); // B7 - addCell(sheet1, 7, 1, 8.0); // B8 - addCell(sheet1, 67, 1, 9.0); // B68 - addCell(sheet1, 68, 1, 10.0); // B69 - - double expectedResult = (4.0 * 8.0 + 5.0 * 9.0) / 10.0; - - HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb); - CellValue cv = fe.evaluate(cell); - - assertEquals(HSSFCell.CELL_TYPE_NUMERIC, cv.getCellType()); - assertEquals(expectedResult, cv.getNumberValue(), 0.0); - } finally { - wb.close(); + cell.setCellFormula(inputFormula); + } catch (StringIndexOutOfBoundsException e) { + fail("Identified bug 42448"); } + + assertEquals("SUMPRODUCT(A!C7:A!C67,B8:B68)/B69", cell.getCellFormula()); + + // might as well evaluate the sucker... + + addCell(sheet2, 5, 2, 3.0); // A!C6 + addCell(sheet2, 6, 2, 4.0); // A!C7 + addCell(sheet2, 66, 2, 5.0); // A!C67 + addCell(sheet2, 67, 2, 6.0); // A!C68 + + addCell(sheet1, 6, 1, 7.0); // B7 + addCell(sheet1, 7, 1, 8.0); // B8 + addCell(sheet1, 67, 1, 9.0); // B68 + addCell(sheet1, 68, 1, 10.0); // B69 + + double expectedResult = (4.0 * 8.0 + 5.0 * 9.0) / 10.0; + + HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb); + CellValue cv = fe.evaluate(cell); + + assertEquals(HSSFCell.CELL_TYPE_NUMERIC, cv.getCellType()); + assertEquals(expectedResult, cv.getNumberValue(), 0.0); + + wb.close(); } private static void addCell(HSSFSheet sheet, int rowIx, int colIx, diff --git a/src/testcases/org/apache/poi/ss/formula/function/AllFormulaFunctionTests.java b/src/testcases/org/apache/poi/ss/formula/function/AllFormulaFunctionTests.java index 5bbf8f0131..1931bdbcd1 100644 --- a/src/testcases/org/apache/poi/ss/formula/function/AllFormulaFunctionTests.java +++ b/src/testcases/org/apache/poi/ss/formula/function/AllFormulaFunctionTests.java @@ -17,21 +17,17 @@ package org.apache.poi.ss.formula.function; -import junit.framework.Test; -import junit.framework.TestSuite; +import org.junit.runner.RunWith; +import org.junit.runners.Suite; /** * Collects all tests for this org.apache.poi.hssf.record.formula.function. - * - * @author Josh Micich */ +@RunWith(Suite.class) +@Suite.SuiteClasses({ + TestFunctionMetadataRegistry.class, + TestParseMissingBuiltInFuncs.class, + TestReadMissingBuiltInFuncs.class +}) public class AllFormulaFunctionTests { - - public static Test suite() { - TestSuite result = new TestSuite(AllFormulaFunctionTests.class.getName()); - result.addTestSuite(TestFunctionMetadataRegistry.class); - result.addTestSuite(TestParseMissingBuiltInFuncs.class); - result.addTestSuite(TestReadMissingBuiltInFuncs.class); - return result; - } } diff --git a/src/testcases/org/apache/poi/ss/formula/function/ExcelFileFormatDocFunctionExtractor.java b/src/testcases/org/apache/poi/ss/formula/function/ExcelFileFormatDocFunctionExtractor.java index 617f7b052d..aada5e7240 100644 --- a/src/testcases/org/apache/poi/ss/formula/function/ExcelFileFormatDocFunctionExtractor.java +++ b/src/testcases/org/apache/poi/ss/formula/function/ExcelFileFormatDocFunctionExtractor.java @@ -621,12 +621,12 @@ public final class ExcelFileFormatDocFunctionExtractor { File outFile = new File("functionMetadata-asGenerated.txt"); - if (false) { // set true to use local file - File dir = new File("c:/temp"); - File effDocFile = new File(dir, SOURCE_DOC_FILE_NAME); - processFile(effDocFile, outFile); - return; - } +// if (false) { // set true to use local file +// File dir = new File("c:/temp"); +// File effDocFile = new File(dir, SOURCE_DOC_FILE_NAME); +// processFile(effDocFile, outFile); +// return; +// } File tempEFFDocFile = downloadSourceFile(); processFile(tempEFFDocFile, outFile); diff --git a/src/testcases/org/apache/poi/ss/formula/function/TestParseMissingBuiltInFuncs.java b/src/testcases/org/apache/poi/ss/formula/function/TestParseMissingBuiltInFuncs.java index 6a18bd9e14..38afaaa9cb 100644 --- a/src/testcases/org/apache/poi/ss/formula/function/TestParseMissingBuiltInFuncs.java +++ b/src/testcases/org/apache/poi/ss/formula/function/TestParseMissingBuiltInFuncs.java @@ -17,28 +17,34 @@ package org.apache.poi.ss.formula.function; -import junit.framework.AssertionFailedError; -import junit.framework.TestCase; +import static org.junit.Assert.assertEquals; + +import java.io.IOException; import org.apache.poi.hssf.model.HSSFFormulaParser; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.formula.ptg.AbstractFunctionPtg; import org.apache.poi.ss.formula.ptg.FuncPtg; import org.apache.poi.ss.formula.ptg.FuncVarPtg; import org.apache.poi.ss.formula.ptg.Ptg; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.junit.Test; + +import junit.framework.AssertionFailedError; /** * Tests parsing of some built-in functions that were not properly * registered in POI as of bug #44675, #44733 (March/April 2008). - * - * @author Josh Micich */ -public final class TestParseMissingBuiltInFuncs extends TestCase { +public final class TestParseMissingBuiltInFuncs { - private static Ptg[] parse(String formula) { + private static Ptg[] parse(String formula) throws IOException { HSSFWorkbook book = new HSSFWorkbook(); - return HSSFFormulaParser.parse(formula, book); + Ptg[] ptgs = HSSFFormulaParser.parse(formula, book); + book.close(); + return ptgs; } - private static void confirmFunc(String formula, int expPtgArraySize, boolean isVarArgFunc, int funcIx) { + + private static void confirmFunc(String formula, int expPtgArraySize, boolean isVarArgFunc, int funcIx) + throws IOException { Ptg[] ptgs = parse(formula); Ptg ptgF = ptgs[ptgs.length-1]; // func is last RPN token in all these formulas @@ -53,38 +59,49 @@ public final class TestParseMissingBuiltInFuncs extends TestCase { } assertEquals(expPtgArraySize, ptgs.length); assertEquals(funcIx, func.getFunctionIndex()); - Class expCls = isVarArgFunc ? FuncVarPtg.class : FuncPtg.class; + Class expCls = isVarArgFunc ? FuncVarPtg.class : FuncPtg.class; assertEquals(expCls, ptgF.getClass()); // check that parsed Ptg array converts back to formula text OK HSSFWorkbook book = new HSSFWorkbook(); String reRenderedFormula = HSSFFormulaParser.toFormulaString(book, ptgs); assertEquals(formula, reRenderedFormula); + book.close(); } - public void testDatedif() { + @Test + public void testDatedif() throws IOException { int expSize = 4; // NB would be 5 if POI added tAttrVolatile properly confirmFunc("DATEDIF(NOW(),NOW(),\"d\")", expSize, false, 351); } - public void testDdb() { + @Test + public void testDdb() throws IOException { confirmFunc("DDB(1,1,1,1,1)", 6, true, 144); } - public void testAtan() { + + @Test + public void testAtan() throws IOException { confirmFunc("ATAN(1)", 2, false, 18); } - public void testUsdollar() { + @Test + public void testUsdollar() throws IOException { confirmFunc("USDOLLAR(1)", 2, true, 204); } - public void testDBCS() { + @Test + public void testDBCS() throws IOException { confirmFunc("DBCS(\"abc\")", 2, false, 215); } - public void testIsnontext() { + + @Test + public void testIsnontext() throws IOException { confirmFunc("ISNONTEXT(\"abc\")", 2, false, 190); } - public void testDproduct() { + + @Test + public void testDproduct() throws IOException { confirmFunc("DPRODUCT(C1:E5,\"HarvestYield\",G1:H2)", 4, false, 189); } } diff --git a/src/testcases/org/apache/poi/ss/formula/functions/AllSpreadsheetBasedTests.java b/src/testcases/org/apache/poi/ss/formula/functions/AllSpreadsheetBasedTests.java new file mode 100644 index 0000000000..e2d0095caf --- /dev/null +++ b/src/testcases/org/apache/poi/ss/formula/functions/AllSpreadsheetBasedTests.java @@ -0,0 +1,48 @@ +/* ==================================================================== + 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.ss.formula.functions; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; + +/** + * Direct tests for all implementors of Function. + */ +@RunWith(Suite.class) +@Suite.SuiteClasses({ + TestCodeFunctionsFromSpreadsheet.class, + TestComplexFunctionsFromSpreadsheet.class, + TestDeltaFunctionsFromSpreadsheet.class, + TestDGetFunctionsFromSpreadsheet.class, + TestDStarFunctionsFromSpreadsheet.class, + TestFactDoubleFunctionsFromSpreadsheet.class, + TestFixedFunctionsFromSpreadsheet.class, + TestImaginaryFunctionsFromSpreadsheet.class, + TestImRealFunctionsFromSpreadsheet.class, + TestIndexFunctionFromSpreadsheet.class, + TestIndirectFunctionFromSpreadsheet.class, + TestLookupFunctionsFromSpreadsheet.class, + TestMatchFunctionsFromSpreadsheet.class, + TestQuotientFunctionsFromSpreadsheet.class, + TestReptFunctionsFromSpreadsheet.class, + TestRomanFunctionsFromSpreadsheet.class, + TestWeekNumFunctionsFromSpreadsheet.class, + TestWeekNumFunctionsFromSpreadsheet2013.class +}) +public class AllSpreadsheetBasedTests { +} diff --git a/src/testcases/org/apache/poi/ss/formula/functions/BaseTestFunctionsFromSpreadsheet.java b/src/testcases/org/apache/poi/ss/formula/functions/BaseTestFunctionsFromSpreadsheet.java index 98169a0c3e..e222220cef 100644 --- a/src/testcases/org/apache/poi/ss/formula/functions/BaseTestFunctionsFromSpreadsheet.java +++ b/src/testcases/org/apache/poi/ss/formula/functions/BaseTestFunctionsFromSpreadsheet.java @@ -17,198 +17,102 @@ package org.apache.poi.ss.formula.functions; -import java.io.PrintStream; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; -import junit.framework.Assert; -import junit.framework.AssertionFailedError; -import junit.framework.TestCase; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Locale; import org.apache.poi.hssf.HSSFTestDataSamples; -import org.apache.poi.ss.formula.eval.ErrorEval; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.util.CellReference; +import org.apache.poi.ss.formula.eval.ErrorEval; import org.apache.poi.ss.usermodel.CellValue; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.junit.runners.Parameterized.Parameter; -/** - * - */ -public abstract class BaseTestFunctionsFromSpreadsheet extends TestCase { - - private static final class Result { - public static final int SOME_EVALUATIONS_FAILED = -1; - public static final int ALL_EVALUATIONS_SUCCEEDED = +1; - public static final int NO_EVALUATIONS_FOUND = 0; - } +@RunWith(Parameterized.class) +public abstract class BaseTestFunctionsFromSpreadsheet { /** * This class defines constants for navigating around the test data spreadsheet used for these tests. */ - private static final class SS { - + interface SS { /** Name of the test spreadsheet (found in the standard test data folder) */ - /** Name of the first sheet in the spreadsheet (contains comments) */ - public final static String README_SHEET_NAME = "Read Me"; + String README_SHEET_NAME = "Read Me"; /** Row (zero-based) in each sheet where the evaluation cases start. */ - public static final int START_TEST_CASES_ROW_INDEX = 4; // Row '5' + int START_TEST_CASES_ROW_INDEX = 4; // Row '5' /** Index of the column that contains the function names */ - public static final int COLUMN_INDEX_MARKER = 0; // Column 'A' - public static final int COLUMN_INDEX_EVALUATION = 1; // Column 'B' - public static final int COLUMN_INDEX_EXPECTED_RESULT = 2; // Column 'C' - public static final int COLUMN_ROW_COMMENT = 3; // Column 'D' + int COLUMN_INDEX_MARKER = 0; // Column 'A' + int COLUMN_INDEX_EVALUATION = 1; // Column 'B' + int COLUMN_INDEX_EXPECTED_RESULT = 2; // Column 'C' + int COLUMN_ROW_COMMENT = 3; // Column 'D' /** Used to indicate when there are no more test cases on the current sheet */ - public static final String TEST_CASES_END_MARKER = ""; + String TEST_CASES_END_MARKER = ""; /** Used to indicate that the test on the current row should be ignored */ - public static final String SKIP_CURRENT_TEST_CASE_MARKER = ""; + String SKIP_CURRENT_TEST_CASE_MARKER = ""; } - // Note - multiple failures are aggregated before ending. - // If one or more functions fail, a single AssertionFailedError is thrown at the end - private int _sheetFailureCount; - private int _sheetSuccessCount; - private int _evaluationFailureCount; - private int _evaluationSuccessCount; - - - - private static void confirmExpectedResult(String msg, HSSFCell expected, CellValue actual) { - if (expected == null) { - throw new AssertionFailedError(msg + " - Bad setup data expected value is null"); - } - if(actual == null) { - throw new AssertionFailedError(msg + " - actual value was null"); - } - if(expected.getCellType() == HSSFCell.CELL_TYPE_ERROR) { - confirmErrorResult(msg, expected.getErrorCellValue(), actual); - return; - } - if(actual.getCellType() == HSSFCell.CELL_TYPE_ERROR) { - throw unexpectedError(msg, expected, actual.getErrorValue()); - } - if(actual.getCellType() != expected.getCellType()) { - throw wrongTypeError(msg, expected, actual); - } + @Parameter(value = 0) + public String testName; + @Parameter(value = 1) + public String filename; + @Parameter(value = 2) + public HSSFSheet sheet; + @Parameter(value = 3) + public int formulasRowIdx; + @Parameter(value = 4) + public HSSFFormulaEvaluator evaluator; - switch (expected.getCellType()) { - case HSSFCell.CELL_TYPE_BOOLEAN: - assertEquals(msg, expected.getBooleanCellValue(), actual.getBooleanValue()); - break; - case HSSFCell.CELL_TYPE_FORMULA: // will never be used, since we will call method after formula evaluation - throw new IllegalStateException("Cannot expect formula as result of formula evaluation: " + msg); - case HSSFCell.CELL_TYPE_NUMERIC: - assertEquals(expected.getNumericCellValue(), actual.getNumberValue(), 0.0); - break; - case HSSFCell.CELL_TYPE_STRING: - assertEquals(msg, expected.getRichStringCellValue().getString(), actual.getStringValue()); - break; - } - } + + protected static Collection data(Class clazz, String filename) throws Exception { + HSSFWorkbook workbook = HSSFTestDataSamples.openSampleWorkbook(filename); + confirmReadMeSheet(workbook, clazz); + List data = new ArrayList(); - private static AssertionFailedError wrongTypeError(String msgPrefix, HSSFCell expectedCell, CellValue actualValue) { - return new AssertionFailedError(msgPrefix + " Result type mismatch. Evaluated result was " - + actualValue.formatAsString() - + " but the expected result was " - + formatValue(expectedCell) - ); - } - private static AssertionFailedError unexpectedError(String msgPrefix, HSSFCell expected, int actualErrorCode) { - return new AssertionFailedError(msgPrefix + " Error code (" - + ErrorEval.getText(actualErrorCode) - + ") was evaluated, but the expected result was " - + formatValue(expected) - ); - } - - - private static void confirmErrorResult(String msgPrefix, int expectedErrorCode, CellValue actual) { - if(actual.getCellType() != HSSFCell.CELL_TYPE_ERROR) { - throw new AssertionFailedError(msgPrefix + " Expected cell error (" - + ErrorEval.getText(expectedErrorCode) + ") but actual value was " - + actual.formatAsString()); - } - if(expectedErrorCode != actual.getErrorValue()) { - throw new AssertionFailedError(msgPrefix + " Expected cell error code (" - + ErrorEval.getText(expectedErrorCode) - + ") but actual error code was (" - + ErrorEval.getText(actual.getErrorValue()) - + ")"); - } - } - - - private static String formatValue(HSSFCell expecedCell) { - switch (expecedCell.getCellType()) { - case HSSFCell.CELL_TYPE_BLANK: return ""; - case HSSFCell.CELL_TYPE_BOOLEAN: return String.valueOf(expecedCell.getBooleanCellValue()); - case HSSFCell.CELL_TYPE_NUMERIC: return String.valueOf(expecedCell.getNumericCellValue()); - case HSSFCell.CELL_TYPE_STRING: return expecedCell.getRichStringCellValue().getString(); - } - throw new RuntimeException("Unexpected cell type of expected value (" + expecedCell.getCellType() + ")"); - } - - - protected void setUp() { - _sheetFailureCount = 0; - _sheetSuccessCount = 0; - _evaluationFailureCount = 0; - _evaluationSuccessCount = 0; - } - - public void testFunctionsFromTestSpreadsheet() { - HSSFWorkbook workbook = HSSFTestDataSamples.openSampleWorkbook(this.getFilename()); - - confirmReadMeSheet(workbook); int nSheets = workbook.getNumberOfSheets(); - for(int i=1; i< nSheets; i++) { - int sheetResult = processTestSheet(workbook, i, workbook.getSheetName(i)); - switch(sheetResult) { - case Result.ALL_EVALUATIONS_SUCCEEDED: _sheetSuccessCount ++; break; - case Result.SOME_EVALUATIONS_FAILED: _sheetFailureCount ++; break; - } - } - - // confirm results - String successMsg = "There were " - + _sheetSuccessCount + " successful sheets(s) and " - + _evaluationSuccessCount + " function(s) without error"; - if(_sheetFailureCount > 0) { - String msg = _sheetFailureCount + " sheets(s) failed with " - + _evaluationFailureCount + " evaluation(s). " + successMsg; - throw new AssertionFailedError(msg); - } - if(false) { // normally no output for successful tests - System.out.println(getClass().getName() + ": " + successMsg); + for(int sheetIdx=1; sheetIdx< nSheets; sheetIdx++) { + HSSFSheet sheet = workbook.getSheetAt(sheetIdx); + processFunctionGroup(data, sheet, SS.START_TEST_CASES_ROW_INDEX, null, filename); } + + workbook.close(); + + return data; } - protected abstract String getFilename(); - - private int processTestSheet(HSSFWorkbook workbook, int sheetIndex, String sheetName) { - HSSFSheet sheet = workbook.getSheetAt(sheetIndex); - HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(workbook); - int maxRows = sheet.getLastRowNum()+1; - int result = Result.NO_EVALUATIONS_FOUND; // so far + private static void processFunctionGroup(List data, HSSFSheet sheet, final int startRowIndex, String testFocusFunctionName, String filename) { + HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(sheet.getWorkbook()); - String currentGroupComment = null; - for(int rowIndex=SS.START_TEST_CASES_ROW_INDEX; rowIndex clazz) { String firstSheetName = workbook.getSheetName(0); - if(!firstSheetName.equalsIgnoreCase(SS.README_SHEET_NAME)) { - throw new RuntimeException("First sheet's name was '" + firstSheetName + "' but expected '" + SS.README_SHEET_NAME + "'"); - } + assertTrue("First sheet's name was '" + firstSheetName + "' but expected '" + SS.README_SHEET_NAME + "'", + firstSheetName.equalsIgnoreCase(SS.README_SHEET_NAME)); HSSFSheet sheet = workbook.getSheetAt(0); String specifiedClassName = sheet.getRow(2).getCell(0).getRichStringCellValue().getString(); - assertEquals("Test class name in spreadsheet comment", getClass().getName(), specifiedClassName); - } - - - /** - * Useful to keep output concise when expecting many failures to be reported by this test case - */ - private static void printShortStackTrace(PrintStream ps, Throwable e) { - StackTraceElement[] stes = e.getStackTrace(); - - int startIx = 0; - // skip any top frames inside junit.framework.Assert - while(startIx= endIx) { - // something went wrong. just print the whole stack trace - e.printStackTrace(ps); - } - endIx -= 4; // skip 4 frames of reflection invocation - ps.println(e.toString()); - for(int i=startIx; i"; + case HSSFCell.CELL_TYPE_BOOLEAN: return Boolean.toString(expecedCell.getBooleanCellValue()); + case HSSFCell.CELL_TYPE_NUMERIC: return Double.toString(expecedCell.getNumericCellValue()); + case HSSFCell.CELL_TYPE_STRING: return expecedCell.getRichStringCellValue().getString(); + } + fail("Unexpected cell type of expected value (" + expecedCell.getCellType() + ")"); + return ""; + } + + } diff --git a/src/testcases/org/apache/poi/ss/formula/functions/TestCodeFunctionsFromSpreadsheet.java b/src/testcases/org/apache/poi/ss/formula/functions/TestCodeFunctionsFromSpreadsheet.java index ade50d9d99..3d78d40da6 100644 --- a/src/testcases/org/apache/poi/ss/formula/functions/TestCodeFunctionsFromSpreadsheet.java +++ b/src/testcases/org/apache/poi/ss/formula/functions/TestCodeFunctionsFromSpreadsheet.java @@ -17,15 +17,16 @@ package org.apache.poi.ss.formula.functions; +import java.util.Collection; + +import org.junit.runners.Parameterized.Parameters; + /** * Tests CODE() as loaded from a test data spreadsheet.

- * - * @author cedric dot walter @ gmail dot com */ public class TestCodeFunctionsFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet { - - @Override - protected String getFilename() { - return "CodeFunctionTestCaseData.xls"; + @Parameters(name="{0}") + public static Collection data() throws Exception { + return data(TestCodeFunctionsFromSpreadsheet.class, "CodeFunctionTestCaseData.xls"); } } \ No newline at end of file diff --git a/src/testcases/org/apache/poi/ss/formula/functions/TestComplexFunctionsFromSpreadsheet.java b/src/testcases/org/apache/poi/ss/formula/functions/TestComplexFunctionsFromSpreadsheet.java index 1d2da8a4f0..748b0cacd1 100644 --- a/src/testcases/org/apache/poi/ss/formula/functions/TestComplexFunctionsFromSpreadsheet.java +++ b/src/testcases/org/apache/poi/ss/formula/functions/TestComplexFunctionsFromSpreadsheet.java @@ -17,15 +17,16 @@ package org.apache.poi.ss.formula.functions; +import java.util.Collection; + +import org.junit.runners.Parameterized.Parameters; + /** * Tests COMPLEX() as loaded from a test data spreadsheet.

- * - * @author cedric dot walter @ gmail dot com */ public class TestComplexFunctionsFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet { - - @Override - protected String getFilename() { - return "ComplexFunctionTestCaseData.xls"; + @Parameters(name="{0}") + public static Collection data() throws Exception { + return data(TestComplexFunctionsFromSpreadsheet.class, "ComplexFunctionTestCaseData.xls"); } } \ No newline at end of file diff --git a/src/testcases/org/apache/poi/ss/formula/functions/TestDGetFunctionsFromSpreadsheet.java b/src/testcases/org/apache/poi/ss/formula/functions/TestDGetFunctionsFromSpreadsheet.java index ebc9f7aaf5..4ac7b9861e 100644 --- a/src/testcases/org/apache/poi/ss/formula/functions/TestDGetFunctionsFromSpreadsheet.java +++ b/src/testcases/org/apache/poi/ss/formula/functions/TestDGetFunctionsFromSpreadsheet.java @@ -16,12 +16,16 @@ ==================================================================== */ package org.apache.poi.ss.formula.functions; +import java.util.Collection; + +import org.junit.runners.Parameterized.Parameters; + /** * Tests DGET() as loaded from a test data spreadsheet. */ public class TestDGetFunctionsFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet { - - protected String getFilename() { - return "DGet.xls"; + @Parameters(name="{0}") + public static Collection data() throws Exception { + return data(TestDGetFunctionsFromSpreadsheet.class, "DGet.xls"); } } diff --git a/src/testcases/org/apache/poi/ss/formula/functions/TestDStarFunctionsFromSpreadsheet.java b/src/testcases/org/apache/poi/ss/formula/functions/TestDStarFunctionsFromSpreadsheet.java index da9375d8cb..0d20d98d5d 100644 --- a/src/testcases/org/apache/poi/ss/formula/functions/TestDStarFunctionsFromSpreadsheet.java +++ b/src/testcases/org/apache/poi/ss/formula/functions/TestDStarFunctionsFromSpreadsheet.java @@ -16,12 +16,16 @@ ==================================================================== */ package org.apache.poi.ss.formula.functions; +import java.util.Collection; + +import org.junit.runners.Parameterized.Parameters; + /** * Tests D*() functions as loaded from a test data spreadsheet. */ public class TestDStarFunctionsFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet { - - protected String getFilename() { - return "DStar.xls"; + @Parameters(name="{0}") + public static Collection data() throws Exception { + return data(TestDStarFunctionsFromSpreadsheet.class, "DStar.xls"); } } diff --git a/src/testcases/org/apache/poi/ss/formula/functions/TestDeltaFunctionsFromSpreadsheet.java b/src/testcases/org/apache/poi/ss/formula/functions/TestDeltaFunctionsFromSpreadsheet.java index a15cf7cf73..68b281d4bb 100644 --- a/src/testcases/org/apache/poi/ss/formula/functions/TestDeltaFunctionsFromSpreadsheet.java +++ b/src/testcases/org/apache/poi/ss/formula/functions/TestDeltaFunctionsFromSpreadsheet.java @@ -16,14 +16,16 @@ ==================================================================== */ package org.apache.poi.ss.formula.functions; +import java.util.Collection; + +import org.junit.runners.Parameterized.Parameters; + /** -* Tests DELTA() as loaded from a test data spreadsheet.

-* -* @author cedric dot walter @ gmail dot com -*/ + * Tests DELTA() as loaded from a test data spreadsheet.

+ */ public class TestDeltaFunctionsFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet { - - protected String getFilename() { - return "DeltaFunctionTestCaseData.xls"; + @Parameters(name="{0}") + public static Collection data() throws Exception { + return data(TestDeltaFunctionsFromSpreadsheet.class, "DeltaFunctionTestCaseData.xls"); } } diff --git a/src/testcases/org/apache/poi/ss/formula/functions/TestFactDoubleFunctionsFromSpreadsheet.java b/src/testcases/org/apache/poi/ss/formula/functions/TestFactDoubleFunctionsFromSpreadsheet.java index d56e14df2c..fb45ac2fa9 100644 --- a/src/testcases/org/apache/poi/ss/formula/functions/TestFactDoubleFunctionsFromSpreadsheet.java +++ b/src/testcases/org/apache/poi/ss/formula/functions/TestFactDoubleFunctionsFromSpreadsheet.java @@ -17,14 +17,16 @@ package org.apache.poi.ss.formula.functions; +import java.util.Collection; + +import org.junit.runners.Parameterized.Parameters; + /** * Tests FactDouble() as loaded from a test data spreadsheet.

- * - * @author cedric dot walter @ gmail dot com */ public class TestFactDoubleFunctionsFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet { - - protected String getFilename() { - return "FactDoubleFunctionTestCaseData.xls"; + @Parameters(name="{0}") + public static Collection data() throws Exception { + return data(TestFactDoubleFunctionsFromSpreadsheet.class, "FactDoubleFunctionTestCaseData.xls"); } } diff --git a/src/testcases/org/apache/poi/ss/formula/functions/TestFixedFunctionsFromSpreadsheet.java b/src/testcases/org/apache/poi/ss/formula/functions/TestFixedFunctionsFromSpreadsheet.java index 70a8a3dbfd..a5efd75e2e 100644 --- a/src/testcases/org/apache/poi/ss/formula/functions/TestFixedFunctionsFromSpreadsheet.java +++ b/src/testcases/org/apache/poi/ss/formula/functions/TestFixedFunctionsFromSpreadsheet.java @@ -17,13 +17,16 @@ package org.apache.poi.ss.formula.functions; +import java.util.Collection; + +import org.junit.runners.Parameterized.Parameters; + /** * Tests FIXED() as loaded from a test data spreadsheet. */ public class TestFixedFunctionsFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet { - - @Override - protected String getFilename() { - return "57003-FixedFunctionTestCaseData.xls"; + @Parameters(name="{0}") + public static Collection data() throws Exception { + return data(TestFixedFunctionsFromSpreadsheet.class, "57003-FixedFunctionTestCaseData.xls"); } } diff --git a/src/testcases/org/apache/poi/ss/formula/functions/TestImRealFunctionsFromSpreadsheet.java b/src/testcases/org/apache/poi/ss/formula/functions/TestImRealFunctionsFromSpreadsheet.java index a64335517c..db98cff93b 100644 --- a/src/testcases/org/apache/poi/ss/formula/functions/TestImRealFunctionsFromSpreadsheet.java +++ b/src/testcases/org/apache/poi/ss/formula/functions/TestImRealFunctionsFromSpreadsheet.java @@ -17,14 +17,16 @@ package org.apache.poi.ss.formula.functions; +import java.util.Collection; + +import org.junit.runners.Parameterized.Parameters; + /** * Tests ImReal() as loaded from a test data spreadsheet.

- * - * @author cedric dot walter @ gmail dot com */ public class TestImRealFunctionsFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet { - - protected String getFilename() { - return "ImRealFunctionTestCaseData.xls"; + @Parameters(name="{0}") + public static Collection data() throws Exception { + return data(TestImRealFunctionsFromSpreadsheet.class, "ImRealFunctionTestCaseData.xls"); } } diff --git a/src/testcases/org/apache/poi/ss/formula/functions/TestImaginaryFunctionsFromSpreadsheet.java b/src/testcases/org/apache/poi/ss/formula/functions/TestImaginaryFunctionsFromSpreadsheet.java index c5b74ac0c7..9693025516 100644 --- a/src/testcases/org/apache/poi/ss/formula/functions/TestImaginaryFunctionsFromSpreadsheet.java +++ b/src/testcases/org/apache/poi/ss/formula/functions/TestImaginaryFunctionsFromSpreadsheet.java @@ -17,14 +17,16 @@ package org.apache.poi.ss.formula.functions; +import java.util.Collection; + +import org.junit.runners.Parameterized.Parameters; + /** * Tests Imaginary() as loaded from a test data spreadsheet.

- * - * @author cedric dot walter @ gmail dot com */ public class TestImaginaryFunctionsFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet { - - protected String getFilename() { - return "ImaginaryFunctionTestCaseData.xls"; + @Parameters(name="{0}") + public static Collection data() throws Exception { + return data(TestImaginaryFunctionsFromSpreadsheet.class, "ImaginaryFunctionTestCaseData.xls"); } } diff --git a/src/testcases/org/apache/poi/ss/formula/functions/TestIndexFunctionFromSpreadsheet.java b/src/testcases/org/apache/poi/ss/formula/functions/TestIndexFunctionFromSpreadsheet.java index 214e01536b..0370b627d6 100644 --- a/src/testcases/org/apache/poi/ss/formula/functions/TestIndexFunctionFromSpreadsheet.java +++ b/src/testcases/org/apache/poi/ss/formula/functions/TestIndexFunctionFromSpreadsheet.java @@ -17,13 +17,16 @@ package org.apache.poi.ss.formula.functions; +import java.util.Collection; + +import org.junit.runners.Parameterized.Parameters; + /** * Tests INDEX() as loaded from a test data spreadsheet.

*/ public final class TestIndexFunctionFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet { - - @Override - protected String getFilename() { - return "IndexFunctionTestCaseData.xls"; + @Parameters(name="{0}") + public static Collection data() throws Exception { + return data(TestIndexFunctionFromSpreadsheet.class, "IndexFunctionTestCaseData.xls"); } } diff --git a/src/testcases/org/apache/poi/ss/formula/functions/TestIndirectFunctionFromSpreadsheet.java b/src/testcases/org/apache/poi/ss/formula/functions/TestIndirectFunctionFromSpreadsheet.java index 3d39308c3b..c475ef526d 100644 --- a/src/testcases/org/apache/poi/ss/formula/functions/TestIndirectFunctionFromSpreadsheet.java +++ b/src/testcases/org/apache/poi/ss/formula/functions/TestIndirectFunctionFromSpreadsheet.java @@ -17,6 +17,10 @@ package org.apache.poi.ss.formula.functions; +import java.util.Collection; + +import org.junit.runners.Parameterized.Parameters; + /** * Tests INDIRECT() as loaded from a test data spreadsheet.

* @@ -25,9 +29,8 @@ package org.apache.poi.ss.formula.functions; * more easily. */ public final class TestIndirectFunctionFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet { - - @Override - protected String getFilename() { - return "IndirectFunctionTestCaseData.xls"; + @Parameters(name="{0}") + public static Collection data() throws Exception { + return data(TestIndirectFunctionFromSpreadsheet.class, "IndirectFunctionTestCaseData.xls"); } } diff --git a/src/testcases/org/apache/poi/ss/formula/functions/TestLookupFunctionsFromSpreadsheet.java b/src/testcases/org/apache/poi/ss/formula/functions/TestLookupFunctionsFromSpreadsheet.java index 76386e9b6c..6d95561d50 100644 --- a/src/testcases/org/apache/poi/ss/formula/functions/TestLookupFunctionsFromSpreadsheet.java +++ b/src/testcases/org/apache/poi/ss/formula/functions/TestLookupFunctionsFromSpreadsheet.java @@ -17,7 +17,9 @@ package org.apache.poi.ss.formula.functions; +import java.util.Collection; +import org.junit.runners.Parameterized.Parameters; /** * Tests lookup functions (VLOOKUP, HLOOKUP, LOOKUP, MATCH) as loaded from a test data spreadsheet.

@@ -29,9 +31,8 @@ package org.apache.poi.ss.formula.functions; * more easily. */ public final class TestLookupFunctionsFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet { - - @Override - protected String getFilename() { - return "LookupFunctionsTestCaseData.xls"; + @Parameters(name="{0}") + public static Collection data() throws Exception { + return data(TestLookupFunctionsFromSpreadsheet.class, "LookupFunctionsTestCaseData.xls"); } } diff --git a/src/testcases/org/apache/poi/ss/formula/functions/TestMatchFunctionsFromSpreadsheet.java b/src/testcases/org/apache/poi/ss/formula/functions/TestMatchFunctionsFromSpreadsheet.java index 725946a9ed..dce2927337 100644 --- a/src/testcases/org/apache/poi/ss/formula/functions/TestMatchFunctionsFromSpreadsheet.java +++ b/src/testcases/org/apache/poi/ss/formula/functions/TestMatchFunctionsFromSpreadsheet.java @@ -17,7 +17,9 @@ package org.apache.poi.ss.formula.functions; +import java.util.Collection; +import org.junit.runners.Parameterized.Parameters; /** * Tests Match functions as loaded from a test data spreadsheet.

@@ -27,9 +29,8 @@ package org.apache.poi.ss.formula.functions; * more easily. */ public final class TestMatchFunctionsFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet { - - @Override - protected String getFilename() { - return "MatchFunctionTestCaseData.xls"; + @Parameters(name="{0}") + public static Collection data() throws Exception { + return data(TestMatchFunctionsFromSpreadsheet.class, "MatchFunctionTestCaseData.xls"); } } diff --git a/src/testcases/org/apache/poi/ss/formula/functions/TestQuotientFunctionsFromSpreadsheet.java b/src/testcases/org/apache/poi/ss/formula/functions/TestQuotientFunctionsFromSpreadsheet.java index 3d68845e50..62c4c10f2d 100644 --- a/src/testcases/org/apache/poi/ss/formula/functions/TestQuotientFunctionsFromSpreadsheet.java +++ b/src/testcases/org/apache/poi/ss/formula/functions/TestQuotientFunctionsFromSpreadsheet.java @@ -17,15 +17,16 @@ package org.apache.poi.ss.formula.functions; +import java.util.Collection; + +import org.junit.runners.Parameterized.Parameters; + /** * Tests QUOTIENT() as loaded from a test data spreadsheet.

- * - * @author cedric dot walter @ gmail dot com */ public class TestQuotientFunctionsFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet { - - @Override - protected String getFilename() { - return "QuotientFunctionTestCaseData.xls"; + @Parameters(name="{0}") + public static Collection data() throws Exception { + return data(TestQuotientFunctionsFromSpreadsheet.class, "QuotientFunctionTestCaseData.xls"); } } diff --git a/src/testcases/org/apache/poi/ss/formula/functions/TestReptFunctionsFromSpreadsheet.java b/src/testcases/org/apache/poi/ss/formula/functions/TestReptFunctionsFromSpreadsheet.java index 3aebcc5050..c0c11eae6a 100644 --- a/src/testcases/org/apache/poi/ss/formula/functions/TestReptFunctionsFromSpreadsheet.java +++ b/src/testcases/org/apache/poi/ss/formula/functions/TestReptFunctionsFromSpreadsheet.java @@ -17,15 +17,16 @@ package org.apache.poi.ss.formula.functions; +import java.util.Collection; + +import org.junit.runners.Parameterized.Parameters; + /** * Tests REPT() as loaded from a test data spreadsheet.

- * - * @author cedric dot walter @ gmail dot com */ public class TestReptFunctionsFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet { - - @Override - protected String getFilename() { - return "ReptFunctionTestCaseData.xls"; + @Parameters(name="{0}") + public static Collection data() throws Exception { + return data(TestReptFunctionsFromSpreadsheet.class, "ReptFunctionTestCaseData.xls"); } } \ No newline at end of file diff --git a/src/testcases/org/apache/poi/ss/formula/functions/TestRomanFunctionsFromSpreadsheet.java b/src/testcases/org/apache/poi/ss/formula/functions/TestRomanFunctionsFromSpreadsheet.java index a17b9f8974..687c7b8319 100644 --- a/src/testcases/org/apache/poi/ss/formula/functions/TestRomanFunctionsFromSpreadsheet.java +++ b/src/testcases/org/apache/poi/ss/formula/functions/TestRomanFunctionsFromSpreadsheet.java @@ -17,14 +17,16 @@ package org.apache.poi.ss.formula.functions; +import java.util.Collection; + +import org.junit.runners.Parameterized.Parameters; + /** * Tests Roman() as loaded from a test data spreadsheet.

- * - * @author cedric dot walter @ gmail dot com */ public class TestRomanFunctionsFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet { - - protected String getFilename() { - return "RomanFunctionTestCaseData.xls"; + @Parameters(name="{0}") + public static Collection data() throws Exception { + return data(TestRomanFunctionsFromSpreadsheet.class, "RomanFunctionTestCaseData.xls"); } } diff --git a/src/testcases/org/apache/poi/ss/formula/functions/TestWeekNumFunctionsFromSpreadsheet.java b/src/testcases/org/apache/poi/ss/formula/functions/TestWeekNumFunctionsFromSpreadsheet.java index 77b832ea14..c2e41dd4a4 100644 --- a/src/testcases/org/apache/poi/ss/formula/functions/TestWeekNumFunctionsFromSpreadsheet.java +++ b/src/testcases/org/apache/poi/ss/formula/functions/TestWeekNumFunctionsFromSpreadsheet.java @@ -17,14 +17,16 @@ package org.apache.poi.ss.formula.functions; +import java.util.Collection; + +import org.junit.runners.Parameterized.Parameters; + /** * Tests WeekNum() as loaded from a test data spreadsheet.

- * - * @author cedric dot walter @ gmail dot com */ public class TestWeekNumFunctionsFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet { - - protected String getFilename() { - return "WeekNumFunctionTestCaseData.xls"; + @Parameters(name="{0}") + public static Collection data() throws Exception { + return data(TestWeekNumFunctionsFromSpreadsheet.class, "WeekNumFunctionTestCaseData.xls"); } } diff --git a/src/testcases/org/apache/poi/ss/formula/functions/TestWeekNumFunctionsFromSpreadsheet2013.java b/src/testcases/org/apache/poi/ss/formula/functions/TestWeekNumFunctionsFromSpreadsheet2013.java index d7d286468a..b75a419080 100644 --- a/src/testcases/org/apache/poi/ss/formula/functions/TestWeekNumFunctionsFromSpreadsheet2013.java +++ b/src/testcases/org/apache/poi/ss/formula/functions/TestWeekNumFunctionsFromSpreadsheet2013.java @@ -17,15 +17,17 @@ package org.apache.poi.ss.formula.functions; +import java.util.Collection; + +import org.junit.runners.Parameterized.Parameters; + /** * Tests WeekNum() as loaded from a test data 2013 excel spreadsheet.

- * - * @author cedric dot walter @ gmail dot com */ public class TestWeekNumFunctionsFromSpreadsheet2013 extends BaseTestFunctionsFromSpreadsheet { - - protected String getFilename() { + @Parameters(name="{0}") + public static Collection data() throws Exception { //Only open this file with Excel 2013 to keep binary specific to that version - return "WeekNumFunctionTestCaseData2013.xls"; + return data(TestWeekNumFunctionsFromSpreadsheet2013.class, "WeekNumFunctionTestCaseData2013.xls"); } } diff --git a/src/testcases/org/apache/poi/ss/formula/ptg/TestExternalFunctionFormulas.java b/src/testcases/org/apache/poi/ss/formula/ptg/TestExternalFunctionFormulas.java index 968d926eef..bb3220743c 100644 --- a/src/testcases/org/apache/poi/ss/formula/ptg/TestExternalFunctionFormulas.java +++ b/src/testcases/org/apache/poi/ss/formula/ptg/TestExternalFunctionFormulas.java @@ -17,13 +17,7 @@ package org.apache.poi.ss.formula.ptg; -import org.apache.poi.util.TempFile; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; - -import junit.framework.TestCase; +import static org.junit.Assert.assertEquals; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.model.HSSFFormulaParser; @@ -32,45 +26,53 @@ import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.CellValue; +import org.junit.Test; + /** * Tests for functions from external workbooks (e.g. YEARFRAC). */ -public final class TestExternalFunctionFormulas extends TestCase { +public final class TestExternalFunctionFormulas { /** * tests NameXPtg.toFormulaString(Workbook) and logic in Workbook below that */ - public void testReadFormulaContainingExternalFunction() { + @Test + public void testReadFormulaContainingExternalFunction() throws Exception { HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("externalFunctionExample.xls"); String expectedFormula = "YEARFRAC(B1,C1)"; HSSFSheet sht = wb.getSheetAt(0); String cellFormula = sht.getRow(0).getCell(0).getCellFormula(); assertEquals(expectedFormula, cellFormula); + + wb.close(); } - public void testParse() { + @Test + public void testParse() throws Exception { HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("externalFunctionExample.xls"); Ptg[] ptgs = HSSFFormulaParser.parse("YEARFRAC(B1,C1)", wb); assertEquals(4, ptgs.length); assertEquals(NameXPtg.class, ptgs[0].getClass()); wb.getSheetAt(0).getRow(0).createCell(6).setCellFormula("YEARFRAC(C1,B1)"); - if (false) { - // In case you fancy checking in excel - try { - File tempFile = TempFile.createTempFile("testExtFunc", ".xls"); - FileOutputStream fout = new FileOutputStream(tempFile); - wb.write(fout); - fout.close(); - System.out.println("check out " + tempFile.getAbsolutePath()); - } catch (IOException e) { - throw new RuntimeException(e); - } - } +// if (false) { +// // In case you fancy checking in excel +// try { +// File tempFile = TempFile.createTempFile("testExtFunc", ".xls"); +// FileOutputStream fout = new FileOutputStream(tempFile); +// wb.write(fout); +// fout.close(); +// System.out.println("check out " + tempFile.getAbsolutePath()); +// } catch (IOException e) { +// throw new RuntimeException(e); +// } +// } + wb.close(); } - public void testEvaluate() { + @Test + public void testEvaluate() throws Exception { HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("externalFunctionExample.xls"); HSSFSheet sheet = wb.getSheetAt(0); HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb); @@ -79,6 +81,7 @@ public final class TestExternalFunctionFormulas extends TestCase { confirmCellEval(sheet, 2, 0, fe, "YEARFRAC(B3,C3,D3)", 0.0); confirmCellEval(sheet, 3, 0, fe, "IF(ISEVEN(3),1.2,1.6)", 1.6); confirmCellEval(sheet, 4, 0, fe, "IF(ISODD(3),1.2,1.6)", 1.2); + wb.close(); } private static void confirmCellEval(HSSFSheet sheet, int rowIx, int colIx, diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestDataValidation.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestDataValidation.java index e73befca43..914b279866 100644 --- a/src/testcases/org/apache/poi/ss/usermodel/BaseTestDataValidation.java +++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestDataValidation.java @@ -17,8 +17,6 @@ package org.apache.poi.ss.usermodel; -import junit.framework.TestCase; - import org.apache.poi.ss.ITestDataProvider; import org.apache.poi.ss.usermodel.DataValidation.ErrorStyle; import org.apache.poi.ss.usermodel.DataValidationConstraint.OperatorType; @@ -27,13 +25,14 @@ import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellRangeAddressList; import org.apache.poi.util.POILogFactory; import org.apache.poi.util.POILogger; +import org.junit.Test; /** * Class for testing Excel's data validation mechanism * * @author Dragos Buleandra ( dragos.buleandra@trade2b.ro ) */ -public abstract class BaseTestDataValidation extends TestCase { +public abstract class BaseTestDataValidation { private final ITestDataProvider _testDataProvider; private static final POILogger log = POILogFactory.getLogger(BaseTestDataValidation.class); @@ -465,7 +464,8 @@ public abstract class BaseTestDataValidation extends TestCase { va.addValidation(OperatorType.LESS_OR_EQUAL, "4", null, ErrorStyle.STOP, "Less than or equal to 4", "-", false, true, false); } - public void testDataValidation() { + @Test + public void testDataValidation() throws Exception { log("\nTest no. 2 - Test Excel's Data validation mechanism"); Workbook wb = _testDataProvider.createWorkbook(); WorkbookFormatter wf = new WorkbookFormatter(wb); @@ -491,7 +491,9 @@ public abstract class BaseTestDataValidation extends TestCase { addCustomValidations(wf); log("done !"); - wb = _testDataProvider.writeOutAndReadBack(wb); + _testDataProvider.writeOutAndReadBack(wb).close(); + + wb.close(); } diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestNamedRange.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestNamedRange.java index f9346a67af..0e05490106 100644 --- a/src/testcases/org/apache/poi/ss/usermodel/BaseTestNamedRange.java +++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestNamedRange.java @@ -17,19 +17,24 @@ package org.apache.poi.ss.usermodel; -import junit.framework.AssertionFailedError; -import junit.framework.TestCase; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import org.apache.poi.ss.ITestDataProvider; import org.apache.poi.ss.util.AreaReference; import org.apache.poi.ss.util.CellReference; +import org.junit.Test; /** * Tests of implementations of {@link org.apache.poi.ss.usermodel.Name}. * * @author Yegor Kozlov */ -public abstract class BaseTestNamedRange extends TestCase { +public abstract class BaseTestNamedRange { private final ITestDataProvider _testDataProvider; @@ -37,11 +42,12 @@ public abstract class BaseTestNamedRange extends TestCase { _testDataProvider = testDataProvider; } - public final void testCreate(){ + @Test + public final void testCreate() throws Exception { // Create a new workbook Workbook wb = _testDataProvider.createWorkbook(); - Sheet sheet1 = wb.createSheet("Test1"); - Sheet sheet2 = wb.createSheet("Testing Named Ranges"); + wb.createSheet("Test1"); + wb.createSheet("Testing Named Ranges"); Name name1 = wb.createName(); name1.setNameName("testOne"); @@ -101,24 +107,31 @@ public abstract class BaseTestNamedRange extends TestCase { // expected during successful test } } + + wb.close(); } - public final void testUnicodeNamedRange() { - Workbook workBook = _testDataProvider.createWorkbook(); - workBook.createSheet("Test"); - Name name = workBook.createName(); + @Test + public final void testUnicodeNamedRange() throws Exception { + Workbook wb1 = _testDataProvider.createWorkbook(); + wb1.createSheet("Test"); + Name name = wb1.createName(); name.setNameName("\u03B1"); name.setRefersToFormula("Test!$D$3:$E$8"); - Workbook workBook2 = _testDataProvider.writeOutAndReadBack(workBook); - Name name2 = workBook2.getNameAt(0); + Workbook wb2 = _testDataProvider.writeOutAndReadBack(wb1); + Name name2 = wb2.getNameAt(0); assertEquals("\u03B1", name2.getNameName()); assertEquals("Test!$D$3:$E$8", name2.getRefersToFormula()); + + wb2.close(); + wb1.close(); } - public final void testAddRemove() { + @Test + public final void testAddRemove() throws Exception { Workbook wb = _testDataProvider.createWorkbook(); assertEquals(0, wb.getNumberOfNames()); Name name1 = wb.createName(); @@ -138,9 +151,12 @@ public abstract class BaseTestNamedRange extends TestCase { wb.removeName(0); assertEquals(1, wb.getNumberOfNames()); + + wb.close(); } - public final void testScope() { + @Test + public final void testScope() throws Exception { Workbook wb = _testDataProvider.createWorkbook(); wb.createSheet(); wb.createSheet(); @@ -186,6 +202,8 @@ public abstract class BaseTestNamedRange extends TestCase { if("aaa".equals(wb.getNameAt(i).getNameName())) cnt++; } assertEquals(3, cnt); + + wb.close(); } /** @@ -193,21 +211,22 @@ public abstract class BaseTestNamedRange extends TestCase { *

* Addresses Bug #13775 */ - public final void testMultiNamedRange() { + @Test + public final void testMultiNamedRange() throws Exception { // Create a new workbook - Workbook wb = _testDataProvider.createWorkbook(); + Workbook wb1 = _testDataProvider.createWorkbook(); // Create a worksheet 'sheet1' in the new workbook - wb.createSheet (); - wb.setSheetName (0, "sheet1"); + wb1.createSheet (); + wb1.setSheetName (0, "sheet1"); // Create another worksheet 'sheet2' in the new workbook - wb.createSheet (); - wb.setSheetName (1, "sheet2"); + wb1.createSheet (); + wb1.setSheetName (1, "sheet2"); // Create a new named range for worksheet 'sheet1' - Name namedRange1 = wb.createName(); + Name namedRange1 = wb1.createName(); // Set the name for the named range for worksheet 'sheet1' namedRange1.setNameName("RangeTest1"); @@ -216,7 +235,7 @@ public abstract class BaseTestNamedRange extends TestCase { namedRange1.setRefersToFormula("sheet1" + "!$A$1:$L$41"); // Create a new named range for worksheet 'sheet2' - Name namedRange2 = wb.createName(); + Name namedRange2 = wb1.createName(); // Set the name for the named range for worksheet 'sheet2' namedRange2.setNameName("RangeTest2"); @@ -226,20 +245,24 @@ public abstract class BaseTestNamedRange extends TestCase { // Write the workbook to a file // Read the Excel file and verify its content - wb = _testDataProvider.writeOutAndReadBack(wb); - Name nm1 =wb.getNameAt(wb.getNameIndex("RangeTest1")); + Workbook wb2 = _testDataProvider.writeOutAndReadBack(wb1); + Name nm1 = wb2.getNameAt(wb2.getNameIndex("RangeTest1")); assertTrue("Name is "+nm1.getNameName(),"RangeTest1".equals(nm1.getNameName())); - assertTrue("Reference is "+nm1.getRefersToFormula(),(wb.getSheetName(0)+"!$A$1:$L$41").equals(nm1.getRefersToFormula())); + assertTrue("Reference is "+nm1.getRefersToFormula(),(wb2.getSheetName(0)+"!$A$1:$L$41").equals(nm1.getRefersToFormula())); - Name nm2 =wb.getNameAt(wb.getNameIndex("RangeTest2")); + Name nm2 = wb2.getNameAt(wb2.getNameIndex("RangeTest2")); assertTrue("Name is "+nm2.getNameName(),"RangeTest2".equals(nm2.getNameName())); - assertTrue("Reference is "+nm2.getRefersToFormula(),(wb.getSheetName(1)+"!$A$1:$O$21").equals(nm2.getRefersToFormula())); + assertTrue("Reference is "+nm2.getRefersToFormula(),(wb2.getSheetName(1)+"!$A$1:$O$21").equals(nm2.getRefersToFormula())); + + wb2.close(); + wb1.close(); } /** * Test to see if the print areas can be retrieved/created in memory */ - public final void testSinglePrintArea() { + @Test + public final void testSinglePrintArea() throws Exception { Workbook workbook = _testDataProvider.createWorkbook(); workbook.createSheet("Test Print Area"); String sheetName = workbook.getSheetName(0); @@ -251,12 +274,15 @@ public abstract class BaseTestNamedRange extends TestCase { assertNotNull("Print Area not defined for first sheet", retrievedPrintArea); assertEquals("'" + sheetName + "'!$A$1:$B$1", retrievedPrintArea); + + workbook.close(); } /** * For Convenience, don't force sheet names to be used */ - public final void testSinglePrintAreaWOSheet() + @Test + public final void testSinglePrintAreaWOSheet() throws Exception { Workbook workbook = _testDataProvider.createWorkbook(); workbook.createSheet("Test Print Area"); @@ -269,80 +295,91 @@ public abstract class BaseTestNamedRange extends TestCase { assertNotNull("Print Area not defined for first sheet", retrievedPrintArea); assertEquals("'" + sheetName + "'!" + reference, retrievedPrintArea); + + workbook.close(); } /** * Test to see if the print area made it to the file */ - public final void testPrintAreaFile() { - Workbook workbook = _testDataProvider.createWorkbook(); - workbook.createSheet("Test Print Area"); - String sheetName = workbook.getSheetName(0); + @Test + public final void testPrintAreaFile() throws Exception { + Workbook wb1 = _testDataProvider.createWorkbook(); + wb1.createSheet("Test Print Area"); + String sheetName = wb1.getSheetName(0); String reference = "$A$1:$B$1"; - workbook.setPrintArea(0, reference); + wb1.setPrintArea(0, reference); - workbook = _testDataProvider.writeOutAndReadBack(workbook); + Workbook wb2 = _testDataProvider.writeOutAndReadBack(wb1); - String retrievedPrintArea = workbook.getPrintArea(0); + String retrievedPrintArea = wb2.getPrintArea(0); assertNotNull("Print Area not defined for first sheet", retrievedPrintArea); assertEquals("References Match", "'" + sheetName + "'!$A$1:$B$1", retrievedPrintArea); + + wb2.close(); + wb1.close(); } /** * Test to see if multiple print areas made it to the file */ - public final void testMultiplePrintAreaFile() { - Workbook workbook = _testDataProvider.createWorkbook(); + @Test + public final void testMultiplePrintAreaFile() throws Exception { + Workbook wb1 = _testDataProvider.createWorkbook(); - workbook.createSheet("Sheet1"); - workbook.createSheet("Sheet2"); - workbook.createSheet("Sheet3"); + wb1.createSheet("Sheet1"); + wb1.createSheet("Sheet2"); + wb1.createSheet("Sheet3"); String reference1 = "$A$1:$B$1"; String reference2 = "$B$2:$D$5"; String reference3 = "$D$2:$F$5"; - workbook.setPrintArea(0, reference1); - workbook.setPrintArea(1, reference2); - workbook.setPrintArea(2, reference3); + wb1.setPrintArea(0, reference1); + wb1.setPrintArea(1, reference2); + wb1.setPrintArea(2, reference3); //Check created print areas String retrievedPrintArea; - retrievedPrintArea = workbook.getPrintArea(0); + retrievedPrintArea = wb1.getPrintArea(0); assertNotNull("Print Area Not Found (Sheet 1)", retrievedPrintArea); assertEquals("Sheet1!" + reference1, retrievedPrintArea); - retrievedPrintArea = workbook.getPrintArea(1); + retrievedPrintArea = wb1.getPrintArea(1); assertNotNull("Print Area Not Found (Sheet 2)", retrievedPrintArea); assertEquals("Sheet2!" + reference2, retrievedPrintArea); - retrievedPrintArea = workbook.getPrintArea(2); + retrievedPrintArea = wb1.getPrintArea(2); assertNotNull("Print Area Not Found (Sheet 3)", retrievedPrintArea); assertEquals("Sheet3!" + reference3, retrievedPrintArea); // Check print areas after re-reading workbook - workbook = _testDataProvider.writeOutAndReadBack(workbook); + Workbook wb2 = _testDataProvider.writeOutAndReadBack(wb1); - retrievedPrintArea = workbook.getPrintArea(0); + retrievedPrintArea = wb2.getPrintArea(0); assertNotNull("Print Area Not Found (Sheet 1)", retrievedPrintArea); assertEquals("Sheet1!" + reference1, retrievedPrintArea); - retrievedPrintArea = workbook.getPrintArea(1); + retrievedPrintArea = wb2.getPrintArea(1); assertNotNull("Print Area Not Found (Sheet 2)", retrievedPrintArea); assertEquals("Sheet2!" + reference2, retrievedPrintArea); - retrievedPrintArea = workbook.getPrintArea(2); + retrievedPrintArea = wb2.getPrintArea(2); assertNotNull("Print Area Not Found (Sheet 3)", retrievedPrintArea); assertEquals("Sheet3!" + reference3, retrievedPrintArea); + + wb2.close(); + wb1.close(); } /** * Tests the setting of print areas with coordinates (Row/Column designations) * */ - public final void testPrintAreaCoords(){ + @Test + public final void testPrintAreaCoords() throws Exception { Workbook workbook = _testDataProvider.createWorkbook(); workbook.createSheet("Test Print Area"); String sheetName = workbook.getSheetName(0); @@ -353,6 +390,8 @@ public abstract class BaseTestNamedRange extends TestCase { assertNotNull("Print Area not defined for first sheet", retrievedPrintArea); assertEquals("'" + sheetName + "'!$A$1:$B$1", retrievedPrintArea); + + workbook.close(); } @@ -360,7 +399,8 @@ public abstract class BaseTestNamedRange extends TestCase { * Tests the parsing of union area expressions, and re-display in the presence of sheet names * with special characters. */ - public final void testPrintAreaUnion(){ + @Test + public final void testPrintAreaUnion() throws Exception { Workbook workbook = _testDataProvider.createWorkbook(); workbook.createSheet("Test Print Area"); @@ -369,13 +409,16 @@ public abstract class BaseTestNamedRange extends TestCase { String retrievedPrintArea = workbook.getPrintArea(0); assertNotNull("Print Area not defined for first sheet", retrievedPrintArea); assertEquals("'Test Print Area'!$A$1:$B$1,'Test Print Area'!$D$1:$F$2", retrievedPrintArea); + + workbook.close(); } /** * Verifies an existing print area is deleted * */ - public final void testPrintAreaRemove() { + @Test + public final void testPrintAreaRemove() throws Exception { Workbook workbook = _testDataProvider.createWorkbook(); workbook.createSheet("Test Print Area"); workbook.getSheetName(0); @@ -388,47 +431,53 @@ public abstract class BaseTestNamedRange extends TestCase { workbook.removePrintArea(0); assertNull("PrintArea was not removed", workbook.getPrintArea(0)); + workbook.close(); } /** * Test that multiple named ranges can be added written and read */ - public final void testMultipleNamedWrite() { - Workbook wb = _testDataProvider.createWorkbook(); + @Test + public final void testMultipleNamedWrite() throws Exception { + Workbook wb1 = _testDataProvider.createWorkbook(); - wb.createSheet("testSheet1"); - String sheetName = wb.getSheetName(0); + wb1.createSheet("testSheet1"); + String sheetName = wb1.getSheetName(0); assertEquals("testSheet1", sheetName); //Creating new Named Range - Name newNamedRange = wb.createName(); + Name newNamedRange = wb1.createName(); newNamedRange.setNameName("RangeTest"); newNamedRange.setRefersToFormula(sheetName + "!$D$4:$E$8"); //Creating another new Named Range - Name newNamedRange2 = wb.createName(); + Name newNamedRange2 = wb1.createName(); newNamedRange2.setNameName("AnotherTest"); newNamedRange2.setRefersToFormula(sheetName + "!$F$1:$G$6"); - wb.getNameAt(0); + wb1.getNameAt(0); - wb = _testDataProvider.writeOutAndReadBack(wb); - Name nm =wb.getNameAt(wb.getNameIndex("RangeTest")); + Workbook wb2 = _testDataProvider.writeOutAndReadBack(wb1); + Name nm =wb2.getNameAt(wb2.getNameIndex("RangeTest")); assertTrue("Name is "+nm.getNameName(),"RangeTest".equals(nm.getNameName())); - assertTrue("Reference is "+nm.getRefersToFormula(),(wb.getSheetName(0)+"!$D$4:$E$8").equals(nm.getRefersToFormula())); + assertTrue("Reference is "+nm.getRefersToFormula(),(wb2.getSheetName(0)+"!$D$4:$E$8").equals(nm.getRefersToFormula())); - nm = wb.getNameAt(wb.getNameIndex("AnotherTest")); + nm = wb2.getNameAt(wb2.getNameIndex("AnotherTest")); assertTrue("Name is "+nm.getNameName(),"AnotherTest".equals(nm.getNameName())); assertTrue("Reference is "+nm.getRefersToFormula(),newNamedRange2.getRefersToFormula().equals(nm.getRefersToFormula())); + + wb2.close(); + wb1.close(); } /** * Verifies correct functioning for "single cell named range" (aka "named cell") */ - public final void testNamedCell_1() { + @Test + public final void testNamedCell_1() throws Exception { // setup for this testcase String sheetName = "Test Named Cell"; @@ -451,6 +500,7 @@ public abstract class BaseTestNamedRange extends TestCase { assertNotNull(aNamedCell); // retrieve the cell at the named range and test its contents + @SuppressWarnings("deprecation") AreaReference aref = new AreaReference(aNamedCell.getRefersToFormula()); assertTrue("Should be exactly 1 cell in the named cell :'" +cellName+"'", aref.isSingleCell()); @@ -462,12 +512,15 @@ public abstract class BaseTestNamedRange extends TestCase { Cell c = r.getCell(cref.getCol()); String contents = c.getRichStringCellValue().getString(); assertEquals("Contents of cell retrieved by its named reference", contents, cellValue); + + wb.close(); } /** * Verifies correct functioning for "single cell named range" (aka "named cell") */ - public final void testNamedCell_2() { + @Test + public final void testNamedCell_2() throws Exception { // setup for this testcase String sname = "TestSheet", cname = "TestName", cvalue = "TestVal"; @@ -491,10 +544,13 @@ public abstract class BaseTestNamedRange extends TestCase { CellReference cref = new CellReference(aNamedCell.getRefersToFormula()); assertNotNull(cref); Sheet s = wb.getSheet(cref.getSheetName()); + assertNotNull(s); Row r = sheet.getRow(cref.getRow()); Cell c = r.getCell(cref.getCol()); String contents = c.getRichStringCellValue().getString(); assertEquals("Contents of cell retrieved by its named reference", contents, cvalue); + + wb.close(); } @@ -511,40 +567,40 @@ public abstract class BaseTestNamedRange extends TestCase { * could do the same, but that would involve adjusting subsequent name indexes across * all formulas.

* - * For the moment, POI has been made to behave more sensibly with uninitialised name + * For the moment, POI has been made to behave more sensibly with uninitialized name * records. */ - public final void testUninitialisedNameGetRefersToFormula_bug46973() { + @Test + public final void testUninitialisedNameGetRefersToFormula_bug46973() throws Exception { Workbook wb = _testDataProvider.createWorkbook(); Name n = wb.createName(); n.setNameName("UPSState"); - String formula; - try { - formula = n.getRefersToFormula(); - } catch (IllegalArgumentException e) { - if (e.getMessage().equals("ptgs must not be null")) { - throw new AssertionFailedError("Identified bug 46973"); - } - throw e; - } + String formula = n.getRefersToFormula(); + + // bug 46973: fails here with IllegalArgumentException + // ptgs must not be null + assertNull(formula); - assertFalse(n.isDeleted()); // according to exact definition of isDeleted() + // according to exact definition of isDeleted() + assertFalse(n.isDeleted()); + wb.close(); } - public final void testDeletedCell() { + @Test + public final void testDeletedCell() throws Exception { Workbook wb = _testDataProvider.createWorkbook(); Name n = wb.createName(); n.setNameName("MyName"); // contrived example to expose bug: n.setRefersToFormula("if(A1,\"#REF!\", \"\")"); - if (n.isDeleted()) { - throw new AssertionFailedError("Identified bug in recoginising formulas referring to deleted cells"); - } - + assertFalse("Identified bug in recoginising formulas referring to deleted cells", n.isDeleted()); + + wb.close(); } - public final void testFunctionNames() { + @Test + public final void testFunctionNames() throws Exception { Workbook wb = _testDataProvider.createWorkbook(); Name n = wb.createName(); assertFalse(n.isFunctionName()); @@ -557,9 +613,12 @@ public abstract class BaseTestNamedRange extends TestCase { n.setFunction(false); assertFalse(n.isFunctionName()); + + wb.close(); } - public final void testDefferedSetting() { + @Test + public final void testDefferedSetting() throws Exception { Workbook wb = _testDataProvider.createWorkbook(); Name n1 = wb.createName(); assertNull(n1.getRefersToFormula()); @@ -581,6 +640,7 @@ public abstract class BaseTestNamedRange extends TestCase { } catch(Exception e){ assertEquals("The workbook already contains this name: sale_1", e.getMessage()); } - + + wb.close(); } } diff --git a/src/testcases/org/apache/poi/ss/util/NumberRenderingSpreadsheetGenerator.java b/src/testcases/org/apache/poi/ss/util/NumberRenderingSpreadsheetGenerator.java index 408028d667..c9146ab784 100644 --- a/src/testcases/org/apache/poi/ss/util/NumberRenderingSpreadsheetGenerator.java +++ b/src/testcases/org/apache/poi/ss/util/NumberRenderingSpreadsheetGenerator.java @@ -128,11 +128,11 @@ public class NumberRenderingSpreadsheetGenerator { row.createCell(5).setCellFormula(matchExpr); row.createCell(6).setCellFormula(jmExpr.replaceAll("'", "\"")); - if (false) { - // for observing arithmetic near numeric range boundaries - row.createCell(7).setCellFormula(cel0ref + " * 1.0001"); - row.createCell(8).setCellFormula(cel0ref + " / 1.0001"); - } +// if (false) { +// // for observing arithmetic near numeric range boundaries +// row.createCell(7).setCellFormula(cel0ref + " * 1.0001"); +// row.createCell(8).setCellFormula(cel0ref + " / 1.0001"); +// } } private static String formatLongAsHex(long l) { @@ -215,10 +215,10 @@ public class NumberRenderingSpreadsheetGenerator { bb[i+2] = (byte) (val >> 16); bb[i+1] = (byte) (val >> 8); bb[i+0] = (byte) (val >> 0); - if (false) { - String newVal = interpretLong(bb, i); - System.out.println("changed offset " + i + " from " + oldVal + " to " + newVal); - } +// if (false) { +// String newVal = interpretLong(bb, i); +// System.out.println("changed offset " + i + " from " + oldVal + " to " + newVal); +// } } -- 2.39.5