poi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From kiwiwi...@apache.org
Subject svn commit: r1702659 [2/3] - in /poi/trunk/src: examples/src/org/apache/poi/hssf/view/ examples/src/org/apache/poi/poifs/poibrowser/ java/org/apache/poi/hssf/model/ java/org/apache/poi/hssf/record/ java/org/apache/poi/hssf/usermodel/ java/org/apache/po...
Date Sat, 12 Sep 2015 18:45:09 GMT
Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFName.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFName.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFName.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFName.java Sat Sep 12 18:45:07 2015
@@ -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
         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
          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
          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
         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
      * <p>
      * Addresses Bug <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=9632" target="_bug">#9632</a>
      */
-    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
 
         assertEquals(sheetName+"!$D$17:$G$27", namedRange2.getRefersToFormula());
         assertEquals("SecondNamedRange", namedRange2.getNameName());
+        
+        wb.close();
     }
 
     /**
@@ -182,7 +192,8 @@ public final class TestHSSFName extends
      * <p>
      * Addresses Bug <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=16411" target="_bug">#16411</a>
      */
-    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
 
         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
         } 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
      * 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
         for (int i = 0; i < ptgs.length; i++) {
             assertEquals('R', ptgs[i].getRVAType());
         }
-
+        wb.close();
     }
 }

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestSanityChecker.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestSanityChecker.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestSanityChecker.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestSanityChecker.java Sat Sep 12 18:45:07 2015
@@ -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.Interf
 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.<br/>
@@ -38,11 +38,13 @@ import org.apache.poi.hssf.usermodel.San
  *
  * @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<Record> records = new ArrayList<Record>();
@@ -119,17 +121,17 @@ public final class TestSanityChecker ext
 	}
 	private static void confirmBadRecordOrder(final SanityChecker.CheckRecord[] check, Record[] recs) {
 		final SanityChecker c = new SanityChecker();
-		final List records = Arrays.asList(recs);
+		final List<Record> 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");
 	}
 }

Modified: poi/trunk/src/testcases/org/apache/poi/poifs/storage/AllPOIFSStorageTests.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/poifs/storage/AllPOIFSStorageTests.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/poifs/storage/AllPOIFSStorageTests.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/poifs/storage/AllPOIFSStorageTests.java Sat Sep 12 18:45:07 2015
@@ -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<br/>
- * 
- * @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 {
 }

Modified: poi/trunk/src/testcases/org/apache/poi/poifs/storage/TestBlockListImpl.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/poifs/storage/TestBlockListImpl.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/poifs/storage/TestBlockListImpl.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/poifs/storage/TestBlockListImpl.java Sat Sep 12 18:45:07 2015
@@ -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 ext
         return new BlockListTestImpl();
     }
 
+    @Test
     public void testZap() throws IOException {
         BlockListImpl list = create();
 
@@ -79,7 +82,7 @@ public final class TestBlockListImpl ext
         }
     }
 
-
+    @Test
     public void testRemove() throws IOException {
         BlockListImpl  list   = create();
         RawDataBlock[] blocks = new RawDataBlock[ 5 ];
@@ -139,6 +142,7 @@ public final class TestBlockListImpl ext
         }
     }
 
+    @Test
     public void testSetBAT() throws IOException {
         BlockListImpl list = create();
 
@@ -154,6 +158,7 @@ public final class TestBlockListImpl ext
         }
     }
 
+    @Test
     public void testFetchBlocks() throws IOException {
 
         // strategy:
@@ -169,7 +174,7 @@ public final class TestBlockListImpl ext
         // that includes a reserved (XBAT) block, and one that
         // points off into space somewhere
         BlockListImpl list       = create();
-        List          raw_blocks = new ArrayList();
+        List<RawDataBlock>  raw_blocks = new ArrayList<RawDataBlock>();
         byte[]        data       = new byte[ 512 ];
         int           offset     = 0;
 
@@ -227,8 +232,7 @@ public final class TestBlockListImpl ext
             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

Modified: poi/trunk/src/testcases/org/apache/poi/poifs/storage/TestPropertyBlock.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/poifs/storage/TestPropertyBlock.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/poifs/storage/TestPropertyBlock.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/poifs/storage/TestPropertyBlock.java Sat Sep 12 18:45:07 2015
@@ -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<Property> properties = new ArrayList<Property>();
         BlockWritable[] blocks     =
             PropertyBlock.createPropertyBlockArray(POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS,properties);
 
@@ -181,22 +182,18 @@ public final class TestPropertyBlock ext
         }
     }
 
-    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 ]);
         }

Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/eval/TestFormulaBugs.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/eval/TestFormulaBugs.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/eval/TestFormulaBugs.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/eval/TestFormulaBugs.java Sat Sep 12 18:45:07 2015
@@ -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.HSS
 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.<p/> 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.<p/> This test was
 	 * added <em>long</em> 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 exten
 
 		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 exten
 	 * 
 	 * 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 exten
 		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 exten
 		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 <p/>
 	 * @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,

Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/function/AllFormulaFunctionTests.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/function/AllFormulaFunctionTests.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/function/AllFormulaFunctionTests.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/function/AllFormulaFunctionTests.java Sat Sep 12 18:45:07 2015
@@ -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 <tt>org.apache.poi.hssf.record.formula.function</tt>.
- * 
- * @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;
-	}
 }

Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/function/ExcelFileFormatDocFunctionExtractor.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/function/ExcelFileFormatDocFunctionExtractor.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/function/ExcelFileFormatDocFunctionExtractor.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/function/ExcelFileFormatDocFunctionExtractor.java Sat Sep 12 18:45:07 2015
@@ -621,12 +621,12 @@ public final class ExcelFileFormatDocFun
 
 		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);

Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/function/TestParseMissingBuiltInFuncs.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/function/TestParseMissingBuiltInFuncs.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/function/TestParseMissingBuiltInFuncs.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/function/TestParseMissingBuiltInFuncs.java Sat Sep 12 18:45:07 2015
@@ -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 TestParseMissingBuilt
 		}
 		assertEquals(expPtgArraySize, ptgs.length);
 		assertEquals(funcIx, func.getFunctionIndex());
-		Class expCls = isVarArgFunc ? FuncVarPtg.class : FuncPtg.class;
+		Class<? extends AbstractFunctionPtg> 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);
 	}
 }

Added: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/AllSpreadsheetBasedTests.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/AllSpreadsheetBasedTests.java?rev=1702659&view=auto
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/AllSpreadsheetBasedTests.java (added)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/AllSpreadsheetBasedTests.java Sat Sep 12 18:45:07 2015
@@ -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 <code>Function</code>.
+ */
+@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 {
+}

Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/BaseTestFunctionsFromSpreadsheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/BaseTestFunctionsFromSpreadsheet.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/BaseTestFunctionsFromSpreadsheet.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/BaseTestFunctionsFromSpreadsheet.java Sat Sep 12 18:45:07 2015
@@ -17,198 +17,102 @@
 
 package org.apache.poi.ss.formula.functions;
 
-import java.io.PrintStream;
-
-import junit.framework.Assert;
-import junit.framework.AssertionFailedError;
-import junit.framework.TestCase;
+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 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 = "<end>";
+        String TEST_CASES_END_MARKER = "<end>";
         /** Used to indicate that the test on the current row should be ignored */
-        public static final String SKIP_CURRENT_TEST_CASE_MARKER = "<skip>";
+        String SKIP_CURRENT_TEST_CASE_MARKER = "<skip>";
 
     }
 
-    // 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;
-
+    @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;
 
 
-    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);
-        }
+    
+    protected static Collection<Object[]> data(Class<? extends BaseTestFunctionsFromSpreadsheet> clazz, String filename) throws Exception {
+        HSSFWorkbook workbook = HSSFTestDataSamples.openSampleWorkbook(filename);
+        confirmReadMeSheet(workbook, clazz);
 
+        List<Object[]> data = new ArrayList<Object[]>();
 
-        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;
-        }
-    }
-
-
-    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 "<blank>";
-            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);
-        }
-    }
-
-    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
-
-        String currentGroupComment = null;
-        for(int rowIndex=SS.START_TEST_CASES_ROW_INDEX; rowIndex<maxRows; rowIndex++) {
+        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;
+    }
+
+    private static void processFunctionGroup(List<Object[]> data, HSSFSheet sheet, final int startRowIndex, String testFocusFunctionName, String filename) {
+        HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(sheet.getWorkbook());
+
+        String currentGroupComment = "";
+        final int maxRows = sheet.getLastRowNum()+1;
+        for(int rowIndex=startRowIndex; rowIndex<maxRows; rowIndex++) {
             HSSFRow r = sheet.getRow(rowIndex);
-            String newMarkerValue = getMarkerColumnValue(r);
             if(r == null) {
                 continue;
             }
+            String newMarkerValue = getCellTextValue(r, SS.COLUMN_INDEX_MARKER, "marker");                    
             if(SS.TEST_CASES_END_MARKER.equalsIgnoreCase(newMarkerValue)) {
                 // normal exit point
-                return result;
+                return;
             }
             if(SS.SKIP_CURRENT_TEST_CASE_MARKER.equalsIgnoreCase(newMarkerValue)) {
                 // currently disabled test case row
@@ -217,66 +121,66 @@ public abstract class BaseTestFunctionsF
             if(newMarkerValue != null) {
                 currentGroupComment = newMarkerValue;
             }
-            HSSFCell c = r.getCell(SS.COLUMN_INDEX_EVALUATION);
-            if (c == null || c.getCellType() != HSSFCell.CELL_TYPE_FORMULA) {
+            HSSFCell evalCell = r.getCell(SS.COLUMN_INDEX_EVALUATION);
+            if (evalCell == null || evalCell.getCellType() != HSSFCell.CELL_TYPE_FORMULA) {
                 continue;
             }
-            CellValue actualValue = evaluator.evaluate(c);
-            HSSFCell expectedValueCell = r.getCell(SS.COLUMN_INDEX_EXPECTED_RESULT);
-            String rowComment = getRowCommentColumnValue(r);
-
-            String msgPrefix = formatTestCaseDetails(this.getFilename(),sheetName, r.getRowNum(), c, currentGroupComment, rowComment);
-            try {
-                confirmExpectedResult(msgPrefix, expectedValueCell, actualValue);
-                _evaluationSuccessCount ++;
-                if(result != Result.SOME_EVALUATIONS_FAILED) {
-                    result = Result.ALL_EVALUATIONS_SUCCEEDED;
-                }
-            } catch (RuntimeException e) {
-                _evaluationFailureCount ++;
-                printShortStackTrace(System.err, e);
-                result = Result.SOME_EVALUATIONS_FAILED;
-            } catch (AssertionFailedError e) {
-                _evaluationFailureCount ++;
-                printShortStackTrace(System.err, e);
-                result = Result.SOME_EVALUATIONS_FAILED;
-            }
+            String rowComment = getCellTextValue(r, SS.COLUMN_ROW_COMMENT, "row comment");
 
+            String testName = (currentGroupComment+'\n'+rowComment).replace("null", "").trim().replace("\n", " - ");
+            if ("".equals(testName)) {
+                testName = evalCell.getCellFormula();
+            }
+            
+            data.add(new Object[]{testName, filename, sheet, rowIndex, evaluator});
+        }
+        fail("Missing end marker '" + SS.TEST_CASES_END_MARKER + "' on sheet '" + sheet.getSheetName() + "'");
+    }
+
+    @Test
+    public void processFunctionRow() throws Exception {
+        HSSFRow r = sheet.getRow(formulasRowIdx);
+        HSSFCell evalCell = r.getCell(SS.COLUMN_INDEX_EVALUATION);
+        HSSFCell expectedCell = r.getCell(SS.COLUMN_INDEX_EXPECTED_RESULT);
+        
+        CellReference cr = new CellReference(sheet.getSheetName(), formulasRowIdx, evalCell.getColumnIndex(), false, false);
+        String msg = String.format(Locale.ROOT, "In %s %s {=%s} '%s'"
+            , filename, cr.formatAsString(), evalCell.getCellFormula(), testName);
+
+        CellValue actualValue = evaluator.evaluate(evalCell);
+
+        assertNotNull(msg + " - Bad setup data expected value is null", expectedCell);
+        assertNotNull(msg + " - actual value was null", actualValue);
+
+        if (expectedCell.getCellType() == HSSFCell.CELL_TYPE_ERROR) {
+            int expectedErrorCode = expectedCell.getErrorCellValue();
+            assertEquals(msg, HSSFCell.CELL_TYPE_ERROR, actualValue.getCellType());
+            assertEquals(msg, ErrorEval.getText(expectedErrorCode), actualValue.formatAsString());
+            assertEquals(msg, expectedErrorCode, actualValue.getErrorValue());
+            assertEquals(msg, ErrorEval.getText(expectedErrorCode), ErrorEval.getText(actualValue.getErrorValue()));
+            return;
         }
-        throw new RuntimeException("Missing end marker '" + SS.TEST_CASES_END_MARKER
-                + "' on sheet '" + sheetName + "'");
 
-    }
-
-
-    private static String formatTestCaseDetails(String filename, String sheetName, int rowIndex, HSSFCell c, String currentGroupComment,
-                                                String rowComment) {
+        // unexpected error
+        assertNotEquals(msg, HSSFCell.CELL_TYPE_ERROR, actualValue.getCellType());
+        assertNotEquals(msg, formatValue(expectedCell), ErrorEval.getText(actualValue.getErrorValue()));
 
-        StringBuffer sb = new StringBuffer();
+        // wrong type error
+        assertEquals(msg, expectedCell.getCellType(), actualValue.getCellType());
 
-        sb.append("In ").append(filename).append(" ");
-
-        CellReference cr = new CellReference(sheetName, rowIndex, c.getColumnIndex(), false, false);
-        sb.append(cr.formatAsString());
-        sb.append(" {=").append(c.getCellFormula()).append("}");
-
-        if(currentGroupComment != null) {
-            sb.append(" '");
-            sb.append(currentGroupComment);
-            if(rowComment != null) {
-                sb.append(" - ");
-                sb.append(rowComment);
-            }
-            sb.append("' ");
-        } else {
-            if(rowComment != null) {
-                sb.append(" '");
-                sb.append(rowComment);
-                sb.append("' ");
-            }
+        switch (expectedCell.getCellType()) {
+            case HSSFCell.CELL_TYPE_BOOLEAN:
+                assertEquals(msg, expectedCell.getBooleanCellValue(), actualValue.getBooleanValue());
+                break;
+            case HSSFCell.CELL_TYPE_FORMULA: // will never be used, since we will call method after formula evaluation
+                fail("Cannot expect formula as result of formula evaluation: " + msg);
+            case HSSFCell.CELL_TYPE_NUMERIC:
+                assertEquals(expectedCell.getNumericCellValue(), actualValue.getNumberValue(), 0.0);
+                break;
+            case HSSFCell.CELL_TYPE_STRING:
+                assertEquals(msg, expectedCell.getRichStringCellValue().getString(), actualValue.getStringValue());
+                break;
         }
-
-        return sb.toString();
     }
 
     /**
@@ -284,57 +188,13 @@ public abstract class BaseTestFunctionsF
      * cells.  This back-link is to make it easy to find this class if a reader encounters the
      * spreadsheet first.
      */
-    private void confirmReadMeSheet(HSSFWorkbook workbook) {
+    private static void confirmReadMeSheet(HSSFWorkbook workbook, Class<? extends BaseTestFunctionsFromSpreadsheet> 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<stes.length) {
-            if(!stes[startIx].getClassName().equals(Assert.class.getName())) {
-                break;
-            }
-            startIx++;
-        }
-        // skip bottom frames (part of junit framework)
-        int endIx = startIx+1;
-        while(endIx < stes.length) {
-            if(stes[endIx].getClassName().equals(TestCase.class.getName())) {
-                break;
-            }
-            endIx++;
-        }
-        if(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<endIx; i++) {
-            ps.println("\tat " + stes[i].toString());
-        }
-
-    }
-
-    private static String getRowCommentColumnValue(HSSFRow r) {
-        return getCellTextValue(r, SS.COLUMN_ROW_COMMENT, "row comment");
-    }
-
-    private static String getMarkerColumnValue(HSSFRow r) {
-        return getCellTextValue(r, SS.COLUMN_INDEX_MARKER, "marker");
+        assertEquals("Test class name in spreadsheet comment", clazz.getName(), specifiedClassName);
     }
 
     /**
@@ -355,8 +215,21 @@ public abstract class BaseTestFunctionsF
             return cell.getRichStringCellValue().getString();
         }
 
-        throw new RuntimeException("Bad cell type for '" + columnName + "' column: ("
+        fail("Bad cell type for '" + columnName + "' column: ("
                 + cell.getCellType() + ") row (" + (r.getRowNum() +1) + ")");
+        return "";
+    }
+
+    private static String formatValue(HSSFCell expecedCell) {
+        switch (expecedCell.getCellType()) {
+            case HSSFCell.CELL_TYPE_BLANK: return "<blank>";
+            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 "";
     }
 
+
 }

Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestCodeFunctionsFromSpreadsheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestCodeFunctionsFromSpreadsheet.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestCodeFunctionsFromSpreadsheet.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestCodeFunctionsFromSpreadsheet.java Sat Sep 12 18:45:07 2015
@@ -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.<p/>
- *
- * @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<Object[]> data() throws Exception {
+        return data(TestCodeFunctionsFromSpreadsheet.class, "CodeFunctionTestCaseData.xls");
     }
 }
\ No newline at end of file

Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestComplexFunctionsFromSpreadsheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestComplexFunctionsFromSpreadsheet.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestComplexFunctionsFromSpreadsheet.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestComplexFunctionsFromSpreadsheet.java Sat Sep 12 18:45:07 2015
@@ -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.<p/>
- *
- * @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<Object[]> data() throws Exception {
+        return data(TestComplexFunctionsFromSpreadsheet.class, "ComplexFunctionTestCaseData.xls");
     }
 }
\ No newline at end of file

Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestDGetFunctionsFromSpreadsheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestDGetFunctionsFromSpreadsheet.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestDGetFunctionsFromSpreadsheet.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestDGetFunctionsFromSpreadsheet.java Sat Sep 12 18:45:07 2015
@@ -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<Object[]> data() throws Exception {
+        return data(TestDGetFunctionsFromSpreadsheet.class, "DGet.xls");
     }
 }

Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestDStarFunctionsFromSpreadsheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestDStarFunctionsFromSpreadsheet.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestDStarFunctionsFromSpreadsheet.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestDStarFunctionsFromSpreadsheet.java Sat Sep 12 18:45:07 2015
@@ -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<Object[]> data() throws Exception {
+        return data(TestDStarFunctionsFromSpreadsheet.class, "DStar.xls");
     }
 }

Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestDeltaFunctionsFromSpreadsheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestDeltaFunctionsFromSpreadsheet.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestDeltaFunctionsFromSpreadsheet.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestDeltaFunctionsFromSpreadsheet.java Sat Sep 12 18:45:07 2015
@@ -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.<p/>
-*
-* @author cedric dot walter @ gmail dot com
-*/
+ * Tests DELTA() as loaded from a test data spreadsheet.<p/>
+ */
 public class TestDeltaFunctionsFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet {
-
-    protected String getFilename() {
-        return "DeltaFunctionTestCaseData.xls";
+    @Parameters(name="{0}")
+    public static Collection<Object[]> data() throws Exception {
+        return data(TestDeltaFunctionsFromSpreadsheet.class, "DeltaFunctionTestCaseData.xls");
     }
 }

Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestFactDoubleFunctionsFromSpreadsheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestFactDoubleFunctionsFromSpreadsheet.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestFactDoubleFunctionsFromSpreadsheet.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestFactDoubleFunctionsFromSpreadsheet.java Sat Sep 12 18:45:07 2015
@@ -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.<p/>
- *
- * @author cedric dot walter @ gmail dot com
  */
 public class TestFactDoubleFunctionsFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet {
-
-    protected String getFilename() {
-        return "FactDoubleFunctionTestCaseData.xls";
+    @Parameters(name="{0}")
+    public static Collection<Object[]> data() throws Exception {
+        return data(TestFactDoubleFunctionsFromSpreadsheet.class, "FactDoubleFunctionTestCaseData.xls");
     }
 }

Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestFixedFunctionsFromSpreadsheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestFixedFunctionsFromSpreadsheet.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestFixedFunctionsFromSpreadsheet.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestFixedFunctionsFromSpreadsheet.java Sat Sep 12 18:45:07 2015
@@ -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<Object[]> data() throws Exception {
+        return data(TestFixedFunctionsFromSpreadsheet.class, "57003-FixedFunctionTestCaseData.xls");
     }
 }

Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestImRealFunctionsFromSpreadsheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestImRealFunctionsFromSpreadsheet.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestImRealFunctionsFromSpreadsheet.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestImRealFunctionsFromSpreadsheet.java Sat Sep 12 18:45:07 2015
@@ -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.<p/>
- *
- * @author cedric dot walter @ gmail dot com
  */
 public class TestImRealFunctionsFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet {
-
-    protected String getFilename() {
-        return "ImRealFunctionTestCaseData.xls";
+    @Parameters(name="{0}")
+    public static Collection<Object[]> data() throws Exception {
+        return data(TestImRealFunctionsFromSpreadsheet.class, "ImRealFunctionTestCaseData.xls");
     }
 }

Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestImaginaryFunctionsFromSpreadsheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestImaginaryFunctionsFromSpreadsheet.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestImaginaryFunctionsFromSpreadsheet.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestImaginaryFunctionsFromSpreadsheet.java Sat Sep 12 18:45:07 2015
@@ -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.<p/>
- *
- * @author cedric dot walter @ gmail dot com
  */
 public class TestImaginaryFunctionsFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet {
-
-    protected String getFilename() {
-        return "ImaginaryFunctionTestCaseData.xls";
+    @Parameters(name="{0}")
+    public static Collection<Object[]> data() throws Exception {
+        return data(TestImaginaryFunctionsFromSpreadsheet.class, "ImaginaryFunctionTestCaseData.xls");
     }
 }

Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIndexFunctionFromSpreadsheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIndexFunctionFromSpreadsheet.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIndexFunctionFromSpreadsheet.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIndexFunctionFromSpreadsheet.java Sat Sep 12 18:45:07 2015
@@ -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.<p/>
  */
 public final class TestIndexFunctionFromSpreadsheet  extends BaseTestFunctionsFromSpreadsheet {
-
-    @Override
-    protected String getFilename() {
-        return "IndexFunctionTestCaseData.xls";
+    @Parameters(name="{0}")
+    public static Collection<Object[]> data() throws Exception {
+        return data(TestIndexFunctionFromSpreadsheet.class, "IndexFunctionTestCaseData.xls");
     }
 }

Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIndirectFunctionFromSpreadsheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIndirectFunctionFromSpreadsheet.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIndirectFunctionFromSpreadsheet.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIndirectFunctionFromSpreadsheet.java Sat Sep 12 18:45:07 2015
@@ -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.<p/>
  *
@@ -25,9 +29,8 @@ package org.apache.poi.ss.formula.functi
  *  more easily.
  */
 public final class TestIndirectFunctionFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet {
-
-    @Override
-    protected String getFilename() {
-        return "IndirectFunctionTestCaseData.xls";
+    @Parameters(name="{0}")
+    public static Collection<Object[]> data() throws Exception {
+        return data(TestIndirectFunctionFromSpreadsheet.class, "IndirectFunctionTestCaseData.xls");
     }
 }

Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestLookupFunctionsFromSpreadsheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestLookupFunctionsFromSpreadsheet.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestLookupFunctionsFromSpreadsheet.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestLookupFunctionsFromSpreadsheet.java Sat Sep 12 18:45:07 2015
@@ -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.<p/>
@@ -29,9 +31,8 @@ package org.apache.poi.ss.formula.functi
  *  more easily.
  */
 public final class TestLookupFunctionsFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet {
-
-    @Override
-    protected String getFilename() {
-        return "LookupFunctionsTestCaseData.xls";
+    @Parameters(name="{0}")
+    public static Collection<Object[]> data() throws Exception {
+        return data(TestLookupFunctionsFromSpreadsheet.class, "LookupFunctionsTestCaseData.xls");
     }
 }

Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMatchFunctionsFromSpreadsheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMatchFunctionsFromSpreadsheet.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMatchFunctionsFromSpreadsheet.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMatchFunctionsFromSpreadsheet.java Sat Sep 12 18:45:07 2015
@@ -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.<p/>
@@ -27,9 +29,8 @@ package org.apache.poi.ss.formula.functi
  *  more easily.
  */
 public final class TestMatchFunctionsFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet {
-
-    @Override
-    protected String getFilename() {
-        return "MatchFunctionTestCaseData.xls";
+    @Parameters(name="{0}")
+    public static Collection<Object[]> data() throws Exception {
+        return data(TestMatchFunctionsFromSpreadsheet.class, "MatchFunctionTestCaseData.xls");
     }
 }

Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestQuotientFunctionsFromSpreadsheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestQuotientFunctionsFromSpreadsheet.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestQuotientFunctionsFromSpreadsheet.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestQuotientFunctionsFromSpreadsheet.java Sat Sep 12 18:45:07 2015
@@ -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.<p/>
- *
- * @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<Object[]> data() throws Exception {
+        return data(TestQuotientFunctionsFromSpreadsheet.class, "QuotientFunctionTestCaseData.xls");
     }
 }

Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestReptFunctionsFromSpreadsheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestReptFunctionsFromSpreadsheet.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestReptFunctionsFromSpreadsheet.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestReptFunctionsFromSpreadsheet.java Sat Sep 12 18:45:07 2015
@@ -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.<p/>
- *
- * @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<Object[]> data() throws Exception {
+        return data(TestReptFunctionsFromSpreadsheet.class, "ReptFunctionTestCaseData.xls");
     }
 }
\ No newline at end of file

Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestRomanFunctionsFromSpreadsheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestRomanFunctionsFromSpreadsheet.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestRomanFunctionsFromSpreadsheet.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestRomanFunctionsFromSpreadsheet.java Sat Sep 12 18:45:07 2015
@@ -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.<p/>
- *
- * @author cedric dot walter @ gmail dot com
  */
 public class TestRomanFunctionsFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet {
-
-    protected String getFilename() {
-        return "RomanFunctionTestCaseData.xls";
+    @Parameters(name="{0}")
+    public static Collection<Object[]> data() throws Exception {
+        return data(TestRomanFunctionsFromSpreadsheet.class, "RomanFunctionTestCaseData.xls");
     }
 }

Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestWeekNumFunctionsFromSpreadsheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestWeekNumFunctionsFromSpreadsheet.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestWeekNumFunctionsFromSpreadsheet.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestWeekNumFunctionsFromSpreadsheet.java Sat Sep 12 18:45:07 2015
@@ -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.<p/>
- *
- * @author cedric dot walter @ gmail dot com
  */
 public class TestWeekNumFunctionsFromSpreadsheet extends BaseTestFunctionsFromSpreadsheet {
-
-    protected String getFilename() {
-        return "WeekNumFunctionTestCaseData.xls";
+    @Parameters(name="{0}")
+    public static Collection<Object[]> data() throws Exception {
+        return data(TestWeekNumFunctionsFromSpreadsheet.class, "WeekNumFunctionTestCaseData.xls");
     }
 }

Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestWeekNumFunctionsFromSpreadsheet2013.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestWeekNumFunctionsFromSpreadsheet2013.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestWeekNumFunctionsFromSpreadsheet2013.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestWeekNumFunctionsFromSpreadsheet2013.java Sat Sep 12 18:45:07 2015
@@ -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.<p/>
- *
- * @author cedric dot walter @ gmail dot com
  */
 public class TestWeekNumFunctionsFromSpreadsheet2013 extends BaseTestFunctionsFromSpreadsheet {
-
-    protected String getFilename() {
+    @Parameters(name="{0}")
+    public static Collection<Object[]> 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");
     }
 }

Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/ptg/TestExternalFunctionFormulas.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/ptg/TestExternalFunctionFormulas.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/formula/ptg/TestExternalFunctionFormulas.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/formula/ptg/TestExternalFunctionFormulas.java Sat Sep 12 18:45:07 2015
@@ -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.HSS
 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 <tt>NameXPtg.toFormulaString(Workbook)</tt> 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 TestExternalFunctionF
 		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, 

Modified: poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestDataValidation.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestDataValidation.java?rev=1702659&r1=1702658&r2=1702659&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestDataValidation.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestDataValidation.java Sat Sep 12 18:45:07 2015
@@ -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.CellRangeA
 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 BaseTestDataValida
 		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 BaseTestDataValida
 		addCustomValidations(wf);
 		log("done !");
 
-        wb = _testDataProvider.writeOutAndReadBack(wb);
+        _testDataProvider.writeOutAndReadBack(wb).close();
+        
+        wb.close();
 	}
 
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org


Mime
View raw message