]> source.dussan.org Git - poi.git/commitdiff
Fixed #60858, which showed a regression of the fix for #56420 introduced by my refact...
authorGreg Woolsey <gwoolsey@apache.org>
Tue, 14 Mar 2017 21:39:33 +0000 (21:39 +0000)
committerGreg Woolsey <gwoolsey@apache.org>
Tue, 14 Mar 2017 21:39:33 +0000 (21:39 +0000)
Includes new unit test based on the bug sample file.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1786953 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/ss/formula/functions/Baseifs.java
src/ooxml/testcases/org/apache/poi/ss/formula/functions/TestSumifsXSSF.java [new file with mode: 0644]

index 2fcc3c668baa31d15e6a17000bc26907f395e1cf..88ce9e3f4cda9b2a435bbe630514f119fb41a254 100644 (file)
@@ -135,7 +135,8 @@ import org.apache.poi.ss.formula.functions.Countif.ErrorMatcher;
                     AreaEval aeRange = ranges[i];
                     I_MatchPredicate mp = predicates[i];
 
-                    if (!mp.matches(aeRange.getRelativeValue(r, c))) {
+                    // Bugs 60858 and 56420 show predicate can be null
+                    if (mp == null || !mp.matches(aeRange.getRelativeValue(r, c))) {
                         matches = false;
                         break;
                     }
diff --git a/src/ooxml/testcases/org/apache/poi/ss/formula/functions/TestSumifsXSSF.java b/src/ooxml/testcases/org/apache/poi/ss/formula/functions/TestSumifsXSSF.java
new file mode 100644 (file)
index 0000000..7ae18e8
--- /dev/null
@@ -0,0 +1,31 @@
+package org.apache.poi.ss.formula.functions;
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.FormulaEvaluator;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.XSSFTestDataSamples;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class TestSumifsXSSF {
+
+    /**
+     * handle null cell predicate
+     */
+    @Test
+    public void testBug60858() {
+        Workbook wb = XSSFTestDataSamples.openSampleWorkbook("bug60858.xlsx");
+        FormulaEvaluator fe = wb.getCreationHelper().createFormulaEvaluator();
+
+        Sheet sheet = wb.getSheetAt(0);
+        Cell cell = sheet.getRow(1).getCell(5);
+        fe.evaluate(cell);
+        assertEquals(0.0, cell.getNumericCellValue(), 0.0000000000000001);
+    }
+
+}