Browse Source

Fix for bug 46613 - evaluator should perform case insensitive string comparisons


git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@738188 13f79535-47bb-0310-9956-ffa450edef68
tags/REL_3_5_BETA5
Josh Micich 15 years ago
parent
commit
7aa965d079

+ 1
- 0
src/documentation/content/xdocs/changes.xml View File

@@ -37,6 +37,7 @@

<!-- Don't forget to update status.xml too! -->
<release version="3.5-beta5" date="2008-??-??">
<action dev="POI-DEVELOPERS" type="fix">46613 - Fixed evaluator to perform case insensitive string comparisons</action>
<action dev="POI-DEVELOPERS" type="add">46544 - command line interface for hssf ExcelExtractor</action>
<action dev="POI-DEVELOPERS" type="fix">46547 - Allow addition of conditional formatting after data validation</action>
<action dev="POI-DEVELOPERS" type="fix">46548 - Page Settings Block fixes - continued PLS records and PSB in sheet sub-streams</action>

+ 1
- 0
src/documentation/content/xdocs/status.xml View File

@@ -34,6 +34,7 @@
<!-- Don't forget to update changes.xml too! -->
<changes>
<release version="3.5-beta5" date="2008-??-??">
<action dev="POI-DEVELOPERS" type="fix">46613 - Fixed evaluator to perform case insensitive string comparisons</action>
<action dev="POI-DEVELOPERS" type="add">46544 - command line interface for hssf ExcelExtractor</action>
<action dev="POI-DEVELOPERS" type="fix">46547 - Allow addition of conditional formatting after data validation</action>
<action dev="POI-DEVELOPERS" type="fix">46548 - Page Settings Block fixes - continued PLS records and PSB in sheet sub-streams</action>

+ 1
- 1
src/java/org/apache/poi/hssf/record/formula/eval/RelationalOperationEval.java View File

@@ -97,7 +97,7 @@ public abstract class RelationalOperationEval implements OperationEval {
if (vb instanceof StringEval) {
StringEval sA = (StringEval) va;
StringEval sB = (StringEval) vb;
return sA.getStringValue().compareTo(sB.getStringValue());
return sA.getStringValue().compareToIgnoreCase(sB.getStringValue());
}
return 1;
}

+ 26
- 1
src/testcases/org/apache/poi/hssf/record/formula/eval/TestEqualEval.java View File

@@ -23,7 +23,7 @@ import junit.framework.TestCase;
import org.apache.poi.hssf.record.formula.functions.EvalFactory;
/**
* Test for unary plus operator evaluator.
* Test for {@link EqualEval}
*
* @author Josh Micich
*/
@@ -66,4 +66,29 @@ public final class TestEqualEval extends TestCase {
}
assertTrue(be.getBooleanValue());
}
/**
* Test for bug 46613 (observable at svn r737248)
*/
public void testStringInsensitive_bug46613() {
if (!evalStringCmp("abc", "aBc", EqualEval.instance)) {
throw new AssertionFailedError("Identified bug 46613");
}
assertTrue(evalStringCmp("abc", "aBc", EqualEval.instance));
assertTrue(evalStringCmp("ABC", "azz", LessThanEval.instance));
assertTrue(evalStringCmp("abc", "AZZ", LessThanEval.instance));
assertTrue(evalStringCmp("ABC", "aaa", GreaterThanEval.instance));
assertTrue(evalStringCmp("abc", "AAA", GreaterThanEval.instance));
}
private static boolean evalStringCmp(String a, String b, OperationEval cmpOp) {
Eval[] args = {
new StringEval(a),
new StringEval(b),
};
Eval result = cmpOp.evaluate(args, 10, (short)20);
assertEquals(BoolEval.class, result.getClass());
BoolEval be = (BoolEval) result;
return be.getBooleanValue();
}
}

Loading…
Cancel
Save