Add coercion tests
diff --git a/tck/src/main/java/com/sun/ts/tests/el/spec/coercion/DateTimeCoercionIT.java b/tck/src/main/java/com/sun/ts/tests/el/spec/coercion/DateTimeCoercionIT.java
new file mode 100644
index 0000000..82c118d
--- /dev/null
+++ b/tck/src/main/java/com/sun/ts/tests/el/spec/coercion/DateTimeCoercionIT.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2025 Contributors to the Eclipse Foundation
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0, which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+package com.sun.ts.tests.el.spec.coercion;
+
+import java.time.Instant;
+import java.util.Collections;
+import java.util.Date;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import com.sun.ts.tests.el.common.util.ExprEval;
+import com.sun.ts.tests.el.common.util.NameValuePair;
+import com.sun.ts.tests.el.common.util.TestNum;
+
+public class DateTimeCoercionIT {
+
+ private static final Map<Object,Instant> mapInputExpectedResult;
+
+ static {
+ Map<Object,Instant> map = new LinkedHashMap<>();
+
+ map.put(null, null);
+ for (Object obj : TestNum.getDateTimeList()) {
+ map.put(obj, TestNum.DATE_REFERENCE);
+ }
+
+ mapInputExpectedResult = Collections.unmodifiableMap(map);
+ }
+
+
+ @Test
+ public void testCoercetoInstant() {
+ for (Map.Entry<Object,Instant> entry : mapInputExpectedResult.entrySet()) {
+ NameValuePair values[] = NameValuePair.buildUnaryNameValue(entry.getKey());
+ Object result = ExprEval.evaluateValueExpression("${A}", values, Instant.class);
+ if (entry.getValue() == null) {
+ Assertions.assertNull(result);
+ } else {
+ Assertions.assertTrue(ExprEval.compareClass(result, Instant.class));
+ Assertions.assertEquals(result, entry.getValue());
+ }
+ }
+ }
+
+
+ @Test
+ public void testCoercetoDate() {
+ for (Map.Entry<Object,Instant> entry : mapInputExpectedResult.entrySet()) {
+ NameValuePair values[] = NameValuePair.buildUnaryNameValue(entry.getKey());
+ Object result = ExprEval.evaluateValueExpression("${A}", values, Date.class);
+ if (entry.getValue() == null) {
+ Assertions.assertNull(result);
+ } else {
+ Assertions.assertTrue(ExprEval.compareClass(result, Date.class));
+ Assertions.assertEquals(result, entry.getValue() == null ? null : Date.from(entry.getValue()));
+ }
+ }
+ }
+}