You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2024/01/12 12:27:43 UTC
(tomcat) branch 10.1.x updated: Add some more tests along similar lines to ones I added to the TCK
This is an automated email from the ASF dual-hosted git repository.
markt pushed a commit to branch 10.1.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/10.1.x by this push:
new f3b48f8323 Add some more tests along similar lines to ones I added to the TCK
f3b48f8323 is described below
commit f3b48f8323d858af1034d1f2c0469d6bb4176d78
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Fri Jan 12 12:17:41 2024 +0000
Add some more tests along similar lines to ones I added to the TCK
---
test/org/apache/el/lang/TestELSupport.java | 38 ++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/test/org/apache/el/lang/TestELSupport.java b/test/org/apache/el/lang/TestELSupport.java
index dcdde1d680..87d4f4e224 100644
--- a/test/org/apache/el/lang/TestELSupport.java
+++ b/test/org/apache/el/lang/TestELSupport.java
@@ -335,6 +335,44 @@ public class TestELSupport {
}
+ /*
+ * Note: The following tests use compareTo(). When the target object (Long or String) is examined by reflection
+ * both compareTo(Object) and compareTo(Long)/compareTo(String) methods will be found as potential matches. The
+ * method matching rules (see section 1.2.1.2 of the specification) require that overload resolution has a higher
+ * precedence than coercion resolution so it is always the compareTo(Object) method that will be used for the
+ * following tests resulting in a ClassCastException (which is wrapped in an ELException).
+ */
+
+ @Test(expected = ELException.class)
+ public void testCoercetoFunctionalInterface07() throws Exception {
+ final ELProcessor elp = new ELProcessor();
+ elp.defineFunction("", "", "org.apache.el.lang.TestELSupport", "testPredicateB");
+ // This should trigger an exception as String isn't assignable to Long
+ Object result = elp.eval("testPredicateB(x -> x.compareTo('data') == 0)");
+ Assert.assertEquals("BLOCK", result);
+ }
+
+
+ @Test(expected = ELException.class)
+ public void testCoercetoFunctionalInterface08() throws Exception {
+ final ELProcessor elp = new ELProcessor();
+ elp.defineFunction("", "", "org.apache.el.lang.TestELSupport", "testPredicateA");
+ // This should trigger an exception as Long isn't assignable to String
+ Object result = elp.eval("testPredicateA(x -> x.compareTo(1234) == 0)");
+ Assert.assertEquals("BLOCK", result);
+ }
+
+
+ @Test(expected = ELException.class)
+ public void testCoercetoFunctionalInterface09() throws Exception {
+ final ELProcessor elp = new ELProcessor();
+ elp.defineFunction("", "", "org.apache.el.lang.TestELSupport", "testPredicateB");
+ // This should trigger an exception as String isn't assignable to Long despite this String being coercible
+ Object result = elp.eval("testPredicateB(x -> x.compareTo('1234') == 0)");
+ Assert.assertEquals("BLOCK", result);
+ }
+
+
public static String testPredicateA(Predicate<String> filter) {
String s = "data";
if (filter.test(s)) {
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org