From a75bc22211cb7a4c6e4ca4954337277b4ecb141f Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Wed, 14 Sep 2011 14:41:03 +0000 Subject: [PATCH] Apply patch from bug #51809 - correct GTE handling in COUNTIF git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1170652 13f79535-47bb-0310-9956-ffa450edef68 --- src/documentation/content/xdocs/status.xml | 1 + src/java/org/apache/poi/ss/formula/functions/Countif.java | 2 +- .../org/apache/poi/ss/formula/functions/TestSumif.java | 8 ++++++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index 039edc325..be005a1d7 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,7 @@ + 51809 - correct GTE handling in COUNTIF Add HWPF API to update range text and delete bookmarks HWPF Bookmarks tables are correctly updated on text updates 51670 - avoid LeftoverDataException when reading .xls files with invalid LabelRecords diff --git a/src/java/org/apache/poi/ss/formula/functions/Countif.java b/src/java/org/apache/poi/ss/formula/functions/Countif.java index 2b7601c87..173f6a1e7 100644 --- a/src/java/org/apache/poi/ss/formula/functions/Countif.java +++ b/src/java/org/apache/poi/ss/formula/functions/Countif.java @@ -133,7 +133,7 @@ public final class Countif extends Fixed2ArgFunction { case LT: return cmpResult < 0; case LE: return cmpResult <= 0; case GT: return cmpResult > 0; - case GE: return cmpResult <= 0; + case GE: return cmpResult >= 0; } throw new RuntimeException("Cannot call boolean evaluate on non-equality operator '" + _representation + "'"); diff --git a/src/testcases/org/apache/poi/ss/formula/functions/TestSumif.java b/src/testcases/org/apache/poi/ss/formula/functions/TestSumif.java index 1ef090ea4..6cee5eab7 100644 --- a/src/testcases/org/apache/poi/ss/formula/functions/TestSumif.java +++ b/src/testcases/org/apache/poi/ss/formula/functions/TestSumif.java @@ -61,6 +61,14 @@ public final class TestSumif extends TestCase { confirm(60.0, arg0, new NumberEval(30.0)); confirm(70.0, arg0, new NumberEval(30.0), arg2); confirm(100.0, arg0, new StringEval(">45")); + confirm(100.0, arg0, new StringEval(">=45")); + confirm(100.0, arg0, new StringEval(">=50.0")); + confirm(140.0, arg0, new StringEval("<45")); + confirm(140.0, arg0, new StringEval("<=45")); + confirm(140.0, arg0, new StringEval("<=40.0")); + confirm(160.0, arg0, new StringEval("<>40.0")); + confirm(80.0, arg0, new StringEval("=40.0")); + } private static void confirm(double expectedResult, ValueEval...args) {