You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by vi...@apache.org on 2013/07/08 21:10:52 UTC
svn commit: r1500887 - in /tomcat/trunk: java/javax/el/ELContext.java
test/javax/el/TestELContext.java test/javax/el/TesterEvaluationListener.java
Author: violetagg
Date: Mon Jul 8 19:10:52 2013
New Revision: 1500887
URL: http://svn.apache.org/r1500887
Log:
Unit tests for ELContext
Modified:
tomcat/trunk/java/javax/el/ELContext.java
tomcat/trunk/test/javax/el/TestELContext.java
tomcat/trunk/test/javax/el/TesterEvaluationListener.java
Modified: tomcat/trunk/java/javax/el/ELContext.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/el/ELContext.java?rev=1500887&r1=1500886&r2=1500887&view=diff
==============================================================================
--- tomcat/trunk/java/javax/el/ELContext.java (original)
+++ tomcat/trunk/java/javax/el/ELContext.java Mon Jul 8 19:10:52 2013
@@ -61,7 +61,7 @@ public abstract class ELContext {
// Can't use Class<?> because API needs to match specification
/**
* @throws NullPointerException
- * If the supplied context is <code>null</code>
+ * If the supplied key or context is <code>null</code>
*/
public void putContext(@SuppressWarnings("rawtypes") Class key,
Object contextObject) {
@@ -79,7 +79,7 @@ public abstract class ELContext {
// Can't use Class<?> because API needs to match specification
/**
* @throws NullPointerException
- * If the key is <code>null</code>
+ * If the supplied key is <code>null</code>
*/
public Object getContext(@SuppressWarnings("rawtypes") Class key) {
if (key == null) {
Modified: tomcat/trunk/test/javax/el/TestELContext.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/javax/el/TestELContext.java?rev=1500887&r1=1500886&r2=1500887&view=diff
==============================================================================
--- tomcat/trunk/test/javax/el/TestELContext.java (original)
+++ tomcat/trunk/test/javax/el/TestELContext.java Mon Jul 8 19:10:52 2013
@@ -16,6 +16,11 @@
*/
package javax.el;
+import java.util.List;
+
+import javax.el.TesterEvaluationListener.Pair;
+
+import org.junit.Assert;
import org.junit.Test;
public class TestELContext {
@@ -29,4 +34,140 @@ public class TestELContext {
elContext.getContext(null);
}
+ /**
+ * Tests that a null key results in an NPE as per EL Javadoc.
+ */
+ @Test(expected = NullPointerException.class)
+ public void testPutContext01() {
+ ELContext elContext = new TesterELContext();
+ elContext.putContext(null, new Object());
+ }
+
+ /**
+ * Tests that a null context results in an NPE as per EL Javadoc.
+ */
+ @Test(expected = NullPointerException.class)
+ public void testPutContext02() {
+ ELContext elContext = new TesterELContext();
+ elContext.putContext(Object.class, null);
+ }
+
+ /**
+ * Tests that the context object will be added to the map with context
+ * objects. The key is used as unique identifier of the context object in
+ * the map.
+ */
+ @Test
+ public void testPutContext03() {
+ ELContext elContext = new TesterELContext();
+ Assert.assertNull(elContext.getContext(String.class));
+ elContext.putContext(String.class, "test");
+ Assert.assertEquals("test", elContext.getContext(String.class));
+ elContext.putContext(String.class, "test1");
+ Assert.assertEquals("test1", elContext.getContext(String.class));
+ }
+
+ /**
+ * Tests that propertyResolved will be set to true and the corresponding
+ * listeners will be notified.
+ */
+ @Test
+ public void testSetPropertyResolved() {
+ ELContext elContext = new TesterELContext();
+
+ TesterEvaluationListener listener = new TesterEvaluationListener();
+ elContext.addEvaluationListener(listener);
+
+ TesterBean bean = new TesterBean("test");
+
+ elContext.setPropertyResolved(bean, "name");
+
+ Assert.assertTrue(elContext.isPropertyResolved());
+
+ List<Pair> events = listener.getResolvedProperties();
+ Assert.assertEquals(1, events.size());
+ Pair p = events.get(0);
+ Assert.assertEquals(bean, p.getBase());
+ Assert.assertEquals("name", p.getProperty());
+ }
+
+ /**
+ * Tests that the corresponding listeners will be notified.
+ */
+ @Test
+ public void testNotifyBeforeEvaluation() {
+ ELContext elContext = new TesterELContext();
+
+ TesterEvaluationListener listener = new TesterEvaluationListener();
+ elContext.addEvaluationListener(listener);
+
+ elContext.notifyBeforeEvaluation("before");
+
+ List<String> events = listener.getBeforeEvaluationExpressions();
+ Assert.assertEquals(1, events.size());
+ Assert.assertEquals("before", events.get(0));
+ }
+
+ /**
+ * Tests that the corresponding listeners will be notified.
+ */
+ @Test
+ public void testNotifyAfterEvaluation() {
+ ELContext elContext = new TesterELContext();
+
+ TesterEvaluationListener listener = new TesterEvaluationListener();
+ elContext.addEvaluationListener(listener);
+
+ elContext.notifyAfterEvaluation("after");
+
+ List<String> events = listener.getAfterEvaluationExpressions();
+ Assert.assertEquals(1, events.size());
+ Assert.assertEquals("after", events.get(0));
+ }
+
+ /**
+ * Tests not compatible object and type.
+ */
+ @Test(expected = ELException.class)
+ public void testConvertToType01() {
+ ELContext elContext = new TesterELContext();
+ elContext.convertToType("test", Integer.class);
+ }
+
+ /**
+ * Tests that if there is no ELResolver a standard coercions will be
+ * invoked.
+ */
+ @Test
+ public void testConvertToType02() {
+ ELContext elContext = new TesterELContext();
+ boolean originalPropertyResolved = elContext.isPropertyResolved();
+
+ Object result = elContext.convertToType("test", String.class);
+ Assert.assertEquals("test", result);
+
+ Assert.assertTrue(originalPropertyResolved == elContext
+ .isPropertyResolved());
+ }
+
+ /**
+ * Tests that if there is ELResolver it will handle the conversion. If this
+ * resolver cannot return a result the standard coercions will be invoked.
+ */
+ @Test
+ public void testConvertToType03() {
+ ELContext elContext = new TesterELContext(new TesterELResolverOne());
+
+ boolean originalPropertyResolved = elContext.isPropertyResolved();
+ Object result = elContext.convertToType("1", String.class);
+ Assert.assertEquals("ONE", result);
+ Assert.assertTrue(originalPropertyResolved == elContext
+ .isPropertyResolved());
+
+ originalPropertyResolved = elContext.isPropertyResolved();
+ result = elContext.convertToType("test", String.class);
+ Assert.assertEquals("test", result);
+ Assert.assertTrue(originalPropertyResolved == elContext
+ .isPropertyResolved());
+ }
}
Modified: tomcat/trunk/test/javax/el/TesterEvaluationListener.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/javax/el/TesterEvaluationListener.java?rev=1500887&r1=1500886&r2=1500887&view=diff
==============================================================================
--- tomcat/trunk/test/javax/el/TesterEvaluationListener.java (original)
+++ tomcat/trunk/test/javax/el/TesterEvaluationListener.java Mon Jul 8 19:10:52 2013
@@ -22,6 +22,8 @@ import java.util.List;
public class TesterEvaluationListener extends EvaluationListener {
private final List<Pair> resolvedProperties = new ArrayList<>();
+ private final List<String> beforeEvaluationExpressions = new ArrayList<>();
+ private final List<String> afterEvaluationExpressions = new ArrayList<>();
@Override
@@ -31,10 +33,33 @@ public class TesterEvaluationListener ex
}
+ @Override
+ public void beforeEvaluation(ELContext context, String expression) {
+ beforeEvaluationExpressions.add(expression);
+ }
+
+
+ @Override
+ public void afterEvaluation(ELContext context, String expression) {
+ afterEvaluationExpressions.add(expression);
+ }
+
+
public List<Pair> getResolvedProperties() {
return resolvedProperties;
}
+
+ public List<String> getBeforeEvaluationExpressions() {
+ return beforeEvaluationExpressions;
+ }
+
+
+ public List<String> getAfterEvaluationExpressions() {
+ return afterEvaluationExpressions;
+ }
+
+
public static class Pair {
private final Object base;
private final Object property;
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org