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