]> source.dussan.org Git - poi.git/commitdiff
Unit test from Maciej for bug #51498
authorNick Burch <nick@apache.org>
Wed, 8 Feb 2012 17:22:46 +0000 (17:22 +0000)
committerNick Burch <nick@apache.org>
Wed, 8 Feb 2012 17:22:46 +0000 (17:22 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1241993 13f79535-47bb-0310-9956-ffa450edef68

src/testcases/org/apache/poi/ss/formula/functions/TestCountFuncs.java
test-data/spreadsheet/51498.xls [new file with mode: 0644]

index 8897feb60ede8f2677e66f6be881a728abdf6729..a01a92aa0041d75594caf843276619996a8b6bce 100644 (file)
@@ -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<Integer> 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 (file)
index 0000000..fc50d21
Binary files /dev/null and b/test-data/spreadsheet/51498.xls differ