diff --git a/src/testcases/org/apache/poi/ss/formula/functions/TestCountFuncs.java b/src/testcases/org/apache/poi/ss/formula/functions/TestCountFuncs.java index 8897feb60e..a01a92aa00 100644 --- a/src/testcases/org/apache/poi/ss/formula/functions/TestCountFuncs.java +++ b/src/testcases/org/apache/poi/ss/formula/functions/TestCountFuncs.java @@ -17,6 +17,9 @@ package org.apache.poi.ss.formula.functions; +import java.util.Arrays; +import java.util.List; + import junit.framework.AssertionFailedError; import junit.framework.TestCase; @@ -36,6 +39,7 @@ 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.apache.poi.ss.usermodel.FormulaEvaluator; /** * Test cases for COUNT(), COUNTA() COUNTIF(), COUNTBLANK() @@ -357,6 +361,33 @@ public final class TestCountFuncs extends TestCase { confirmPredicate(false, mp, ErrorEval.REF_INVALID); } + /** + * Bug #51498 - Check that CountIf behaves correctly for GTE, LTE + * and NEQ cases + */ + public void testCountifLTEGTE() throws Exception { + final int REF_COL = 4; + final int EVAL_COL = 3; + + // Note - POI currently agrees with OpenOffice on certain blank cell cases, + // while Excel can differ. This is the list of checks to skip + List skipRowsPendingExcelVsOpenOffice = Arrays.asList( + new Integer[] {3}); + + HSSFWorkbook workbook = HSSFTestDataSamples.openSampleWorkbook("51498.xls"); + FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator(); + HSSFSheet sheet = workbook.getSheetAt(0); + for (int i = 0; i < 8; i++) { + if (skipRowsPendingExcelVsOpenOffice.contains(i)) { + // Skip the check for now + continue; + } + CellValue expected = evaluator.evaluate(sheet.getRow(i).getCell(REF_COL)); + CellValue actual = evaluator.evaluate(sheet.getRow(i).getCell(EVAL_COL)); + assertEquals(expected.formatAsString(), actual.formatAsString()); + } + } + public void testWildCards() { I_MatchPredicate mp; diff --git a/test-data/spreadsheet/51498.xls b/test-data/spreadsheet/51498.xls new file mode 100644 index 0000000000..fc50d21d2c Binary files /dev/null and b/test-data/spreadsheet/51498.xls differ