diff --git a/src/testcases/org/apache/poi/hssf/data/45376.xls b/src/testcases/org/apache/poi/hssf/data/45376.xls new file mode 100644 index 000000000..74602fd0b Binary files /dev/null and b/src/testcases/org/apache/poi/hssf/data/45376.xls differ diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestFormulaEvaluatorBugs.java b/src/testcases/org/apache/poi/hssf/usermodel/TestFormulaEvaluatorBugs.java index 349cfa8a8..e6a133ad7 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestFormulaEvaluatorBugs.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestFormulaEvaluatorBugs.java @@ -294,4 +294,56 @@ public final class TestFormulaEvaluatorBugs extends TestCase { throw e; } } + + /** + * Apparently, each subsequent call takes longer, which is very + * odd + */ + public void DISABLEDtestSlowEvaluate45376() throws Exception { + HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("45376.xls"); + + final String SHEET_NAME = "Eingabe"; + final int row = 6; + final HSSFSheet sheet = wb.getSheet(SHEET_NAME); + + int firstCol = 4; + int lastCol = 14; + long[] timings = new long[lastCol-firstCol+1]; + long[] stimings = new long[lastCol-firstCol+1]; + + long then, now; + + final HSSFRow excelRow = sheet.getRow(row); + for(int i = firstCol; i <= lastCol; i++) { + final HSSFCell excelCell = excelRow.getCell(i); + final HSSFFormulaEvaluator evaluator = new + HSSFFormulaEvaluator(sheet, wb); + + evaluator.setCurrentRow(excelRow); + + now = System.currentTimeMillis(); + evaluator.evaluate(excelCell); + then = System.currentTimeMillis(); + timings[i-firstCol] = (then-now); + System.err.println("Col " + i + " took " + (then-now) + "ms"); + } + + // The timings for each should be about the same + long avg = 0; + for(int i=0; i 1.5*avg) { + System.err.println("Doing col " + (i+firstCol) + + " took " + timings[i] + "ms, vs avg " + + avg + "ms" + ); + } + } + } } \ No newline at end of file